查找两个给定节点/顶点之间路径中的最大边

时间:2012-07-15 19:22:48

标签: matlab graph-theory depth-first-search minimum-spanning-tree

我正在尝试通过在MST中添加新顶点来更新MST。为此,我一直关注Chin和Houck的“更新生成树”。 http://www.computingscience.nl/docs/vakken/al/WerkC/UpdatingSpanningTrees.pdf

本文中的一个步骤要求我找到两个给定顶点之间的路径/路径中的最大边。我的想法是找到顶点之间的所有可能路径,然后找到路径中的最大边。我一直在尝试在MATLAB中实现它。但是,到目前为止,我一直没有成功。任何前导/清除算法都可以找到两个顶点之间的所有路径,甚至是两个给定节点/顶点之间路径中的最大边缘。

供参考,我想提出一个例子。如果图形具有以下边缘1-2,1-3,2-4和3-4,则4和4之间的路径为:

1)4-2-1-3-4

2)4-3-1-2-4

谢谢

1 个答案:

答案 0 :(得分:0)

该算法通过降低t值来排除新MST的大边缘。当算法完成时,t将是剩余要插入以完成MST的最低边缘。

m值表示从r到z的路径上的最大边,每次INSERT运行本地。如果可能的话,在循环的每次迭代中降低m,从而去除前一个m个边缘作为t的可能候选。

用文字解释并不容易,我建议在纸上运行算法,直到步骤清楚。

我快速尝试草拟这里的步骤:http://jacob.midtgaard-olesen.dk/?p=140

但基本上,算法会添加旧MST的边,除非它在新节点z和旧MST中的另一个节点之间找到一个较小的边。在该示例中,边缘(A,B)不在新树中,因为算法找到了与B的更好连接。

注意,在选择h和k时,如果t和(w,r)具有相等的边值,我相信你应该选择(w,r)

最后,您应该通过算法后面的证据来理解算法的工作原理。 (我没有读完全部:))