斐波那契堆的结构较二项堆更松散,关键思想在于尽量延迟对堆的维护。
A [b]Fibonacci heap[/b] is a collection of rooted trees that are min-heap ordered.
根节点不需要顺序,用一个H.min指向最小的
[img]http://dl.iteye.com/upload/picture/pic/90997/4301e1fa-2fed-38ed-9d07-2cee6dad57cc.bmp[/img]
插入一个新节点:就在表数组里插,O(1),需要调整H.min的值就行。
合并两个堆:也在表数组里插,O(1),需要调整H.min的值就行。
查询最小的:H.min指向的,O(1)
删除最小的:
1. 先把子树插入到表数组里,然后删除最小的。
2. 用个数组记录度数,然后不停的合并度数相同的树。
为什么取这个名字呢?维基有解释
The name of Fibonacci heap comes from Fibonacci numbers which are used in the running time analysis.
A [b]Fibonacci heap[/b] is a collection of rooted trees that are min-heap ordered.
根节点不需要顺序,用一个H.min指向最小的
[img]http://dl.iteye.com/upload/picture/pic/90997/4301e1fa-2fed-38ed-9d07-2cee6dad57cc.bmp[/img]
插入一个新节点:就在表数组里插,O(1),需要调整H.min的值就行。
合并两个堆:也在表数组里插,O(1),需要调整H.min的值就行。
查询最小的:H.min指向的,O(1)
删除最小的:
1. 先把子树插入到表数组里,然后删除最小的。
2. 用个数组记录度数,然后不停的合并度数相同的树。
为什么取这个名字呢?维基有解释
The name of Fibonacci heap comes from Fibonacci numbers which are used in the running time analysis.