heaps - missouri state...
TRANSCRIPT
![Page 1: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/1.jpg)
Heaps(our first advanced data structure)
![Page 2: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/2.jpg)
Outline
Topics and Learning Objectives• Discuss data structure operations• Cover heap sort• Discuss heaps
Assessments• Heap activity
![Page 3: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/3.jpg)
Extra Resources
• Introduction to Algorithms, 3rd, chapter 6
![Page 4: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/4.jpg)
Data Structures
Used in essentially every single programming task that you can think of• What are some examples of data structures?• What are some example programs?
What do they do?• They organize data so that it can be effectively accessed.
• A data structure is not necessarily a method of laying out data in memory• It is a way of logically thinking about your data.
![Page 5: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/5.jpg)
The Heap Data Structure (not heap memory)
A container for objects that have key values
Operations:• Insertion : O(lg n)• Extract-min (or max) : O(lg n)
• Heapify : O(n) for batched insertions• Arbitrary Deletion : O(lg n)
• Good for continually getting a minimum (or maximum) value
![Page 6: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/6.jpg)
Heap used to improve algorithm
Selection sort• Continually look for the smallest element• The element currently being considered is in blue• The current smallest element is in red• Sorted elements are in yellow
![Page 7: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/7.jpg)
Heap used to improve algorithm
Selection sort• Continually look for the smallest element• The element currently being considered is in blue• The current smallest element is in red• Sorted elements are in yellow
![Page 8: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/8.jpg)
Heap used to improve algorithm
Selection sort• Continually look for the smallest element• The element currently being considered is in blue• The current smallest element is in red• Sorted elements are in yellow
![Page 9: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/9.jpg)
Heap used to improve algorithm
Selection sort• Continually look for the smallest element
What is the runtime of this algorithm?• Can we make it faster?
• Yes! With a heap: O(n2) à O(n lg n)• Insert all elements into a heap: n• Extract each element: n * lg n
![Page 10: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/10.jpg)
Example : Event Manager
• Uses a priority queue (synonym for Heap)
Example: simulation or game• play sounds• render animation• detect collisions• register input
![Page 11: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/11.jpg)
Heap Implementation
Conceptually you should think of a Heap as a binary treeIt is actually implemented using an array (why?)
Heap Property: for any given node x, 1. key[x] ≤ key[x’s left child], and2. key[x] ≤ key[x’s right child]
• Where is the minimum key?
No pointer followingFewer heap-allocations
No pointer storing
![Page 12: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/12.jpg)
Heap Implementation
Note: Heaps are not uniqueYou can have multiple different configurations that hold the same data
4
4 8
6 4 12 9
4
4 4
6 9 8 12
![Page 13: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/13.jpg)
parent_index = (node_index - 1) // 2
4
4 8
9 4 12 9
11 13
Value 4 4 8 9 4 12 9 11 13Index 0 1 2 3 4 5 6 7 8
Parent - 0 0 1 1 2 2 3 3
Level 0
Level 1
Level 2
Level 3
How do you calculate the index of a node’s parent?
![Page 14: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/14.jpg)
4
4 8
9 4 12 9
11 13
Value 4 4 8 9 4 12 9 11 13Index 0 1 2 3 4 5 6 7 8
Parent - 0 0 1 1 2 2 3 3
Left Child 1 3 5 7 9 11 13 15 17
Right Child 2 4 6 8 10 12 14 16 18
Level 0
Level 1
Level 2
Level 3
How do you calculate the indices of a node’s children?
parent_index = (node_index - 1) // 2
left_child_index = 2 * node_index + 1
right_child_index = 2 * (node_index + 1)
![Page 15: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/15.jpg)
Activity
![Page 16: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/16.jpg)
4
4 8
9 4 12 9
11 13
Insert: 7
![Page 17: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/17.jpg)
4
4 8
9 4 12 9
11 13
Insert: 7
4 4 8 9 4 12 9 11 13
![Page 18: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/18.jpg)
4
4 8
9 4 12 9
11 13
Insert: 7
4 4 8 9 4 12 9 11 13 7
7
![Page 19: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/19.jpg)
4
4 8
9 4 12 9
11 13
Insert: 10
4 4 8 9 4 12 9 11 13 7
7
![Page 20: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/20.jpg)
4
4 8
9 4 12 9
11 13
Insert: 10
4 4 8 9 4 12 9 11 13 7 10
7 10
![Page 21: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/21.jpg)
4
4 8
9 4 12 9
11 13
Insert: 5
4 4 8 9 4 12 9 11 13 7 10
7 10
![Page 22: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/22.jpg)
4
4 8
9 4 12 9
11 13
Insert: 5
4 4 8 9 4 12 9 11 13 7 10 5
7 10 5
parent_index = (node_index - 1) // 2
![Page 23: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/23.jpg)
4
4 8
9 4 12 9
11 13
Insert: 5
4 4 8 9 4 12 9 11 13 7 10 5
7 10 5
parent_index = (node_index - 1) // 2
![Page 24: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/24.jpg)
4
4 8
9 4 5 9
11 13
Insert: 5
4 4 8 9 4 5 9 11 13 7 10 12
7 10 12
parent_index = (node_index - 1) // 2
![Page 25: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/25.jpg)
4
4 8
9 4 5 9
11 13
Insert: 5
4 4 8 9 4 5 9 11 13 7 10 12
7 10 12
parent_index = (node_index - 1) // 2
![Page 26: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/26.jpg)
4
4 5
9 4 8 9
11 13
4 4 5 9 4 8 9 11 13 7 10 12
7 10 12
![Page 27: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/27.jpg)
4
4 5
9 4 8 9
11 13
Extract Min
4 4 5 9 4 8 9 11 13 7 10 12
7 10 12
What node do we put in place of 4?
![Page 28: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/28.jpg)
4
4 5
9 4 8 9
11 13
Extract Min
4 4 5 9 4 8 9 11 13 7 10 12
7 10 12
What node do we put in place of 4?
?
![Page 29: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/29.jpg)
4
4
5
9 4 8 9
11 13
Extract Min
4 5 9 4 8 9 11 13 7 10 12
7 10 12
What node do we put in place of 4?
?
![Page 30: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/30.jpg)
4
4
5
9
4
8 9
11 13
Extract Min
4 4 5 9 8 9 11 13 7 10 12
7 10 12
What node do we put in place of 4?
?
![Page 31: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/31.jpg)
4
4
5
9
4
8 9
11 13
Extract Min
4 4 5 9 8 9 11 13 7 10 12
7 10 12
What node do we put in place of 4?
?
![Page 32: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/32.jpg)
4
4
5
9
4
8 9
11 13
Extract Min
4 4 5 9 7 8 9 11 13 10 12
7
10 12
What node do we put in place of 4?
?
![Page 33: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/33.jpg)
4
4 5
9 4 8 9
11 13
Extract Min
4 4 5 9 4 8 9 11 13 7 10 12
7 10 12
What node do we put in place of 4?
We are guaranteed to not leave a hole if we
choose the lastnode.
![Page 34: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/34.jpg)
12
4 5
9 4 8 9
11 13
Extract Min
12 4 5 9 4 8 9 11 13 7 10
7 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
![Page 35: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/35.jpg)
12
4 5
9 4 8 9
11 13
Extract Min
12 4 5 9 4 8 9 11 13 7 10
7 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
Do we swap with the 4 or the 5?
![Page 36: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/36.jpg)
4
12 5
9 4 8 9
11 13
Extract Min
4 12 5 9 4 8 9 11 13 7 10
7 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
![Page 37: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/37.jpg)
4
12 5
9 4 8 9
11 13
Extract Min
4 12 5 9 4 8 9 11 13 7 10
7 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
![Page 38: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/38.jpg)
4
4 5
9 12 8 9
11 13
Extract Min
4 4 5 9 12 8 9 11 13 7 10
7 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
![Page 39: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/39.jpg)
4
4 5
9 12 8 9
11 13
Extract Min
4 4 5 9 12 8 9 11 13 7 10
7 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
![Page 40: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/40.jpg)
4
4 5
9 7 8 9
11 13
Extract Min
4 4 5 9 7 8 9 11 13 12 10
12 10
left_child_index = 2 * node_index + 1
left_child_index = 2 * (node_index + 1)
![Page 41: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/41.jpg)
FUNCTION Dijkstra(G, start_vertex)found = {}lengths = {v: INFINITY FOR v IN G.vertices}
found.add(start_vertex)lengths[start_vertex] = 0
WHILE found.length != G.vertices.length
FOR v IN foundFOR vOther, weight IN G.edges[v]
IF vOther NOT IN found
vOther_length = lengths[v] + weightIF vOther_length < min_length
min_length = vOther_length
vMin = vOtherfound.add(vMin)lengths[vMin] = min_length
RETURN lengths
How many times does the outer loop run?
How many times do the inner two loops run?
What is the running time?
O(n)
O(m)
![Page 42: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/42.jpg)
FUNCTION Dijkstra(G, start_vertex)found = {}lengths = {v: INFINITY FOR v IN G.vertices}
found.add(start_vertex)lengths[start_vertex] = 0
WHILE found.length != G.vertices.length
FOR v IN foundFOR vOther, weight IN G.edges[v]
IF vOther NOT IN found
vOther_length = lengths[v] + weightIF vOther_length < min_length
min_length = vOther_length
vMin = vOtherfound.add(vMin)lengths[vMin] = min_length
RETURN lengths
What is the running time?
Store vertices in heap
à O(m lg n)
![Page 43: Heaps - Missouri State Universitycourses.missouristate.edu/anthonyclark/325/lectures/22-heaps.pdfHeaps (our first advanced data structure) Outline Topics and Learning Objectives •Discuss](https://reader035.vdocuments.site/reader035/viewer/2022070722/5f01c06e7e708231d400dd1f/html5/thumbnails/43.jpg)
FUNCTION Dijkstra(G, start_vertex)found = {}lengths = {v: INFINITY FOR v IN G.vertices}
found.add(start_vertex)lengths[start_vertex] = 0
WHILE found.length != G.vertices.length
FOR v IN foundFOR vOther, weight IN G.edges[v]
IF vOther NOT IN found
vOther_length = lengths[v] + weightIF vOther_length < min_length
min_length = vOther_length
vMin = vOtherfound.add(vMin)lengths[vMin] = min_length
RETURN lengths
What is the running time?
Store vertices in heap
à O(m lg n)
State of the art of Dijkstra’s:O(m + n lg n)
(uses Fibonacci heap)