"Fibonacci堆在实践中有用吗?我在SO上查找了相关问题的答案(见下文),但没有真正回答这个问题。"
- 有一些很好的Fibonacci堆实现,包括在标准库中,比如Boost C ++。 这些库包含Fibonacci堆表明它们必须在某个地方有用。
- 我们知道,在实践中,Fibonacci堆需要满足某些条件才能更快: "要想在实践中受益于Fibonacci堆,您必须将它们用于频繁进行降低键值的应用程序"; "对于Fibonacci堆真正闪耀的地方,您需要满足以下任一情况:a)昂贵的比较:Fib堆最小化组织数据所需的比较数量。 b)大多数操作是updateKey / insert / delete。由于Fibonacci堆将更新“分组”到下一个extractMin,因此批量越大,效率越高。"
- 有一种名为“Brodal Queue”的数据结构,我不确定以前是否听说过,它似乎具有至少与Fibonacci堆相同的时间复杂度行为。 这里有一个漂亮的表格,列出了不同类型堆的各种操作的时间复杂度比较。
- 在关于是否有任何Fibonacci或二项式堆的应用程序的问题,回答者只给出了二项式堆的例子。