具有度约束的最小生成树

时间:2015-05-17 00:26:23

标签: algorithm graph graph-algorithm minimum-spanning-tree degrees

我必须解决这个问题:

  

给定加权连通无向图G =(V,E)和顶点u在V.   描述一个算法,找到G的MST,使得u的程度   很小;算法的输出T是MST并且彼此相对   最小生成树T'是小于或小于T的程度   等于T'中的u的程度。

我考虑过这个算法(经过一些谷歌搜索后我找到了类似问题here的解决方案):

  • 暂时删除顶点u。
  • 对于每个得到的连通分量C1,...,Cm使用例如Cm找到MST。 Kruskal或Prim的算法。
  • 重新添加顶点u,并为每个Ci添加1和Ci之间最便宜的边缘。

修改

我知道这个算法可能会得到一个错误的MST(参见@AndyG评论)所以我想到了另一个:

  • 令k为G中每两个权重之间的最小增量,并且将0 <0。 x&lt; k到你的每个相邻边缘。 (例如,如果所有权重都是自然数,则k = 1且x是分数)。
  • 使用Kruskal算法找到MST。

该解决方案基于Kruskal算法迭代边缘的事实 按重量排序,因此G的所有MST之间的差异是从相同重量的所有边缘中选择每个边缘。因此,如果我们增加u的相邻边缘的程度,算法将选择相同度数的其他边缘而不是u的相邻边缘,除非MST需要这个边缘,并且u的程度将是最小的G的MST。

我仍然不知道它是否有效以及如何证明此算法的正确性。

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

总结建议的算法[对epsilon(你称之为x)的要求更严格]:

  • 选择一个微小的epsilon(使得epsilon * deg(u)小于d,这是任何一对子图之间的最小非零重量差异)。在所有原始权重都是自然数的情况下,epsilon = 1 /(deg(u)+1)就足够了。
  • 将epsilon添加到发生在u
  • 上的所有边的权重
  • 找到最小的生成树。

我们将证明此过程找到原始图形的MST,以最小化入射到u的边数。

设W是原始图中任何最小生成树的权重。

首先,我们将显示新图的每个MST都是原始图的MST。原始图中的任何非MST必须至少具有W + d的权重。新图中的任何MST必须具有最多W + deg(u)* epsilon的权重(因为原始图中的任何MST在新图中具有最多该权重)。由于我们选择了epsilon,因此deg(u)* epsilon&lt; d,我们得出结论,新图中的任何MST也是原始图中的MST。

其次,我们将展示新图的MST是原始图的MST,其最小化了入射到u的边的数量。原始图的MST,T在新图中具有权重W + k * epsilon,其中k是入射到u的T的边的数量。我们已经证明新图的每个MST也是原始图的MST。因此,新图形的MST是原始图形的MST,它最小化k(入射到u的边数)。