一尘不染

如何用斐波那契堆实现Prim算法?

algorithm

我知道Prim的算法,也知道它的实现,但是我总是跳过现在要问的一部分。它被写了普里姆与算法的实现斐波那契堆O(E + V log(V))我的问题是:

  • 简而言之,斐波那契堆是什么?
  • 如何实施?和
  • 如何用Fibonacci堆实现Prim’s算法?

阅读 547

收藏
2020-07-28

共1个答案

一尘不染

Fibonacci堆是一个相当复杂的优先级队列,在所有操作上都有出色的渐近行为-插入,查找-最小和减小键全部在O(1)摊销时间内运行,而删除和提取-
最小在摊销O中运行(lg
n)时间。如果您想在这个主题上有很好的参考,我强烈建议您拿起CLRS的“算法简介,第二版”的副本,并阅读其中的章节。它写得很好并且非常说明性。
弗雷德曼(Fredman)和塔里安(Tarjan撰写的有关斐波那契堆的原始论文可在线获得,您可能想看看。它很稠密,但是可以很好地处理材料。

如果您想看到Fibonacci堆的实现和Prim的算法,我必须为自己的实现提供一个无耻的插件:

  1. 我的斐波那契堆的实现。
  2. 我使用Fibonacci堆实现Prim算法的实现。

这两个实现中的注释都应该很好地描述它们如何工作。让我知道我是否可以做任何澄清的事情!

2020-07-28