Sei sulla pagina 1di 42

Babol Noshirvani University of Technology

Advanced Algorithm Course


Session 1 : Binomial Heaps

Chapter 6: Heapsort
Chapter 19 2nd Ed:
Binomial Heaps.
Chapter 19 3rd Ed :
Problems 19.2 - Binomial Heaps.

1
Priority Queues
Supports the following operations.
Insert element x.
 Return min element.
 Return and delete minimum element.
 Decrease key of element x to k.

Applications.
Dijkstra's shortest path algorithm.
 Prim's MST algorithm.
 Event-driven simulation.
 Huffman encoding.
 Heapsort.
 ...

2
Priority Queues in Action

Dijkstra's Shortest Path Algorithm

PQinit()
for each v  V
key(v)  
PQinsert(v)

key(s)  0
while (!PQisempty())
v = PQdelmin()
for each w  Q s.t (v,w)  E
if (w) > (v) + c(v,w)
PQdecrease(w, (v) + c(v,w))

3
Priority Queues
Heaps
Operation Linked List Binary Binomial Fibonacci * Relaxed
make-heap 1 1 1 1 1
insert 1 log N log N 1 1
find-min N 1 log N 1 1
delete-min N log N log N log N log N
union 1 N log N 1 1
decrease-key 1 log N log N 1 1
delete N log N log N log N log N
is-empty 1 1 1 1 1

Dijkstra/Prim
1 make-heap O(|V|2) O(|E| log |V|) O(|E| + |V| log |V|)
|V| insert
|V| delete-min
|E| decrease-key
4
Binary Heap: Definition
Binary heap.
 Almost complete binary tree.
–filled on all levels, except last, where filled from left to right
 Min-heap ordered.
– every child greater than (or equal to) parent

06

14 45

78 18 47 53

83 91 81 77 84 99 64

5
Binary Heap: Properties
Properties.
 Min element is in root.
 Heap with N elements has height = log2 N.

06
N = 14
Height = 3
14 45

78 18 47 53

83 91 81 77 84 99 64

6
Binary Heaps: Array Implementation
Implementing binary heaps.
 Use an array: no need for explicit parent or child pointers.
– Parent(i) = i/2
– Left(i) = 2i
– Right(i) = 2i + 1

06
1
14 45
2 3

78 18 47 53
4 5 6 7

83 91 81 77 84 99 64
8 9 10 11 12 13 14
7
Binary Heap: Insertion
Insert element x into heap.
 Insert into next available slot.
 Bubble up until it's heap ordered.
– Peter principle: nodes rise to level of incompetence

06

14 45

78 18 47 53

83 91 81 77 84 99 64 42 next free slot

8
Binary Heap: Insertion
Insert element x into heap.
 Insert into next available slot.
 Bubble up until it's heap ordered.
– Peter principle: nodes rise to level of incompetence

06 swap with parent

14 45

78 18 47 53

83 91 81 77 84 99 64 42

9
Binary Heap: Insertion
Insert element x into heap.
 Insert into next available slot.
 Bubble up until it's heap ordered.
– Peter principle: nodes rise to level of incompetence

06 swap with parent

14 45

78 18 47 42

83 91 81 77 84 99 64 53
42

10
Binary Heap: Insertion
Insert element x into heap.
 Insert into next available slot.
 Bubble up until it's heap ordered.
–Peter principle: nodes rise to level of incompetence
 O(log N) operations.

06 stop: heap ordered

14 42

78 18 47 45

83 91 81 77 84 99 64 53

11
Binary Heap: Decrease Key
Decrease key of element x to k.
Bubble up until it's heap ordered.
 O(log N) operations.

06

14 42

78 18 47 45

83 91 81 77 84 99 64 53

12
Binary Heap: Delete Min
Delete minimum element from heap.
 Exchange root with rightmost leaf.
 Bubble root down until it's heap ordered.
– power struggle principle: better subordinate is promoted

06

14 42

78 18 47 45

83 91 81 77 84 99 64 53

13
Binary Heap: Delete Min
Delete minimum element from heap.
 Exchange root with rightmost leaf.
 Bubble root down until it's heap ordered.
– power struggle principle: better subordinate is promoted

53

14 42

78 18 47 45

83 91 81 77 84 99 64 06

14
Binary Heap: Delete Min
Delete minimum element from heap.
 Exchange root with rightmost leaf.
 Bubble root down until it's heap ordered.
– power struggle principle: better subordinate is promoted

53 exchange with left child

14 42

78 18 47 45

83 91 81 77 84 99 64

15
Binary Heap: Delete Min
Delete minimum element from heap.
 Exchange root with rightmost leaf.
 Bubble root down until it's heap ordered.
– power struggle principle: better subordinate is promoted

14 exchange with right child

53 42

78 18 47 45

83 91 81 77 84 99 64

16
Binary Heap: Delete Min
Delete minimum element from heap.
 Exchange root with rightmost leaf.
 Bubble root down until it's heap ordered.
–power struggle principle: better subordinate is promoted
 O(log N) operations.

14 stop: heap ordered

18 42

78 53 47 45

83 91 81 77 84 99 64

17
Binary Heap: Heapsort
Heapsort.
Insert N items into binary heap.
 Perform N delete-min operations.
 O(N log N) sort.
 No extra storage.

18
Binary Heap: Union
Union.
 Combine two binary heaps H1 and H2 into a single heap.
 No easy solution.
–(N) operations apparently required
 Can support fast union with fancier heaps.

H1 H2

14 11

78 18 53 62

41 91 81 77 84 99 64

19
Priority Queues
Heaps
Operation Linked List Binary Binomial Fibonacci * Relaxed
make-heap 1 1 1 1 1
insert 1 log N log N 1 1
find-min N 1 log N 1 1
delete-min N log N log N log N log N
union 1 N log N 1 1
decrease-key 1 log N log N 1 1
delete N log N log N log N log N
is-empty 1 1 1 1 1

20
Binomial Tree
Binomial tree.
Recursive definition:

B0 Bk

Bk-1

Bk-1

B0 B1 B2 B3 B4
21
Binomial Tree
Useful properties of order k binomial tree Bk.
Number of nodes = 2k.

 Height = k.
Bk+1
 Degree of root = k.
 Deleting root yields binomial
trees Bk-1, … , B0.
B1 B0
B2
Proof. Bk
By induction on k.

B0 B1 B2 B3 B4
22
Binomial Tree
A property useful for naming the data structure.
 Bk has  k  nodes at depth i.
i

 4
 6
2
depth 0

depth 1

depth 2

depth 3

depth 4 B4
23
Binomial Heap
Binomial heap. Vuillemin, 1978.
 Sequence of binomial trees that satisfy binomial heap property.
– each tree is min-heap ordered
– 0 or 1 binomial tree of order k

6 3 18

8 29 10 44 37

30 23 22 48 31 17

45 32 24 50

55
B4 B1 B0
24
Binomial Heap: Implementation
Implementation.
 Represent trees using left-child, right sibling pointers.
–three links per node (parent, left, right)
 Roots of trees connected with singly linked list.
– degrees of trees strictly decreasing from left to right
heap

6 3 18 6 3 18

37
29 10 44 37 29

48 31 17 48 10

50 50 31 17 44

Binomial Heap Leftist Power-of-2 Heap


25
Binomial Heap: Properties
Properties of N-node binomial heap.
 Min key contained in root of B0, B1, . . . , Bk.
 Contains binomial tree Bi iff bi = 1 where bn b2b1b0 is binary
representation of N.
 At most log2 N + 1 binomial trees.
 Height  log2 N.

6 3 18

8 29 10 44 37

30 23 22 48 31 17 N = 19
# trees = 3
height = 4
45 32 24 50
binary = 10011

55
B4 B1 B0
26
Binomial Heap: Union
Create heap H that is union of heaps H' and H''.
 "Mergeable heaps."
 Easy if H' and H'' are each order k binomial trees.
– connect roots of H' and H''
– choose smaller key to be root of H

8 29 10 44

30 23 22 48 31 17

45 32 24 50

55
H' H''
27
Binomial Heap: Union

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

1 1 1
1 0 0 1 1
19 + 7 = 26 + 0 0 1 1 1
1 1 0 1 0
28
Binomial Heap: Union

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

29
Binomial Heap: Union 12

18

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

30
3 12

7 37 18

25

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

12

18

31
3 3 12

15 7 37 7 37 18

28 33 25 25

41

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

12

18

32
3 3 12

15 7 37 7 37 18

28 33 25 25

41

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

3 12

15 7 37 18

28 33 25

41

33
3 3 12

15 7 37 7 37 18

28 33 25 25

41

6 3 18

8 29 10 44 37

30 23 22 48 31 17
15 7 12
45 32 24 50

28 33 25
55

+ 41

6 3 12

8 29 10 44 15 7 37 18

30 23 22 48 31 17 28 33 25

45 32 24 50 41

55 34
Binomial Heap: Union
Create heap H that is union of heaps H' and H''.
 Analogous to binary addition.

Running time. O(log N)


Proportional to number of trees in root lists  2( log2 N + 1).

1 1 1
1 0 0 1 1
19 + 7 = 26 + 0 0 1 1 1
1 1 0 1 0
35
Binomial Heap: Delete Min
Delete node with minimum key in binomial heap H.
 Find root x with min key in root list of H, and delete
 H'  broken binomial trees
 H  Union(H', H)

Running time. O(log N)

3 6 18

8 29 10 44 37

30 23 22 48 31 17 H

45 32 24 50

55
36
Binomial Heap: Delete Min
Delete node with minimum key in binomial heap H.
 Find root x with min key in root list of H, and delete
 H'  broken binomial trees
 H  Union(H', H)

Running time. O(log N)

6 18

8 29 10 44 37

30 23 22 48 31 17 H

45 32 24 50

55
H' 37
Binomial Heap: Decrease Key
Decrease key of node x in binomial heap H.
Suppose x is in binomial tree Bk.
 Bubble node x up the tree if x is too small.

Running time. O(log N)


Proportional to depth of node x  log2 N .

3 6 18

depth = 3 8 29 10 44 37

30 23 22 48 31 17 H

x 32 24 50

55
38
Binomial Heap: Delete
Delete node x in binomial heap H.
 Decrease key of x to -.
 Delete min.

Running time. O(log N)

39
Binomial Heap: Insert
Insert a new node x into binomial heap H.
H'  MakeHeap(x)

 H  Union(H', H)

Running time. O(log N)

3 6 18 x

8 29 10 44 37

30 23 22 48 31 17 H H'

45 32 24 50

55
40
Binomial Heap: Sequence of Inserts
Insert a new node x into binomial heap H.
 If N = .......0, then only 1 steps. 3 6 x

 If N = ......01, then only 2 steps.


29 10 44 37
 If N = .....011, then only 3 steps.
 If N = ....0111, then only 4 steps. 48 31 17

50

Inserting 1 item can take (log N) time.


 If N = 11...111, then log2 N steps.

But, inserting sequence of N items takes O(N) time!


 (N/2)(1) + (N/4)(2) + (N/8)(3) + . . .  2N
 Amortized analysis. N
 Basis for getting most operations  nn  2  NN  N11
n1 2 2 2
down to constant time.  2

41
Priority Queues

Heaps
Operation Linked List Binary Binomial Fibonacci * Relaxed
make-heap 1 1 1 1 1
insert 1 log N log N 1 1
find-min N 1 log N 1 1
delete-min N log N log N log N log N
union 1 N log N 1 1
decrease-key 1 log N log N 1 1
delete N log N log N log N log N
is-empty 1 1 1 1 1

just did this


42

Potrebbero piacerti anche