更改为图形中的非MST边缘以更改MST

时间:2012-05-28 22:30:44

标签: algorithm graph minimum-spanning-tree

设计一个算法,该算法采用加权图G并找到 非MST边缘成本的最小变化会导致变化 G.的最小生成树。

到目前为止我的解决方案(需要建议)

要更改MST,我们需要更改非MST边缘的重量s.t.它比MST中起始顶点和终点顶点的路径中的最大边缘小一个。

因此我们可以从MST的边缘开始,对于每个顶点,检查是否存在非MST边缘。如果有,则可以完成到达边缘终点(在MST中)的bfs。非MST边缘权重必须更新为小于路径中最大边缘权重的一个。

这将导致非MST边缘包含在MST中,并且先前的最大边缘将从MST中移除。

有人可以判断这个解决方案是否正确吗?感谢。

2 个答案:

答案 0 :(得分:2)

你找到了这个主意。 但是,您的答案需要进行调整,以表明您希望找到最小的更改,而不是要修改您在步行中遇到的每个非MST边缘。

如果这是学校问题,您还会被要求提供核心证明。为了构建它,我建议依靠Kruskal的证明,并解释为什么你的改变会让Kruskal选择改进的边缘而不是路径中的其他最大权重边缘。

答案 1 :(得分:0)

我有个主意。所以基本上,我们可以遵循Kruskal算法的想法。因此,如果我们希望MST改变,那么Krukal算法必须有一次不在原始MST中选择边缘。这个边缘必须是我们要修改成本的边缘。所以算法很清楚。遵循Kruskal算法,每当我们想要选择新的边e时,我们会继续根据Kruskal算法进行搜索并找到另一个边缘e'仍然没有创造一个循环。然后我们计算出成本的最小变化:w(e') - w(e)-1。(我不确定成本是否仅限于整数)。只需从上面选择最小变化即可。