我在初学者级别的计算机编程课程中,我(以及其他3名学生)希望为最终项目实现斐波纳契堆。任何人都可以建议斐波纳契堆的一些好的应用?华而不实的东西,是一个很好的演示材料?
答案 0 :(得分:1)
Fibonacci堆在一些图算法中用于改善其运行时间。这些图形算法可能非常“华而不实”,因此您可以展示这些算法。例如,我相信Dijkstra's algorithm有时会使用Fibonacci Heaps来实现更好的渐近运行时。
答案 1 :(得分:1)
有许多算法(理论上)受益于Fibonacci Heap的效率,最简单的问题是最短路径问题Dijkstra's Algorithm和最小生成树Prim's Algorithm。
请注意:虽然Fibonacci Heaps在理论上是最优的,但在上述两个问题上,它们往往优于Binary Heaps。要让Fibonacci Heap真正发光,您需要以下任一种情况: a)昂贵的比较:Fib Heaps最小化组织数据所需的比较次数。 b)大多数操作是updateKey / insert / delete。正如Fibonacci Heaps将更新“分组”到下一个extractMin,“批处理”越大,它就越有效。