我知道Prim的算法,也知道它的实现,但是我总是跳过现在要问的一部分。它被写了普里姆与算法的实现斐波那契堆是O(E + V log(V))和 我的问题是:
O(E + V log(V))
Fibonacci堆是一个相当复杂的优先级队列,在所有操作上都有出色的渐近行为-插入,查找-最小和减小键全部在O(1)摊销时间内运行,而删除和提取- 最小在摊销O中运行(lg n)时间。如果您想在这个主题上有很好的参考,我强烈建议您拿起CLRS的“算法简介,第二版”的副本,并阅读其中的章节。它写得很好并且非常说明性。 弗雷德曼(Fredman)和塔里安(Tarjan)撰写的有关斐波那契堆的原始论文可在线获得,您可能想看看。它很稠密,但是可以很好地处理材料。
如果您想看到Fibonacci堆的实现和Prim的算法,我必须为自己的实现提供一个无耻的插件:
这两个实现中的注释都应该很好地描述它们如何工作。让我知道我是否可以做任何澄清的事情!