Presentation is loading. Please wait.

Presentation is loading. Please wait.

Priority Queues (Heaps)

Similar presentations


Presentation on theme: "Priority Queues (Heaps)"— Presentation transcript:

1 Priority Queues (Heaps)
Sections 6.1 to 6.5

2 The Priority Queue ADT DeleteMin log N time Insert Other operations
FindMin Constant time Initialize N time 2 2

3 Applications of Priority Queues
Any event/job management that assign priority to events/jobs In Operating Systems Scheduling jobs In Simulators Scheduling the next event (smallest event time)

4 Priority Queue Implementation
Implemented as adaptor class around Linked lists O(N) worst-case time on either insert() or deleteMin() Binary Search Trees O(log(N)) average time on insert() and delete() Overkill: all elements are sorted However, we only need the minimum element Heaps This is what we’ll study and use to implement Priority Queues O(logN) worst case for both insertion and delete operations

5 Partially Ordered Trees
A partially ordered tree (POT) is a tree T such that: There is an order relation <= defined for the vertices of T For any vertex p and any child c of p, p <= c Consequences: The smallest element in a POT is the root No conclusion can be drawn about the order of children

6 Binary Heaps A binary heap is a partially ordered complete binary tree
The tree is completely filled on all levels except possibly the lowest. In a more general d-Heap A parent node can have d children We simply refer to binary heaps as heaps root 3 2 4 5

7 Vector Representation of Complete Binary Tree
Storing elements in vector in level-order Parent of v[k] = v[k/2] Left child of v[k] = v[2*k] Right child of v[k] = v[2*k + 1] root R l r ll lr rl rr 7 6 5 4 3 2 1 R l r ll lr rl rr

8 Heap example Parent of v[k] = v[k/2] Left child of v[k] = v[2*k]
Right child of v[k] = v[2*k + 1]

9 Examples Which one is a heap?

10 Implementation of Priority Queue (heap)

11 Insertion Example: insert(14)

12 Basic Heap Operations: insert(x)
Maintain the complete binary tree property and fix any problem with the partially ordered tree property Create a leaf at the end Repeat Locate parent if POT not satisfied Swap with parent else Stop Insert x into its final location

13 Implementation of insert

14 deleteMin() example 31 13 14 16 19 21 68 65 26 32 31

15 deleteMin() Example (Cont’d)
31 31 31

16 Basic Heap Operations: deleteMin()
Replace root with the last leaf ( last element in the array representation This maintains the complete binary tree property but may violate the partially ordered tree property Repeat Find the smaller child of the “hole” If POT not satisfied Swap hole and smaller child else Stop

17 Implementation of deleteMin()

18 Implementation of deleteMin()

19 Constructor Construct heap from a collection of item How to?
Naïve methods Insert() each element Worst-case time: O(N(logN)) We show an approach taking O(N) worst-case Basic idea First insert all elements into the tree without worrying about POT Then, adjust the tree to satisfy POT, starting from the bottom

20 Constructor

21 Example percolateDown(7) percolateDown(6) percolateDown(5)

22 percolateDown(4) percolateDown(3) percolateDown(2) percolateDown(1)

23 Complexity Analysis Consider a tree of height h with 2h-1 nodes
Time = 1•(h) + 2•(h-1) + 4•(h-2) h-1•1 = i=1h 2h-i i = 2h i=1h i/2i = 2h O(1) = O(2h) = O(N) Proof for i=1h i/2i = O(1) i/2i ≤ ∫i-1i (x+1)/2x dx i=1h i/2i ≤ i=1∞ i/2i ≤ ∫0∞ (x+1)/2x dx Note: ∫u dv = uv - ∫v du, with dv = 2x and u = x and ∫2-x dx = -2-x/ln 2 ∫0∞ (x+1)/2x dx = -x 2-x/ln 2|0∞ + 1/ln 2 ∫0∞ 2-x dx + ∫0∞ 2-x dx = -2-x/ln2 2|0∞ - 2-x/ln 2|0∞ = (1 + 1/ln 2)/ln 2 = O(1) 23 23

24 Alternate Proof Prove i=1h i/2i = O(1)
i=0∞ xi = 1/(1-x) when |x| < 1 Differentiating both sides with respect to x we get i=0∞ i xi-1 = 1/(1-x)2 So, i=0∞ i xi = x/(1-x)2 Substituting x = 1/2 above gives i=0∞ i 2-i = 0.5/(1-0.5)2 = 2 = O(1) 24 24

25 C++ STL Priority Queues
priority_queue class template Implements deleteMax instead of deleteMin in default MaxHeap instead of MinHeap Template Item type container type (default vector) comparator (default less) Associative queue operations Void push(t) void pop() T& top() void clear() bool empty()

26


Download ppt "Priority Queues (Heaps)"

Similar presentations


Ads by Google