Fibonacci Heap – Deletion, Extract min and Decrease key
Fibonacci Heap – Deletion, Extract min and Decrease key
In the last post, we discussed Insertion and Union of Fibonacci Heaps. In this post, we will discuss Extract_min(), Decrease_key() and Deletion() operations on Fibonacci heap.
Extract_min(): We create a function for deleting the minimum node and setting the min pointer to the minimum value in the remaining heap. The following algorithm is followed:
- Delete the min node.
- Set head to the next min node and add all the tree of the deleted node in root list.
- Create an array of degree pointers of the size of the deleted node.
- Set degree pointer to current node.
- Move to the next node.
- If degrees are different then set degree pointer to next node.
- If degrees are same then join the Fibonacci trees by union operation.
- Repeat steps 4 and 5 until the heap is completed.
Example:
Decrease_key(): To decrease the value of any element in the heap, we follow the following algorithm:
- Update min pointer if necessary.
- Cut off the link between ‘x’ and its parent.
- Mark the parent of ‘x’.
- Add tree rooted at ‘x’ to the root list and update min pointer if necessary.
- Cut off the link between ‘x’ and its parent p[x].
- Add ‘x’ to the root list, updating min pointer if necessary.
- Cut off link between p[x] and p[p[x]].
- Add p[x] to the root list, updating min pointer if necessary.
- If p[p[x]] is unmarked, mark it.
- Else, cut off p[p[x]] and repeat steps 4.2 to 4.5, taking p[p[x]] as ‘x’.
Example:
Deletion(): To delete any element in a Fibonacci heap, the following algorithm is followed:
- Decrease the value of the node to be deleted ‘x’ to minimum by Decrease_key() function.
- By using min heap property, heapify the heap containing ‘x’, bringing ‘x’ to the root list.
- Apply Extract_min() algorithm to the Fibonacci heap.
Example:
Comments
Post a Comment