是否有动态编程方式来计算k个最小生成树?

时间:2010-07-10 09:51:40

标签: algorithm language-agnostic dynamic-programming minimum-spanning-tree

我的老师要求我们为这个问题实施一个动态编程解决方案,但我认为一个不存在,因为我找不到使用Google。

无论如何,给定一个图形和一个k,比如说3,你必须从中找到3个最好的MST。如果图形不具有k个子树,则可以多次返回相同的树或次优树。

我真的无法想到解决方案。

1 个答案:

答案 0 :(得分:2)

你让我困惑了一段时间,我以为你可能误解了这个问题。 “k-MST”问题包括找到形成子树的k个边,使得其边的总和小于或等于可以从k个边的子树获得的所有其他和。但后来我看到了复数s。

好吧,对于你的问题,我个人会尝试找到一个DP算法来找到MST,它结合了生成“下一个”MST的方法。由于这是动态编程,我会考虑反复优化某些内容(在这种情况下,针对每个步骤进行去优化),或者以各种方式将边缘划分为在MST设置中有意义的子集。可能有几种方式。

但是,搜索分区和最小生成树我发现了这一点,如果您只想要答案,这可能会更有帮助:http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0101-74382005000200004