fibonacci heapswayne/teaching/fibonacci-heap.pdf · cos 423 theory of algorithms ¥ kevin wayne ¥...

16
COS 423 Theory of Algorithms • Kevin Wayne • Spring 2007 Fibonacci Heaps Lecture slides adapted from: Chapter 20 of Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein. Chapter 9 of The Design and Analysis of Algorithms by Dexter Kozen. 2 Theorem. Starting from empty Fibonacci heap, any sequence of a 1 insert, a 2 delete-min, and a 3 decrease-key operations takes O(a 1 + a 2 log n + a 3 ) time. make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n 1 log n n log n log n 1 Binomial Heap log n log n log n log n log n log n 1 Fibonacci Heap 1 1 log n 1 1 log n 1 Relaxed Heap 1 1 log n 1 1 log n 1 Linked List 1 n n 1 n n is-empty 1 1 1 1 1 Priority Queues Performance Cost Summary † amortized n = number of elements in priority queue 3 Hopeless challenge. O(1) insert, delete-min and decrease-key. Why? Priority Queues Performance Cost Summary make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n 1 log n n log n log n 1 Binomial Heap log n log n log n log n log n log n 1 Fibonacci Heap 1 1 log n 1 1 log n 1 Relaxed Heap 1 1 log n 1 1 log n 1 Linked List 1 n n 1 n n is-empty 1 1 1 1 1 † amortized n = number of elements in priority queue 4 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 ). 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. V insert, V delete-min, E decrease-key

Upload: nguyennguyet

Post on 30-Jan-2018

236 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

COS 423 Theory of Algorithms • Kevin Wayne • Spring 2007

Fibonacci Heaps

Lecture slides adapted from:

• Chapter 20 of Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein.

• Chapter 9 of The Design and Analysis of Algorithms by Dexter Kozen.

2

Theorem. Starting from empty Fibonacci heap, any sequence ofa1 insert, a2 delete-min, and a3 decrease-key operations takesO(a1 + a2 log n + a3) time.

make-heap

Operation

insert

find-min

delete-min

union

decrease-key

delete

1

BinaryHeap

log n

1

log n

n

log n

log n

1

BinomialHeap

log n

log n

log n

log n

log n

log n

1

FibonacciHeap †

1

1

log n

1

1

log n

1

RelaxedHeap

1

1

log n

1

1

log n

1

LinkedList

1

n

n

1

n

n

is-empty 1 1 1 11

Priority Queues Performance Cost Summary

† amortizedn = number of elements in priority queue

3

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

Priority Queues Performance Cost Summary

make-heap

Operation

insert

find-min

delete-min

union

decrease-key

delete

1

BinaryHeap

log n

1

log n

n

log n

log n

1

BinomialHeap

log n

log n

log n

log n

log n

log n

1

FibonacciHeap †

1

1

log n

1

1

log n

1

RelaxedHeap

1

1

log n

1

1

log n

1

LinkedList

1

n

n

1

n

n

is-empty 1 1 1 11

† amortizedn = number of elements in priority queue

4

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

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.

V insert, V delete-min, E decrease-key

Page 2: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

5

723

30

17

35

26 46

24

Heap H39

4118 52

3

44

Fibonacci Heaps: Structure

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

roots heap-ordered tree

each parent larger than its children

6

723

30

17

35

26 46

24

Heap H39

4118 52

3

44

Fibonacci Heaps: Structure

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

min

find-min takes O(1) time

7

723

30

17

35

26 46

24

Heap H39

4118 52

3

44

Fibonacci Heaps: Structure

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

min

use to keep heaps flat (stay tuned)

marked

8

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.

723

30

17

35

26 46

24

39

4118 52

3

44

rank = 3 min

Heap H

trees(H) = 5 marks(H) = 3

marked

n = 14

Page 3: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

9

Fibonacci Heaps: Potential Function

723

30

17

35

26 46

24

!(H) = 5 + 2"3 = 11

39

4118 52

3

44

min

Heap H

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

potential of heap H

trees(H) = 5 marks(H) = 3

marked

10

Insert

11

Fibonacci Heaps: Insert

Insert.! Create a new singleton tree.! Add to root list; update min pointer (if necessary).

723

30

17

35

26 46

24

39

4118 52

3

44

21

insert 21

min

Heap H

12

Fibonacci Heaps: Insert

Insert.! Create a new singleton tree.! Add to root list; update min pointer (if necessary).

39

41

723

18 52

3

30

17

35

26 46

24

44

21

min

Heap H

insert 21

Page 4: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

13

Fibonacci Heaps: Insert Analysis

Actual cost. O(1)

Change in potential. +1

Amortized cost. O(1)

39

41

7

18 52

3

30

17

35

26 46

24

44

2123

min

Heap H

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

potential of heap H

14

Delete Min

15

Linking Operation

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

39

4118 52

3

4477

56 24

15

tree T1 tree T2

39

4118 52

3

44

77

56 24

15

tree T'

smaller rootlarger root still heap-ordered

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.

39

4118 52

3

44

1723

30

7

35

26 46

24

min

Page 5: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

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.

39

411723 18 52

30

7

35

26 46

24

44

min

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.

39

411723 18 52

30

7

35

26 46

24

44

mincurrent

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.

39

411723 18 52

30

7

35

26 46

24

44

0 1 2 3

currentmin

rank

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.

39

411723 18 52

30

7

35

26 46

24

44

0 1 2 3

mincurrent

rank

Page 6: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

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.

39

411723 18 52

30

7

35

26 46

24

44

0 1 2 3

min

current

rank

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.

39

411723 18 52

30

7

35

26 46

24

44

0 1 2 3

min

current

rank

link 23 into 17

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.

39

4117

23

18 52

30

7

35

26 46

24

44

0 1 2 3

min

current

rank

link 17 into 7

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.

39

417

30

18 52

17

35

26 46

24

44

0 1 2 3

23

current

min

rank

link 24 into 7

Page 7: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

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.

39

417

30

18 52

23

17

35

26 46

24 44

0 1 2 3

min

current

rank

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.

39

417

30

18 52

23

17

35

26 46

24 44

0 1 2 3

min

current

rank

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.

39

417

30

18 52

23

17

35

26 46

24 44

0 1 2 3

min

current

rank

28

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.

39

417

30

18 52

23

17

35

26 46

24 44

0 1 2 3

min

current

rank

link 41 into 18

Page 8: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

29

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.

3941

7

30

1852

23

17

35

26 46

24

44

0 1 2 3

min

current

rank

30

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

30

52

23

17

35

26 46

24

0 1 2 3

min

rank

3941

18

44

current

31

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

30

52

23

17

35

26 46

24

min

3941

18

44

stop

32

Fibonacci Heaps: Delete Min Analysis

Delete min.

Actual cost. O(rank(H)) + O(trees(H))! O(rank(H)) to meld min's children into root list.! O(rank(H)) + O(trees(H)) to update min.! O(rank(H)) + O(trees(H)) to consolidate trees.

Change in potential. O(rank(H)) - trees(H)! trees(H' ) # rank(H) + 1 since no two trees have same rank.! $!(H) # rank(H) + 1 - trees(H).

Amortized cost. O(rank(H))

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

potential function

Page 9: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

33

Q. Is amortized cost of O(rank(H)) good?

A. Yes, if only insert and delete-min operations.! In this case, all trees are binomial trees.! This implies rank(H) # lg n.

A. Yes, we'll implement decrease-key so that rank(H) = O(log n).

Fibonacci Heaps: Delete Min Analysis

B0 B1 B2 B3

we only link trees of equal rank

34

Decrease Key

35

Intuition for deceasing the key of node x.! If heap-order is not violated, just decrease the key of x.! Otherwise, cut tree rooted at x and meld into root list.! To keep trees flat: as soon as a node has its second child cut,

cut it off and meld into root list (and unmark it).

24

46

17

30

23

7

88

26

21

52

39

18

41

38

72

Fibonacci Heaps: Decrease Key

35

min

marked node:one child already cut

36

Case 1. [heap order not violated]! Decrease key of x.! Change heap min pointer (if necessary).

24

46

17

30

23

7

88

26

21

52

39

18

41

38

72

Fibonacci Heaps: Decrease Key

29

35

min

x

decrease-key of x from 46 to 29

Page 10: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

37

Case 1. [heap order not violated]! Decrease key of x.! Change heap min pointer (if necessary).

24

29

17

30

23

7

88

26

21

52

39

18

41

38

72

Fibonacci Heaps: Decrease Key

35

min

x

decrease-key of x from 46 to 29

38

Case 2a. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24

29

17

30

23

7

88

26

21

52

39

18

41

38

72

Fibonacci Heaps: Decrease Key

15

35

min

decrease-key of x from 29 to 15

p

x

39

Case 2a. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24

15

17

30

23

7

88

26

21

52

39

18

41

38

72

Fibonacci Heaps: Decrease Key

35

min

decrease-key of x from 29 to 15

p

x

40

Case 2a. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24 17

30

23

7

88

26

21

52

39

18

41

38

Fibonacci Heaps: Decrease Key

35

min

decrease-key of x from 29 to 15

p

15

72

x

Page 11: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

41

Case 2a. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24 17

30

23

7

88

26

21

52

39

18

41

38

Fibonacci Heaps: Decrease Key

35

min

decrease-key of x from 29 to 15

p

15

72

x

mark parent

24

42

35

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24

15

17

30

23

7

88

26

21

52

39

18

41

38

72 24

Fibonacci Heaps: Decrease Key

5

min

x

p

decrease-key of x from 35 to 5

43

5

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24

15

17

30

23

7

88

26

21

52

39

18

41

38

72 24

Fibonacci Heaps: Decrease Key

min

x

p

decrease-key of x from 35 to 5

44

Fibonacci Heaps: Decrease Key

24 17

30

23

7

26

21

52

39

18

41

38

24

5

88

15

72

decrease-key of x from 35 to 5

x

p

min

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

Page 12: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

45

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24 17

30

23

7

26

21

52

39

18

41

38

24

5

Fibonacci Heaps: Decrease Key

88

15

72

decrease-key of x from 35 to 5

x

p

second child cut

min

46

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24

26

17

30

23

7

21

52

39

18

41

38

88 24

5

Fibonacci Heaps: Decrease Key

15

72

decrease-key of x from 35 to 5

x pmin

47

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

24

26

17

30

23

7

21

52

39

18

41

38

88 24

5

Fibonacci Heaps: Decrease Key

15

72

decrease-key of x from 35 to 5

x p

p'

second child cut

min

48

Case 2b. [heap order violated]! Decrease key of x.! Cut tree rooted at x, meld into root list, and unmark.! If parent p of x is unmarked (hasn't yet lost a child), mark it;

Otherwise, cut p, meld into root list, and unmark(and do so recursively for all ancestors that lose a second child).

26

17

30

23

7

21

52

39

18

41

38

88

5

Fibonacci Heaps: Decrease Key

15 24

72

decrease-key of x from 35 to 5

x p p'min

don't markparent ifit's a root

p''

Page 13: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

49

Decrease-key.

Actual cost. O(c)! O(1) time for changing the key.! O(1) time for each of c cuts, plus melding into root list.

Change in potential. O(1) - c! trees(H') = trees(H) + c.! marks(H') # marks(H) - c + 2.! $! # c + 2 " (-c + 2) = 4 - c.

Amortized cost. O(1)

Fibonacci Heaps: Decrease Key Analysis

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

potential function

50

Analysis

51

Analysis Summary

Insert. O(1)Delete-min. O(rank(H)) †

Decrease-key. O(1) †

Key lemma. rank(H) = O(log n).

† amortized

number of nodes is exponential in rank

52

Fibonacci Heaps: Bounding the Rank

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

Pf.! When yi was linked into x, x had at least i -1 children y1, …, yi-1.! Since only trees of equal rank are linked, at that time

rank(yi)!= rank(xi) % i - 1.! Since then, yi has lost at most one child.! Thus, right now rank(yi) % i - 2.

!

rank (yi ) "0 if i =1

i#2 if i "1

$ % &

or yi would have been cut

x

y1 y2 yk…

Page 14: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

53

Fibonacci Heaps: Bounding the Rank

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

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

F0 F1 F2 F3 F4 F5

1 2 3 5 8 13

!

rank (yi ) "0 if i =1

i#2 if i "1

$ % &

x

y1 y2 yk…

54

Fibonacci Heaps: Bounding the Rank

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

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

F4 F5

8 13

F6

8 + 13 = 21

!

rank (yi ) "0 if i =1

i#2 if i "1

$ % &

x

y1 y2 yk…

55

Fibonacci Heaps: Bounding the Rank

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

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

Fibonacci fact. Fk % &k, where & = (1 + '5) / 2 ( 1.618.

Corollary. rank(H) # log& n . golden ratio

x

y1 y2 yk…

!

rank (yi ) "0 if i =1

i#2 if i "1

$ % &

56

Fibonacci Numbers

Page 15: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

57

Fibonacci Numbers: Exponential Growth

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

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

!

Fk

=

1 if k = 0

2 if k =1

Fk-1

+ Fk-2

if k " 2

#

$ %

& %

slightly non-standard definition

!

Fk+2 = F

k+ F

k+1

" # k + # k+1

= # k (1 + #)

= # k (# 2 )

= # k+2

(&2 = & + 1)

(inductive hypothesis)

(definition)

(algebra)

(algebra)

58

Fibonacci Numbers and Nature

pinecone

cauliflower

59

Union

60

Fibonacci Heaps: Union

Union. Combine two Fibonacci heaps.

Representation. Root lists are circular, doubly linked lists.

39

41

717

18 52

3

30

23

35

26 46

24

44

21

min min

Heap H' Heap H''

Page 16: Fibonacci Heapswayne/teaching/fibonacci-heap.pdf · COS 423 Theory of Algorithms ¥ Kevin Wayne ¥ Spring 2007 Fibonacci Heaps Lecture slides adapted from: ¥ Chapter 20 of Introduction

61

Fibonacci Heaps: Union

Union. Combine two Fibonacci heaps.

Representation. Root lists are circular, doubly linked lists.

39

41

717

18 52

3

30

23

35

26 46

24

44

21

min

Heap H

62

Fibonacci Heaps: Union

Actual cost. O(1)

Change in potential. 0

Amortized cost. O(1)

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

potential function

39

41

717

18 52

3

30

23

35

26 46

24

44

21

min

Heap H

63

Delete

64

Delete node x.! decrease-key of x to -).! delete-min element in heap.

Amortized cost. O(rank(H))! O(1) amortized for decrease-key.! O(rank(H)) amortized for delete-min.

Fibonacci Heaps: Delete

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

potential function