Internet Computing KUT Youn-Hee Han

Slides:



Advertisements
Similar presentations
언어의 자서전 소단원 (1) 단원. 언어의 특성 기호성 자의성 사회성 규칙성 창조성 역사성.
Advertisements

자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
소프트웨어 공학 Lecture #9: 테스팅 최은만 저 6차 개정판 1.
8. 파일 인덱스: 탐색트리 (Search Tree)
3 장 stack and queue.
Chapter 7. Binary Search Trees - 보충 자료-
Internet Computing KUT Youn-Hee Han
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
Introduction to Web Service Computing
6장 트리.
Internet Computing KUT Youn-Hee Han
Internet Computing KUT Youn-Hee Han
Internet Computing KUT Youn-Hee Han
Internet Computing KUT Youn-Hee Han
쉽게 배우는 알고리즘 3장. 정렬Sorting
제5장 트리.
4장 스택.
CHAP 7:트리.
강의 #7 트리(Tree).
쉽게 배우는 알고리즘 5장. 검색트리
On the computation of multidimensional Aggregates
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
자료구조 김현성.
[INA240] Data Structures and Practice
제 5장. Context-Free Languages
Internet Computing KUT Youn-Hee Han
Chapter 8. AVL Search Trees
C언어 응용 제 10 주 트리.
Internet Computing KUT Youn-Hee Han
1과목 데이터베이스 강사 이 민 욱.
제 9 장 우선순위 큐.
자료구조 과제 풀이(6,7,8차) Yong-hwan Kim
IT CookBook, 자바로 배우는 쉬운 자료구조
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작.
Tree & Heap SANGJI University Kwangman Ko
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
AVLTree vs 편향 Tree.
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
한양대 교육공학과 석사과정 양선영 Cmap Tool 사용법 한양대 교육공학과 석사과정 양선영
자료구조(SCSC) Data Structures
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
4th HomeWork Guide (ver2.0)
Ch.06 Branch-and-Bound (분기한정법) (Ch.05-7 포함)
[INA240] Data Structures and Practice
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
Internet Computing KUT Youn-Hee Han
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
그래프와 트리 (Graphs and Trees)
CHAP 8:우선순위큐.
13장. 균형 탐색 트리 and the pain you must suffer to learn them
CHAP 12 : 탐색.
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
0-1 Knapsack – 개선된 BFS 기반 알고리즘
Internet Computing KUT Youn-Hee Han
Chapter 9. Multilevel Indexing and B-Trees
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
점화와 응용 (Recurrence and Its Applications)
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
Chapter 07 트리.
(Ⅰ) 독서와 언어의 본질 언어의 본질 1 2 [고등 국어] – 독서와 문법 독서의 본질 (1) 독서의 특성
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
자료구조 자료구조의 개요 배열 선형 리스트 스택 큐 트리.
MST – Kruskal 알고리즘 (추상적)
제 7 장 정렬.
[CPA340] Algorithms and Practice Youn-Hee Han
Internet Computing KUT Youn-Hee Han
알고리즘 강의 슬라이드 7 정렬문제 알고리즘 해석 강의 슬라이드 #7
Presentation transcript:

Internet Computing Laboratory @ KUT Youn-Hee Han 11장. 우선순위 큐 Internet Computing Laboratory @ KUT Youn-Hee Han

1. 우선순위 큐 개요 응급실에서 환자 치료의 예 Priority Queue 큐: 먼저 온 사람을 먼저 치료 스택: 나중에 온 사람을 먼저 치료 우선순위 큐 (Priority Queue) : 우선순위가 높은 사람 (예: 위급한 사람)을 먼저 치료 Priority Queue an abstract data type supporting the following three operations: - add an element to the queue with an associated priority - Remove and return the element from the queue that has the highest priority - (optionally) peek at the element with highest priority without removing it Data Structure

1. 우선순위 큐 개요 우선순위 우선순위 큐는 스택이나 큐 보다 일반적인 구조 시간: 스택, 큐 스택, 큐에서는 시간에 따라 자료구조를 조직화 시간을 포함한 여러 가지 가치를 우선순위로 가지는 자료구조  우선순위 큐 우선 순위 큐는 키 (= 우선순위 값) 필드가 필요. 그 키 값을 태그 (Tag, 꼬리표)라고도 함 우선순위 큐는 스택이나 큐 보다 일반적인 구조 큐나 스택은 우선순위 큐의 특수한 형태로서 시간에 그 우선순위를 부여한 것임 따라서 키 필드가 불필요 Priority Queue Stack Queue Data Structure

2. 추상 자료형 우선순위 큐 작업 삭제작업 Create: 새로운 우선순위 큐를 만들기 Destroy: 사용되던 우선순위 큐를 파기하기 Add: 현재 우선순위 큐에 새로운 레코드를 삽입하기 Remove: 가장 우선순위가 높은 레코드를 삭제하기 IsEmpty: 현재 우선순위 큐가 비어있는지 확인하기 Retrieve: 가장 우선순위가 높은 레코드를 보기 삭제작업 어떤 레코드가 우선순위가 가장 높은지는 큐 자체가 알고 있으므로 호출 함수 쪽에서는 아무런 파라미터를 넘길 필요가 없다. Data Structure

3. 배열, 연결 리스트, 트리에 의한 구현 정렬된 배열 정렬 안 된 배열 우선순위를 기준으로 오름차순으로 정렬 가장 우선순위가 큰 레코드는 항상 배열의 마지막에 위치 Remove는 마지막 레코드를 리턴, 배열 레코드의 개수를 하나 줄임 정렬 안 된 배열 새로운 레코드를 무조건 배열 끝에 붙임 삽입의 효율은 O(1), 삭제의 효율은 O(N) - 처음부터 끝까지 뒤져야 함. 정렬된 배열과 정렬 안 된 배열을 사용할 때의 삽입, 삭제 효율은 서로 정 반대의 성격을 지님 삭제가 빨라야 한다면 정렬된 배열, 삽입이 빨라야 한다면 정렬 안 된 배열 삭제와 삽입 모두를 감안한 효율은 O(1)+O(N)=O(N)이다. Data Structure

3. 배열, 연결 리스트, 트리에 의한 구현 연결 리스트에 의한 구현 - 우선순위를 기준으로 내림차순으로 정렬 우선순위가 가장 높은 레코드를 헤드 포인터가 직접 가리킴. 삭제시간은 O(1) 삽입 함수는 키 값을 기준으로 삽입위치를 찾아야 함. 최악의 경우 마지막 위치. O(N) 배열처럼 이동은 불필요. 삭제와 삽입 모두를 감안한 효율은 O(1)+O(N)=O(N)이다. Data Structure

3. 배열, 연결 리스트, 트리에 의한 구현 트리 (이진 탐색 트리, BST) 이용 효율 가장 큰 키 값을 지닌 노드 루트로부터 출발해서 RChild를 계속 따라 감. 상대적으로 Remove 하기 쉬움 효율 삭제함수의 효율은 O(lgN). 루트로부터 리프까지 내려감. 삽입 위치를 찾아 리프 노드까지 내려가는데에도 역시 O(lgN) 효율은 O(logN) + O(logN) = O(logN). 단 균형 트리에 한함. Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙 (Heap)의 정의 항상 완전 이진트리 (Complete Binary Tree)로서 빈 트리거나, Root의 키가 왼쪽자식과 오른쪽 자식의 키보다 크거나 같다. 왼쪽 자식, 오른쪽 자식을 루트로 하는 서브트리도 Heap이다. 주의할 특징 왼쪽 자식과 오른쪽 자식 사이에는 어느 쪽 키가 크던 상관이 없다. Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 Definition of Heap a specialized complete binary tree-based data structure that satisfies the heap property. If B is a child node of A, then the heap property is that: key(A) ≥ key(B) A heap is a special kind of tree. It has two properties that are not generally true for other trees: [Completeness] - The tree is complete, which means that nodes are added from top to bottom, left to right, without leaving any spaces. [Heapness] - The item in the tree with the highest priority is at the top of the tree, and the same is true for every subtree. Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 Max Heap Min Heap 정렬 관점에서… 키 값이 큰 레코드가 우선순위가 높은 것으로 간주 루트노드의 키가 가장 크다. Min Heap Max Heap과 정 반대 키 값이 작을수록 우선순위가 높다. 예] 내신등급 정렬 관점에서… BST는 약한 의미로 정렬. 왼쪽 자식 키보다 오른쪽 자식 키가 크다. Heap도 약한 의미로 정렬. 부모의 키가 자식의 키보다 우선 순위가 높다 왼쪽 자식 키와 오른쪽 자식 키는 무관하다. Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙 (완전 이진 트리) 구현 배열로 표시하는 것이 효율적 배열에 위치하는 순서 루트부터 시작해서 위에서 아래로, 왼쪽에서 오른쪽으로 진행 Root 노드는 항상 배열 인덱스 0. 트리의 부모 자식 관계  다음의 배열 인덱스 연산으로 정의 인덱스 K에 있는 노드의 왼쪽 자식은 (2K + 1), 오른쪽 자식은 (2K + 2) 인덱스 K에 있는 노드의 부모 노드는 (K - 1) / 2 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙의 삭제 우선순위가 가장 큰 루트노드를 삭제 Down Heap (다운 힙) 루트를 직접 삭제하면 이후 힙을 재구성하는 것이 복잡 그래서, 배열 마지막 요소를 루트노드 위치로 옮김. Down Heap (다운 힙) 힙 모습의 복원(Heap Rebuilding)  Reheap ! 루트로부터 시작해서 제자리를 찾기까지 굴러 떨어짐 왼쪽, 오른쪽 자식 모두를 비교해서 더 큰 것과 루트를 스와핑 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙의 삭제 배열 연산 효율 정령의 관점에서 힙이 BST보다 더 좋은 구조임. 배열의 마지막 레코드를 처음으로 복사하는 데 O(1) 최악의 경우 루트로부터 리프까지 굴러 떨어짐.. 비교의 횟수는 총 2lgN이 된다. 스와핑은 Temp = A, A = B, B = Temp라는 3번의 복사. 최악의 경우 비교시마다 스와핑이 일어날 경우 복사의 횟수는 3lgN 삭제 효율은 O(lgN) 정령의 관점에서 힙이 BST보다 더 좋은 구조임. 이진 탐색트리는 최악의 경우 연결 리스트와 유사. O(N)의 효율 Skewed Binary Tree (편향된 이진 트리) 힙은 완전 이진트리로서 균형 트리 균형 트리의 높이는 항상 lg(N)에 가까움 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙의 삽입 Up heap (업 힙) 또는 Promotion 효율 O(lgN) 삭제보다 비교 횟수가 적음 [힙의 삭제] “사장자리가 비면 말단 사원을 그 자리에 앉힌 다음, 바로 아래 부하직원보다는 능력이 좋다고 판단될 때까지 강등시키는 것(降等, Down Heap, Demotion)” [힙의 삽입] “신입사원이 오면 일단 말단 자리에 앉힌 다음, 능력껏 위로 진급시키는 것(進級, Up Heap, Promotion)” Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 효율비교 N1/2 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙 정렬 (Heap Sort) 힙에서 Remove를 가하면 키가 제일 큰 레코드가 빠져 나옴. 빈 트리가 될 때까지 계속적으로 삭제를 가함. 빠져 나온 레코드를 순차적으로 적어나가면 그것이 바로 정렬된 결과 Maxheap 이용: 내림 차순의 정렬 Minheap 이용: 오름 차순의 정렬 힙 구성(Heap Building or Heap Creation) 힙정렬을 위하여 가장 먼저 수행해야 할 작업 주어진 레코드로부터 일단 힙을 만들어야, 빼내 오면서 정렬이 가능 구성 방법 하향식(Top-down) 힙 구성 상향식(Bottom-up) 힙 구성 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 하향식 (Top-down) 힙 구성 빈 힙에서 출발하여 반복적으로 삽입에 의해서 힙을 구성 효율은 O(NlgN) 으로 증명됨 그러므로, 힙 정렬 = 힙 구성 O(NlgN) + 연속적인 Remove O(NlgN) Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 상향식 (Bottom-up) 힙 구성 레코드들이 위치한 순서대로 일단 Complete Binary Tree 구성 힙 구조가 되도록 재조정  Reheap! 가장 아래쪽부터 검사하되 오른쪽에서 왼쪽으로 진행 검사 대상 노드가 Heap Priority을 만족시키는지 검사 해당 노드와 그 아래쪽 노드 간의 키만 비교하여 스와핑 연속적으로 굴러 떨어짐이 발생할 수 있음  Down Heap 상향식 힙 구성 결과와 하향식 힙 구성 결과가 다를 수 있음 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 상향식 구성을 사용한 Heap Sort의 예 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 상향식 구성을 사용한 Heap Sort의 예 Data Structure

4. 힙(Heap)에 의한 우선순위 큐 구현 힙 구성 삭제 단계 따라서 힙 정렬은 O(NlgN) Quick vs. Merge vs. Heap Quick은 O(NlnN)을 보장 못함 Merge는 추가적인 공간 필요 Heap은 추가적인 공간 필요 없이 O(NlnN)을 보장 Data Structure