You are on page 1of 34

Fibonacci Heaps

DSA –Akhilesh K Sharma

SPSUCOS
–CSE
423DEPT. CS-258
Theory of Algorithms • Kevin Wayne • Spring 2007
Fibonacci Heaps

History. [Fredman and Tarjan, 1986]



Ingenious data structure and analysis.

Original motivation: improve Dijkstra's shortest path algorithm
from O(E log V ) to O(E + V log V ).
V insert, V delete-min, E decrease-key

Basic idea.

Similar to binomial heaps, but less rigid structure.

Binomial heap: eagerly consolidate trees after each insert.


Fibonacci heap: lazily defer consolidation until next delete-min.

2
Fibonacci Heaps: Structure

Children larger than its parent


Fibonacci heap.

Set of heap-ordered trees.

Maintain pointer to minimum element.

Set of marked nodes.

roots heap-ordered tree

17 24 23 7 3

30 26 46
18 52 41

Heap H 35
39 44
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 24 23 7 3

30 26 46
18 52 41

Heap H 35
39 44
Fibonacci Heaps: Structure

Fibonacci heap.

Set of heap-ordered trees.

Maintain pointer to minimum element.

Set of marked nodes.
use to keep heaps flat (stay tuned)

min

17 24 23 7 3

30 26 46
18 52 41

Heap H 35 marked
39 44
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.

trees(H) = 5 marks(H) = 3 n = 14 rank = 3 min

17 24 23 7 3

30 26 46
18 52 41

Heap H 35 marked
39 44
Fibonacci Heaps: Potential Function

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


potential of heap H

trees(H) = 5 marks(H) = 3 (H) = 5 + 23 = 11 min

17 24 23 7 3

30 26 46
18 52 41

Heap H 35 marked
39 44
7
Insert

8
Fibonacci Heaps: Insert

Insert.

Create a new singleton tree.

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

insert 21

21
min

17 24 23 7 3

30 26 46
18 52 41

Heap H 35
39 44
9
Fibonacci Heaps: Insert

Insert.

Create a new singleton tree.

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

insert 21

min

17 24 23 7 21 3

30 26 46
18 52 41

Heap H 35
39 44
10
Delete Min

11
Linking Operation

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

larger root smaller root still heap-ordered

15 3 3

56 24 18 52 41 15 18 52 41

77 39 44 56 24 39 44

tree T1 tree T2
77
tree T'

12
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.

min

7 24 23 17 3

30 26 46 18 52 41

35 39 44

13
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.

min

7 24 23 17 18 52 41

30 26 46 39 44

35

14
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.

min
current

7 24 23 17 18 52 41

30 26 46 39 44

35

15
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.

rank

0 1 2 3

min
current

7 24 23 17 18 52 41

30 26 46 39 44

35

16
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.

rank

0 1 2 3

min
current

7 24 23 17 18 52 41

30 26 46 39 44

35

17
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.

rank

0 1 2 3

min

7 24 23 17 18 52 41

30 26 46 current 39 44

35

18
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.

rank

0 1 2 3

min

7 24 23 17 18 52 41

30 26 46 current 39 44

35

link 23 into 17

19
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.

rank

0 1 2 3

min

7 24 17 18 52 41

30 26 46 current 23 39 44

35

link 17 into 7

20
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.

rank

0 1 2 3

current
min
24 7 18 52 41

26 46 17 30 39 44

35 23

link 24 into 7

21
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.

rank

0 1 2 3

current
min
7 18 52 41

24 17 30 39 44

26 46 23

35
22
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.

rank

0 1 2 3

current
min
7 18 52 41

24 17 30 39 44

26 46 23

35
23
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.

rank

0 1 2 3

current
min
7 18 52 41

24 17 30 39 44

26 46 23

35
24
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.

rank

0 1 2 3

current
min
7 18 52 41

24 17 30 39 44

26 46 23

link 41 into 18
35
25
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.

rank

0 1 2 3

current
min
7 52 18

24 17 30 41 39

26 46 23 44

35
26
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.

rank

0 1 2 3

current
min
7 52 18

24 17 30 41 39

26 46 23 44

35
27
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.

min
7 52 18

24 17 30 41 39

26 46 23 44

stop
35
28
Analysis

29
Fibonacci Heaps: Bounding the Rank

Lemma. Fix a point in time. Let x be a node, and let y1, …, yk denote
its children in the order in which they were linked to x. Then:

y1 y2 … yk

Def. Let Fk be smallest possible tree of rank k satisfying property.

F0 F1 F2 F3 F4 F5

1 2 3 5 8 13

30
Fibonacci Heaps: Bounding the Rank

Lemma. Fix a point in time. Let x be a node, and let y1, …, yk denote
its children in the order in which they were linked to x. Then:

y1 y2 … yk

Def. Let Fk be smallest possible tree of rank k satisfying property.

F4 F5 F6

8 13 8 + 13 = 21
31
Fibonacci Numbers

32
Fibonacci Numbers: Exponential Growth

Def. The Fibonacci sequence is: 1, 2, 3, 5, 8, 13, 21, …

1 if k  0

Fk  2 if k  1 slightly non-standard definition
 F  F if k  2
 k-1 k-2

Lemma. Fk  k, where  = (1 + 5) / 2  1.618.

Pf. [by induction on k]



Base cases: F0 = 1  1, F1 = 2  .

Inductive hypotheses: Fk  k and Fk+1  k + 1

(definition)

(inductive hypothesis)
(algebra)

(2 =  + 1)
(algebra)
33
Fibonacci Numbers and Nature

pinecone

cauliflower

34

You might also like