Download presentation

Presentation is loading. Please wait.

1
Priority Queues

2
Container of elements where each element has an associated key A key is an attribute that can identify rank or weight of an element Examples – passenger, todo list What is a Priority Queue?

3
Priority Queue ADT Operations size() isEmpty() insertItem(k, e) – insert element e with key k minElement() – return ref to min element minKey() – return const ref to smallest key removeMin() – remove and return element with smallest key

4
Example insertItem(5, A) insertItem(9, C) insertItem(3, B) insertItem(7, D) minElement() minKey() removeMin() size() minElement() removeMin() isEmpty()

5
Implementation Using an array? Using a linked list? Using a binary search tree? Running time of insertItem/removeMin?

6
Heaps A heap is a priority queue implemented with a binary tree

7
Heaps Heap-Order Property: In a heap T, for every node v other than the root, the key stored at v is greater than or equal to the key stored at v’s parent

8
Heaps Complete Binary Tree Property: A heap T with height h is a complete binary tree, that is, levels 0,1,2,…,h-1of T have the maximum number of nodes possible and all the internal nodes are to the left of the external nodes in level h-1. What does this give us?

9
Example Heap 7 9 4 5610 1115 root

10
Heap Implementation Insertion algorithm 7 9 4 5610 1115 root 5 new_node

11
Up-Heap Bubbling while new node is smaller than its parent move parent down Running time?

12
Heap Implementation Deletion algorithm 5 9 4 5610 117 root 15 delete 4

13
Down-Heap Bubbling if right child is null if left child is null insert else if left child is smaller than current move left up if both children not null move up smallest child

14
Vector Implementation Children are positions index*2 and index*2+1 Implementation of insert and remove? 0 1 2 3 4 5 6 7

15
Heap Sort Algorithm to use a heap to sort a list of numbers Running time?

16
BuildHeap Algorithm Goal: Insert N items into initially empty heap Algorithm 1: Perform N inserts –Worst-case running time?

17
Efficient BuildHeap Idea: Start at level h-1 and bubble down nodes 1 at a time for(int i = currentSize/2; i > 0; i--) percolateDown(i);

18
Running Time Running time is no more than the sum of the heights of all nodes 15 9 56 710 114 root

19
BuildHeap Proof Theorem: For the perfect binary tree of height h containing 2 h+1 -1 nodes, the sum of the heights of the nodes is 2 h+1 -1-(h+1) Proof: 1 node at height h, 2 nodes at height h-1, 2 2 nodes at height h-1, 2 i nodes at height h-i h Sum S = ∑ 2 i (h-i) i=0

20
BuildHeap Proof S = h+2(h-1)+4(h-2) +...+2 h-1 (1) + 2 h (0) 2S = 2h + 4(h-1) + 8(h-2)+... +2 h (1) 2S-S = -h + 2 + 4 + 8 +... + 2 h-1 + 2 h = 2 h+1 -1 - 1 - h = 2 h+1 -1 - (h+1) = 2 h+1 ) = O(N)

21
Event Simulation Bank simulation using priority queues?

Similar presentations

© 2019 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google