Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap...

65
Fibonacci Heaps Priority Queues John Ross Wallrabenstein

Transcript of Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap...

Page 1: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci HeapsPriority Queues

John Ross Wallrabenstein

Page 2: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Updates

• Project 4 Grades Released

• Project 5 Questions?

Page 3: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

*This usually refers to the size of the structure

Page 4: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

• What is a static data structure?

*This usually refers to the size of the structure

Page 5: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

• What is a static data structure?

• Data Structures that do not change* over the lifetime of their use

*This usually refers to the size of the structure

Page 6: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

Page 7: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

• What is a dynamic data structure?

Page 8: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

• What is a dynamic data structure?

• Data Structures that change over their lifetime, allowing for efficient updates

Page 9: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Review

• Can you describe the Union/Find algorithm and its applications?

• Can you describe the Union By Rank heuristic?

• Can you describe Path Compression?

Page 10: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Union By Rank/** * Combines the set that contains a with the set that contains b. */ public void union(int a, int b) { Node na = findNode(a); Node nb = findNode(b);

if (na == nb) { return; }

// Link the smaller tree under the larger. if (na.rank > nb.rank) { // Delete nb. nb.child.parent = na.child; na.value = b; } else { // Delete na. na.child.parent = nb.child; nb.value = b;

if (na.rank == nb.rank) { nb.rank++; } } }

Page 11: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Path Compression/** * Finds the set containing a given Node. */ private Node findNode(Node node) { int top = 0;

// Find the child of the root element. while (node.parent.child == null) { stack[top++] = node; node = node.parent; }

// Do path compression on the way back down. Node rootChild = node;

while (top > 0) { node = stack[--top]; node.parent = rootChild; }

return rootChild.parent; }

Page 12: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Today’s Goal

• What is a Queue?

• What is a Priority Queue?

• We will implement a Priority Queue efficiently using a Fibonacci Heap

Page 13: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Overview

• Tree Theory

• Heaps

• Fibonacci Heaps

• Priority Queues

Page 14: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Tree Theory

• A free tree is a connected, acyclic undirected graph

• A graph is connected if every pair of vertices is connected by some path

• A graph is acyclic if it contains no cycles

Page 15: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Free Tree

Page 16: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Rooted Trees

• A rooted tree is a free tree where one vertex is distinguished from the others as the root

Page 17: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Rooted Tree

Root

Page 18: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Terminology

• An ancestor of node x is any node on the path from x to the root

• Similarly, if node y is an ancestor of x, then x is a descendent of y

• A leaf node has no descendants

Page 19: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Binary Tree

• A binary tree satisfies the property that every node has at most two children

Page 20: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Overview

• Tree Theory

• Heaps

• Fibonacci Heaps

• Priority Queues

Page 21: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Heaps

• A heap is a complete binary tree satisfying one of the following heap properties:

• Max-Heap: the parent of every node has a rank greater than or equal to all of its children

• Min-Heap: the parent of every node has a rank less than or equal to all of its children

Page 22: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Aside

• Which data structure do you use to organize your priorities?

• e.g. If you use a max-heap, you visit cracked.com before doing CS 180 work

• Assumption: Your last priority has a “higher” rank than your #1 priority

Page 23: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Max-Heap

Page 24: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Maintaining the Heap Property

• We will assume for now that the tree is self-balancing

• e.g. The height is kept at a minimum of log n

• When a node is inserted, the heap may no longer satisfy the {min,max} property

Page 25: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Maintaining the Heap Property

• To “fix” the heap, we recursively heapify so that the {min,max}-property is maintained

• Yes, heapify is the actual term!

Page 26: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Maintaining the Heap Property

• Max-Heapify Invariant:

• We will assume the binary trees rooted at Left(i) and Right(i) are max-heaps

• We will assume the inserted node x may be smaller than its children

• This violates the property

Page 27: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Maintaining the Heap Property

• Basic Idea:

• Let node i “float down” to its proper position so that the max-heap property is satisfied

Page 28: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Max-Heapify

Page 29: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Max-Heapify

Page 30: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Overview

• Tree Theory

• Heaps

• Fibonacci Heaps

• Priority Queues

Page 31: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps

• A Fibonacci Heap is a forest of min-heap trees

• Their name is derived from the Fibonacci Numbers, which are used in their asymptotic analysis

Page 32: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Operations

• We will only concern ourselves with the following operations:

• Insert

• Extract-Min

• There are others, but the additional complexity is not necessary for queues*

*You should thank me for not covering this

Page 33: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Motivation

• Fibonacci Heaps have fast amortized cost relative to other data structures

• Heaps in general support priority queues

Page 34: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Motivation

• While Fibonacci Heaps are min-heaps, we can easily use them as priority queues

• How?

• Define lesser values to have higher priority (this is somewhat natural)

Page 35: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Underlying Structure

• Fibonacci Heaps are commonly implemented using a circular doubly-linked list

• Brief review of standard operations over a doubly-linked list

• See board

Page 36: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

WARNING

• The following image has been found to induce disgust, confusion and seizures

• I promise things won’t seem as bad as they look*!

*By not covering your eyes, you absolve me of all legal liability with respect to your mental/emotional well-being

Page 37: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

C-DLL Structure

*Ignore the dark, or “marked” nodes

Page 38: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps

Lecture slides adapted from:

Chapter 19

Kevin Wayne’s slides from the 2007 Princeton University Algorithms y y gclass

Page 39: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Priority Queues Performance

make-heap

Operation

1

BinaryHeap

1

LinkedList

1

FibonacciHeap †

insert

delete min

log n

log n

1

n

is-empty 11

1

log n

1

delete-min

decrease-key

delete

log n

log n

log n

n

n

n

log n

1

log n

find-min

union

1

n

n

1

1

1

† amortizedn = number of elements in priority queue † amortizedn = number of elements in priority queue

2

Hopeless challenge. O(1) insert, delete- min and decrease- key. Why?

Page 40: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Structure

Fibonacci heap.Set of heap- ordered trees.Maintain pointer to minimum element.Set of marked nodes.

find- min takes O(1) time

min

17 72324 3

30

35

26 46

39

4118 52

44

4

Heap H

39 44

Page 41: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Structure

Fibonacci heap.Set of heap- ordered trees.Maintain pointer to minimum element.Set of marked nodes.

roots heap-ordered tree

72317 24 3

30

35

26 464118 52

44

5

Heap H

39 44

Page 42: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Notation

Notation

n = number of nodes in heap.

rank(x) = number of children of node x.

rank(H) = max rank of any node in heap H.

trees(H) = number of trees in heap H.

marks(H) = number of marked nodes in heap H.

(Note: terms different in text)

k i( ) k (H) 3 14

72317 24 3

rank = 3 mintrees(H) = 5 marks(H) = 3 n = 14

723

30

17

26 46

24

4118 52

3

7

3539 44

Heap H marked

Page 43: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Insert

9

Page 44: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Insert

Insert.

Create a new singleton tree.

Add to root list; update min pointer (if necessary).

21

insert 21

i

72317 24 3

min

723

30

17

26 46

24

4118 52

3

10

3539 44

Heap H

Page 45: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Insert

Insert.

Create a new singleton tree.

Add to root list; update min pointer (if necessary).

i

insert 21

723 317 24 21

min

41

723

18 52

3

30

17

26 46

24 21

11

3935

44Heap H

Page 46: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Insert Analysis

Actual cost. O(1)

Change in potential. + 1

(H) = trees(H) + 2 marks(H)

potential of heap H

Amortized cost. O(1)

i

7 317 24 2123

min

41

7

18 52

3

30

17

26 46

24 2123

12

3935

44Heap H

Page 47: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Delete Min

13

Page 48: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Linking Operation

Linking operation. Make larger root a child of smaller root.

smaller rootlarger root still heap-ordered

315 3

4118 5256 24 4118 5215

39 4477

tree T1 tree T2

39 44

77

56 24

14

tree T'

Page 49: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete minDelete min.Delete minMeld its children into the root list and update min.Consolidate trees so that no two roots have same rankConsolidate trees so that no two roots have same rank.

min

317237 24

39

4118 52

44

30

35

26 46

15

39 4435

Page 50: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.Delete minMeld its children into the root list and update min.Consolidate trees so that no two roots have same rank.

min

411723 18 527 24

3930 26 46 44

35

16

Page 51: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.Delete minMeld its children into the root list and update min.Consolidate trees so that no two roots have same rank:– Repeatedly link two trees of the same rank until no pair

of roots has the same rank (= degree)

mincurrent

411723 18 527 24

3930

35

26 46 44

17

35

Page 52: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete minDelete min.

Delete min. Meld its children into the root list and update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

currentmin

411723 18 527 24

3930

35

26 46 44

18

35

Page 53: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into the root list and update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

mincurrent

411723 18 527 24

3930

35

26 46 44

19

35

Page 54: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into the root list and update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

min

411723 18 527 24

3930

35

26 46 44current

20

35

Page 55: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min

Meld its children into the root list and update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

min

411723 18 527 24

3930

35

26 46 44current

21

35

link 23 into 17

Page 56: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into the root list and update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

min

4117 18 527 24

392330

35

26 46 44current

22

35

link 17 into 7

Page 57: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into the root list and update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

417 18 5224

min

393017

35

26 46 44

23

23

35 23

link 24 into 7

Page 58: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

417 18 52

min

3930

23

17

26 46

24 44

24

23

35

26 46

Page 59: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min; meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

417 18 52

min

3930

23

17

26 46

24 44

25

23

35

26 46

Page 60: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

417 18 52

min

3930

23

17

26 46

24 44

26

23

35

26 46

Page 61: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

417 18 52

min

3930

23

17

26 46

24 44

27

23

35

26 46

link 41 into 18

Page 62: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min; meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

7 1852

min

394130

23

17

26 46

24

44

28

23

35

26 46 44

Page 63: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min; meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

0 1 2 3

rank

current

7 52

min

18

30

23

17

26 46

24 3941

44

29

23

35

26 46 44

Page 64: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Fibonacci Heaps: Delete Min

Delete min.

Delete min. Meld its children into root list; update min.

Consolidate trees so that no two roots have same rank.

7 52

min

18

301724 3941

23

35

26 46 44

30

35

Page 65: Fibonacci Heaps Priority Queues - Purdue Universitycs180/Spring2010Web/... · 2010. 4. 26. · Heap 1 Linked List 1 Fibonacci Heap † insert e n log n log n 1 n y 1 1 1 log n 1-decrease-key

Before delete - min

317237 24

4118 52

31723

30

7

26 46

24

39

4118 52

44

30

35

26 46

minAfter consolidation, no7

30

52

1724 3941

18After consolidation, no two roots have the same degree and the largest degree in O(log n)

30

23

17

26 46

24 3941

44

31

35After delete - min