246得票10回答
何时应使用Kruskal算法而不是Prim算法(反之亦然)?

我想知道何时应该使用Prim算法和Kruskal算法来寻找最小生成树?它们都有易于理解的逻辑,相同的最坏情况,并且唯一的区别是实现可能涉及略微不同的数据结构。那么决定性因素是什么?

129得票18回答
Prim算法和Dijkstra算法有什么区别?

Dijkstra算法和Prim算法的确切区别是什么?我知道Prim算法会给出MST,但由Dijkstra生成的树也将是MST。那么确切的区别是什么?

26得票2回答
为什么Prim或Kruskal算法不能用于有向图?

Prim和Kruskal算法用于查找连接的无向图的最小生成树。为什么它们不能用于有向图?

22得票3回答
如何使用斐波那契堆实现Prim算法?

我知道 普利姆算法 以及它的实现,但是我跳过了一个部分,现在我想问一下。有人写道,使用 斐波那契堆 实现的普利姆算法复杂度为O(E + V log(V)),我的问题是: 简要介绍什么是斐波那契堆? 它是如何实现的? 如何使用斐波那契堆实现普利姆算法?

19得票4回答
Prim算法的时间复杂度是多少?

我发现Prims算法的时间复杂度到处都是O((V + E) log V) = E log V。但是根据我们可以看出算法: 它似乎的时间复杂度为O(V(log V + E log V))。但如果它的时间复杂度是O((V + E) log V)的话,那么嵌套必须是这样的: 但上面的嵌套...

17得票6回答
在unordered_map中选择随机元素

我这样定义一个 unordered_map: std::unordered_map<std::string, Edge> edges; 是否有一种有效的方法从unordered_map edges中选择一个随机的Edge?

12得票6回答
Kruskal和Prim算法的应用

请问有哪些应用可以使用这两种算法, 它们分别可以用于哪些应用场景?

12得票2回答
如何在Prim算法中更新堆中元素的优先级?

我正在学习Prim算法。代码中有一部分是下一个通过断开的边到达属于MST顶点集的顶点。在这个过程中,我们还必须“更新所有与离开的顶点相邻的另一个集合中的顶点”。这是CLRS的快照: 有趣的部分在第11行。但由于我们在这里使用堆,因此只能访问最小元素,对吧(heap[0])?那么,即使它们...

11得票3回答
Prim算法时间复杂度

我正在查看Prim算法的维基百科条目,并注意到它在邻接矩阵中的时间复杂度为O(V^2),在堆和邻接表中的时间复杂度为O(E lg(V)),其中E是图中边的数量,V是顶点的数量。 由于Prim算法用于更密集的图形中,E可以接近V^2,但当它这样做时,使用堆的时间复杂度变为O(V^2 lg(V)...

10得票3回答
普里姆最小生成树算法:起始节点是否重要?

我直觉地感觉,如果使用Prim算法来找到一个图的最小生成树,那么选择哪个根节点并不重要——结果生成的最小生成树的权重是相同的。这个理解对吗?