- Alan Perlis Heaps "You think you know when you can learn,

Slides:



Advertisements
Similar presentations
COL 106 Shweta Agrawal and Amit Kumar
Advertisements

CMPT 225 Priority Queues and Heaps. Priority Queues Items in a priority queue have a priority The priority is usually numerical value Could be lowest.
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.
Binary Heaps What is a Binary Heap? Array representation of a Binary Heap MinHeap implementation Operations on Binary Heaps: enqueue dequeue deleting an.
CS 261 – Data Structures Priority Queues & Heaps.
Heaps & Priority Queues Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Binary Heaps What is a Binary Heap? Array representation of a Binary Heap MinHeap implementation Operations on Binary Heaps: enqueue dequeue deleting an.
Binary Heaps What is a Binary Heap? Array representation of a Binary Heap MinHeap implementation Operations on MinHeap: Insert Delete Converting an array.
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 11 Binary Heap King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department.
1 Binary Heaps What is a Binary Heap? Array representation of a Binary Heap MinHeap implementation Operations on Binary Heaps: enqueue dequeue deleting.
CSE 373 Data Structures and Algorithms Lecture 13: Priority Queues (Heaps)
1 HEAPS & PRIORITY QUEUES Array and Tree implementations.
CSCE 3110 Data Structures & Algorithm Analysis Binary Search Trees Reading: Chap. 4 (4.3) Weiss.
Geoff Holmes and Bernhard Pfahringer COMP206-08S General Programming 2.
COMP 103 Priority Queues, Partially Ordered Trees and Heaps.
Priority Queues and Binary Heaps Chapter Trees Some animals are more equal than others A queue is a FIFO data structure the first element.
data ordered along paths from root to leaf
1 Heaps and Priority Queues Starring: Min Heap Co-Starring: Max Heap.
Topic 24 Heaps "You think you know when you can learn, are more sure when you can write even more when you can teach, but certain when you can program."
PRIORITY QUEUES AND HEAPS Slides of Ken Birman, Cornell University.
CE 221 Data Structures and Algorithms Chapter 6: Priority Queues (Binary Heaps) Text: Read Weiss, §6.1 – 6.3 1Izmir University of Economics.
Week 13 - Friday.  What did we talk about last time?  Sorting  Insertion sort  Merge sort  Started quicksort.
Chapter 12 Heaps & HeapSort © John Urrutia 2014, All Rights Reserved1.
HEAPS. Review: what are the requirements of the abstract data type: priority queue? Quick removal of item with highest priority (highest or lowest key.
CompSci 100e 8.1 Scoreboard l What else might we want to do with a data structure? AlgorithmInsertionDeletionSearch Unsorted Vector/array Sorted vector/array.
CS 367 Introduction to Data Structures Lecture 8.
Priority Queues and Heaps Data Structures and Algorithms CS 244 Brent M. Dingle, Ph.D. Department of Mathematics, Statistics, and Computer Science University.
Week 13 - Wednesday.  What did we talk about last time?  NP-completeness.
Properties: -The value in each node is greater than all values in the node’s subtrees -Complete tree! (fills up from left to right) Max Heap.
2 Binary Heaps What if we’re mostly concerned with finding the most relevant data?  A binary heap is a binary tree (2 or fewer subtrees for each node)
1 Priority Queues (Heaps). 2 Priority Queues Many applications require that we process records with keys in order, but not necessarily in full sorted.
Priority Queues and Heaps. John Edgar  Define the ADT priority queue  Define the partially ordered property  Define a heap  Implement a heap using.
"Teachers open the door, but you must enter by yourself. "
Partially Ordered Data ,Heap,Binary Heap
CSCE 3110 Data Structures & Algorithm Analysis
CSCE 3110 Data Structures & Algorithm Analysis
CS 201 Data Structures and Algorithms
Heaps (8.3) CSE 2011 Winter May 2018.
Heaps And Priority Queues
Programming Abstractions
Source: Muangsin / Weiss
Binary Heaps What is a Binary Heap?
March 31 – Priority Queues and the heap
CSCE 3100 Data Structures and Algorithm Analysis
Heapsort.
Heaps.
Binary Heaps What is a Binary Heap?
Binary Heaps What is a Binary Heap?
Map interface Empty() - return true if the map is empty; else return false Size() - return the number of elements in the map Find(key) - if there is an.
Heaps & Priority Queues
CSCI2100 Data Structures Tutorial 7
Chapter 8 – Binary Search Tree
Priority Queues.
CSE 373: Data Structures and Algorithms
- Alan Perlis Topic 24 Heaps "You think you know when you can learn,
Priority Queues.
"Teachers open the door, but you must enter by yourself. "
CE 221 Data Structures and Algorithms
Ch. 12 Tables and Priority Queues
Priority Queues & Heaps
Heapsort.
CSE 373 Priority queue implementation; Intro to heaps
CS 367 – Introduction to Data Structures
Priority Queues CSE 373 Data Structures.
Priority Queues & Heaps
Chapter 9 The Priority Queue ADT
Heaps.
Presentation transcript:

- Alan Perlis Heaps "You think you know when you can learn, are more sure when you can write even more when you can teach, but certain when you can program." - Alan Perlis

Priority Queue Recall priority queue Options? elements enqueued based on priority dequeue removes the highest priority item Options? List? Binary Search Tree? Heaps

Another Option A heap A complete binary tree not to be confused with the runtime heap (portion of memory for dynamically allocated variables) A complete binary tree all levels have maximum number of nodes except deepest where nodes are filled in from left to right Maintains the heap order property in a min heap the value in the root of any subtree is less than or equal to all other values in the subtree Heaps

Question? In a max heap with no duplicates where is the largest value? the root of the tree in the left-most node in the right-most node a node in the lowest level None of these Heaps

Example Min Heap 12 17 16 19 52 37 25 21 45 Heaps

Enqueue Operation Add new element to next open spot in array Swap with parent if new value is less than parent Continue back up the tree as long as the new value is less than new parent node Heaps

Enqueue Example Add 15 to heap (initially next left most node) 12 17 16 19 52 37 25 21 45 15 Heaps

Enqueue Example Swap 15 and 52 12 17 16 19 15 37 25 21 45 52 Heaps

Enqueue Example Swap 15 and 17, then stop 12 15 16 19 17 37 25 21 45 52 Heaps

Internal Storage Interestingly heaps are often implemented with an array instead of nodes 12 17 16 19 52 37 25 21 45 for element at position i: parent index: i / 2 left child index: i * 2 right child index: i * 2 + 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 12 17 16 19 52 37 25 21 45 Heaps

PriorityQueue Class public class PriorityQueue<E extends Comparable<E>> { private int size; private E[] con; public PriorityQueue() { heap = getArray(2); } private E[] getArray(int size) { return (E[]) (new Comparable[size]); Heaps

PriorityQueue enqueue public void enqueue(E val) { if ( size >= con.length - 1 ) enlargeArray( con.length * 2 + 1 ); size++; int indexToPlace = size; while ( indexToPlace > 1 && val.compareTo( con[indexToPlace / 2] ) < 0 ) { con[indexToPlace] = con[indexToPlace / 2]; // swap indexToPlace /= 2; // change indexToPlace to parent } con[indexToPlace] = val; private void enlargeArray(int newSize) { E[] temp = getArray(newSize); System.arraycopy(con, 1, temp, 1, size); con = temp;

Dequeue min value / front of queue is in root of tree swap value from last node to root and move down swapping with smaller child unless values is smaller than both children Heaps

Dequeue Example Swap 35 into root (save 12 to return) 12 15 16 17 23 37 25 21 45 35 Heaps

Dequeue Example Swap 35 into root (save 12 to return) 35 15 16 17 23 37 25 21 45 Heaps

Dequeue Example Swap 35 with smaller child (15) 15 35 16 17 23 37 25 21 45 Heaps

Dequeue Example Swap 35 with smaller child (17) 15 17 16 35 23 37 25 21 45 Heaps

Dequeue Example Swap 35 with smaller child (21) 15 17 16 21 23 37 25 45 Heaps

Dequeue Code public E dequeue( ) { E top = con[1]; int hole = 1; boolean done = false; while ( hole * 2 < size && ! done ) { int child = hole * 2; // see which child is smaller if ( con[child].compareTo( con[child + 1] ) > 0 ) child++; // child now points to smaller // is replacement value bigger than child? if (con[size].compareTo( con[child] ) > 0 ) { con[hole] = con[child]; hole = child; } else done = true; con[hole] = con[size]; size--; return top;

PriorityQueue Comparison Run a Stress test of PQ implemented with Heap and PQ implemented with BinarySearchTree What will result be? Heap takes half the time or less of BST Heap faster, but not twice as fast About the same BST faster, but not twice as fast BST takes half the time or less of Heap Heaps