- 52 Views
- Uploaded on
- Presentation posted in: General

Priority Queues

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Priority Queues

- 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

- 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

insertItem(5, A)

insertItem(9, C)

insertItem(3, B)

insertItem(7, D)

minElement()

minKey()

removeMin()

size()

minElement()

removeMin()

removeMin()

removeMin()

removeMin()

isEmpty()

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

- A heap is a priority queue implemented with a binary tree

- 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

- 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?

root

4

9

7

56

10

15

11

- Insertion algorithm

new_node

5

root

4

9

7

56

10

15

11

while new node is smaller than its parent

move parent down

- Running time?

- Deletion algorithm

delete 4

root

4

9

5

56

10

7

11

15

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

- Children are positions index*2 and index*2+1
- Implementation of insert and remove?

0 1 2 3 4 5 6 7

- Algorithm to use a heap to sort a list of numbers
- Running time?

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

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

percolateDown(i);

- Running time is no more than the sum of the heights of all nodes

root

56

9

15

7

10

4

11

- Theorem: For the perfect binary tree of height h containing 2h+1-1 nodes, the sum of the heights of the nodes is 2h+1-1-(h+1)
- Proof: 1 node at height h, 2 nodes at height h-1, 22 nodes at height h-1, 2i nodes at height h-i
h

- Sum S = ∑ 2i(h-i)
i=0

- S = h+2(h-1)+4(h-2) +...+2h-1(1) + 2h(0)
- 2S = 2h + 4(h-1) + 8(h-2)+ ... +2h(1)
- 2S-S = -h + 2 + 4 + 8 + ... + 2h-1 + 2h
- = 2h+1 -1 - 1 - h
- = 2h+1 -1 - (h+1)
- = < 2N (N = 2h -> 2h+1)
- = O(N)

- Bank simulation using priority queues?