lecture 7: binary heaps, heapsort,...
TRANSCRIPT
![Page 1: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/1.jpg)
Lecture 7: Binary Heaps, Heapsort, Union-Find
Instructor: Saravanan Thirumuruganathan
CSE 5311 Saravanan Thirumuruganathan
![Page 2: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/2.jpg)
Outline
1 Data Structures to speed up algorithmsBinary Heap
Heapsort
Union Find
CSE 5311 Saravanan Thirumuruganathan
![Page 3: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/3.jpg)
In-Class Quizzes
URL: http://m.socrative.com/Room Name: 4f2bb99e
CSE 5311 Saravanan Thirumuruganathan
![Page 4: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/4.jpg)
Data Structures
Key Things to Know for Data StructuresMotivation
Distinctive Property
Major operations
Key Helper Routines
Representation
Algorithms for major operations
Applications
CSE 5311 Saravanan Thirumuruganathan
![Page 5: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/5.jpg)
Data Structures for Algorithmic Speedup
BST and RBT are two examples of data structures torepresent dynamic set
Today’s topic, Heap and Union-Find, can also be used torepresent dynamic set
However, these are used more often to speed up algorithms
CSE 5311 Saravanan Thirumuruganathan
![Page 6: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/6.jpg)
Binary Heap
CSE 5311 Saravanan Thirumuruganathan
![Page 7: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/7.jpg)
Motivation
Heap Sort (CLRS is organized that way!)
Priority Queue
Most space efficient data structure
CSE 5311 Saravanan Thirumuruganathan
![Page 8: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/8.jpg)
Priority Queue
“Queue” data structure has a FIFO property
Some times it is useful to consider priority
Output element with highest priority first
CSE 5311 Saravanan Thirumuruganathan
![Page 9: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/9.jpg)
Priority Queue - Major Operations
Insert
FindMin (resp. FindMax)
DeleteMin (resp. DeleteMax)
DecreaseKey (resp. IncreaseKey)
CSE 5311 Saravanan Thirumuruganathan
![Page 10: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/10.jpg)
Priority Queue - Applications1
Dijkstra’s shortest path algorithm
Prim’s MST algorithm
Heapsort
Online median
Huffman Encoding
A* Search (or any Best first search)
Discrete event simulation
CPU Scheduling
. . .
See Wikipedia entry for priority for details
1Kleinberg-Tardos Book and WikipediaCSE 5311 Saravanan Thirumuruganathan
![Page 11: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/11.jpg)
Priority Queue - Candidate Implementations
Assume: for DeleteMin and DecreaseKey, pointer to elementis given
LinkedList
Insert:
O(1)FindMin: O(n)DeleteMin: O(1)DecreaseKey: O(1)
Binary Heap
Insert: O(lg n)FindMin: O(1)DeleteMin: O(lg n)DecreaseKey: O(lg n)
Binomial Heaps, Fibonacci Heaps etc.
CSE 5311 Saravanan Thirumuruganathan
![Page 12: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/12.jpg)
Priority Queue - Candidate Implementations
Assume: for DeleteMin and DecreaseKey, pointer to elementis given
LinkedList
Insert: O(1)FindMin:
O(n)DeleteMin: O(1)DecreaseKey: O(1)
Binary Heap
Insert: O(lg n)FindMin: O(1)DeleteMin: O(lg n)DecreaseKey: O(lg n)
Binomial Heaps, Fibonacci Heaps etc.
CSE 5311 Saravanan Thirumuruganathan
![Page 13: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/13.jpg)
Priority Queue - Candidate Implementations
Assume: for DeleteMin and DecreaseKey, pointer to elementis given
LinkedList
Insert: O(1)FindMin: O(n)DeleteMin:
O(1)DecreaseKey: O(1)
Binary Heap
Insert: O(lg n)FindMin: O(1)DeleteMin: O(lg n)DecreaseKey: O(lg n)
Binomial Heaps, Fibonacci Heaps etc.
CSE 5311 Saravanan Thirumuruganathan
![Page 14: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/14.jpg)
Priority Queue - Candidate Implementations
Assume: for DeleteMin and DecreaseKey, pointer to elementis given
LinkedList
Insert: O(1)FindMin: O(n)DeleteMin: O(1)DecreaseKey:
O(1)
Binary Heap
Insert: O(lg n)FindMin: O(1)DeleteMin: O(lg n)DecreaseKey: O(lg n)
Binomial Heaps, Fibonacci Heaps etc.
CSE 5311 Saravanan Thirumuruganathan
![Page 15: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/15.jpg)
Priority Queue - Candidate Implementations
Assume: for DeleteMin and DecreaseKey, pointer to elementis given
LinkedList
Insert: O(1)FindMin: O(n)DeleteMin: O(1)DecreaseKey: O(1)
Binary Heap
Insert: O(lg n)FindMin: O(1)DeleteMin: O(lg n)DecreaseKey: O(lg n)
Binomial Heaps, Fibonacci Heaps etc.
CSE 5311 Saravanan Thirumuruganathan
![Page 16: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/16.jpg)
Binary Heaps
Perfect data structure for implementing Priority Queue
MaxHeap and MinHeap
We will focus on MaxHeaps in this lecture
CSE 5311 Saravanan Thirumuruganathan
![Page 17: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/17.jpg)
Complete Tree2
Perfectly balanced, except for bottom level
Elements were inserted top-to-bottom and left-to-right
2http://www.cs.princeton.edu/courses/archive/spring13/cos423/
lectures/BinomialHeaps.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 18: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/18.jpg)
Heap Property
Heap is a binary tree (NOT BST)
Heap:
Completeness Property: Heap has restricted structure. Itmust be a complete binary tree .Ordering Property: Relates parent value with that of itschildren
MaxHeap property: Value of parent must be greater thanboth its children
MinHeap property: Value of parent must be less than both itschildren
Heap with n elements has height O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 19: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/19.jpg)
Max Heap Example3
3Wikipedia page for HeapCSE 5311 Saravanan Thirumuruganathan
![Page 20: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/20.jpg)
Heap Property4
4http://courses.cs.washington.edu/courses/cse373/06sp/
handouts/lecture10.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 21: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/21.jpg)
Major Operations
Insert
FindMax
DeleteMax (aka ExtractMax)
IncreaseKey
CSE 5311 Saravanan Thirumuruganathan
![Page 22: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/22.jpg)
Key Helper Routines
Max-Heapify (or Min-Heapify)
Bubble-Up
Bubble-Down
Heapify
CSE 5311 Saravanan Thirumuruganathan
![Page 23: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/23.jpg)
Representation: Arrays
Very efficient implementation using arrays
Possible due to completeness property
Parent(i): return bi/2cLeftChild(i): return 2i
RightChild(i): return 2i + 1
CSE 5311 Saravanan Thirumuruganathan
![Page 24: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/24.jpg)
Representation: Arrays5
5CLRS Fig 6.1CSE 5311 Saravanan Thirumuruganathan
![Page 25: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/25.jpg)
Max-Heapify
Objective: Maintain heap property
Invocation: Max-Heapify(A, i)
Assume: Left(i) and Right(i) are valid max-heaps
A[i ] might violate max-heap property
Bubble-Down the violation
Analysis: O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 26: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/26.jpg)
Max-Heapify: Example6
6CLRS Fig 6.2CSE 5311 Saravanan Thirumuruganathan
![Page 27: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/27.jpg)
Max-Heapify: Example7
7CLRS Fig 6.2CSE 5311 Saravanan Thirumuruganathan
![Page 28: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/28.jpg)
Max-Heapify: Example8
8CLRS Fig 6.2CSE 5311 Saravanan Thirumuruganathan
![Page 29: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/29.jpg)
Heap : Insert
CSE 5311 Saravanan Thirumuruganathan
![Page 30: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/30.jpg)
Heap : Insert
CSE 5311 Saravanan Thirumuruganathan
![Page 31: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/31.jpg)
Heap : Insert
CSE 5311 Saravanan Thirumuruganathan
![Page 32: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/32.jpg)
Heap : Insert
CSE 5311 Saravanan Thirumuruganathan
![Page 33: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/33.jpg)
Heap : Insert
CSE 5311 Saravanan Thirumuruganathan
![Page 34: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/34.jpg)
Heap : Insert
Insert element at first available slot (no completeness propertyviolation!)
Fix heap property violations by bubbling up the vilolation tillit is fixed
Complexity:
O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 35: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/35.jpg)
Heap : Insert
Insert element at first available slot (no completeness propertyviolation!)
Fix heap property violations by bubbling up the vilolation tillit is fixed
Complexity: O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 36: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/36.jpg)
Heap : FindMax
Look at the root element
Time complexity: O(1)
CSE 5311 Saravanan Thirumuruganathan
![Page 37: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/37.jpg)
Heap : DeleteMax
Delete the maximum element (root)
Fix the heap
CSE 5311 Saravanan Thirumuruganathan
![Page 38: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/38.jpg)
Heap : DeleteMax
CSE 5311 Saravanan Thirumuruganathan
![Page 39: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/39.jpg)
Heap : DeleteMax
CSE 5311 Saravanan Thirumuruganathan
![Page 40: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/40.jpg)
Heap : DeleteMax
CSE 5311 Saravanan Thirumuruganathan
![Page 41: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/41.jpg)
Heap : DeleteMax
CSE 5311 Saravanan Thirumuruganathan
![Page 42: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/42.jpg)
Heap : DeleteMax
CSE 5311 Saravanan Thirumuruganathan
![Page 43: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/43.jpg)
Heap : DeleteMax
CSE 5311 Saravanan Thirumuruganathan
![Page 44: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/44.jpg)
Heap : DeleteMax
Remove root
Replace root with last element (does not affect Completenessproperty)
Fix heap violations by bubbling it down till it is fixed
Complexity:
O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 45: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/45.jpg)
Heap : DeleteMax
Remove root
Replace root with last element (does not affect Completenessproperty)
Fix heap violations by bubbling it down till it is fixed
Complexity: O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 46: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/46.jpg)
Heap : IncreaseKey
Given a node, increase its priority to a new, higher value
Fix heap property violations
CSE 5311 Saravanan Thirumuruganathan
![Page 47: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/47.jpg)
Heap : IncreaseKey9
IncreaseKey: Increase value of 4 to 15
9CLRS Fig 6.5CSE 5311 Saravanan Thirumuruganathan
![Page 48: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/48.jpg)
Heap : IncreaseKey10
10CLRS Fig 6.5CSE 5311 Saravanan Thirumuruganathan
![Page 49: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/49.jpg)
Heap : IncreaseKey11
11CLRS Fig 6.5CSE 5311 Saravanan Thirumuruganathan
![Page 50: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/50.jpg)
Heap : IncreaseKey12
12CLRS Fig 6.5CSE 5311 Saravanan Thirumuruganathan
![Page 51: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/51.jpg)
Heap : IncreaseKey
Update element
Fix heap violations by bubbling it up till it is fixed
Complexity:
O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 52: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/52.jpg)
Heap : IncreaseKey
Update element
Fix heap violations by bubbling it up till it is fixed
Complexity: O(lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 53: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/53.jpg)
Build-Max-Heap
Given an array A, convert it to a max-heap
A.length: Length of the array
A.heapSize: Elements from 1 . . . A.heapSize form a heap
Build-Max-Heap(A):
A.heapSize = A.lengthfor i = bA.length/2c down to 1
Max-Heapify(A, i)
Analysis: O(n) (See book for details)
CSE 5311 Saravanan Thirumuruganathan
![Page 54: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/54.jpg)
Build-Max-Heap : Example 13
13CLRS Fig 6.3CSE 5311 Saravanan Thirumuruganathan
![Page 55: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/55.jpg)
Build-Max-Heap : Example 14
14CLRS Fig 6.3CSE 5311 Saravanan Thirumuruganathan
![Page 56: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/56.jpg)
Build-Max-Heap : Example 15
15CLRS Fig 6.3CSE 5311 Saravanan Thirumuruganathan
![Page 57: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/57.jpg)
Build-Max-Heap : Example 16
16CLRS Fig 6.3CSE 5311 Saravanan Thirumuruganathan
![Page 58: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/58.jpg)
Build-Max-Heap : Example 17
17CLRS Fig 6.3CSE 5311 Saravanan Thirumuruganathan
![Page 59: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/59.jpg)
Build-Max-Heap : Example 18
18CLRS Fig 6.3CSE 5311 Saravanan Thirumuruganathan
![Page 60: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/60.jpg)
HeapSort
HeapSort(A):
Build-Max-Heap(A)
for i = A.length down to 2
Exchange A[1] with A[i]
A.heapSize = A.heapSize - 1
Max-Heapify(A, 1)
CSE 5311 Saravanan Thirumuruganathan
![Page 61: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/61.jpg)
Heap Sort: Example19
19CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 62: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/62.jpg)
Heap Sort: Example20
20CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 63: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/63.jpg)
Heap Sort: Example21
21CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 64: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/64.jpg)
Heap Sort: Example22
22CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 65: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/65.jpg)
Heap Sort: Example23
23CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 66: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/66.jpg)
Heap Sort: Example24
24CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 67: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/67.jpg)
Heap Sort: Example25
25CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 68: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/68.jpg)
Heap Sort: Example26
26CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 69: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/69.jpg)
Heap Sort: Example27
27CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 70: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/70.jpg)
Heap Sort: Example28
28CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 71: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/71.jpg)
Heap Sort: Example29
29CLRS Fig 6.4CSE 5311 Saravanan Thirumuruganathan
![Page 72: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/72.jpg)
HeapSort: Analysis
Operations:
Build-Max-Heap:
O(n)n Max-Heapify: n × lg n = O(n lg n)Complexity: O(n) + O(n lg n) = O(n lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 73: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/73.jpg)
HeapSort: Analysis
Operations:
Build-Max-Heap: O(n)n Max-Heapify:
n × lg n = O(n lg n)Complexity: O(n) + O(n lg n) = O(n lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 74: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/74.jpg)
HeapSort: Analysis
Operations:
Build-Max-Heap: O(n)n Max-Heapify: n × lg n = O(n lg n)Complexity: O(n) + O(n lg n) = O(n lg n)
CSE 5311 Saravanan Thirumuruganathan
![Page 75: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/75.jpg)
HeapSort
Very efficient in practice - often competitive with QuickSort
In-Place but not stable (why?)
Requires constant extra space
Best, average and worst case complexity is O(n lg n) (unlikeQuicksort)
CSE 5311 Saravanan Thirumuruganathan
![Page 76: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/76.jpg)
Data Structures for Disjoint Sets
Data Structures for DisjointSets
CSE 5311 Saravanan Thirumuruganathan
![Page 77: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/77.jpg)
Disjoint Sets ADT
Objective: Represent and manipulate disjoint sets (sets thatdo not overlap)
Required Operations
MakeSet(x): Create a new set {x} with single element xFind(x): Find the set containing xUnion(x , y): Merge sets containing x and y
CSE 5311 Saravanan Thirumuruganathan
![Page 78: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/78.jpg)
Disjoint Sets: Example30
30https://www.cs.princeton.edu/~rs/AlgsDS07/01UnionFind.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 79: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/79.jpg)
Disjoint Sets: Applications31
Network connectivity: are two computers connected?
Compilers: are two variables aliases?
Image segmentation: are both pixels in same segment?
Chip design: are two transistors connected to each other?
Maze design
Speeding up Kruskal’s MST algorithm
Many many more
31http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/18-disjoint-union-find.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 80: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/80.jpg)
Disjoint Sets: Naming
Represent each disjoint set by a unique name
For convenience, the name is one of its elements
This element is called the leader of the set
Find(x) returns the leader of set containing x
Typically, Union takes leaders as input. For eg, Union(a, b). Ifnot easily fixable by Union(Find(a), Find(b))
CSE 5311 Saravanan Thirumuruganathan
![Page 81: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/81.jpg)
Data Structures for Disjoint Sets
Objective:
Design an efficient data structure to represent DS ADT
Assume that there are N elements - represented by 1, . . . ,N
M operations (any mixture of union and find)
Candidate Representations:
Array based
Linked List based
Tree based
CSE 5311 Saravanan Thirumuruganathan
![Page 82: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/82.jpg)
Disjoint Sets Implementation: Arrays
Idea:
Maintain an array A with N elements
A[i ] stores the leader for set containing element i
Find: Find(3)=4, Find(6)=8
Union: Union(4, 8)
CSE 5311 Saravanan Thirumuruganathan
![Page 83: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/83.jpg)
Disjoint Sets Implementation: Arrays
Analysis:
Find:
O(1)
Union: O(N)
Complexity for M operations: O(MN)
CSE 5311 Saravanan Thirumuruganathan
![Page 84: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/84.jpg)
Disjoint Sets Implementation: Arrays
Analysis:
Find: O(1)
Union:
O(N)
Complexity for M operations: O(MN)
CSE 5311 Saravanan Thirumuruganathan
![Page 85: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/85.jpg)
Disjoint Sets Implementation: Arrays
Analysis:
Find: O(1)
Union: O(N)
Complexity for M operations: O(MN)
CSE 5311 Saravanan Thirumuruganathan
![Page 86: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/86.jpg)
Disjoint Sets Implementation: Linked List32
Idea:
Represent each set as a linked list
Set first element of each linked list as the leader
32CLRS Fig 21.2CSE 5311 Saravanan Thirumuruganathan
![Page 87: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/87.jpg)
Disjoint Sets Implementation: Linked List
Analysis:
Find:
O(1)
Union: O(N)
Complexity for M operations: O(MN)
CSE 5311 Saravanan Thirumuruganathan
![Page 88: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/88.jpg)
Disjoint Sets Implementation: Linked List
Analysis:
Find: O(1)
Union:
O(N)
Complexity for M operations: O(MN)
CSE 5311 Saravanan Thirumuruganathan
![Page 89: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/89.jpg)
Disjoint Sets Implementation: Linked List
Analysis:
Find: O(1)
Union: O(N)
Complexity for M operations: O(MN)
CSE 5311 Saravanan Thirumuruganathan
![Page 90: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/90.jpg)
Disjoint Sets Implementation: Tree
Also called as Union-Find data structure
Idea: Represent each set as a tree
Store all sets as a forest (collection of disconnected trees)
Allow each node to have arbitrary number of children
Root of each tree is the leader
CSE 5311 Saravanan Thirumuruganathan
![Page 91: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/91.jpg)
Union-Find: Up-Tree Representation33
33http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 92: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/92.jpg)
Union-Find: Up-Tree Representation 34
34http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 93: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/93.jpg)
Union-Find: Find Operation 35
35http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 94: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/94.jpg)
Union-Find: Union Operation 36
36http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 95: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/95.jpg)
Union-Find: Up-Tree Implementation 37
37http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 96: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/96.jpg)
Union-Find: Worst Case38
38http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 97: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/97.jpg)
Union-Find: Candidate Improvements39
Improve Union
Union by SizeUnion by Rank (depth)
Improve Find
39http:
//www.eecs.wsu.edu/~ananth/CptS223/Lectures/UnionFind.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 98: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/98.jpg)
Union-Find: Improved Union40
Union by Size (Weighted Union): Always point smallertree to root of larger tree. Break ties arbitrarily.
40http:
//www.eecs.wsu.edu/~ananth/CptS223/Lectures/UnionFind.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 99: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/99.jpg)
Union-Find: Improved Union41
Union by Rank: Always point tree with smaller rank (depth) toroot of larger tree. Break ties arbitrarily.
41http:
//www.eecs.wsu.edu/~ananth/CptS223/Lectures/UnionFind.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 100: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/100.jpg)
Union by Size: Best Case42
Complexity:
Union and Find take O(1) time
42http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 101: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/101.jpg)
Union by Size: Best Case42
Complexity: Union and Find take O(1) time
42http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 102: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/102.jpg)
Union by Size: Worst Case43
Complexity:
Union takes O(1) and Find take O(lg n) time
43http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 103: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/103.jpg)
Union by Size: Worst Case43
Complexity: Union takes O(1) and Find take O(lg n) time
43http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 104: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/104.jpg)
Union-Find: Improved Find44
44http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 105: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/105.jpg)
Union-Find: Improved Find45
Path Compression: When doing find, point all nodes onsearch path to root.
45http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 106: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/106.jpg)
Union-Find: Improved Find46
Path Compression:
46CLRS Fig 21.5CSE 5311 Saravanan Thirumuruganathan
![Page 107: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/107.jpg)
Union-Find
Amortized analysis
Similarity with Red-Black trees
Worst Case Analysis of Union-by Size + Path Compression
Single Union-by-Size: O(1)Single Find with Path Compression: O(lg n)Amortized Complexity for M ≥ N operations: O(m log∗ n)
CSE 5311 Saravanan Thirumuruganathan
![Page 108: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/108.jpg)
Log ∗ Function47
log∗ 2 = 1
log∗ 4 = log∗ 22 = 2
log∗ 16 =
log∗ 222
= 3 (i.e. log log log 16 = 1)
log∗ 65536 = log∗ 2222
= 4 (i.e. log log log log 65536 = 1)
log∗ 265536 = . . . = 5 (i.e. log log log log log 265536 = 1)
In summary for all reasonable n , log∗ n ≤ 5
47http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 109: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/109.jpg)
Log ∗ Function47
log∗ 2 = 1
log∗ 4 = log∗ 22 = 2
log∗ 16 = log∗ 222
= 3 (i.e. log log log 16 = 1)
log∗ 65536 =
log∗ 2222
= 4 (i.e. log log log log 65536 = 1)
log∗ 265536 = . . . = 5 (i.e. log log log log log 265536 = 1)
In summary for all reasonable n , log∗ n ≤ 5
47http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 110: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/110.jpg)
Log ∗ Function47
log∗ 2 = 1
log∗ 4 = log∗ 22 = 2
log∗ 16 = log∗ 222
= 3 (i.e. log log log 16 = 1)
log∗ 65536 = log∗ 2222
= 4 (i.e. log log log log 65536 = 1)
log∗ 265536 =
. . . = 5 (i.e. log log log log log 265536 = 1)
In summary for all reasonable n , log∗ n ≤ 5
47http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 111: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/111.jpg)
Log ∗ Function47
log∗ 2 = 1
log∗ 4 = log∗ 22 = 2
log∗ 16 = log∗ 222
= 3 (i.e. log log log 16 = 1)
log∗ 65536 = log∗ 2222
= 4 (i.e. log log log log 65536 = 1)
log∗ 265536 = . . . = 5 (i.e. log log log log log 265536 = 1)
In summary for all reasonable n , log∗ n ≤ 5
47http://courses.cs.washington.edu/courses/cse326/08sp/
lectures/19-disjoint-union-find-part-2.pdf
CSE 5311 Saravanan Thirumuruganathan
![Page 112: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/112.jpg)
Tighter Bound
Tarjan’s tighter bound when M ≥ N, Θ(M α(M,N))
α(a, b) is the inverse Ackerman function
It grows even slower than log∗ n!
CSE 5311 Saravanan Thirumuruganathan
![Page 113: Lecture 7: Binary Heaps, Heapsort, Union-Findsaravanan-thirumuruganathan.github.io/cse5311Fall2014/... · 2014-11-30 · CSE 5311 Saravanan Thirumuruganathan. Max Heap Example3 3Wikipedia](https://reader034.vdocuments.mx/reader034/viewer/2022042408/5f2341404047b201300b7afe/html5/thumbnails/113.jpg)
Summary
Major Concepts:Binary Heap
Heapsort
Disjoint set data structures
Union-Find
CSE 5311 Saravanan Thirumuruganathan