Professional Documents
Culture Documents
SPSUCOS
–CSE
423DEPT. CS-258
Theory of Algorithms • Kevin Wayne • Spring 2007
Fibonacci Heaps
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
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.
17 24 23 7 3
30 26 46
18 52 41
Heap H 35 marked
39 44
Fibonacci Heaps: Potential Function
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
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
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
F4 F5 F6
8 13 8 + 13 = 21
31
Fibonacci Numbers
32
Fibonacci Numbers: Exponential Growth
1 if k 0
Fk 2 if k 1 slightly non-standard definition
F F if k 2
k-1 k-2
(definition)
(inductive hypothesis)
(algebra)
(2 = + 1)
(algebra)
33
Fibonacci Numbers and Nature
pinecone
cauliflower
34