【问题标题】:Stuck on solving the Minimal Spanning Tree problem坚持解决最小生成树问题
【发布时间】:2009-05-20 20:06:11
【问题描述】:

我已将问题简化为在图中找到最小生成树。但我想再有一个约束,即每个顶点的总度数不应超过某个常数因子。如何建模我的问题? MST是错误的路径吗?你知道任何可以帮助我的算法吗?

还有一个问题:我的图有重复的边权重,那么有没有办法计算唯一 MST 的数量?有没有算法可以做到这一点?

谢谢。

编辑:按度数,我的意思是连接顶点的边的总数。重复边权重是指两条边的权重相同。

【问题讨论】:

  • 您可以简单地应用 kruskal 算法,从列表中删除连接到具有最大总度数的节点的边,但我不知道这是否确定了一个最佳解决方案(如果它确定一个解决方案!)
  • 否则,您可以应用完整的 kruskal 算法,然后使用一些本地搜索技术来获得有效的生成树。

标签: algorithm graph minimum-spanning-tree


【解决方案1】:

嗯,很容易证明可能没有解决方案:只需将您的输入图设为一棵树,其顶点的度数高于您的限制。

【讨论】:

  • 如果我将负载系数设置为高于总重量限制怎么办?那就是我愿意满足于第二个最小值甚至第三个最小值。但这需要启发式方法,这可能会产生更多问题。例如,您如何决定替换哪条边?大神,有没有其他办法解决这个问题?
  • 我不知道;你还没有告诉我们你的问题是什么:-)但是如果你想要一个所有顶点都具有 deg
【解决方案2】:

Garey Johnson 将这个问题简化为 hamilton :( 所以这个有帮助。近似第一个:http://caislab.icu.ac.kr/Lecture/data/2003/spring/ice514/project/m03.ppt 然而,更好的工作模型受到赞赏......

计数:http://mathworld.wolfram.com/SpanningTree.html。据此,mathematica 有一个功能。这一篇有什么建议吗?

【讨论】:

  • 好吧,如果您深入研究矩阵树定理(参考 mathworld),也许您可​​以找到一种方法来系统地将一棵生成树转换为另一棵生成树。如果你能做到这一点,那么你可以在生成树中循环,直到找到适合你目的的树。不过,这都是一个疯狂的猜测。没有保证:-)
【解决方案3】:

本文展示了如何在多项式时间内找到最大度数为 d + 1 的生成树,该生成树至少与任何最大度数为 d 的生成树一样好:http://www.andrew.cmu.edu/user/mohits/mbdst.pdf

//编辑原链接当前无效,请尝试http://research.microsoft.com/pubs/80193/mbdst.pdf。

【讨论】:

  • 没有读过整本书,但看起来真的很有用。谢谢。
猜你喜欢
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多