Binomial Heaps -...

50
Binomial Heaps Bryan M. Franklin [email protected] 1 Friday, October 10, 2008

Transcript of Binomial Heaps -...

Page 1: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial HeapsBryan M. Franklin

[email protected]

1Friday, October 10, 2008

Page 2: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

TradeoffsWorst Case

Operation Binary Heap Binomial HeapMake-Heap Θ(1) Θ(1)

Insert Θ(lg n) O(lg n)Minimum Θ(1) O(lg n)

Extract-Min Θ(lg n) Θ(lg n)Union Θ(n) Θ(lg n)

Decrease-Key Θ(lg n) Θ(lg n)Delete Θ(lg n) Θ(lg n)

2Friday, October 10, 2008

Page 3: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Trees

Definition:

B0: A binomial tree with a single node.

Bk: Two Bk-1 binomial trees connected such that one tree has the other as its leftmost child.

3Friday, October 10, 2008

Page 4: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Trees

B0 B1 B2 B3 B4

4Friday, October 10, 2008

Page 5: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Properties of binomial tree Bk:

• 2k nodes

• Height of tree is k

• Exactly nodes at depth i

• Root has degree k

• Children of the root from left to right are binomial trees Bk-1, Bk-2, Bk-3, ... , B0

!k

i

"

Binomial Tree Properties

5Friday, October 10, 2008

Page 6: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Tree Properties

B4

2k Nodes

k=424=16 nodes

1

54

11

3

109

15

2

87

14

6

1312

16

6Friday, October 10, 2008

Page 7: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Tree Properties

B4

Height of k

k=4height is 4

4

01

0

2

01

0

3

01

0

2

01

0

7Friday, October 10, 2008

Page 8: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Tree Properties

B4

Exactly nodes at depth i

1

43

6

2

54

4

1

32

3

1

21

1

!k

i

"

!40

"= 1

!41

"= 4

!42

"= 6

!43

"= 4

!44

"= 1

8Friday, October 10, 2008

Page 9: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Tree Properties

B3

Root has degree k

4

01

0

2

01

0

3

01

0

2

01

0

k=4Root’s degree is 4

B2

B1

B0Root’s children:B3, B2, B1, B0

9Friday, October 10, 2008

Page 10: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

RepresentationLeft-child, Right-sibling (ch. 10)

Parent

Left-child

Right-sibling

10Friday, October 10, 2008

Page 11: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Representation Example

B4

11Friday, October 10, 2008

Page 12: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Heap

A binomial heap is a set, H, of binomial trees, such that:

1) Each tree in H satisfies the min-heap property.

2) The root of every tree in H has a unique degree.

12Friday, October 10, 2008

Page 13: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial Heaps

6

4410

17

29

3148

50

8

2223

24

30

3245

55

15

3328

41

3

37

18

7

25

12head[H1]

head[H2]

13Friday, October 10, 2008

Page 14: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Heap Operations

• Make-Heap( )

• Minimum(H)

• Union(H1, H2)

• Insert(H, x)• Extract-Min(H)

• Decrease-Key(H, x, k)

• Delete(H, x)

14Friday, October 10, 2008

Page 15: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Make-Binomial-Heap

Make-Binomial-Heap()

1 H ! new Heap2 head[H ]! NIL3 return H

15Friday, October 10, 2008

Page 16: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-Minimum

Binomial-Heap-Minimum(H)

1 y ! NIL2 x! head[H ]3 min!"4 while x #= NIL5 do if key[x] < min6 then min! key[x]7 y ! x8 x! sibling [x]9 return y

16Friday, October 10, 2008

Page 17: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-Minimum

15

3328

41

7

25

12head[H1]

x

min=∞

y

NIL

17Friday, October 10, 2008

Page 18: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-Minimum

15

3328

41

7

25

12head[H1]

x

min=12

y

NIL

18Friday, October 10, 2008

Page 19: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-Minimum

15

3328

41

7

25

12head[H1]

x

min=7

y

NIL

19Friday, October 10, 2008

Page 20: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-Minimum

15

3328

41

7

25

12head[H1]

x

min=7

y

NIL

20Friday, October 10, 2008

Page 21: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Link

Binomial-Link(y, z)

1 p[y]! z2 sibling [y]! child [z]3 child [z]! y4 degree[z]! degree[z] + 1

21Friday, October 10, 2008

Page 22: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Link

y z

22Friday, October 10, 2008

Page 23: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Link

y z

p[y]

23Friday, October 10, 2008

Page 24: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Link

y z

sibling[y]

24Friday, October 10, 2008

Page 25: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Link

y z

child[z]

25Friday, October 10, 2008

Page 26: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-UnionBinomial-Heap-Union(H1, H2)

1 H !Make-Binomial-Heap()2 head [H ]! Binomial-Heap-Merge(H1, H2)3 free H1 and H2, but not the lists they point to4 if head [H ] = NIL5 then return H6 prev -x ! NIL7 x! head [H ]8 next -x ! sibling [x]9 while next -x "= NIL

10 do if degree[x] "= degree[next -x ] or(sibling [next -x ] "= NIL and degree[sibling [next -x ]] = degree[x])

11 then prev -x ! x12 x! next -x13 else if key [x] # key [next -x ]14 then sibling [x]! sibling [next -x ]15 Binomial-Link(next -x , x)16 else if prev -x = NIL17 then head [H ]! next -x18 else sibling [prev -x ]! next -x19 Binomial-Link(x, next -x )20 x! next -x21 next -x ! sibling [x]22 return H

26Friday, October 10, 2008

Page 27: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-Union

6

4410

17

29

3148

50

8

2223

24

30

3245

55

15

3328

41

3

37

18

7

25

12head[H1]

head[H2]

27Friday, October 10, 2008

Page 28: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

6

4410

17

29

3148

50

8

2223

24

30

3245

55

Binomial-Heap-Union

3

37

7

25

15

3328

41

12head[H] 18

x next-x

28Friday, October 10, 2008

Page 29: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

6

4410

17

29

3148

50

8

2223

24

30

3245

55

Binomial-Heap-Union

3

37

7

25

15

3328

41

head[H] 12

18

x next-x

29Friday, October 10, 2008

Page 30: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

6

4410

17

29

3148

50

8

2223

24

30

3245

55

Binomial-Heap-Union

3

37

7

25

15

3328

41

head[H] 12

18

x next-xprev-x

30Friday, October 10, 2008

Page 31: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

6

4410

17

29

3148

50

8

2223

24

30

3245

55

Binomial-Heap-Union

15

3328

41

head[H] 12

18

x next-xprev-x3

377

25

31Friday, October 10, 2008

Page 32: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

6

4410

17

29

3148

50

8

2223

24

30

3245

55

Binomial-Heap-Union

15

3328

41

head[H] 12

18

x next-xprev-x3

377

25

32Friday, October 10, 2008

Page 33: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Binomial-Heap-InsertBinomial-Heap-Insert(H, x)

1 H ! " Make-Binomial-Heap()2 p[x] " NIL3 child [x] " NIL4 sibling [x] " NIL5 degree[x] " 06 head [H !] " x7 H " Binomial-Heap-Union(H, H !)

33Friday, October 10, 2008

Page 34: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Extract-Min

Binomial-Heap-Extract-Min(H)

1 find root in H with minimum key value, remove as x2 H ! " Make-Binomial-Heap()3 fill heap H ! by linking x’s children in reverse order4 H " Binomial-Heap-Union(H, H !)5 return x

34Friday, October 10, 2008

Page 35: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

1

2512

18

16

2326

42

6

2914

38

8

1711

27

head[H] 37

41

10

1328

77

Extract-Min

35Friday, October 10, 2008

Page 36: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

1

2512

18

16

2326

42

6

2914

38

8

1711

27

head[H] 37

41

10

1328

77

x

Extract-Min

36Friday, October 10, 2008

Page 37: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

2512

18

16

2326

42

6

2914

38

8

1711

27

head[H] 37

41

10

1328

77

1

x

Extract-Min

37Friday, October 10, 2008

Page 38: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

25 12

18

16

2326

42

6

2914

38

8

1711

27

37

41

head[H] 10

1328

77

head[H’]

Extract-Min

1

x

38Friday, October 10, 2008

Page 39: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

25 12

18

16

2326

42

6

2914

38

8

1711

27

37

41

head[H]10

1328

77

Extract-Min

1

x

39Friday, October 10, 2008

Page 40: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-KeyBinomial-Heap-Decrease-Key(H, x, k)

1 if k > key [x]2 then error ”new key is larger than current key”3 key [x]! k4 y ! x5 z ! p[y]6 while z "= NIL and key [y] < key [z]7 do exchange key [y]# key [z]8 ! exchange satellite data as well9 y ! z

10 z ! p[y]

40Friday, October 10, 2008

Page 41: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

16

2326

42

6

2914

38

8

1711

27

37

41

head[H]10

1328

77x

41Friday, October 10, 2008

Page 42: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

16

237

42

6

2914

38

8

1711

27

37

41

head[H]10

1328

77x

42Friday, October 10, 2008

Page 43: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

16

237

42

6

2914

38

8

1711

27

37

41

head[H]10

1328

77y

z

43Friday, October 10, 2008

Page 44: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

7

2316

42

6

2914

38

8

1711

27

37

41

head[H]10

1328

77y

z

44Friday, October 10, 2008

Page 45: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

7

2316

42

6

2914

38

8

1711

27

37

41

head[H]10

1328

77

zy

45Friday, October 10, 2008

Page 46: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

10

2316

42

6

2914

38

8

1711

27

37

41

head[H]7

1328

77

zy

46Friday, October 10, 2008

Page 47: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

10

2316

42

6

2914

38

8

1711

27

37

41

head[H]7

1328

77

y

z

47Friday, October 10, 2008

Page 48: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Decrease-Key

25 12

18

10

2316

42

6

2914

38

8

1711

27

37

41

head[H]7

1328

77

y

z

48Friday, October 10, 2008

Page 49: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

Delete

Binomial-Heap-Delete(H, x)

1 Binomial-Heap-Decrease-Key(H, x,!")2 Binomial-Heap-Extract-Min()

49Friday, October 10, 2008

Page 50: Binomial Heaps - pages.mtu.edupages.mtu.edu/~aebnenas/teaching/fall2008/cs5321/lectures/Bryan...Binomial Heaps Bryan M. Franklin bmfrankl@mtu.edu Friday, October 10, 2008 1

The End

50Friday, October 10, 2008