二进制堆和Fibonacci堆的实际应用

dev*_*ull 32 algorithm binary-heap data-structures fibonacci-heap

Fibonacci堆和二进制堆的真实世界应用是什么?如果你可以在用它来解决问题时分享一些实例,那就太棒了.

编辑:还添加了二进制堆.很想知道.

Pet*_*der 17

你很少在现实生活中使用它.我相信Fibonacci堆的目的是改善Dijkstra算法的渐近运行时间.它可能会为非常非常大的输入提供改进,但大多数情况下,您只需要一个简单的二进制堆.

来自维基:

尽管以空结构开始的一系列操作的总运行时间受上面给出的边界的限制,但序列中的一些(非常少的)操作可能需要很长时间才能完成(特别是删除和删除最小值具有线性运行时间)最坏的情况).因此,Fibonacci堆和其他摊销数据结构可能不适合实时系统.

二进制堆是一种数据结构,可用于快速查找一组值中的最大值(或最小值).它用于Dijkstra算法(最短路径),Prim算法(最小生成树)和霍夫曼编码(数据压缩).


Man*_*j R 12

不能说有关斐波纳契堆,但二进制堆在优先级队列中使用.优先级队列广泛用于实际系统中.

一个已知的例子是内核中的进程调度.首先采用最优先的流程.

在集合分区中使用了优先级队列.具有最大成员的集合首先用于分区.