priority queues
Download
Skip this Video
Download Presentation
Priority Queues

Loading in 2 Seconds...

play fullscreen
1 / 21

Priority Queues - PowerPoint PPT Presentation


  • 59 Views
  • Uploaded on

Priority Queues. What is a Priority Queue?. 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. Priority Queue ADT Operations. size() isEmpty()

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Priority Queues' - mireya


An Image/Link below is provided (as is) to download presentation

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 - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
what is a priority queue
What is a Priority Queue?
  • 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
priority queue adt operations
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
example
insertItem(5, A)

insertItem(9, C)

insertItem(3, B)

insertItem(7, D)

minElement()

minKey()

removeMin()

size()

minElement()

removeMin()

removeMin()

removeMin()

removeMin()

isEmpty()

Example
implementation
Implementation
  • Using an array?
  • Using a linked list?
  • Using a binary search tree?
  • Running time of insertItem/removeMin?
heaps
Heaps
  • A heap is a priority queue implemented with a binary tree
heaps1
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
heaps2
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?
example heap
Example Heap

root

4

9

7

56

10

15

11

heap implementation
Heap Implementation
  • Insertion algorithm

new_node

5

root

4

9

7

56

10

15

11

up heap bubbling
Up-Heap Bubbling

while new node is smaller than its parent

move parent down

  • Running time?
heap implementation1
Heap Implementation
  • Deletion algorithm

delete 4

root

4

9

5

56

10

7

11

15

down heap bubbling
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

vector implementation
Vector Implementation
  • Children are positions index*2 and index*2+1
  • Implementation of insert and remove?

0 1 2 3 4 5 6 7

heap sort
Heap Sort
  • Algorithm to use a heap to sort a list of numbers
  • Running time?
buildheap algorithm
BuildHeap Algorithm
  • Goal: Insert N items into initially empty heap
  • Algorithm 1: Perform N inserts
    • Worst-case running time?
efficient buildheap
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);

running time
Running Time
  • Running time is no more than the sum of the heights of all nodes

root

56

9

15

7

10

4

11

buildheap proof
BuildHeap Proof
  • 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

buildheap proof1
BuildHeap Proof
  • 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)
event simulation
Event Simulation
  • Bank simulation using priority queues?
ad