Fibonacci Heap
Fibonacci heap is a heap data-structure that mimics the fibonacci sequence. It is very interesting to use to find Minimum Spanning Tree and single source shortest path, like in Dijkstra algorithm.
As it's somehow complex to implement, it's not very used in practice.
Pointers
Each node has the following pointers:
- 1 to the parent
- 1 to any one of the children
- 2 to the direct siblings (or itself if it is an only child)
- Degrees, i.e. the number of its direct children
- Mark, i.e. does this node has lost a child
We also keep track of
- total number of nodes in the heap
- minimum node value in the heap
Complexity
- Insert node:
- Find minimum:
- Delete minimum:
(amortized) - Decrease key:
(amortized)
Note: amortized is the average time over a sequence of operation