550 likes | 750 Views
Lecture: Priority Queue. Questions. Is array a data structure? What is a data structure? What data structures are implemented by array? Priority queue (max --, min --). No! Why?. It is a standard part of algorithm. Stack, Queue, List, Heap, Max-heap, Min-heap, …. Contents.
E N D
Questions • Is array a data structure? • What is a data structure? • What data structures are implemented by array? • Priority queue (max --, min --). No! Why? It is a standard part of algorithm Stack, Queue, List, Heap, Max-heap, Min-heap, …
Contents • Recall: Heap, a data structure Max-heap (min-heap) (a) Max-Heapify procedure (b) Building a max-heap • Priority Queue • Implementation of Prim Algorithm
A Data Structure Heap • A heap is an array object that can be viewed as a nearly complete binary tree. 1 6 2 3 5 3 6 5 3 2 4 1 4 5 6 2 4 1 Tied with three procedures for finding Parent, finding left child, and finding Right child. All levels except last level are complete.
Max-Heapify • Max-Heapify(A,i) is a subroutine. • Input: When it is called, two subtrees rooted at Left(i) and Right(i) are max-heaps, but A[i] may not satisfy the max-heap property. • Output:Max-Heapify(A,i) makes the subtree rooted at A[i] become a max-heap by letting A[i] “float down”.
4 14 7 4 14 7 2 8 1 2 8 1 14 8 7 2 1 4
Building a Max-Heap e.g., 4, 1, 3, 2, 16, 9, 10, 14, 8, 7.
4 1 3 10 9 2 16 8 7 14 Proof.
4 1 3 10 9 2 16 8 7 7 14
4 1 3 10 9 2 16 8 7 14
Building a Max-Heap e.g., 4, 1, 3, 2, 16, 9, 10, 14, 8, 7.
4 1 3 10 9 2 16 8 7 14
4 1 3 10 9 2 16 8 7 14
4 1 3 10 9 16 14 2 8 7
4 1 3 10 9 14 16 2 8 7
4 1 10 3 9 14 16 2 8 7
4 1 10 3 9 14 16 2 8 7
4 16 10 3 9 14 1 2 8 7
4 16 10 3 9 14 7 2 8 1
16 4 10 3 9 14 7 2 8 1
16 14 10 3 9 4 7 2 8 1
16 14 10 3 9 7 8 2 4 1
16 14 10 3 9 7 8 2 4 1
Priority Queue • A priority queue is a data structure for maintaining a set of elements, each with an associated value, called a key. • A max-priority queue supports the following operations: Maximum(S), Extract-Max(S), Increase-Key(S,x,k), Insert(S,x). • Max-Heap can be used for implementing max-priority queue.
Input: 4, 1, 3, 2, 16, 9, 10, 14, 8, 7. Build a max-heap 16 14 10 3 9 7 8 2 4 1 16, 14, 10, 8, 7, 9, 3, 2, 4, 1.
1 14 10 3 9 7 8 2 4 1, 14, 10, 8, 7, 9, 3, 2, 4
14 1 10 3 9 7 8 2 4 14, 1, 10, 8, 7, 9, 3, 2, 4
14 8 10 3 9 7 1 2 4 14, 8, 10, 1, 7, 9, 3, 2, 4
14 8 10 3 9 7 4 2 1 14, 8, 10, 4, 7, 9, 3, 2, 1
16 14 10 3 9 7 8 2 4 1 16, 14, 10, 8, 7, 9, 3, 2, 4, 1.
16 14 10 3 9 7 8 2 1 15 16, 14, 10, 8, 7, 9, 3, 2, 15, 1.
16 14 10 3 9 7 15 2 1 8 16, 14, 10, 15, 7, 9, 3, 2, 8, 1.
16 14 10 3 9 7 15 2 1 8 16, 14, 10, 15, 7, 9, 3, 2, 8, 1.
16 15 10 3 9 7 14 2 1 8 16, 15, 10, 14, 7, 9, 3, 2, 8, 1.
16 14 10 3 9 7 8 2 4 1 16, 14, 10, 8, 7, 9, 3, 2, 4, 1.
16 14 10 3 9 7 8 2 4 1 -∞ 16, 14, 10, 8, 7, 9, 3, 2, 4, 1, -∞