CSE332: Data Abstractions Lecture 4: Priority Queues Dan Grossman Spring 2010.

Slides:



Advertisements
Similar presentations
COL 106 Shweta Agrawal and Amit Kumar
Advertisements

Heaps1 Part-D2 Heaps Heaps2 Recall Priority Queue ADT (§ 7.1.3) A priority queue stores a collection of entries Each entry is a pair (key, value)
CMSC 341 Binary Heaps Priority Queues. 8/3/2007 UMBC CSMC 341 PQueue 2 Priority Queues Priority: some property of an object that allows it to be prioritized.
Priority Queue (Heap) & Heapsort COMP171 Fall 2006 Lecture 11 & 12.
1 Chapter 6 Priority Queues (Heaps) General ideas of priority queues (Insert & DeleteMin) Efficient implementation of priority queue Uses of priority queues.
CS 315 March 24 Goals: Heap (Chapter 6) priority queue definition of a heap Algorithms for Insert DeleteMin percolate-down Build-heap.
Binary Heaps CSE 373 Data Structures Lecture 11. 2/5/03Binary Heaps - Lecture 112 Readings Reading ›Sections
Version TCSS 342, Winter 2006 Lecture Notes Priority Queues Heaps.
Source: Muangsin / Weiss1 Priority Queue (Heap) A kind of queue Dequeue gets element with the highest priority Priority is based on a comparable value.
CSE373: Data Structures & Algorithms Lecture 5: Dictionaries; Binary Search Trees Aaron Bauer Winter 2014.
CSE 373 Data Structures and Algorithms Lecture 13: Priority Queues (Heaps)
CSC 172 DATA STRUCTURES. Priority Queues Model Set with priorities associatedwith elements Priorities are comparable by a < operator Operations Insert.
1 Priority Queues (Heaps)  Sections 6.1 to The Priority Queue ADT  DeleteMin –log N time  Insert –log N time  Other operations –FindMin  Constant.
1 HEAPS & PRIORITY QUEUES Array and Tree implementations.
Compiled by: Dr. Mohammad Alhawarat BST, Priority Queue, Heaps - Heapsort CHAPTER 07.
PRIORITY QUEUES (HEAPS). Queues are a standard mechanism for ordering tasks on a first-come, first-served basis However, some tasks may be more important.
ADT Table and Heap Ellen Walker CPSC 201 Data Structures Hiram College.
The Binary Heap. Binary Heap Looks similar to a binary search tree BUT all the values stored in the subtree rooted at a node are greater than or equal.
Priority Queues and Binary Heaps Chapter Trees Some animals are more equal than others A queue is a FIFO data structure the first element.
Chapter 21 Binary Heap.
Data Structures Week 8 Further Data Structures The story so far  Saw some fundamental operations as well as advanced operations on arrays, stacks, and.
Chapter 21 Priority Queue: Binary Heap Saurav Karmakar.
1 Heaps and Priority Queues Starring: Min Heap Co-Starring: Max Heap.
Priority Queue. Priority Queues Queue (FIFO). Priority queue. Deletion from a priority queue is determined by the element priority. Two kinds of priority.
CSE373: Data Structures & Algorithms Lecture 6: Priority Queues Dan Grossman Fall 2013.
PRIORITY QUEUES AND HEAPS CS16: Introduction to Data Structures & Algorithms Tuesday, February 24,
1 Heaps (Priority Queues) You are given a set of items A[1..N] We want to find only the smallest or largest (highest priority) item quickly. Examples:
CS221: Algorithms and Data Structures Lecture #3 Mind Your Priority Queues Steve Wolfman 2014W1 1.
Priority Queues and Heaps. October 2004John Edgar2  A queue should implement at least the first two of these operations:  insert – insert item at the.
1 Heaps and Priority Queues v2 Starring: Min Heap Co-Starring: Max Heap.
CPSC 252 Binary Heaps Page 1 Binary Heaps A complete binary tree is a binary tree that satisfies the following properties: - every level, except possibly.
CE 221 Data Structures and Algorithms Chapter 6: Priority Queues (Binary Heaps) Text: Read Weiss, §6.1 – 6.3 1Izmir University of Economics.
CSE373: Data Structures & Algorithms Lecture 6: Priority Queues Kevin Quinn Fall 2015.
CSE332: Data Abstractions Lecture 5: Binary Heaps, Continued Dan Grossman Spring 2012.
CS223 Advanced Data Structures and Algorithms 1 Priority Queue and Binary Heap Neil Tang 02/09/2010.
Data StructuresData Structures Priority Queue. Recall Queues FIFO:First-In, First-Out Some contexts where this seems right? Some contexts where some things.
Intro. to Data Structures Chapter 6 Priority Queue (Heap) Veera Muangsin, Dept. of Computer Engineering, Chulalongkorn University 1 Priority Queue.
HEAPS. Review: what are the requirements of the abstract data type: priority queue? Quick removal of item with highest priority (highest or lowest key.
FALL 2005CENG 213 Data Structures1 Priority Queues (Heaps) Reference: Chapter 7.
CSE 373: Data Structures and Algorithms Lecture 11: Priority Queues (Heaps) 1.
Priority Queues, Heaps, and Heapsort CSE 2320 – Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington 1.
Priority Queues CS 110: Data Structures and Algorithms First Semester,
1 Chapter 6 Heapsort. 2 About this lecture Introduce Heap – Shape Property and Heap Property – Heap Operations Heapsort: Use Heap to Sort Fixing heap.
CSE373: Data Structures & Algorithms Lecture 8: Priority Queues Aaron Bauer Winter 2014.
Priority Queues CS /02/05 L7: PQs Slide 2 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved.
CSE373: Data Structures & Algorithms Lecture 8: AVL Trees and Priority Queues Catie Baker Spring 2015.
CSE373: Data Structures & Algorithms Lecture 9: Priority Queues and Binary Heaps Linda Shapiro Spring 2016.
CSE332: Data Abstractions Lecture 4: Priority Queues Dan Grossman Spring 2012.
Heaps, Heap Sort, and Priority Queues. Background: Binary Trees * Has a root at the topmost level * Each node has zero, one or two children * A node that.
CSE373: Data Structures & Algorithms Lecture 8: AVL Trees and Priority Queues Linda Shapiro Spring 2016.
Heaps and Heap Sort. Sorting III / Slide 2 Background: Complete Binary Trees * A complete binary tree is the tree n Where a node can have 0 (for the leaves)
CSE373: Data Structures & Algorithms Priority Queues
CSE373: Data Structures & Algorithms
CS 201 Data Structures and Algorithms
Heaps (8.3) CSE 2011 Winter May 2018.
October 30th – Priority QUeues
Source: Muangsin / Weiss
Bohyung Han CSE, POSTECH
7/23/2009 Many thanks to David Sun for some of the included slides!
CMSC 341: Data Structures Priority Queues – Binary Heaps
CSE332: Data Abstractions Lecture 5: Binary Heaps, Continued
Instructor: Lilian de Greef Quarter: Summer 2017
CSE 373: Data Structures and Algorithms
CSE332: Data Abstractions Lecture 4: Priority Queues
CE 221 Data Structures and Algorithms
CSE 326: Data Structures Priority Queues & Binary Heaps
CSE373: Data Structures & Algorithms Lecture 7: Binary Heaps, Continued Dan Grossman Fall 2013.
CSE 373 Priority queue implementation; Intro to heaps
CSC 380: Design and Analysis of Algorithms
Priority Queues CSE 373 Data Structures.
Presentation transcript:

CSE332: Data Abstractions Lecture 4: Priority Queues Dan Grossman Spring 2010

A new ADT: Priority Queue Textbook Chapter 6 –Will go back to binary search trees –Nice to see a new and surprising data structure first A priority queue holds compare-able data –Unlike stacks and queues need to compare items Given x and y, is x less than, equal to, or greater than y What this means can depend on your data –Much of course will require this: dictionaries, sorting –Integers are comparable, so will use them in examples But the priority queue ADT is much more general Spring 20102CSE332: Data Abstractions

Priorities Assume each item has a “priority” –The lesser item is the one with the greater priority –So “priority 1” is more important than “priority 4” –(Just a convention) Operations: –insert –deleteMin –create, is_empty, destroy Key property: deleteMin returns and deletes from the queue the item with greatest priority (lowest priority value) –Can resolve ties arbitrarily Spring 20103CSE332: Data Abstractions insert deleteMin

Focusing on the numbers For simplicity in lecture, we’ll often suppose items are just int s and the int is the priority –The same concepts without generic usefulness –So an operation sequence could be insert 6 insert 5 x = deleteMin – int priorities are common, but really just need comparable –Not having “other data” is very rare Example: print job is a priority and the file Spring 20104CSE332: Data Abstractions

Example insert x1 with priority 5 insert x2 with priority 3 insert x3 with priority 4 a = deleteMin b = deleteMin insert x4 with priority 2 insert x5 with priority 6 c = deleteMin d = deleteMin Analogy: insert is like enqueue, deleteMin is like dequeue –But the whole point is to use priorities instead of FIFO Spring 20105CSE332: Data Abstractions

Applications Like all good ADTs, the priority queue arises often –Sometimes “directly”, sometimes less obvious Run multiple programs in the operating system –“critical” before “interactive” before “compute-intensive” –Maybe let users set priority level Treat hospital patients in order of severity (or triage) Select print jobs in order of decreasing length? Forward network packets in order of urgency Select most frequent symbols for data compression (cf. CSE143) Sort: insert all, then repeatedly deleteMin –Much like Project 1 uses a stack to implement reverse Spring 20106CSE332: Data Abstractions

More applications “Greedy” algorithms –Will see an example when we study graphs in a few weeks Discrete event simulation (system modeling, virtual worlds, …) –Simulate how state changes when events fire –Each event e happens at some time t and generates new events e1, …, en at times t+t1, …, t+tn –Naïve approach: advance “clock” by 1 unit at a time and process any events that happen then –Better: Pending events in a priority queue (priority = time happens) Repeatedly: deleteMin and then insert new events Effectively, “set clock ahead to next event” Spring 20107CSE332: Data Abstractions

Need a good data structure! Will show an efficient, non-obvious data structure for this ADT –But first let’s analyze some “obvious” ideas –All times worst-case; assume arrays “have room” data insert algorithm / time deleteMin algorithm / time unsorted array unsorted linked list sorted circular array sorted linked list binary search tree Spring 20108CSE332: Data Abstractions

Need a good data structure! Will show an efficient, non-obvious data structure for this ADT –But first let’s analyze some “obvious” ideas for n data items –All times worst-case; assume arrays “have room” data insert algorithm / time deleteMin algorithm / time unsorted array add at end O(1) search O(n) unsorted linked list add at front O(1) search O(n) sorted circular array search / shift O(n) move front O(1) sorted linked list remove at front O(1)put in right place O(n) binary search tree put in right place O(n)leftmost O(n) Spring 20109CSE332: Data Abstractions

More on possibilities If priorities are random, binary search tree will likely do better –O( log n) insert and O( log n) deleteMin on average But we are about to see a data structure called a “binary heap” –O( log n) insert and O( log n) deleteMin worst-case –Very good constant factors –If items arrive in random order, then insert is O(1) on average One more idea: if priorities are 0, 1, …, k can use array of lists –insert : add to front of list at arr[priority], O(1) –deleteMin : remove from lowest non-empty list O(k) Spring CSE332: Data Abstractions

Tree terms (review?) The binary heap data structure implementing the priority queue ADT will be a tree, so worth establishing some terminology Spring CSE332: Data Abstractions A E B DF C G IH LJMKN Tree T root(tree) children(node) parent(node) leaves(tree) siblings(node) ancestors(node) descendents(node) subtree(node) depth(node) height(tree) degree(node) branching factor(tree)

Kinds of trees Certain terms define trees with specific structure Binary tree: Each node has at most 2 children n-ary tree: Each node as at most n children Complete tree: Each row is completely full except maybe the bottom row, which is filled from left to right Spring CSE332: Data Abstractions Teaser: Later we’ll learn a tree is a kind of directed graph with specific structure

Our data structure Finally, then, a binary min-heap (or just binary heap or just heap) is: A complete tree – the “structure property” For every (non-root) node the parent node’s value is less than the node’s value – the “heap property” (not a binary search tree) Spring CSE332: Data Abstractions not a heap a heap So: Where is the highest-priority item? What is the height of a heap with n items?

Operations: basic idea findMin : return root.data deleteMin : 1.answer = root.data 2.Move right-most node in last row to root to restore structure property 3.“Percolate down” to restore heap property insert: 1.Put new node in next position on bottom row to restore structure property 2.“Percolate up” to restore heap property Spring CSE332: Data Abstractions

15 DeleteMin Delete (and return) value at root node Spring 2010CSE332: Data Abstractions

16 2. Restore the Structure Property We now have a “hole” at the root –Need to fill the hole with another value When we are done, the tree will have one less node and must still be complete Spring 2010CSE332: Data Abstractions

17 3. Restore the Heap Property Percolate down: Keep comparing with both children Move smaller child up and go down one level Done if both children are  item or reached a leaf node What is the run time? ? ? Spring 2010CSE332: Data Abstractions

18 DeleteMin: Run Time Analysis Run time is O(height of heap) A heap is a complete binary tree Height of a complete binary tree of n nodes? –height =  log 2 (n)  Run time of deleteMin is O( log n) Spring 2010CSE332: Data Abstractions

19 Insert Add a value to the tree Structure and heap order properties must still be correct afterwards Spring 2010 CSE332: Data Abstractions

20 Insert: Maintain the Structure Property There is only one valid tree shape after we add one more node So put our new data there and then focus on restoring the heap property Spring 2010CSE332: Data Abstractions

21 Maintain the heap property Percolate up: Put new data in new location If parent larger, swap with parent, and continue Done if parent  item or reached root Run time? ? ? ? Spring 2010CSE332: Data Abstractions

22 Insert: Run Time Analysis Like deleteMin, worst-case time proportional to tree height –O( log n) But… deleteMin needs the “last used” complete-tree position and insert needs the “next to use” complete-tree position –If “keep a reference to there” then insert and deleteMin have to adjust that reference: O( log n) in worst case –Could calculate how to find it in O( log n) from the root given the size of the heap But it’s not easy And then insert is always O( log n), promised O(1) on average (assuming random arrival of items) There’s a “trick”: don’t represent complete trees with explicit edges! Spring 2010CSE332: Data Abstractions