从加权图

时间:2017-04-18 18:53:09

标签: algorithm graph computer-science

我试图从加权无定向图中找到第二个最佳跨度为3的最小值。我知道如何使用Kruskal算法计算MST,我正在考虑以这种方式找到第二个最佳最小算法:

步骤:

  1. 对所有图形边缘进行排序。

  2. 使用Kruskal

  3. 计算MST
  4. 从不在第一个MST中的图表中获取最小权重边缘并将其添加到MST(现在MST有一个周期)

  5. 删除新成型周期中的最大重量边缘

  6. 这应该是第二好的MST吗?

    顺便说一下,我知道的主题是指出一个算法在每个MST边缘之间进行迭代,并在图形上运行Kruskal而没有选择边缘,我只是问我的是否有效。

2 个答案:

答案 0 :(得分:1)

它不起作用。

在第3步之后,新添加的边可能成为仅包含成本非常低的边的周期的一部分,因此在步骤3和4之后,MST的总成本可能会显着增加。

另一方面,图表可能包含与步骤3中选择的成本相似的另一个边缘,当在MST中添加时,该边缘将是另一个周期的一部分,例如,包含具有相对高成本的边缘。为步骤3选择此边缘,然后应用步骤4将导致另一个生成树,优于所提议算法生成的生成树。

答案 1 :(得分:1)

不,你的算法不起作用。

  1        3
 /--\  2  /--\
.    .---.    .
 \--/     \--/
  4        5

MST是1,2,3 => 6。

第二好的是1,2,5 => 8。

您的算法将返回2,3,4 => 9。

(我假设您的第4步是返回最大权重边缘,而不是您刚添加的边缘)

这里的关键是1和4(3)之间的差异大于3和5(2)之间的差异,因此将3替换为3会导致比用4替换1更低的总成本。