Title: CS473-Algorithms
1CS473-Algorithms
2Binomial Heaps
- DATA STRUCTURES MERGEABLE HEAPS
- MAKE-HEAP ( )
- Creates returns a new heap with no elements.
- INSERT (H,x)
- Inserts a node x whose key field has already been
filled into heap H. - MINIMUM (H)
- Returns a pointer to the node in heap H whose key
is minimum.
3Mergeable Heaps
- EXTRACT-MIN (H)
- Deletes the node from heap H whose key is
minimum. Returns a pointer to the node. - DECREASE-KEY (H, x, k)
- Assigns to node x within heap H the new value k
where k is smaller than its current key value.
4Mergeable Heaps
- DELETE (H, x)
- Deletes node x from heap H.
- UNION (H1, H2)
- Creates and returns a new heap that contains all
nodes of heaps H1 H2. - Heaps H1 H2 are destroyed by this operation
5Binomial Trees
- A binomial heap is a collection of binomial
trees. - The binomial tree Bk is an ordered tree defined
recursively - Bo Consists of a single node
- .
- .
- .
- Bk Consists of two binominal trees Bk-1
linked together. Root of one is the
leftmost child of the root of the other.
6Binomial Trees
B k-1
B k-1
B k
7Binomial Trees
B2
B1
B1
B0
B1
B0
B1
B2
B3
B3
B2
B0
B1
B4
8Binomial Trees
Bk-2
Bo
B1
B2
Bk-1
Bk
9Properties of Binomial Trees
- LEMMA For the binomial tree Bk
- There are 2k nodes,
- The height of tree is k,
- There are exactly nodes at depth i for
i 0,1,..,k and - The root has degree k gt degree of any other node
if the children of the root are numbered from
left to right as k-1, k-2,...,0 child i is the
root of a subtree Bi.
10Properties of Binomial Trees
- PROOF By induction on k
- Each property holds for the basis B0
- INDUCTIVE STEP assume that Lemma
holds for Bk-1 - Bk consists of two copies of Bk-1
- Bk Bk-1 Bk-1 2k-1 2k-1 2k
- 2. hk-1 Height (Bk-1) k-1 by induction
- hkhk-11 k-1 1 k
11Properties of Binomial Trees
- 3. Let D(k,i) denote the number of nodes at
depth i of a Bk -
- true by induction
d1
di
di-1
di
D(k-1, i)
D(k-1,i -1)
Bk-1
Bk-1
k
k-1
k-1
D(k,i)D(k-1,i -1) D(k-1,i)
i
i
i -1
12Properties of Binomial Trees(Cont.)
- 4.Only node with greater degree in Bk than those
in Bk-1 is the root, - The root of Bk has one more child than the root
of Bk-1, - Degree of root BkDegree of Bk-11(k-1)1k
13Properties of Binomial Trees (Cont.)
Bk-1
14Properties of Binomial Trees (Cont.)
- COROLLARY The maximum degree of any node in an
n-node binomial tree is lg(n) - The term BINOMIAL TREE comes from the
- 3rd property.
- i.e. There are nodes at depth i of a Bk
- terms are the binomial
coefficients.
15Binomial Heaps
- A BINOMIAL HEAP H is a set of BINOMIAL
- TREES that satisfies the following Binomial
- Heap Properties
- Each binomial tree in H is HEAP-ORDERED
- the key of a node is the key of the parent
- Root of each binomial tree in H contains the
smallest key in that tree.
16Binomial Heaps
- 2. There is at most one binomial tree in H whose
root has a given degree, - n-node binomial heap H consists of at most
lgn 1 binomial trees. - Binary represantation of n has lg(n) 1 bits,
- n b lgn , b lgn -1, ....b1, b0gt S
lgn i0 bi 2i - By property 1 of the lemma (Bi contains 2i
nodes) Bi appears in H iff bit bi1
17Binomial Heaps
- Example A binomial heap with n 13 nodes
- 3 2 1 0
- 13 lt 1, 1, 0, 1gt2
- Consists of B0, B2, B3
- headH
10
1
6
B0
25
12
29
8
14
18
B2
38
17
11
B3
27
18Representation of Binomial Heaps
- Each binomial tree within a binomial heap is
stored in the left-child, right-sibling
representation - Each node X contains POINTERS
- px to its parent
- childx to its leftmost child
- siblingx to its immediately right sibling
- Each node X also contains the field degreex
which denotes the number of children of X.
19Representation of Binomial Heaps
HEAD H
20Representation of Binomial Heaps
- Let x be a node with siblingx ? NIL
- Degree sibling xdegreex-1
- if x is NOT A ROOT
- Degree sibling x gt degreex
- if x is a root
21Operations on Binomial Heaps
- CREATING A NEW BINOMIAL HEAP
-
- MAKE-BINOMIAL-HEAP ( )
-
- allocate H
- head H ? NIL
- return H
- end
RUNNING-TIME T(1)
22Operations on Binomial Heaps
- BINOMIAL-HEAP-MINIMUM (H)
- x ? Head H
- min ? key x
- x ? sibling x
- while x ? NIL do
- if key x lt min then
- min ? key x
- y ? x
- endif
- x ? sibling x
- endwhile
- return y
- end
-
-
23Operations on Binomial Heaps
- Since binomial heap is HEAP-ORDERED
- The minimum key must reside in a ROOT NODE
-
- Above procedure checks all roots
- NUMBER OF ROOTS lgn 1
- RUNNINGTIME O (lgn)
24Uniting Two Binomial Heaps
- BINOMIAL-HEAP-UNION
- Procedure repeatedly link binomial trees whose
roots have the same degree - BINOMIAL-LINK
- Procedure links the Bk-1 tree rooted at node y
to - the Bk-1 tree rooted at node z it makes z the
parent of y -
- i.e. Node z becomes the root of a Bk tree
-
25Uniting Two Binomial Heaps
- BINOMIAL-LINK (y,z)
- p y ? z
- sibling y ? child z
- child z ? y
- degree z ?degree z 1
- end
26Uniting Two Binomial Heaps
NIL
z
1
childz
py
NIL
sibling y
27Uniting Two Binomial Heaps Cases
- We maintain 3 pointers into the root list
- x points to the root currently being
- examined
- prev-x points to the root PRECEDING x on
- the root list sibling prev-x
x - next-x points to the root FOLLOWING x on
- the root list sibling x
next-x
28Uniting Two Binomial Heaps
- Initially, there are at most two roots of the
same degree - Binomial-heap-merge guarantees that if two roots
in h have the same degree they are adjacent in
the root list - During the execution of union, there may be three
roots of the same degree appearing on the root
list at some time
29Uniting Two Binomial Heaps
CASE 1 Occurs when degree x ? degree
next-x prev-x x
next-x sibling
next-x
a
b
c
d
Bk Bl l gtk
prev-x x
next-x
a
b
c
d
Bk Bl
30Uniting Two Binomial Heaps Cases
- CASE 2 Occurs when x is the first of 3 roots
of equal degree - degree x degree next-x degree
siblingnext-x
prev-x x next-x
sibling next-x
a
b
c
d
BK BK
BK
prev-x x
next-x
c
a
b
d
BK BK
BK
31Uniting Two Binomial Heaps Cases
- CASE 3 4 Occur when x is the first of 2
roots of equal degree - degree x degree next-x ? degree
sibling next-x - Occur on the next iteration after any case
- Always occur immediately following CASE 2
- Two cases are distinguished by whether x or
next-x has the smaller key - The root with the smaller key becomes the root of
the linked tree -
32Uniting Two Binomial Heaps Cases
prev-x x next-x
sibling next-x
a
b
c
d
Bk Bk Bl
l gt k
prev-x x
next-x
CASE 3
a
b
d
key b key c
c
prev-x
x next-x
CASE 4
a
c
d
key c key b
b
33Uniting Two Binomial Heaps Cases
- The running time of binomial-heap-union
operation is O (lgn) - Let H1 H2 contain n1 n2 nodes respectively
where n n1n2 - Then, H1 contains at most lgn1 1 roots
- H2 contains at most lgn2 1
roots
34Uniting Two Binomial Heaps Cases
- So H contains at most
- lgn1 lgn2 2 2 lgn 2 O (lgn) roots
- immediately after BINOMIAL-HEAP-MERGE
- Therefore, BINOMIAL-HEAP-MERGE runs in O(lgn)
time and - BINOMIAL-HEAP-UNION runs in O (lgn) time
35Binomial-Heap-Union Procedure
- BINOMIAL-HEAP-MERGE PROCEDURE
- Merges the root lists of H1 H2 into a single
linked-list - - Sorted by degree into monotonically increasing
order
36Binomial-Heap-Union Procedure
- BINOMIAL-HEAP-UNION (H1,H2)
- H ? MAKE-BINOMIAL-HEAP ( )
- head H ? BINOMIAL-HEAP-MERGE (H1,H2)
- free the objects H1 H2 but not the
lists they point to - prev-x ? NIL
- x ? HEAD H
- next-x ? sibling x
- while next-x ? NIL do
- if ( degree x ? degree next-x OR
- (sibling next-x ? NIL and
degreesibling next-x degree x) then - prev-x ? x
CASE 1 and 2 - x ? next-x
CASE 1 and 2 - elseif key x key next-x then
- sibling x ? sibling next -x
CASE 3 -
37Binomial-Heap-Union Procedure (Cont.)
- BINOMIAL- LINK (next-x, x) CASE 3
- else
- if prev-x NIL then
- head H ? next-x
CASE 4 - else
CASE 4 - sibling prev-x ? next-x CASE
4 - endif
- BINOMIAL-LINK(x, next-x) CASE 4
- x ? next-x
CASE 4 - endif
- next-x ? sibling x
- endwhile
- return H
- end
38Uniting Two Binomial Heaps vs Adding Two Binary
Numbers
-
- H1 with n1 NODES H1
- H2 with n2 NODES H2
- ex n1 39 H1 lt gt
B0, B1, B2, B5 - n2 54 H2 lt gt
B1, B2, B4, B5
5 4 3 2 1 0
1 0 0 1 1 1
1 1 0 1 1 0
39next-x
x
MERGE H
B5
B5
B4
B2
B2
B1
B1
B0
CASE1 MARCH Cin0 101
next-x
x
B5
B5
B4
B2
B2
B1
B1
B0
CASE3 or 4 LINK Cin0 1110
next-x
x
B5
B5
B4
B2
B2
B1
B0
CASE2 MARCH then CASE3 and CASE4 LINK Cin1
1111
B1
next-x
x
B2
B5
B5
B4
B2
B2
B2
B0
40 x
next-x
B5
B5
B4
B2
B2
B0
CASE1 MARCH Cin1 001
B3
B2
next-x
x
B5
B5
B4
B3
B2
B0
CASE1 MARCH Cin0 011
next-x
x
B5
B5
B4
B3
B2
B0
x
CASE3 OR 4 LINK Cin0 1010
B5
B4
B3
B2
B0
B6
B5
41Inserting a Node
- BINOMIAL-HEAP-INSERT (H,x)
- H' ? MAKE-BINOMIAL-HEAP (H, x)
- P x ? NIL
- child x ? NIL
- sibling x ? NIL
- degree x ? O
- head H ? x
- H ? BINOMIAL-HEAP-UNION (H, H)
- end
RUNNING-TIME O(lg n)
42H n151 H lt 110011gt B0, B1
,B4, B5
Relationship Between Insertion Incrementing a
Binary Number
B5
B4
B1
B0
x next-x
B5
B4
B1
B0
B0
5 4 3 2 1 0
1 1 1 0 0 1 1
1 1 1 0 1 0 0
x next-x
B5
B4
B1
B0
B0
B2 B4 B5
B5
B4
B1
B1
43 A Direct Implementation that does not Call
Binomial-Heap-Union
- More efficient
- Case 2 never occurs
- While loop should terminate whenever case 1 is
encountered
44Extracting the Node with the Minimum Key
- BINOMIAL-HEAP-EXTRACT-MIN (H)
- (1) find the root x with the minimum key in
the - root list of H and remove x from the
root list of H - (2) H ? MAKE-BINOMIAL-HEAP ( )
- (3) reverse the order of the linked list of
x children - and set head H ? head of the
resulting list - (4) H ? BINOMIAL-HEAP-UNION (H, H)
- return x
- end
45Extracting the Node with the Minimum Key
Consider H with n 27, H lt1 1 0 1 1gt B0,
B1, B3, B4 assume that x root of B3 is the
root with minimum key
x
head H
B0
B4
B0
46Extracting the Node with the Minimum Key
x
head H
B1
B0
B4
B1
B0
B2
head H
47Extracting the Node with the Minimum Key
- Unite binomial heaps H B0 ,B1,B4 and
H B0 ,B1,B2 - Running time if H has n nodes
- Each of lines 1-4 takes O(lgn) time
- it is O(lgn).
-
48Decreasing a Key
- BINOMIAL-HEAP-DECREASE-KEY (H, x, k)
- key x ? k
- y ? x
- z ? py
- while z ? NIL and key y lt key z do
- exchange key y ? key z
- exchange satellite fields of y and z
- y ? z
- z ? p y
- endwhile
- end
49Decreasing a Key
- Similar to DECREASE-KEY in BINARY HEAP
- BUBBLE-UP the key in the binomial tree it resides
in - RUNNING TIME O(lgn)
50Deleting a Key
- BINOMIAL- HEAP- DELETE (H,x)
- y ? x
- z ? p y
- while z ? NIL do
- key y ? key z
- satellite field of y ? satellite
field of z - y ? z z ? p y
- endwhile
- H? MAKE-BINOMIAL-HEAP
- remove root z from the root list of H
- reverse the order of the linked list of
zs children - and set head H ? head of the resulting list
- H ? BINOMIAL-HEAP-UNION (H, H)
RUNNING-TIME O(lg n)
51Deleting a Key (Cont.)
- H ? MAKE-BINOMIAL-HEAP
- remove root z from the root list of H
- reverse the order of the linked list of zs
children - set head H ? head of the resulting list
- H ? BINOMIAL-HEAP-UNION (H, H)
- end