Dijkstra算法问题

时间:2011-06-01 14:04:49

标签: algorithm dijkstra greedy

如何将Dijkstra算法应用于图形以找到MST,使得生成的树必须在两个给定顶点之间具有边? (例如:MST必须包括X和Y之间的边缘)

由于

1 个答案:

答案 0 :(得分:5)

Dijkstra的算法用于最短路径(不是MST),但类似于Dijkstra算法,经过修改以找到最小生成树,称为Prim算法。 Prim的算法使树长大,直到它跨越整个图形。这里介绍的附加约束并没有太大的困难:你只需要用X-Y作为树。

具体来说,假设您的MST必须包含边(X,Y)(如果有多个这样的边选择最小权重之一),请从具有两个节点X和Y以及它们之间的边的树开始。现在,在每一步中选择你在树中的最小边(u,v)并在外面v,将节点v和边(u,v)添加到树中,然后重复。