为什么kruskal算法和dijkstra算法彼此如此相似?

时间:2013-06-21 07:25:04

标签: algorithm

我知道这两种算法用于解决不同的问题,dijkstra算法用于在图中找到最短路径,而kruskal算法用于查找图的MST。但它们彼此如此相似?它们之间有什么关系?这两位作者之间的关系是什么?他们为何如此相似?

1 个答案:

答案 0 :(得分:7)

它们是不同的算法。在Kruskal中,您可以选择整个图形中的最短边(并将其从进一步的考虑中移除)。在Dijkstra中,您选择具有最短暂定距离的顶点(并将其从进一步的考虑中删除)。

自然,解决的问题也大不相同。两个顶点之间的最短路径可能不是最小生成树的一部分。

一个示例是一个边长为1的正方形,删除任何一条边将为您提供最小生成树,但是您删除的边的顶点之间的原始方形图中的最短路径不是最小生成树的一部分。 / p>


来自评论:

嗯,Prim's比Dskkstra更接近Kruskaln。为了完整性,到目前为止,Prim始终选择最接近树的顶点。相反,Dijkstra可能不会选择最接近顶点的顶点。例如,顺时针边缘长度为1,2,3,1,2,4的六边形.Prim可以在整个时间内顺时针生长。 Dijkstra会双向成长。