可合并堆是支持以下5种操作的数据结构,其中每个元素都有一个关键字:
MAKE-HEAP():创建和返回一个新的不含任何元素的堆。
INSERT(H, x):将一个已填入关键字的元素x插入堆H中。
MINIMUM(H):返回一个指向堆H中具有最小关键字元素的指针。
EXTRACT-MIN(H):从堆H中删除最小关键字的元素,并返回指向该元素的指针。
UNION(H1,H2):创建并返回一个包含堆H1和堆H2中所有元素的新堆。堆H1和H2被销毁。
斐波那契堆支持可合并堆的操作,而且还支持下面的两种操作:
DECREASE-KEY(H, x, k):将堆H中元素x的关键字赋予新值k。假定新值k不大于当前的关键字。
DELETE(H, x):从堆H中删除元素x。
斐波那契堆的时间复杂度与普通的堆相比性能如下:
斐波那契堆对于操作INSERT, UNION和DECREASE-KEY,比起普通的堆有更好的时间性能。注意,上图中,斐波那契堆的时间是摊还时间。
理论上看,如果EXTRACT-MIN和DELETE操作的数目相比于其他操作小得多的时候,斐波那契堆尤其适用,这种情形出现在很多应用中:一些问题(计算最小生成树和寻找单源最短路径)中必不可少的用到斐波那契堆。
但是实际上,除了需要管理大量数据的应用外,对于大多数应用,斐波那契堆的常数因子和编程复杂性使得它比普通二项堆并不那么适用。
斐波那契堆对于SEARCH操作的支持比较低效,所以,设计给定元素的操作均需要一个指针指向这个元素。