设计一个算法,该算法采用加权图G并找到 非MST边缘成本的最小变化会导致变化 G.的最小生成树。
到目前为止我的解决方案(需要建议):
要更改MST,我们需要更改非MST边缘的重量s.t.它比MST中起始顶点和终点顶点的路径中的最大边缘小一个。
因此我们可以从MST的边缘开始,对于每个顶点,检查是否存在非MST边缘。如果有,则可以完成到达边缘终点(在MST中)的bfs。非MST边缘权重必须更新为小于路径中最大边缘权重的一个。
这将导致非MST边缘包含在MST中,并且先前的最大边缘将从MST中移除。
有人可以判断这个解决方案是否正确吗?感谢。
答案 0 :(得分:2)
你找到了这个主意。 但是,您的答案需要进行调整,以表明您希望找到最小的更改,而不是要修改您在步行中遇到的每个非MST边缘。
如果这是学校问题,您还会被要求提供核心证明。为了构建它,我建议依靠Kruskal的证明,并解释为什么你的改变会让Kruskal选择改进的边缘而不是路径中的其他最大权重边缘。
答案 1 :(得分:0)
我有个主意。所以基本上,我们可以遵循Kruskal算法的想法。因此,如果我们希望MST改变,那么Krukal算法必须有一次不在原始MST中选择边缘。这个边缘必须是我们要修改成本的边缘。所以算法很清楚。遵循Kruskal算法,每当我们想要选择新的边e时,我们会继续根据Kruskal算法进行搜索并找到另一个边缘e'仍然没有创造一个循环。然后我们计算出成本的最小变化:w(e') - w(e)-1。(我不确定成本是否仅限于整数)。只需从上面选择最小变化即可。