Binary Heaps CSE 373 Data Structures Lecture 11. 2/5/03Binary Heaps - Lecture 112 Readings Reading ›Sections 6.1-6.4.

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)
CHAPTER 5 PRIORITY QUEUES (HEAPS) §1 ADT Model Objects: A finite ordered list with zero or more elements. Operations:  PriorityQueue Initialize( int.
CSE332: Data Abstractions Lecture 4: Priority Queues Dan Grossman Spring 2010.
CS 315 March 24 Goals: Heap (Chapter 6) priority queue definition of a heap Algorithms for Insert DeleteMin percolate-down Build-heap.
Version TCSS 342, Winter 2006 Lecture Notes Priority Queues Heaps.
Chapter 6: Priority Queues Priority Queues Binary Heaps Mark Allen Weiss: Data Structures and Algorithm Analysis in Java Lydia Sinapova, Simpson College.
CSE 373 Data Structures Lecture 12
Priority Queues  Queues: first-in first-out in printer schedule  Disadvantage: short job, important job need to wait  Priority queue is a data structure.
1 Binary heaps binary tree that satisfy two properties –structural property (is a complete tree) –heap-ordering property (minimum item on top) Can have.
Source: Muangsin / Weiss1 Priority Queue (Heap) A kind of queue Dequeue gets element with the highest priority Priority is based on a comparable value.
Lecture 7 Heaps and Priority Queues. Motivating Example 3 jobs have been submitted to a printer, the jobs have sizes 100, 10, 1 page. Average waiting.
0 Course Outline n Introduction and Algorithm Analysis (Ch. 2) n Hash Tables: dictionary data structure (Ch. 5) n Heaps: priority queue data structures.
PQ, binary heaps G.Kamberova, Algorithms Priority Queue ADT Binary Heaps Gerda Kamberova Department of Computer Science Hofstra University.
Heaps and heapsort COMP171 Fall 2005 Part 2. Sorting III / Slide 2 Heap: array implementation Is it a good idea to store arbitrary.
1 Chapter 8 Priority Queues. 2 Implementations Heaps Priority queues and heaps Vector based implementation of heaps Skew heaps Outline.
1 Priority Queues (Heaps)  Sections 6.1 to The Priority Queue ADT  DeleteMin –log N time  Insert –log N time  Other operations –FindMin  Constant.
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.
Heaps, Heapsort, Priority Queues. Sorting So Far Heap: Data structure and associated algorithms, Not garbage collection context.
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.
Chapter 11 Heap. Overview ● The heap is a special type of binary tree. ● It may be used either as a priority queue or as a tool for sorting.
Data Structures Week 8 Further Data Structures The story so far  Saw some fundamental operations as well as advanced operations on arrays, stacks, and.
P p Chapter 10 has several programming projects, including a project that uses heaps. p p This presentation shows you what a heap is, and demonstrates.
Data Structure & Algorithm II.  In a multiuser computer system, multiple users submit jobs to run on a single processor.  We assume that the time required.
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:
DATA STRUCTURES AND ALGORITHMS Lecture Notes 8 Prepared by İnanç TAHRALI.
1 Joe Meehean.  We wanted a data structure that gave us... the smallest item then the next smallest then the next and so on…  This ADT is called a priority.
Priority Queues and Heaps. October 2004John Edgar2  A queue should implement at least the first two of these operations:  insert – insert item at the.
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.
CSE373: Data Structures & Algorithms Lecture 6: Priority Queues Kevin Quinn Fall 2015.
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.
8 January Heap Sort CSE 2011 Winter Heap Sort Consider a priority queue with n items implemented by means of a heap  the space used is.
Prof. Amr Goneid, AUC1 Analysis & Design of Algorithms (CSCE 321) Prof. Amr Goneid Department of Computer Science, AUC Part R3. Priority Queues.
Intro. to Data Structures Chapter 6 Priority Queue (Heap) Veera Muangsin, Dept. of Computer Engineering, Chulalongkorn University 1 Priority Queue.
FALL 2005CENG 213 Data Structures1 Priority Queues (Heaps) Reference: Chapter 7.
1 Heap Sort. A Heap is a Binary Tree Height of tree = longest path from root to leaf =  (lgn) A heap is a binary tree satisfying the heap condition:
AVL Trees and Heaps. AVL Trees So far balancing the tree was done globally Basically every node was involved in the balance operation Tree balancing can.
Mergeable Heaps David Kauchak cs302 Spring Admin Homework 7?
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: AVL Trees and Priority Queues Catie Baker Spring 2015.
CSE332: Data Abstractions Lecture 4: Priority Queues Dan Grossman Spring 2012.
Nov 2, 2001CSE 373, Autumn Hash Table example marking deleted items + choice of table size.
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.
1 Priority Queues (Heaps). 2 Priority Queues Many applications require that we process records with keys in order, but not necessarily in full sorted.
CSE373: Data Structures & Algorithms Priority Queues
Partially Ordered Data ,Heap,Binary Heap
CSE373: Data Structures & Algorithms
Heaps (8.3) CSE 2011 Winter May 2018.
Priority Queues © 2010 Goodrich, Tamassia Priority Queues 1
October 30th – Priority QUeues
Source: Muangsin / Weiss
Bohyung Han CSE, POSTECH
CMSC 341 Lecture 14 Priority Queues & Heaps
CSE332: Data Abstractions Lecture 4: Priority Queues
Tree Representation Heap.
"Teachers open the door, but you must enter by yourself. "
CS Data Structure: Heaps.
CSE 326: Data Structures Priority Queues & Binary Heaps
Priority Queues (Heaps)
Priority Queues CSE 373 Data Structures.
Heaps & Multi-way Search Trees
Priority Queues Binary Heaps
Presentation transcript:

Binary Heaps CSE 373 Data Structures Lecture 11

2/5/03Binary Heaps - Lecture 112 Readings Reading ›Sections

2/5/03Binary Heaps - Lecture 113 Revisiting FindMin Application: Find the smallest ( or highest priority) item quickly ›Operating system needs to schedule jobs according to priority instead of FIFO ›Event simulation (bank customers arriving and departing, ordered according to when the event happened) ›Find student with highest grade, employee with highest salary etc.

2/5/03Binary Heaps - Lecture 114 Priority Queue ADT Priority Queue can efficiently do: ›FindMin (and DeleteMin) ›Insert What if we use… ›Lists: If sorted, what is the run time for Insert and FindMin? Unsorted? ›Binary Search Trees: What is the run time for Insert and FindMin? ›Hash Tables: What is the run time for Insert and FindMin?

2/5/03Binary Heaps - Lecture 115 Less flexibility  More speed Lists ›If sorted: FindMin is O(1) but Insert is O(N) ›If not sorted: Insert is O(1) but FindMin is O(N) Balanced Binary Search Trees (BSTs) ›Insert is O(log N) and FindMin is O(log N) Hash Tables: ›Insert O(1) but no hope for FindMin BSTs look good but… ›BSTs are efficient for all Finds, not just FindMin ›We only need FindMin

2/5/03Binary Heaps - Lecture 116 Better than a speeding BST We can do better than Balanced Binary Search Trees? ›Very limited requirements: Insert, FindMin, DeleteMin. The goals are: ›FindMin is O(1) ›Insert is O(log N) ›DeleteMin is O(log N)

2/5/03Binary Heaps - Lecture 117 Binary Heaps A binary heap is a binary tree (NOT a BST) that is: ›Complete: the tree is completely filled except possibly the bottom level, which is filled from left to right ›Satisfies the heap order property every node is less than or equal to its children or every node is greater than or equal to its children The root node is always the smallest node ›or the largest, depending on the heap order

2/5/03Binary Heaps - Lecture 118 Heap order property A heap provides limited ordering information Each path is sorted, but the subtrees are not sorted relative to each other ›A binary heap is NOT a binary search tree These are all valid binary heaps (minimum)

2/5/03Binary Heaps - Lecture 119 Binary Heap vs Binary Search Tree Binary HeapBinary Search Tree Parent is greater than left child, less than right child Parent is less than both left and right children min value

2/5/03Binary Heaps - Lecture 1110 Structure property A binary heap is a complete tree ›All nodes are in use except for possibly the right end of the bottom row

2/5/03Binary Heaps - Lecture 1111 Examples not complete 6 24 complete tree, heap order is "max" complete tree, heap order is "min" complete tree, but min heap order is broken

2/5/03Binary Heaps - Lecture 1112 Array Implementation of Heaps (Implicit Pointers) Root node = A[1] Children of A[i] = A[2i], A[2i + 1] Keep track of current size N (number of nodes) N = 5 value index

2/5/03Binary Heaps - Lecture 1113 FindMin and DeleteMin FindMin: Easy! ›Return root value A[1] ›Run time = ? DeleteMin: ›Delete (and return) value at root node

2/5/03Binary Heaps - Lecture 1114 DeleteMin Delete (and return) value at root node

2/5/03Binary Heaps - Lecture 1115 Maintain the Structure Property We now have a “Hole” at the root ›Need to fill the hole with another value When we get done, the tree will have one less node and must still be complete

2/5/03Binary Heaps - Lecture 1116 Maintain the Heap Property The last value has lost its node › we need to find a new place for it We can do a simple insertion sort operation to find the correct place for it in the tree

2/5/03Binary Heaps - Lecture 1117 DeleteMin: Percolate Down Keep comparing with children A[2i] and A[2i + 1] Copy smaller child up and go down one level Done if both children are  item or reached a leaf node What is the run time? ? ?

2/5/03Binary Heaps - Lecture 1118 Percolate Down PercDown(i:integer, x :integer): { // N is the number of entries in heap// j : integer; Case{ 2i > N : A[i] := x; //at bottom// 2i = N : if A[2i] < x then A[i] := A[2i]; A[2i] := x; else A[i] := x; 2i < N : if A[2i] < A[2i+1] then j := 2i; else j := 2i+1; if A[j] < x then A[i] := A[j]; PercDown(j,x); else A[i] := x; }}

2/5/03Binary Heaps - Lecture 1119 DeleteMin: Run Time Analysis Run time is O(depth of heap) A heap is a complete binary tree Depth of a complete binary tree of N nodes? ›depth =  log 2 (N)  Run time of DeleteMin is O(log N)

2/5/03Binary Heaps - Lecture 1120 Insert Add a value to the tree Structure and heap order properties must still be correct when we are done

2/5/03Binary Heaps - Lecture 1121 Maintain the Structure Property The only valid place for a new node in a complete tree is at the end of the array We need to decide on the correct value for the new node, and adjust the heap accordingly

2/5/03Binary Heaps - Lecture 1122 Maintain the Heap Property The new value goes where? We can do a simple insertion sort operation to find the correct place for it in the tree

2/5/03Binary Heaps - Lecture 1123 Insert: Percolate Up Start at last node and keep comparing with parent A[i/2] If parent larger, copy parent down and go up one level Done if parent  item or reached top node A[1] Run time? ? ? ?

2/5/03Binary Heaps - Lecture 1124 Insert: Done Run time?

2/5/03Binary Heaps - Lecture 1125 PercUp Define PercUp which percolates new entry to correct spot. Note: the parent of i is i/2 PercUp(i : integer, x : integer): { ???? }

2/5/03Binary Heaps - Lecture 1126 Sentinel Values Every iteration of Insert needs to test: ›if it has reached the top node A[1] ›if parent  item Can avoid first test if A[0] contains a very large negative value ›sentinel -  < item, for all items Second test alone always stops at top -- value index --

2/5/03Binary Heaps - Lecture 1127 Binary Heap Analysis Space needed for heap of N nodes: O(MaxN) ›An array of size MaxN, plus a variable to store the size N, plus an array slot to hold the sentinel Time ›FindMin: O(1) ›DeleteMin and Insert: O(log N) ›BuildHeap from N inputs : O(N)

2/5/03Binary Heaps - Lecture 1128 Build Heap BuildHeap { for i = N/2 to 1 by –1 PercDown(i,A[i]) } N=

2/5/03Binary Heaps - Lecture 1129 Build Heap

2/5/03Binary Heaps - Lecture 1130 Build Heap

2/5/03Binary Heaps - Lecture 1131 Analysis of Build Heap Assume N = 2 K –1 ›Level 1: k -1 steps for 1 item ›Level 2: k - 2 steps of 2 items ›Level 3: k - 3 steps for 4 items ›Level i : k - i steps for 2 i-1 items

2/5/03Binary Heaps - Lecture 1132 Other Heap Operations Find(X, H): Find the element X in heap H of N elements ›What is the running time? O(N) FindMax(H): Find the maximum element in H Where FIndMin is O(1) ›What is the running time? O(N) We sacrificed performance of these operations in order to get O(1) performance for FindMin

2/5/03Binary Heaps - Lecture 1133 Other Heap Operations DecreaseKey(P, ,H): Decrease the key value of node at position P by a positive amount , e.g., to increase priority ›First, subtract  from current value at P ›Heap order property may be violated ›so percolate up to fix ›Running Time: O(log N)

2/5/03Binary Heaps - Lecture 1134 Other Heap Operations IncreaseKey(P, ,H): Increase the key value of node at position P by a positive amount , e.g., to decrease priority ›First, add  to current value at P ›Heap order property may be violated ›so percolate down to fix ›Running Time: O(log N)

2/5/03Binary Heaps - Lecture 1135 Other Heap Operations Delete(P,H): E.g. Delete a job waiting in queue that has been preemptively terminated by user ›Use DecreaseKey(P, ,H) followed by DeleteMin ›Running Time: O(log N)

2/5/03Binary Heaps - Lecture 1136 Other Heap Operations Merge(H1,H2): Merge two heaps H1 and H2 of size O(N). H1 and H2 are stored in two arrays. ›Can do O(N) Insert operations: O(N log N) time ›Better: Copy H2 at the end of H1 and use BuildHeap. Running Time: O(N)

2/5/03Binary Heaps - Lecture 1137 PercUp Solution PercUp(i : integer, x : integer): { if i = 1 then A[1] := x else if A[i/2] < x then A[i] := x; else A[i] := A[i/2]; Percup(i/2,x); }