SlideShare une entreprise Scribd logo
1  sur  38
© Oxford University Press 2011. All rights reserved.
Data Structures Using C
Reema Thareja, Assistant Professor, Institute of
Information Technology and Management,
New Delhi
© Oxford University Press 2011. All rights reserved.
CHAPTER 12
HEAPS
© Oxford University Press 2011. All rights reserved.
INTRODUCTION
• A heap is a specialized tree-based data structure that satisfies
the heap property which states that
• If B is a child of A, then key(A) ≥ key(B).
• This implies that the root node has the highest key value in the
heap. Such a heap is commonly known as a max-heap.
(Alternatively, if the root has the lowest key value, then the
resultant heap is called a min-heap.)
© Oxford University Press 2011. All rights reserved.
BINARY HEAPS
• A binary heap is defined as a complete binary tree with elements at every node
being either less than (or equal to) the element at its left and the right child.
• It has following properties.
• Since a heap is defined as a complete binary tree, all its elements can be stored
sequentially in an array. It follows the same rules of complete binary tree. That is, if
an element at position i in the array, has its left child stored at position 2i and its
right child at position 2i + 1. Conversely, an element at position i have its position
stored at position i/2.
• Being a complete binary tree, all levels of the tree except the last level are
completely filled.
• Height of a binary tree is given as log2n, where n is the number of elements.
• Heaps (also known as partially ordered trees) are a very popular data structure for
implementing priority queues.
• A binary heap is a useful data structure in which elements can be added randomly
but only the element with highest value is removed (in case of max heap and
minimum value in case of mean heap). Although, a binary tree is better, but a binary
heap is more space efficient, and simpler.
4
1
2
6
7
1
3
9 2
1
3
9
1
0
1
9
7
2
9
9
6
3
4
5
2
7
6
9
2
1
3
9
5
4
3
6
Min heap
Max heap
© Oxford University Press 2011. All rights reserved.
Insertion in a Binary Heap
Consider a max heap H having n elements. Inserting a new value into the heap is done in two major
steps.
• Add the new value at the bottom of H in such a way that H is still a complete binary tree but not
necessarily a heap
• Let the new value rise to its appropriate place in H so that H now becomes a heap as well.
To do this, compare the new value with its parent; to check if they are in the correct order. If they are
in the correct order, then the procedure halts else, the new value and its parent’s value is swapped
and step 2 is repeated.
Consider the heap given below and insert 99 in it
5
4
4
5
3
6
2
7
2
1
1
8
2
1
1
1
4
5
3
6
2
7
2
1
1
8
2
1
1
1
5
4
9
9
4
5
3
6
2
7
2
1
1
8
2
1
1
1
5
4
9
9
4
5
3
6
9
9
2
1
1
8
2
1
1
1
5
4
2
7
4
5
3
6
9
9
2
1
1
8
2
1
1
1
5
4
2
7
9
9
4
5
2
1
1
8
2
1
1
1
5
4
2
7
3
6
© Oxford University Press 2011. All rights reserved.
9
9
4
5
2
1
1
8
2
1
1
1
5
4
2
7
3
6
5
4
4
5
2
1
1
8
2
1
1
1
9
9
2
7
3
6
Algorithm to insert a value in the heap
Step 1: [Add the new value and set its POS]
SET N = N + 1, POS = N
Step 2: SET HEAP[N] = VAL
Step 3: [Find appropriate location of VAL]
Repeat Steps 4 and 5 while POS < 0
Step 4: SET PAR = POS/2
Step 5: IF HEAP[POS] <= HEAP[PAR], then
Goto Step 6.
ELSE
SWAP HEAP[POS], HEAP[PAR]
POS = PAR
[END OF IF]
[END OF LOOP]
Step 6: Return
© Oxford University Press 2011. All rights reserved.
Deleting an Element from a Binary Heap
Consider a max heap H having n elements. An element is always deleted from
the root of the heap. So, deleting an element from the heap is done in two
major steps.
• Replace the root node’s value with the last node’s value so that H is still a
complete binary tree but not necessarily a heap
• Delete the last node
• Sink down the new root node’s value so that H satisfies the heap property. In
this step, interchange the root node’s value with its child node’s value
(whichever is largest among its children).
Consider the heap H given below and delete the root node’s value.
4
5
3
6
2
7
2
9
1
8
2
1
1
1
5
4
4
5
3
6
2
7
2
9
1
8
2
1
1
1
4
5
3
6
2
7
2
9
1
8
2
1
1
1
1
1
3
6
2
7
2
9
1
8
2
1
4
5
2
9
3
6
2
7
1
1
1
8
2
1
4
5
© Oxford University Press 2011. All rights reserved.
Algorithm to delete the root element from the heap- DELETE_HEAP(HEAP,
N, VAL)
Step 1: [ Remove the last node from the heap]
SET LAST = HEAP[N], SET N = N – 1
Step 2: [Initialization]
SET PTR = 0, LEFT = 1, RIGHT = 2
Step 3: SET HEAP[PTR] = LAST
Step 4: Repeat Steps 5 to 7 while LEFT <= N
Step 5: IF HEAP{PTR] >= HEAP[LEFT] AND HEAP[PTR] >=
HEAP[RIGHT], then
Go to Step
[END OF IF]
Step 6: IF HEAP[RIGHT] <= HEAP[LEFT], then
SWAP HEAP[PTR], HEAP[LEFT]
SET PTR = LEFT
ELSE
SWAP HEAP[PTR], HEAP[RIGHT]
SET PTR = RIGHT
[END OF IF]
Step 7: SET LEFT = 2 * PTR and RIGHT = LEFT + 1
[END OF LOOP]
Step 8: Return
© Oxford University Press 2011. All rights reserved.
BINOMIAL TREE
• Binomial tree is an ordered tree that can be recursively defined as:
• A binomial tree of order 0 has a single node.
• A binomial tree of order i has a root node whose children are root nodes of binomial
trees of order i-1, i-2, …, 2, 1, 0.
• A binomial tree Bi has 2i nodes
• The height of a binomial tree Bi is i
• Note that binomial tree Bi consist of two binomial trees (of order Bi-1) that are linked
together in such a way that the root of one is the leftmost child of the root of the other.
Binomial Tree, B0
Binomial Tree, Bi
B0
B1
B2
Bi-2
Bi-1
A binomial heap H is a collection of binomial trees that satisfies the following
properties.
•Every binomial tree in H satisfies the minimum heap property
•There can be one or zero binomial trees for each order including zero order.
While the first property tells that the root of a heap-ordered tree contains the smallest
key in the tree, the second property on the other hand implies that a binomial heap H
having N nodes contains at most log N + 1 binomial trees.
© Oxford University Press 2011. All rights reserved.
Linked Representation of Binomial Heaps in Memory
• Each node in a binomial heap H has a val field that stores its value. In addition, each
node N has certain pointers like,
• P[N] that point to the parent of N
• Child [N] that point to the leftmost child, and
• Sibling[N] that point to the sibling of N which is immediately to its right.
• If N is the root node, then P[N] = NULL. If N has no children, then Child[N] = NULL, and if
N is the rightmost child of its parent, then sibling[N] = NIL.
• In addition to this, every node N has a degree field which stores the number of children
of N.
Head [H] 7
2
7
1
1
1
6
9
3
6
1
4
1
0
1
8
1
2
2
1
1
9
© Oxford University Press 2011. All rights reserved.
OPERATIONS ON BINOMIAL HEAPS
Create a new binomial heap
• The procedure Create_Binomial-Heap(), allocates and returns an object H, whre Head[H] is set
to NULL. The running time of this procedure can be given as O(1).
Finding the minimum key
• The procedure Min_Binomial-Heap() returns a pointer to the node having minimum value in the
binomial heap H .
• A binomial heap is heap-ordered, therefore, the node with minimum value in a particular
binomial tree will appear as the root node in the binomial heap. Thus, the Min_Binomial-Heap()
procedure checks all roots. Since there are at most lg n + 1 roots to check, the running time of
this procedure is O(lg n).
Min_Binomial-Heap()
Step 1: INITIALIZE SET Y = NULL, X = Head[H] and Min = ∞
Step 2: REPEAT Steps 3 and 4 While X ≠ NULL
Step 3: IF Val[X] < Min, then
SET Min = Val[X]
SET Y = X
[END OF IF]
Step 4: SET Y = Sibling[X]
Step 5: RETURN Y
© Oxford University Press 2011. All rights reserved.
Consider the Binomial heap given below and see how the procedure works in this case.
7
2
7
1
1
1
6
9
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
2
Head [H]
Min = ∞
7
2
7
1
1
1
6
9
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
2
Head [H]
X
Min = 12
7
2
7
1
1
1
6
9
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
2
Head [H]
XY
Min = 7
7
2
7
1
1
1
6
9
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
2
Head [H]
X
Y
Min = 7
© Oxford University Press 2011. All rights reserved.
Uniting two binomial heaps
The procedure of uniting two binomial heaps is used as a subroutine by other
operations. The Union_Binomial-Heap() links together the binomial trees whose roots
have the same degree. The algorithm to link Bi-1 tree rooted at node Z to the Bi-1 tree
rooted at node Z; making Z the parent of Y can be given as below
Link_Binomial-Tree(Y, Z)
Step 1: SET Parent[Y] = Z
Step 2: SET Sibling[Y} = Child[Z]
Step 3: SET Child[Z] = Y
Step 4: Set Degree[Z] = Degree[Z]+ 1
Step 5: END
The Link_Binomial-Tree()procedure makes Y the new head of the linked list of
node Z's children in O(1) time. The algorithm to unite binomial heaps H1 and
H2, returning the resulting heap can be given as below
© Oxford University Press 2011. All rights reserved.
Union_Binomial-Heap(H1, H2)
Step 1: SET H = Create_Binomial-Heap()
Step 2: SET Head[H] = Merge_Binomial-Heap()
Step 3: Free the memory occupied by H1 and H2
Step 4: If Head[H] = NULL, then RETURN
Step 5: SET PREV = NULL, PTR = Head[H] and NEXT = Sibling[PTR]
Step 6: Repeat Step 7 while NEXT ≠ NULL
Step 7: IF Degree[PTR]≠Degree[NEXT] OR (Sibling[NEXT]≠NULL AND
Degree[Sibling[NEXT] = Degree[PTR]), then
SET PREV = PTR, PTR = NEXT
ELSE IF Val[PTR] ≤ Val[NEXT], then
SET Sibling[PTR] = Sibling[NEXT]
Link_Binomial-Tree(NEXT, PTR)
Else
IF PREV = NULL, then
Head[H] = NEXT
ELSE
Sibling[PREV] = NEXT
Link_Binomial-Tree(PTR, NEXT)
SET PTR = NEXT
SET NEXT = Sibling[PTR]
Step 8: RETURN H
The running time of Union_Binomial-Heap() can be given as O(1g n), where n is the total number of
nodes in binomial heaps H1 and H2. If H1 contain n1 nodes and H2 contain n2 nodes, then H1
contains at most 1g n1 + 1 roots and H2 contains at most 1g n2 + 1 roots, so H contains at most 1g
n2 + 1g n1 + 2 ≤ 2 1g n + 2 = O(1g n) roots when we call Merge_Binomial-Heap() Since, n = n1 +
n2, the Merge_Binomial-Heap() takes O(lg n) to execute. Each iteration of the while loop takes
O(1) time, and because there are at most 1g n1 + 1g n2 + 2 iterations, the total time is thus O(lg
n).
© Oxford University Press 2011. All rights reserved.
Example: Unite the binomial heaps given below
7
2
7
9
1
4
1
0
1
2
1
2
Head [H1]
4 8
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
8
Head [H2]
7
2
1
1
8
2
4
2
9
3
6
3
1
3
9
Head [H] 1
8
1
2
7
2
7
4
1
9
9
1
4
1
0
1
2
8
3
6
1
4
1
0
1
8
1
2
2
1
1
9
7
2
1
1
8
2
4
2
9
3
6
3
1
3
9
PTR NEXT
1
9
© Oxford University Press 2011. All rights reserved.
2
1
Head [H] 7
2
7
1
2
1
8
4
1
9
9
1
4
1
0
1
2
8
3
6
1
4
1
0
1
8
1
2
2
1
1
9
7
1
8
2
4
2
9
3
6
3
1
3
9
PTR NEXT
Head [H] 7
2
7
1
2
1
8
4
1
9
9
1
4
1
0
1
2
8
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
7
2
1
1
8
2
4
2
9
3
6
3
1
3
9
PTR NEXTPREV
Head [H] 1
2
4
1
9
7
2
7
9
1
4
1
0
1
2
8
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
7
2
1
1
8
2
4
2
9
3
6
3
1
3
9
PTR NEXTPREV
1
8
© Oxford University Press 2011. All rights reserved.
Head [H] 1
2
1
8
9
1
4
1
0
4
1
9
7 1
2
2
7
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
7
2
1
1
8
2
4
2
9
3
6
3
1
3
9
PTR NEXTPREV
8
Inserting a new node
The Insert_Binomial-Heap() procedure is used to insert a node x into binomial heap H. The pre-condition of this
procedure is that the node x has already been allocated space and val[x] has already been filled in.
Insert_Binomial-Heap()
Step 1: SET H’ = Create_Binomial-Heap()
Step 2: SET Parent[x] = NULL, Child[x] = NULL and sibling[x] = NULL,
Degree[x] = NULL
Step 3: SET Head[H’] = x
Step 4: SET Head[H] = Union_Binomial-Heap(H, H’)
Step 5: END
The algorithm simply makes a binomial heap H' in O(1) time. H’ contains just one node that is, x. Finally, the
algorithm unites H’ with the n-node binomial heap H in O(1g n) time. Note that the memory occupied by H’ is
freed in the Union_Binomial-Heap(H, H’) procedure.
© Oxford University Press 2011. All rights reserved.
Min-Extract_Binomial Heap (H)
Step 1: Find the root R having minimum value in the root list of H
Step 2: Remove R from the root list of H
Step 3: SET H' = Create_Binomial-Heap()
Step 4: Reverse the order of R's children thereby forming a linked list
Step 5: Set head[H'] to point to the head of the resulting list
Step 6: SET H = Union_Binomial-Heap(H, H’)
Step 7: Return R
Extracting the node with minimum key
The algorithm to extract the node with the minimum key from binomial heap H
is shown below. The Min-Extract_Binomial-Heap procedure accepts a heap H
as a parameter and returns a pointer to the extracted node
Example: Extract the node with minimum value from the binary heap given below.
8
1
9
4
3
6
1
4
1
0
1
8
1
2
2
1
1
9
1
8
Head [H]
5
2
1
1
8
2
4
2
9
3
6
3
1
3
9
1
6
1
2
2
1
© Oxford University Press 2011. All rights reserved.
4
3
6
1
4
1
0
1
8
1
2
2
1
1
9
5
2
1
1
8
2
4
2
9
3
6
3
1
3
9
R
8
1
9
1
8
Head [H]
1
6
1
2
2
1
Head [H’] 3
6
1
4
1
0
1
8
1
2
2
1
1
9
5
2
1
1
8
2
4
2
9
3
6
3
1
3
9
8
1
9
1
8
Head [H]
1
6
1
2
2
1
3
6
Head [H] 1
4
2
1
1
2
2
1
5
2
1
1
8
2
9
3
6
3
1
2
4
3
9
8
1
6
1
2
2
1
1
0
1
8
1
2
1
9
© Oxford University Press 2011. All rights reserved.
Decreasing a value of a node
The algorithm to decrease the value of a node x in a binomial heap H is
given below. In the algorithm the value of the node is overwritten with a new
value k, that is of course less than the current value of the node. The
Binomial-Heap_Decrease_Val procedure takes O(lg n) time as the maximum
depth of node x is lg n, so the while loop will iterate at most lg n times.
Binomial-Heap_Decrease_Val(H, x, k)
Step 1: IF Val{x] < k, then Print “ ERROR”
Step 2: SET Val[x] = k
Step 3: SET PTR = x and PAR = Parent[PTR]
Step 4: Repeat while PAR ≠ NULL and Val[PTR] < Val[PAR]
Step 5: SWAP ( Val[PTR}, Val[PAR] )
Step 6: SET PTR = PAR and PARENT = Parent [PTR]
Step 7: END
Deleting a key
Once we have understood the Binomial-Heap_Decrease_Val procedure, it
becomes very easy to delete a node x's value from binomial heap H in O(lg n)
time. To start with the algorithm we set the value of x to - ∞. Assuming that
there is no node in the heap that has a value less than -∞. The algorithm to
delete a node from a binomial heap can be given as below.
© Oxford University Press 2011. All rights reserved.
Binomial-Heap_Delete-Node(H, x)
Step 1: Binomial-Heap_Decrease_Val(H, x, -∞)
Step 2: Min-Extract_Binomial-Heap(H)
Step 3: END
Example: Delete the node with value 12 from the binomial heap H.
3
6
Head [H] 1
4
2
1
1
2
2
1
5
2
1
1
8
2
9
3
6
3
1
2
4
3
9
8
1
6
1
2
2
1
1
0
1
8
1
2
1
9
3
6
Head [H] 1
4
2
1
1
2
2
1
5
2
1
1
8
2
9
3
6
3
1
2
4
3
9
8
1
6
1
2
2
1
1
0
1
8
-
∞
PTR
PAR
19
© Oxford University Press 2011. All rights reserved.
3
6
Head [H] 1
4
2
1
1
2
2
1
5
2
1
1
8
2
9
3
6
3
1
2
4
3
9
8
1
6
1
2
2
1
-
∞
1
8
1
0
1
9
PTR
PAR
Head [H] 1
4
2
1
1
2
2
1
5
2
1
1
8
2
9
3
6
3
1
2
4
3
9
-
∞
1
6
1
2
2
1
8
1
8
1
0
1
9
PTR
PAR
3
6
3
6
Head [H]
2
1
1
2
2
1
-
∞
2
1
1
8
2
9
3
6
3
1
2
4
3
9
5
1
6
1
2
2
1
8
1
8
1
0
1
9
PTR
1
4
© Oxford University Press 2011. All rights reserved.
3
6
Head [H] 1
4
2
1
1
2
2
1
-
∞
2
1
1
8
2
9
3
6
3
1
2
4
3
9
5
1
6
1
2
2
1
8
1
8
1
0
1
9
3
6
Head [H] 1
4
2
1
1
2
2
9
1
8
2
9
3
6
3
1
2
4
3
9
5
1
6
1
2
2
1
8
1
8
1
0
1
9
Head [H’]
3
6
Head [H] 1
8
2
4
1
4
2
1
1
2
2
1
2
9
3
6
3
1
3
9
5
1
2
2
1
8
1
8
1
0
1
9
1
6
© Oxford University Press 2011. All rights reserved.
FIBONACCI HEAPS
• In the last section, we have seen that binomial heaps support operations like
insert, extract-minimum, decrease-value, delete and union in O(lg n) worst-case time.
Fibonacci heaps supports the same operations (that do not involve deleting an element)
in O(1) amortized time.
• So, theoretically, Fibonacci heaps are especially desirable when the number of extract-
minimum and delete operations are small relative to the number of other operations
performed. This situation arises in many applications, for example, some algorithms for
graph problems may call decrease-value once per edge. However, programming
complexity of Fibonacci heaps make them less desirable to use.
• A Fibonacci heap is a collection of trees. A Fibonacci heap is loosely based on binomial
heaps. If neither decrease-value nor delete operation is performed, each tree in the heap
is like a binomial tree. Fibonacci heaps differ from binomial heaps, as they have a more
relaxed structure, allowing for improved asymptotic time bounds.
• Each node in the Fibonacci heap contains the following pointers:
A pointer to its parent
A pointer to its any one of its children
The children of each node are linked together in a circular, doubly linked list which is
known as the child list of that node. Each child x in a child list contains pointers to its
left and right sibling. If node x is the only child of its parent, then left[x] = right[x] = x.
Apart from this information, every node will store two other field. First, the number of
children in the child list of node x is stored in degree[x]. Second, a boolean value
mark[x] indicates whether node x has lost a child since the last time x was made the
child of another node. Of course, the newly created nodes are unmarked. Also, when the
node x is made the child of another node, it becomes unmarked.
© Oxford University Press 2011. All rights reserved.
3
6
1
8
4 1
8
2
4
3
6
5
4
1
9
3
3
3
2
3
9
2
7
4
4
min[H]
Fibonacci heap H is generally accessed by a pointer called min[H] which points to the
root that has a minimum value. If the Fibonacci heap H his empty, then min[H] =
NULL.
Roots of all the trees in a Fibonacci heap are linked together.In a Fibonacci heap H, the
number of nodes in H are stored in n[H] and degree of a node is stored in D(n).
Creating a new Fibonacci heap
To create an empty Fibonacci heap, the Create_Fib-Heap procedure is used to allocate
and return the Fibonacci heap object H, where n[H] = 0 and min[H] = NULL. The
amortized cost of Create_Fib-Heap is equal to its O(1) actual cost.
Inserting a node
The algorithm to insert a new node in an already existing Fibonacci heap is given
below.
© Oxford University Press 2011. All rights reserved.
Insert_Fib-Heap(H, x)
Step 1: [Initialize] SET Degree[x] = 0, Parent[x] = Null, Child[x] = NULL,
mark[x] = False
Step 2: SET Left[x] = x and Right[x] = x
Step 3: Concatenate the root list containing x with the root list of H
Step 4: IF min[H] = NULL OR Val[x] < Val[min[H]], then
SET min[H] = x
[END OF IF]
Step: SET n[H] = n{h]+ 1
Step 6: END
Example: Insert node 16 in the Fibonacci heap given below.
3
6
1
8
3
6
5
4
1
9
3
3
4 1
8
2
4
3
2
3
9
2
7
4
4
3
6
1
8
1
6
3
6
5
4
1
9
3
3
4 1
8
2
4
3
2
3
9
2
7
4
4
min[H]
min[H]
4
1
4
1
© Oxford University Press 2011. All rights reserved.
Finding the minimum node
Fibonacci heap maintains a pointer min[H], that points to the root having minimum
value. Therefore, finding the minimum node is a straight forward task that can be
performed in just O(1) time.
Uniting two Fibonacci Heaps
The algorithm given in figure 12.21 unites two Fibonacci heaps H1 and H2.
Union_Fib-Heap(H1, H2)
Step 1: H = Create_Fib-Heap()
Step 2: SET min[H] = min[H1]
Step 3: Concatenate root list of H2 with that of H.
Step 4: IF (min[H1] = NULL) OR (min[H2] != NULL and min[H2] < min[H1]), then
SET min[H] = min[H2]
Step 5: SET n[H] = n[H1] + n[H2]
Step 6: Free H1 and H2
Step 7: Return H
Extracting the minimum node
The process of extracting the minimum node from a Fibonacci heap is the most
complicated operation of all the operations that we have read so far. Till now, we had
been delaying the work of consolidating the trees, but in this operation the work of
consolidating the tree is finally done. The algorithm to extract the minimum node is
given below.
© Oxford University Press 2011. All rights reserved.
Extract-Min_Fib_Heap(H)
Step 1: SET x = min[H]
Step 2: IF x != NULL, then
for each child PTR of x,
add PTR to the root list of H and SET Parent[PTR] = NULL
Remove x from the root list of H
Step 3: IF x = Right[x], then
SET min[H] = NULL
ELSE
SET min[H] = Right[x]
Consolidate(H)
Step 4: SET n[H] = n[H] – 1
Step 5: Return x
Consolidate the Heap
The Fibonacci heap is consolidated to reduce the number of trees in the heap. When
consolidating the root list of H, the following steps are repeatedly executed until every
root in the root list has a distinct degree value.
Find two roots x and y in the root list that has the same degree, and where Val[x]
≤Val[y].
Link y to x. That is, remove y from the root list of H and make it a child of x. This
operation is actually done in the Link_Fib-Heap procedure. Finally, the degree[x] is
incremented, and the mark on y, if any, is cleared.
© Oxford University Press 2011. All rights reserved.
Consolidate(H)
Step 1: Repeat for i=0 to D(n[H]), SET A[i] = NULL
Step 2: Repeat Steps 3 to 12 for each node x in the root list of H
Step 3: SET PTR = x
Step 4: SET deg = Degree[PTR]
Step 5: Repeat Steps 6 to 10 while A[deg] != NULL
Step 6: SET TEMP = A[deg]
Step 7: IF Val[PTR] > Val[TEMP], then
Step 8: EXCHANGE PTR and TEMP
Step 9: Link_Fib-Heap(H, TEMP, PTR)
Step 10: SET A[deg] = NULL
Step 11: SET deg = deg + 1
Step 12: SET A[deg] = PTR
Step 13: SET min[H] = NULL
Step 14: Repeat for i = 0 to D(n{H])
Step 15: IF A[i] != NULL, then
Step 16: Add A[i] to the root list of H
Step 17: IF min[H] = NULL OR Val[A[i]] < Val[min[H]], then
Step 18: SET min[H] = A[i]
Step 17: END
Link_Fib-Heap (H, x, y)
Step 1: Remove node y from the root list of H
Step 2: Make x the parent of y
Step 3: Increment the degree of x
Step 4: SET mark[y] = FALSE
Step 5: END
© Oxford University Press 2011. All rights reserved.
Example: Remove the minimum node from the Fibonacci Heap given below.
3
6
1
7
1
6
3
6
5
4
1
9
3
3
4 1
8
2
4
3
2
3
9
2
7
4
4
min[H]
3
6
1
7
1
6
1
9
3
3
4
1
3
6
4
1
1
8
1
8
3
2
2
4
3
9
2
7
4
4
min[H]
3
6
1
7
1
6
1
9
3
3
3
6
4
1
1
8
1
8
3
2
3
9
2
7
4
4
PTR, TEMP
PTR, TEMP
A 0 1 2 3 4
© Oxford University Press 2011. All rights reserved.
3
6
1
7
1
6
1
9
3
3
3
6
4
1
1
8
1
8
3
2
2
4
3
9
2
7
4
4
PTR, TEMP
3
6
1
7
1
6
1
9
3
3
3
6
4
1
1
8
1
8
3
2
2
4
3
9
2
7
4
4
PTR, TEMP
A 0 1 2 3 4
1
7
1
6
1
9
3
3
3
6
4
1
1
8
1
8
3
2
2
4
3
9
2
7
4
4
TEMP
3
6
PTR
A 0 1 2 3 4
© Oxford University Press 2011. All rights reserved.
1
7
3
2
1
8
3
6
1
6
1
9
3
3
3
6
4
1
1
8
2
4
3
9
2
7
4
4
TEMP
PTR
A 0 1 2 3 4
1
7
3
2
1
8
3
6
2
4
3
9
2
7
4
4
1
6
1
9
3
3
3
6
4
1
1
8
TEMP
PTR
A 0 1 2 3 4
1
7
3
2
1
8
3
6
2
4
3
9
2
7
4
4
1
6
1
9
3
3
3
6
4
1
1
8
TEMP
PTR
A 0 1 2 3 4
© Oxford University Press 2011. All rights reserved.
1
7
3
2
1
8
3
6
2
4
3
9
2
7
4
4
1
6
3
3
3
6
4
1
1
8
TEMP
PTR
1
9
1
7
3
2
1
8
3
6
2
4
3
9
2
7
4
4
1
6
3
3
1
9
1
8
3
6
4
1
TEMP
PTR
A 0 1 2 3 4
1
7
3
2
1
8
3
6
2
4
3
9
2
7
4
4
1
6
3
1
9
1
8
3
6
4
1
TEMPPTR
A 0 1 2 3 4
© Oxford University Press 2011. All rights reserved.
Decreasing a key
The algorithm to decrease the value of a node in O(1) amortized time is given below.
Decrease-Val_Fib-Heap (H, PTR, v)
Step 1: IF v > Val[PTR], then
PRINT “ERROR”
Step 2: SET Val[PTR] = v
Step 3: SET PAR = Parent[PTR]
Step 4: IF PTR != NULL and Val[PTR] < Val[PAR], then
Cut (H, PTR, PAR)
Cascading-Cut(H, PAR)
Step 5: IF Val[PTR] < Val[min[H]], then
SET min[H] = PTR
Step 6: END
Cut( H, PTR, PAR)
Step 1: Remove PTR from the child list of PAR
Step 2: SET Degree[PAR] = Degree[PAR] – 1
Step 3: Add PTR to the root list of H
Step 4: SET Parent[PTR] = NULL
Step 5: SET Mark[PTR] = FALSE
Step 6: END
Cascading-Cut (H, PTR)
Step 1: SET PAR = Parent[PTR]
Step 2: IF PAR != NULL, then
IF mark[PTR] = FALSE, then
SET mark[PTR] = TRUE
ELSE
Cut (H, PTR, PAR)
Cascading-Cut(H, PAR)
Step 3: END
© Oxford University Press 2011. All rights reserved.
Example: Decrease the value of node 39 to 9 in the Fibonacci Heap given below.
1
7
1
8
3
6
2
4
3
9
2
7
1
6
3
3
1
9
1
8
3
6
4
1
3
2
1
9
min[H]
1
7
1
8
3
6
2
4
9
2
7
1
6
3
3
1
9
1
8
3
6
4
1
3
2
1
9
min[H]
1
7
1
8
3
6
2
4
1
9
2
7
1
6
3
3
1
9
1
8
3
6
4
1
3
2
9
min[H]
© Oxford University Press 2011. All rights reserved.
1
7
1
8
3
6
2
4
1
9
1
6
3
3
1
9
1
8
3
6
4
1
3
2
9
min[H]
2
7
1
7
1
8
3
6
2
4
1
9
1
6
3
3
1
9
1
8
3
6
4
1
3
2
9 2
7
1
7
1
8
3
6
2
4
1
9
1
6
3
3
1
9
1
8
3
6
4
1
3
2
9 2
7
min[H]
© Oxford University Press 2011. All rights reserved.
Deleting a node
A node from a Fibonacci Heap can be very easily deleted in O(D(n)) amortized time. The
procedure to delete a node is given below.
. The amortized time of the delete procedure is the sum of the O(1) amortized time of
DECREASE-VAL_FIB-HEAP and the O(D(n)) amortized time of EXTRACT-MIN_FIB-HEAP.
DEL_FIB-HEAP (H, x)
Step 1: DECREASE-VAL_FIB-HEAP( H, x, -∞)
Step 2: EXTRACT-MIN_FIB-HEAP(H)
Step 3: END
© Oxford University Press 2011. All rights reserved.
Operation Description
Time complexity in Big O Notation
Binary Binomial Fibonacci
Create Heap Creates an empty heap O(n) O(n) O(n)
Find Min Find the node with minimum value O(1) O(logn) O(1)
Delete Min Delete the node with minimum value O(logn) O(logn) O(logn)
Insert Insert a new node in the heap O(logn) O(logn) O(1)
Decrease Value Decrease the value of a node O(logn) O(logn) O(1)
Union Unites two heaps into one O(n) O(logn) O(1)
APPLICATIONS OF HEAPS
Heaps are preferred for applications that includes.
Heapsort. It is one of the best sorting methods that has no quadratic worst-case
scenarios.
Selection algorithms. These algorithms are used to find the minimum, maximum
values in linear or sub-linear time.
Graph algorithms. Heaps can be used as internal traversal data structures. This
guarantees run time to be reduced by an order of polynomial. Heaps are therefore used
for implementing Prim's minimal spanning tree algorithm and Dijkstra's shortest path
problem.

Contenu connexe

En vedette

358 33 powerpoint-slides_13-graphs_chapter-13
358 33 powerpoint-slides_13-graphs_chapter-13358 33 powerpoint-slides_13-graphs_chapter-13
358 33 powerpoint-slides_13-graphs_chapter-13sumitbardhan
 
358 33 powerpoint-slides_14-sorting_chapter-14
358 33 powerpoint-slides_14-sorting_chapter-14358 33 powerpoint-slides_14-sorting_chapter-14
358 33 powerpoint-slides_14-sorting_chapter-14sumitbardhan
 
358 33 powerpoint-slides_15-hashing-collision_chapter-15
358 33 powerpoint-slides_15-hashing-collision_chapter-15358 33 powerpoint-slides_15-hashing-collision_chapter-15
358 33 powerpoint-slides_15-hashing-collision_chapter-15sumitbardhan
 
358 33 powerpoint-slides_16-files-their-organization_chapter-16
358 33 powerpoint-slides_16-files-their-organization_chapter-16358 33 powerpoint-slides_16-files-their-organization_chapter-16
358 33 powerpoint-slides_16-files-their-organization_chapter-16sumitbardhan
 
358 33 powerpoint-slides_7-structures_chapter-7
358 33 powerpoint-slides_7-structures_chapter-7358 33 powerpoint-slides_7-structures_chapter-7
358 33 powerpoint-slides_7-structures_chapter-7sumitbardhan
 
358 33 powerpoint-slides_1-introduction-c_chapter-1
358 33 powerpoint-slides_1-introduction-c_chapter-1358 33 powerpoint-slides_1-introduction-c_chapter-1
358 33 powerpoint-slides_1-introduction-c_chapter-1sumitbardhan
 
358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11
358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11
358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11sumitbardhan
 
Representation of binary tree in memory
Representation of binary tree in memoryRepresentation of binary tree in memory
Representation of binary tree in memoryRohini Shinde
 
Threaded Binary Tree
Threaded Binary TreeThreaded Binary Tree
Threaded Binary Treekhabbab_h
 
Tree Traversals (In-order, Pre-order and Post-order)
Tree Traversals (In-order, Pre-order and Post-order)Tree Traversals (In-order, Pre-order and Post-order)
Tree Traversals (In-order, Pre-order and Post-order)raj upadhyay
 
Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...
Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...
Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...sethuraman R
 
Trees - Data structures in C/Java
Trees - Data structures in C/JavaTrees - Data structures in C/Java
Trees - Data structures in C/Javageeksrik
 
BTree, Data Structures
BTree, Data StructuresBTree, Data Structures
BTree, Data StructuresJibrael Jos
 

En vedette (14)

358 33 powerpoint-slides_13-graphs_chapter-13
358 33 powerpoint-slides_13-graphs_chapter-13358 33 powerpoint-slides_13-graphs_chapter-13
358 33 powerpoint-slides_13-graphs_chapter-13
 
358 33 powerpoint-slides_14-sorting_chapter-14
358 33 powerpoint-slides_14-sorting_chapter-14358 33 powerpoint-slides_14-sorting_chapter-14
358 33 powerpoint-slides_14-sorting_chapter-14
 
358 33 powerpoint-slides_15-hashing-collision_chapter-15
358 33 powerpoint-slides_15-hashing-collision_chapter-15358 33 powerpoint-slides_15-hashing-collision_chapter-15
358 33 powerpoint-slides_15-hashing-collision_chapter-15
 
358 33 powerpoint-slides_16-files-their-organization_chapter-16
358 33 powerpoint-slides_16-files-their-organization_chapter-16358 33 powerpoint-slides_16-files-their-organization_chapter-16
358 33 powerpoint-slides_16-files-their-organization_chapter-16
 
358 33 powerpoint-slides_7-structures_chapter-7
358 33 powerpoint-slides_7-structures_chapter-7358 33 powerpoint-slides_7-structures_chapter-7
358 33 powerpoint-slides_7-structures_chapter-7
 
358 33 powerpoint-slides_1-introduction-c_chapter-1
358 33 powerpoint-slides_1-introduction-c_chapter-1358 33 powerpoint-slides_1-introduction-c_chapter-1
358 33 powerpoint-slides_1-introduction-c_chapter-1
 
358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11
358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11
358 33 powerpoint-slides_11-efficient-binary-trees_chapter-11
 
Representation of binary tree in memory
Representation of binary tree in memoryRepresentation of binary tree in memory
Representation of binary tree in memory
 
Fibonacci Heap
Fibonacci HeapFibonacci Heap
Fibonacci Heap
 
Threaded Binary Tree
Threaded Binary TreeThreaded Binary Tree
Threaded Binary Tree
 
Tree Traversals (In-order, Pre-order and Post-order)
Tree Traversals (In-order, Pre-order and Post-order)Tree Traversals (In-order, Pre-order and Post-order)
Tree Traversals (In-order, Pre-order and Post-order)
 
Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...
Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...
Introduction to Data structure & Algorithms - Sethuonline.com | Sathyabama Un...
 
Trees - Data structures in C/Java
Trees - Data structures in C/JavaTrees - Data structures in C/Java
Trees - Data structures in C/Java
 
BTree, Data Structures
BTree, Data StructuresBTree, Data Structures
BTree, Data Structures
 

Similaire à 358 33 powerpoint-slides_12-heaps_chapter-12

Similaire à 358 33 powerpoint-slides_12-heaps_chapter-12 (20)

5-heap.ppt
5-heap.ppt5-heap.ppt
5-heap.ppt
 
5-heap.ppt
5-heap.ppt5-heap.ppt
5-heap.ppt
 
Binomial Heaps
Binomial HeapsBinomial Heaps
Binomial Heaps
 
Unit III Heaps.ppt
Unit III Heaps.pptUnit III Heaps.ppt
Unit III Heaps.ppt
 
Binomial Heap DAA PPT (2).ppt
Binomial Heap DAA PPT (2).pptBinomial Heap DAA PPT (2).ppt
Binomial Heap DAA PPT (2).ppt
 
Applicationof datastructures
Applicationof datastructuresApplicationof datastructures
Applicationof datastructures
 
Applicationof datastructures
Applicationof datastructuresApplicationof datastructures
Applicationof datastructures
 
Heap tree
Heap treeHeap tree
Heap tree
 
Heapsort ppt
Heapsort pptHeapsort ppt
Heapsort ppt
 
chapter 6.1.pptx
chapter 6.1.pptxchapter 6.1.pptx
chapter 6.1.pptx
 
HeapSort
HeapSortHeapSort
HeapSort
 
Lecture 07 - HeapSort.pptx
Lecture 07 - HeapSort.pptxLecture 07 - HeapSort.pptx
Lecture 07 - HeapSort.pptx
 
Sienna 7 heaps
Sienna 7 heapsSienna 7 heaps
Sienna 7 heaps
 
Heap Tree.pdf
Heap Tree.pdfHeap Tree.pdf
Heap Tree.pdf
 
Data structures and algorithms lab10
Data structures and algorithms lab10Data structures and algorithms lab10
Data structures and algorithms lab10
 
CS-102 BT_24_3_14 Binary Tree Lectures.pdf
CS-102 BT_24_3_14 Binary Tree Lectures.pdfCS-102 BT_24_3_14 Binary Tree Lectures.pdf
CS-102 BT_24_3_14 Binary Tree Lectures.pdf
 
Heaps & priority queues
Heaps & priority queuesHeaps & priority queues
Heaps & priority queues
 
Binary Heap Tree, Data Structure
Binary Heap Tree, Data Structure Binary Heap Tree, Data Structure
Binary Heap Tree, Data Structure
 
Heap
HeapHeap
Heap
 
Heap Sort Algorithm
Heap Sort Algorithm Heap Sort Algorithm
Heap Sort Algorithm
 

Plus de sumitbardhan

358 33 powerpoint-slides_10-trees_chapter-10
358 33 powerpoint-slides_10-trees_chapter-10358 33 powerpoint-slides_10-trees_chapter-10
358 33 powerpoint-slides_10-trees_chapter-10sumitbardhan
 
358 33 powerpoint-slides_9-stacks-queues_chapter-9
358 33 powerpoint-slides_9-stacks-queues_chapter-9358 33 powerpoint-slides_9-stacks-queues_chapter-9
358 33 powerpoint-slides_9-stacks-queues_chapter-9sumitbardhan
 
358 33 powerpoint-slides_8-linked-lists_chapter-8
358 33 powerpoint-slides_8-linked-lists_chapter-8358 33 powerpoint-slides_8-linked-lists_chapter-8
358 33 powerpoint-slides_8-linked-lists_chapter-8sumitbardhan
 
358 33 powerpoint-slides_6-strings_chapter-6
358 33 powerpoint-slides_6-strings_chapter-6358 33 powerpoint-slides_6-strings_chapter-6
358 33 powerpoint-slides_6-strings_chapter-6sumitbardhan
 
358 33 powerpoint-slides_5-arrays_chapter-5
358 33 powerpoint-slides_5-arrays_chapter-5358 33 powerpoint-slides_5-arrays_chapter-5
358 33 powerpoint-slides_5-arrays_chapter-5sumitbardhan
 
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4sumitbardhan
 
358 33 powerpoint-slides_3-pointers_chapter-3
358 33 powerpoint-slides_3-pointers_chapter-3358 33 powerpoint-slides_3-pointers_chapter-3
358 33 powerpoint-slides_3-pointers_chapter-3sumitbardhan
 
358 33 powerpoint-slides_2-functions_chapter-2
358 33 powerpoint-slides_2-functions_chapter-2358 33 powerpoint-slides_2-functions_chapter-2
358 33 powerpoint-slides_2-functions_chapter-2sumitbardhan
 
Algorithm analysis
Algorithm analysisAlgorithm analysis
Algorithm analysissumitbardhan
 

Plus de sumitbardhan (9)

358 33 powerpoint-slides_10-trees_chapter-10
358 33 powerpoint-slides_10-trees_chapter-10358 33 powerpoint-slides_10-trees_chapter-10
358 33 powerpoint-slides_10-trees_chapter-10
 
358 33 powerpoint-slides_9-stacks-queues_chapter-9
358 33 powerpoint-slides_9-stacks-queues_chapter-9358 33 powerpoint-slides_9-stacks-queues_chapter-9
358 33 powerpoint-slides_9-stacks-queues_chapter-9
 
358 33 powerpoint-slides_8-linked-lists_chapter-8
358 33 powerpoint-slides_8-linked-lists_chapter-8358 33 powerpoint-slides_8-linked-lists_chapter-8
358 33 powerpoint-slides_8-linked-lists_chapter-8
 
358 33 powerpoint-slides_6-strings_chapter-6
358 33 powerpoint-slides_6-strings_chapter-6358 33 powerpoint-slides_6-strings_chapter-6
358 33 powerpoint-slides_6-strings_chapter-6
 
358 33 powerpoint-slides_5-arrays_chapter-5
358 33 powerpoint-slides_5-arrays_chapter-5358 33 powerpoint-slides_5-arrays_chapter-5
358 33 powerpoint-slides_5-arrays_chapter-5
 
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
 
358 33 powerpoint-slides_3-pointers_chapter-3
358 33 powerpoint-slides_3-pointers_chapter-3358 33 powerpoint-slides_3-pointers_chapter-3
358 33 powerpoint-slides_3-pointers_chapter-3
 
358 33 powerpoint-slides_2-functions_chapter-2
358 33 powerpoint-slides_2-functions_chapter-2358 33 powerpoint-slides_2-functions_chapter-2
358 33 powerpoint-slides_2-functions_chapter-2
 
Algorithm analysis
Algorithm analysisAlgorithm analysis
Algorithm analysis
 

Dernier

4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptx4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptxmary850239
 
4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptxmary850239
 
Indexing Structures in Database Management system.pdf
Indexing Structures in Database Management system.pdfIndexing Structures in Database Management system.pdf
Indexing Structures in Database Management system.pdfChristalin Nelson
 
Scientific Writing :Research Discourse
Scientific  Writing :Research  DiscourseScientific  Writing :Research  Discourse
Scientific Writing :Research DiscourseAnita GoswamiGiri
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...DhatriParmar
 
Objectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptxObjectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptxMadhavi Dharankar
 
Tree View Decoration Attribute in the Odoo 17
Tree View Decoration Attribute in the Odoo 17Tree View Decoration Attribute in the Odoo 17
Tree View Decoration Attribute in the Odoo 17Celine George
 
An Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERPAn Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERPCeline George
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...Nguyen Thanh Tu Collection
 
How to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 DatabaseHow to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 DatabaseCeline George
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...Nguyen Thanh Tu Collection
 
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxGrade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxkarenfajardo43
 
Comparative Literature in India by Amiya dev.pptx
Comparative Literature in India by Amiya dev.pptxComparative Literature in India by Amiya dev.pptx
Comparative Literature in India by Amiya dev.pptxAvaniJani1
 
CLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptxCLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptxAnupam32727
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQuiz Club NITW
 

Dernier (20)

4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptx4.11.24 Poverty and Inequality in America.pptx
4.11.24 Poverty and Inequality in America.pptx
 
4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx
 
Indexing Structures in Database Management system.pdf
Indexing Structures in Database Management system.pdfIndexing Structures in Database Management system.pdf
Indexing Structures in Database Management system.pdf
 
Scientific Writing :Research Discourse
Scientific  Writing :Research  DiscourseScientific  Writing :Research  Discourse
Scientific Writing :Research Discourse
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
 
Introduction to Research ,Need for research, Need for design of Experiments, ...
Introduction to Research ,Need for research, Need for design of Experiments, ...Introduction to Research ,Need for research, Need for design of Experiments, ...
Introduction to Research ,Need for research, Need for design of Experiments, ...
 
Objectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptxObjectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptx
 
Tree View Decoration Attribute in the Odoo 17
Tree View Decoration Attribute in the Odoo 17Tree View Decoration Attribute in the Odoo 17
Tree View Decoration Attribute in the Odoo 17
 
An Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERPAn Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERP
 
Chi-Square Test Non Parametric Test Categorical Variable
Chi-Square Test Non Parametric Test Categorical VariableChi-Square Test Non Parametric Test Categorical Variable
Chi-Square Test Non Parametric Test Categorical Variable
 
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of EngineeringFaculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
 
How to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 DatabaseHow to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 Database
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
 
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxGrade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
 
prashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Professionprashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Profession
 
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptxINCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
 
Comparative Literature in India by Amiya dev.pptx
Comparative Literature in India by Amiya dev.pptxComparative Literature in India by Amiya dev.pptx
Comparative Literature in India by Amiya dev.pptx
 
CLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptxCLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptx
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
 

358 33 powerpoint-slides_12-heaps_chapter-12

  • 1. © Oxford University Press 2011. All rights reserved. Data Structures Using C Reema Thareja, Assistant Professor, Institute of Information Technology and Management, New Delhi
  • 2. © Oxford University Press 2011. All rights reserved. CHAPTER 12 HEAPS
  • 3. © Oxford University Press 2011. All rights reserved. INTRODUCTION • A heap is a specialized tree-based data structure that satisfies the heap property which states that • If B is a child of A, then key(A) ≥ key(B). • This implies that the root node has the highest key value in the heap. Such a heap is commonly known as a max-heap. (Alternatively, if the root has the lowest key value, then the resultant heap is called a min-heap.)
  • 4. © Oxford University Press 2011. All rights reserved. BINARY HEAPS • A binary heap is defined as a complete binary tree with elements at every node being either less than (or equal to) the element at its left and the right child. • It has following properties. • Since a heap is defined as a complete binary tree, all its elements can be stored sequentially in an array. It follows the same rules of complete binary tree. That is, if an element at position i in the array, has its left child stored at position 2i and its right child at position 2i + 1. Conversely, an element at position i have its position stored at position i/2. • Being a complete binary tree, all levels of the tree except the last level are completely filled. • Height of a binary tree is given as log2n, where n is the number of elements. • Heaps (also known as partially ordered trees) are a very popular data structure for implementing priority queues. • A binary heap is a useful data structure in which elements can be added randomly but only the element with highest value is removed (in case of max heap and minimum value in case of mean heap). Although, a binary tree is better, but a binary heap is more space efficient, and simpler. 4 1 2 6 7 1 3 9 2 1 3 9 1 0 1 9 7 2 9 9 6 3 4 5 2 7 6 9 2 1 3 9 5 4 3 6 Min heap Max heap
  • 5. © Oxford University Press 2011. All rights reserved. Insertion in a Binary Heap Consider a max heap H having n elements. Inserting a new value into the heap is done in two major steps. • Add the new value at the bottom of H in such a way that H is still a complete binary tree but not necessarily a heap • Let the new value rise to its appropriate place in H so that H now becomes a heap as well. To do this, compare the new value with its parent; to check if they are in the correct order. If they are in the correct order, then the procedure halts else, the new value and its parent’s value is swapped and step 2 is repeated. Consider the heap given below and insert 99 in it 5 4 4 5 3 6 2 7 2 1 1 8 2 1 1 1 4 5 3 6 2 7 2 1 1 8 2 1 1 1 5 4 9 9 4 5 3 6 2 7 2 1 1 8 2 1 1 1 5 4 9 9 4 5 3 6 9 9 2 1 1 8 2 1 1 1 5 4 2 7 4 5 3 6 9 9 2 1 1 8 2 1 1 1 5 4 2 7 9 9 4 5 2 1 1 8 2 1 1 1 5 4 2 7 3 6
  • 6. © Oxford University Press 2011. All rights reserved. 9 9 4 5 2 1 1 8 2 1 1 1 5 4 2 7 3 6 5 4 4 5 2 1 1 8 2 1 1 1 9 9 2 7 3 6 Algorithm to insert a value in the heap Step 1: [Add the new value and set its POS] SET N = N + 1, POS = N Step 2: SET HEAP[N] = VAL Step 3: [Find appropriate location of VAL] Repeat Steps 4 and 5 while POS < 0 Step 4: SET PAR = POS/2 Step 5: IF HEAP[POS] <= HEAP[PAR], then Goto Step 6. ELSE SWAP HEAP[POS], HEAP[PAR] POS = PAR [END OF IF] [END OF LOOP] Step 6: Return
  • 7. © Oxford University Press 2011. All rights reserved. Deleting an Element from a Binary Heap Consider a max heap H having n elements. An element is always deleted from the root of the heap. So, deleting an element from the heap is done in two major steps. • Replace the root node’s value with the last node’s value so that H is still a complete binary tree but not necessarily a heap • Delete the last node • Sink down the new root node’s value so that H satisfies the heap property. In this step, interchange the root node’s value with its child node’s value (whichever is largest among its children). Consider the heap H given below and delete the root node’s value. 4 5 3 6 2 7 2 9 1 8 2 1 1 1 5 4 4 5 3 6 2 7 2 9 1 8 2 1 1 1 4 5 3 6 2 7 2 9 1 8 2 1 1 1 1 1 3 6 2 7 2 9 1 8 2 1 4 5 2 9 3 6 2 7 1 1 1 8 2 1 4 5
  • 8. © Oxford University Press 2011. All rights reserved. Algorithm to delete the root element from the heap- DELETE_HEAP(HEAP, N, VAL) Step 1: [ Remove the last node from the heap] SET LAST = HEAP[N], SET N = N – 1 Step 2: [Initialization] SET PTR = 0, LEFT = 1, RIGHT = 2 Step 3: SET HEAP[PTR] = LAST Step 4: Repeat Steps 5 to 7 while LEFT <= N Step 5: IF HEAP{PTR] >= HEAP[LEFT] AND HEAP[PTR] >= HEAP[RIGHT], then Go to Step [END OF IF] Step 6: IF HEAP[RIGHT] <= HEAP[LEFT], then SWAP HEAP[PTR], HEAP[LEFT] SET PTR = LEFT ELSE SWAP HEAP[PTR], HEAP[RIGHT] SET PTR = RIGHT [END OF IF] Step 7: SET LEFT = 2 * PTR and RIGHT = LEFT + 1 [END OF LOOP] Step 8: Return
  • 9. © Oxford University Press 2011. All rights reserved. BINOMIAL TREE • Binomial tree is an ordered tree that can be recursively defined as: • A binomial tree of order 0 has a single node. • A binomial tree of order i has a root node whose children are root nodes of binomial trees of order i-1, i-2, …, 2, 1, 0. • A binomial tree Bi has 2i nodes • The height of a binomial tree Bi is i • Note that binomial tree Bi consist of two binomial trees (of order Bi-1) that are linked together in such a way that the root of one is the leftmost child of the root of the other. Binomial Tree, B0 Binomial Tree, Bi B0 B1 B2 Bi-2 Bi-1 A binomial heap H is a collection of binomial trees that satisfies the following properties. •Every binomial tree in H satisfies the minimum heap property •There can be one or zero binomial trees for each order including zero order. While the first property tells that the root of a heap-ordered tree contains the smallest key in the tree, the second property on the other hand implies that a binomial heap H having N nodes contains at most log N + 1 binomial trees.
  • 10. © Oxford University Press 2011. All rights reserved. Linked Representation of Binomial Heaps in Memory • Each node in a binomial heap H has a val field that stores its value. In addition, each node N has certain pointers like, • P[N] that point to the parent of N • Child [N] that point to the leftmost child, and • Sibling[N] that point to the sibling of N which is immediately to its right. • If N is the root node, then P[N] = NULL. If N has no children, then Child[N] = NULL, and if N is the rightmost child of its parent, then sibling[N] = NIL. • In addition to this, every node N has a degree field which stores the number of children of N. Head [H] 7 2 7 1 1 1 6 9 3 6 1 4 1 0 1 8 1 2 2 1 1 9
  • 11. © Oxford University Press 2011. All rights reserved. OPERATIONS ON BINOMIAL HEAPS Create a new binomial heap • The procedure Create_Binomial-Heap(), allocates and returns an object H, whre Head[H] is set to NULL. The running time of this procedure can be given as O(1). Finding the minimum key • The procedure Min_Binomial-Heap() returns a pointer to the node having minimum value in the binomial heap H . • A binomial heap is heap-ordered, therefore, the node with minimum value in a particular binomial tree will appear as the root node in the binomial heap. Thus, the Min_Binomial-Heap() procedure checks all roots. Since there are at most lg n + 1 roots to check, the running time of this procedure is O(lg n). Min_Binomial-Heap() Step 1: INITIALIZE SET Y = NULL, X = Head[H] and Min = ∞ Step 2: REPEAT Steps 3 and 4 While X ≠ NULL Step 3: IF Val[X] < Min, then SET Min = Val[X] SET Y = X [END OF IF] Step 4: SET Y = Sibling[X] Step 5: RETURN Y
  • 12. © Oxford University Press 2011. All rights reserved. Consider the Binomial heap given below and see how the procedure works in this case. 7 2 7 1 1 1 6 9 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 2 Head [H] Min = ∞ 7 2 7 1 1 1 6 9 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 2 Head [H] X Min = 12 7 2 7 1 1 1 6 9 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 2 Head [H] XY Min = 7 7 2 7 1 1 1 6 9 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 2 Head [H] X Y Min = 7
  • 13. © Oxford University Press 2011. All rights reserved. Uniting two binomial heaps The procedure of uniting two binomial heaps is used as a subroutine by other operations. The Union_Binomial-Heap() links together the binomial trees whose roots have the same degree. The algorithm to link Bi-1 tree rooted at node Z to the Bi-1 tree rooted at node Z; making Z the parent of Y can be given as below Link_Binomial-Tree(Y, Z) Step 1: SET Parent[Y] = Z Step 2: SET Sibling[Y} = Child[Z] Step 3: SET Child[Z] = Y Step 4: Set Degree[Z] = Degree[Z]+ 1 Step 5: END The Link_Binomial-Tree()procedure makes Y the new head of the linked list of node Z's children in O(1) time. The algorithm to unite binomial heaps H1 and H2, returning the resulting heap can be given as below
  • 14. © Oxford University Press 2011. All rights reserved. Union_Binomial-Heap(H1, H2) Step 1: SET H = Create_Binomial-Heap() Step 2: SET Head[H] = Merge_Binomial-Heap() Step 3: Free the memory occupied by H1 and H2 Step 4: If Head[H] = NULL, then RETURN Step 5: SET PREV = NULL, PTR = Head[H] and NEXT = Sibling[PTR] Step 6: Repeat Step 7 while NEXT ≠ NULL Step 7: IF Degree[PTR]≠Degree[NEXT] OR (Sibling[NEXT]≠NULL AND Degree[Sibling[NEXT] = Degree[PTR]), then SET PREV = PTR, PTR = NEXT ELSE IF Val[PTR] ≤ Val[NEXT], then SET Sibling[PTR] = Sibling[NEXT] Link_Binomial-Tree(NEXT, PTR) Else IF PREV = NULL, then Head[H] = NEXT ELSE Sibling[PREV] = NEXT Link_Binomial-Tree(PTR, NEXT) SET PTR = NEXT SET NEXT = Sibling[PTR] Step 8: RETURN H The running time of Union_Binomial-Heap() can be given as O(1g n), where n is the total number of nodes in binomial heaps H1 and H2. If H1 contain n1 nodes and H2 contain n2 nodes, then H1 contains at most 1g n1 + 1 roots and H2 contains at most 1g n2 + 1 roots, so H contains at most 1g n2 + 1g n1 + 2 ≤ 2 1g n + 2 = O(1g n) roots when we call Merge_Binomial-Heap() Since, n = n1 + n2, the Merge_Binomial-Heap() takes O(lg n) to execute. Each iteration of the while loop takes O(1) time, and because there are at most 1g n1 + 1g n2 + 2 iterations, the total time is thus O(lg n).
  • 15. © Oxford University Press 2011. All rights reserved. Example: Unite the binomial heaps given below 7 2 7 9 1 4 1 0 1 2 1 2 Head [H1] 4 8 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 8 Head [H2] 7 2 1 1 8 2 4 2 9 3 6 3 1 3 9 Head [H] 1 8 1 2 7 2 7 4 1 9 9 1 4 1 0 1 2 8 3 6 1 4 1 0 1 8 1 2 2 1 1 9 7 2 1 1 8 2 4 2 9 3 6 3 1 3 9 PTR NEXT 1 9
  • 16. © Oxford University Press 2011. All rights reserved. 2 1 Head [H] 7 2 7 1 2 1 8 4 1 9 9 1 4 1 0 1 2 8 3 6 1 4 1 0 1 8 1 2 2 1 1 9 7 1 8 2 4 2 9 3 6 3 1 3 9 PTR NEXT Head [H] 7 2 7 1 2 1 8 4 1 9 9 1 4 1 0 1 2 8 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 7 2 1 1 8 2 4 2 9 3 6 3 1 3 9 PTR NEXTPREV Head [H] 1 2 4 1 9 7 2 7 9 1 4 1 0 1 2 8 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 7 2 1 1 8 2 4 2 9 3 6 3 1 3 9 PTR NEXTPREV 1 8
  • 17. © Oxford University Press 2011. All rights reserved. Head [H] 1 2 1 8 9 1 4 1 0 4 1 9 7 1 2 2 7 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 7 2 1 1 8 2 4 2 9 3 6 3 1 3 9 PTR NEXTPREV 8 Inserting a new node The Insert_Binomial-Heap() procedure is used to insert a node x into binomial heap H. The pre-condition of this procedure is that the node x has already been allocated space and val[x] has already been filled in. Insert_Binomial-Heap() Step 1: SET H’ = Create_Binomial-Heap() Step 2: SET Parent[x] = NULL, Child[x] = NULL and sibling[x] = NULL, Degree[x] = NULL Step 3: SET Head[H’] = x Step 4: SET Head[H] = Union_Binomial-Heap(H, H’) Step 5: END The algorithm simply makes a binomial heap H' in O(1) time. H’ contains just one node that is, x. Finally, the algorithm unites H’ with the n-node binomial heap H in O(1g n) time. Note that the memory occupied by H’ is freed in the Union_Binomial-Heap(H, H’) procedure.
  • 18. © Oxford University Press 2011. All rights reserved. Min-Extract_Binomial Heap (H) Step 1: Find the root R having minimum value in the root list of H Step 2: Remove R from the root list of H Step 3: SET H' = Create_Binomial-Heap() Step 4: Reverse the order of R's children thereby forming a linked list Step 5: Set head[H'] to point to the head of the resulting list Step 6: SET H = Union_Binomial-Heap(H, H’) Step 7: Return R Extracting the node with minimum key The algorithm to extract the node with the minimum key from binomial heap H is shown below. The Min-Extract_Binomial-Heap procedure accepts a heap H as a parameter and returns a pointer to the extracted node Example: Extract the node with minimum value from the binary heap given below. 8 1 9 4 3 6 1 4 1 0 1 8 1 2 2 1 1 9 1 8 Head [H] 5 2 1 1 8 2 4 2 9 3 6 3 1 3 9 1 6 1 2 2 1
  • 19. © Oxford University Press 2011. All rights reserved. 4 3 6 1 4 1 0 1 8 1 2 2 1 1 9 5 2 1 1 8 2 4 2 9 3 6 3 1 3 9 R 8 1 9 1 8 Head [H] 1 6 1 2 2 1 Head [H’] 3 6 1 4 1 0 1 8 1 2 2 1 1 9 5 2 1 1 8 2 4 2 9 3 6 3 1 3 9 8 1 9 1 8 Head [H] 1 6 1 2 2 1 3 6 Head [H] 1 4 2 1 1 2 2 1 5 2 1 1 8 2 9 3 6 3 1 2 4 3 9 8 1 6 1 2 2 1 1 0 1 8 1 2 1 9
  • 20. © Oxford University Press 2011. All rights reserved. Decreasing a value of a node The algorithm to decrease the value of a node x in a binomial heap H is given below. In the algorithm the value of the node is overwritten with a new value k, that is of course less than the current value of the node. The Binomial-Heap_Decrease_Val procedure takes O(lg n) time as the maximum depth of node x is lg n, so the while loop will iterate at most lg n times. Binomial-Heap_Decrease_Val(H, x, k) Step 1: IF Val{x] < k, then Print “ ERROR” Step 2: SET Val[x] = k Step 3: SET PTR = x and PAR = Parent[PTR] Step 4: Repeat while PAR ≠ NULL and Val[PTR] < Val[PAR] Step 5: SWAP ( Val[PTR}, Val[PAR] ) Step 6: SET PTR = PAR and PARENT = Parent [PTR] Step 7: END Deleting a key Once we have understood the Binomial-Heap_Decrease_Val procedure, it becomes very easy to delete a node x's value from binomial heap H in O(lg n) time. To start with the algorithm we set the value of x to - ∞. Assuming that there is no node in the heap that has a value less than -∞. The algorithm to delete a node from a binomial heap can be given as below.
  • 21. © Oxford University Press 2011. All rights reserved. Binomial-Heap_Delete-Node(H, x) Step 1: Binomial-Heap_Decrease_Val(H, x, -∞) Step 2: Min-Extract_Binomial-Heap(H) Step 3: END Example: Delete the node with value 12 from the binomial heap H. 3 6 Head [H] 1 4 2 1 1 2 2 1 5 2 1 1 8 2 9 3 6 3 1 2 4 3 9 8 1 6 1 2 2 1 1 0 1 8 1 2 1 9 3 6 Head [H] 1 4 2 1 1 2 2 1 5 2 1 1 8 2 9 3 6 3 1 2 4 3 9 8 1 6 1 2 2 1 1 0 1 8 - ∞ PTR PAR 19
  • 22. © Oxford University Press 2011. All rights reserved. 3 6 Head [H] 1 4 2 1 1 2 2 1 5 2 1 1 8 2 9 3 6 3 1 2 4 3 9 8 1 6 1 2 2 1 - ∞ 1 8 1 0 1 9 PTR PAR Head [H] 1 4 2 1 1 2 2 1 5 2 1 1 8 2 9 3 6 3 1 2 4 3 9 - ∞ 1 6 1 2 2 1 8 1 8 1 0 1 9 PTR PAR 3 6 3 6 Head [H] 2 1 1 2 2 1 - ∞ 2 1 1 8 2 9 3 6 3 1 2 4 3 9 5 1 6 1 2 2 1 8 1 8 1 0 1 9 PTR 1 4
  • 23. © Oxford University Press 2011. All rights reserved. 3 6 Head [H] 1 4 2 1 1 2 2 1 - ∞ 2 1 1 8 2 9 3 6 3 1 2 4 3 9 5 1 6 1 2 2 1 8 1 8 1 0 1 9 3 6 Head [H] 1 4 2 1 1 2 2 9 1 8 2 9 3 6 3 1 2 4 3 9 5 1 6 1 2 2 1 8 1 8 1 0 1 9 Head [H’] 3 6 Head [H] 1 8 2 4 1 4 2 1 1 2 2 1 2 9 3 6 3 1 3 9 5 1 2 2 1 8 1 8 1 0 1 9 1 6
  • 24. © Oxford University Press 2011. All rights reserved. FIBONACCI HEAPS • In the last section, we have seen that binomial heaps support operations like insert, extract-minimum, decrease-value, delete and union in O(lg n) worst-case time. Fibonacci heaps supports the same operations (that do not involve deleting an element) in O(1) amortized time. • So, theoretically, Fibonacci heaps are especially desirable when the number of extract- minimum and delete operations are small relative to the number of other operations performed. This situation arises in many applications, for example, some algorithms for graph problems may call decrease-value once per edge. However, programming complexity of Fibonacci heaps make them less desirable to use. • A Fibonacci heap is a collection of trees. A Fibonacci heap is loosely based on binomial heaps. If neither decrease-value nor delete operation is performed, each tree in the heap is like a binomial tree. Fibonacci heaps differ from binomial heaps, as they have a more relaxed structure, allowing for improved asymptotic time bounds. • Each node in the Fibonacci heap contains the following pointers: A pointer to its parent A pointer to its any one of its children The children of each node are linked together in a circular, doubly linked list which is known as the child list of that node. Each child x in a child list contains pointers to its left and right sibling. If node x is the only child of its parent, then left[x] = right[x] = x. Apart from this information, every node will store two other field. First, the number of children in the child list of node x is stored in degree[x]. Second, a boolean value mark[x] indicates whether node x has lost a child since the last time x was made the child of another node. Of course, the newly created nodes are unmarked. Also, when the node x is made the child of another node, it becomes unmarked.
  • 25. © Oxford University Press 2011. All rights reserved. 3 6 1 8 4 1 8 2 4 3 6 5 4 1 9 3 3 3 2 3 9 2 7 4 4 min[H] Fibonacci heap H is generally accessed by a pointer called min[H] which points to the root that has a minimum value. If the Fibonacci heap H his empty, then min[H] = NULL. Roots of all the trees in a Fibonacci heap are linked together.In a Fibonacci heap H, the number of nodes in H are stored in n[H] and degree of a node is stored in D(n). Creating a new Fibonacci heap To create an empty Fibonacci heap, the Create_Fib-Heap procedure is used to allocate and return the Fibonacci heap object H, where n[H] = 0 and min[H] = NULL. The amortized cost of Create_Fib-Heap is equal to its O(1) actual cost. Inserting a node The algorithm to insert a new node in an already existing Fibonacci heap is given below.
  • 26. © Oxford University Press 2011. All rights reserved. Insert_Fib-Heap(H, x) Step 1: [Initialize] SET Degree[x] = 0, Parent[x] = Null, Child[x] = NULL, mark[x] = False Step 2: SET Left[x] = x and Right[x] = x Step 3: Concatenate the root list containing x with the root list of H Step 4: IF min[H] = NULL OR Val[x] < Val[min[H]], then SET min[H] = x [END OF IF] Step: SET n[H] = n{h]+ 1 Step 6: END Example: Insert node 16 in the Fibonacci heap given below. 3 6 1 8 3 6 5 4 1 9 3 3 4 1 8 2 4 3 2 3 9 2 7 4 4 3 6 1 8 1 6 3 6 5 4 1 9 3 3 4 1 8 2 4 3 2 3 9 2 7 4 4 min[H] min[H] 4 1 4 1
  • 27. © Oxford University Press 2011. All rights reserved. Finding the minimum node Fibonacci heap maintains a pointer min[H], that points to the root having minimum value. Therefore, finding the minimum node is a straight forward task that can be performed in just O(1) time. Uniting two Fibonacci Heaps The algorithm given in figure 12.21 unites two Fibonacci heaps H1 and H2. Union_Fib-Heap(H1, H2) Step 1: H = Create_Fib-Heap() Step 2: SET min[H] = min[H1] Step 3: Concatenate root list of H2 with that of H. Step 4: IF (min[H1] = NULL) OR (min[H2] != NULL and min[H2] < min[H1]), then SET min[H] = min[H2] Step 5: SET n[H] = n[H1] + n[H2] Step 6: Free H1 and H2 Step 7: Return H Extracting the minimum node The process of extracting the minimum node from a Fibonacci heap is the most complicated operation of all the operations that we have read so far. Till now, we had been delaying the work of consolidating the trees, but in this operation the work of consolidating the tree is finally done. The algorithm to extract the minimum node is given below.
  • 28. © Oxford University Press 2011. All rights reserved. Extract-Min_Fib_Heap(H) Step 1: SET x = min[H] Step 2: IF x != NULL, then for each child PTR of x, add PTR to the root list of H and SET Parent[PTR] = NULL Remove x from the root list of H Step 3: IF x = Right[x], then SET min[H] = NULL ELSE SET min[H] = Right[x] Consolidate(H) Step 4: SET n[H] = n[H] – 1 Step 5: Return x Consolidate the Heap The Fibonacci heap is consolidated to reduce the number of trees in the heap. When consolidating the root list of H, the following steps are repeatedly executed until every root in the root list has a distinct degree value. Find two roots x and y in the root list that has the same degree, and where Val[x] ≤Val[y]. Link y to x. That is, remove y from the root list of H and make it a child of x. This operation is actually done in the Link_Fib-Heap procedure. Finally, the degree[x] is incremented, and the mark on y, if any, is cleared.
  • 29. © Oxford University Press 2011. All rights reserved. Consolidate(H) Step 1: Repeat for i=0 to D(n[H]), SET A[i] = NULL Step 2: Repeat Steps 3 to 12 for each node x in the root list of H Step 3: SET PTR = x Step 4: SET deg = Degree[PTR] Step 5: Repeat Steps 6 to 10 while A[deg] != NULL Step 6: SET TEMP = A[deg] Step 7: IF Val[PTR] > Val[TEMP], then Step 8: EXCHANGE PTR and TEMP Step 9: Link_Fib-Heap(H, TEMP, PTR) Step 10: SET A[deg] = NULL Step 11: SET deg = deg + 1 Step 12: SET A[deg] = PTR Step 13: SET min[H] = NULL Step 14: Repeat for i = 0 to D(n{H]) Step 15: IF A[i] != NULL, then Step 16: Add A[i] to the root list of H Step 17: IF min[H] = NULL OR Val[A[i]] < Val[min[H]], then Step 18: SET min[H] = A[i] Step 17: END Link_Fib-Heap (H, x, y) Step 1: Remove node y from the root list of H Step 2: Make x the parent of y Step 3: Increment the degree of x Step 4: SET mark[y] = FALSE Step 5: END
  • 30. © Oxford University Press 2011. All rights reserved. Example: Remove the minimum node from the Fibonacci Heap given below. 3 6 1 7 1 6 3 6 5 4 1 9 3 3 4 1 8 2 4 3 2 3 9 2 7 4 4 min[H] 3 6 1 7 1 6 1 9 3 3 4 1 3 6 4 1 1 8 1 8 3 2 2 4 3 9 2 7 4 4 min[H] 3 6 1 7 1 6 1 9 3 3 3 6 4 1 1 8 1 8 3 2 3 9 2 7 4 4 PTR, TEMP PTR, TEMP A 0 1 2 3 4
  • 31. © Oxford University Press 2011. All rights reserved. 3 6 1 7 1 6 1 9 3 3 3 6 4 1 1 8 1 8 3 2 2 4 3 9 2 7 4 4 PTR, TEMP 3 6 1 7 1 6 1 9 3 3 3 6 4 1 1 8 1 8 3 2 2 4 3 9 2 7 4 4 PTR, TEMP A 0 1 2 3 4 1 7 1 6 1 9 3 3 3 6 4 1 1 8 1 8 3 2 2 4 3 9 2 7 4 4 TEMP 3 6 PTR A 0 1 2 3 4
  • 32. © Oxford University Press 2011. All rights reserved. 1 7 3 2 1 8 3 6 1 6 1 9 3 3 3 6 4 1 1 8 2 4 3 9 2 7 4 4 TEMP PTR A 0 1 2 3 4 1 7 3 2 1 8 3 6 2 4 3 9 2 7 4 4 1 6 1 9 3 3 3 6 4 1 1 8 TEMP PTR A 0 1 2 3 4 1 7 3 2 1 8 3 6 2 4 3 9 2 7 4 4 1 6 1 9 3 3 3 6 4 1 1 8 TEMP PTR A 0 1 2 3 4
  • 33. © Oxford University Press 2011. All rights reserved. 1 7 3 2 1 8 3 6 2 4 3 9 2 7 4 4 1 6 3 3 3 6 4 1 1 8 TEMP PTR 1 9 1 7 3 2 1 8 3 6 2 4 3 9 2 7 4 4 1 6 3 3 1 9 1 8 3 6 4 1 TEMP PTR A 0 1 2 3 4 1 7 3 2 1 8 3 6 2 4 3 9 2 7 4 4 1 6 3 1 9 1 8 3 6 4 1 TEMPPTR A 0 1 2 3 4
  • 34. © Oxford University Press 2011. All rights reserved. Decreasing a key The algorithm to decrease the value of a node in O(1) amortized time is given below. Decrease-Val_Fib-Heap (H, PTR, v) Step 1: IF v > Val[PTR], then PRINT “ERROR” Step 2: SET Val[PTR] = v Step 3: SET PAR = Parent[PTR] Step 4: IF PTR != NULL and Val[PTR] < Val[PAR], then Cut (H, PTR, PAR) Cascading-Cut(H, PAR) Step 5: IF Val[PTR] < Val[min[H]], then SET min[H] = PTR Step 6: END Cut( H, PTR, PAR) Step 1: Remove PTR from the child list of PAR Step 2: SET Degree[PAR] = Degree[PAR] – 1 Step 3: Add PTR to the root list of H Step 4: SET Parent[PTR] = NULL Step 5: SET Mark[PTR] = FALSE Step 6: END Cascading-Cut (H, PTR) Step 1: SET PAR = Parent[PTR] Step 2: IF PAR != NULL, then IF mark[PTR] = FALSE, then SET mark[PTR] = TRUE ELSE Cut (H, PTR, PAR) Cascading-Cut(H, PAR) Step 3: END
  • 35. © Oxford University Press 2011. All rights reserved. Example: Decrease the value of node 39 to 9 in the Fibonacci Heap given below. 1 7 1 8 3 6 2 4 3 9 2 7 1 6 3 3 1 9 1 8 3 6 4 1 3 2 1 9 min[H] 1 7 1 8 3 6 2 4 9 2 7 1 6 3 3 1 9 1 8 3 6 4 1 3 2 1 9 min[H] 1 7 1 8 3 6 2 4 1 9 2 7 1 6 3 3 1 9 1 8 3 6 4 1 3 2 9 min[H]
  • 36. © Oxford University Press 2011. All rights reserved. 1 7 1 8 3 6 2 4 1 9 1 6 3 3 1 9 1 8 3 6 4 1 3 2 9 min[H] 2 7 1 7 1 8 3 6 2 4 1 9 1 6 3 3 1 9 1 8 3 6 4 1 3 2 9 2 7 1 7 1 8 3 6 2 4 1 9 1 6 3 3 1 9 1 8 3 6 4 1 3 2 9 2 7 min[H]
  • 37. © Oxford University Press 2011. All rights reserved. Deleting a node A node from a Fibonacci Heap can be very easily deleted in O(D(n)) amortized time. The procedure to delete a node is given below. . The amortized time of the delete procedure is the sum of the O(1) amortized time of DECREASE-VAL_FIB-HEAP and the O(D(n)) amortized time of EXTRACT-MIN_FIB-HEAP. DEL_FIB-HEAP (H, x) Step 1: DECREASE-VAL_FIB-HEAP( H, x, -∞) Step 2: EXTRACT-MIN_FIB-HEAP(H) Step 3: END
  • 38. © Oxford University Press 2011. All rights reserved. Operation Description Time complexity in Big O Notation Binary Binomial Fibonacci Create Heap Creates an empty heap O(n) O(n) O(n) Find Min Find the node with minimum value O(1) O(logn) O(1) Delete Min Delete the node with minimum value O(logn) O(logn) O(logn) Insert Insert a new node in the heap O(logn) O(logn) O(1) Decrease Value Decrease the value of a node O(logn) O(logn) O(1) Union Unites two heaps into one O(n) O(logn) O(1) APPLICATIONS OF HEAPS Heaps are preferred for applications that includes. Heapsort. It is one of the best sorting methods that has no quadratic worst-case scenarios. Selection algorithms. These algorithms are used to find the minimum, maximum values in linear or sub-linear time. Graph algorithms. Heaps can be used as internal traversal data structures. This guarantees run time to be reduced by an order of polynomial. Heaps are therefore used for implementing Prim's minimal spanning tree algorithm and Dijkstra's shortest path problem.