【发布时间】:2012-03-03 04:05:52
【问题描述】:
我正在上初级计算机编程课程,我(与其他 3 名学生一起)想为最终项目实现斐波那契堆。任何人都可以建议斐波那契堆的一些好的应用吗?足够华丽的东西可以成为很好的演示材料?
【问题讨论】:
标签: fibonacci-heap
我正在上初级计算机编程课程,我(与其他 3 名学生一起)想为最终项目实现斐波那契堆。任何人都可以建议斐波那契堆的一些好的应用吗?足够华丽的东西可以成为很好的演示材料?
【问题讨论】:
标签: fibonacci-heap
斐波那契堆在一些图算法中用于改进它们的运行时间。这些图形算法可能非常“华丽”,因此您可以展示它们。例如,我相信Dijkstra's algorithm 有时会使用斐波那契堆来实现更好的渐近运行时。
【讨论】:
有许多算法(理论上)受益于斐波那契堆的效率,其中最简单的是 Dijkstra's Algorithm 用于最短路径问题,Prim's Algorithm 用于最小生成树。
请注意:虽然斐波那契堆在理论上是最优的,但在上述两个问题上,它们的表现往往优于二叉堆。要使斐波那契堆真正发光,您需要以下两种情况之一: a) 昂贵的比较:Fib Heaps 最大限度地减少了组织数据所需的比较次数。 b) 大部分操作是updateKey/insert/delete。由于 Fibonacci Heaps 将更新“分组”在一起,直到下一次 extractMin,“batch”越大,它的效率就越高。
【讨论】: