查找具有目标成本的生成树

时间:2011-05-02 20:47:03

标签: graph spanning-tree

我对这个很难过。发布新内容,如果这是一个愚蠢的问题,请原谅我。

假设我们给出了带有加权边的图G =(V,E)。我想创建G的生成树,其目标成本为c,其中生成树的成本被定义为其所有边成本的总和。我们如何确定是否存在具有成本c的G的生成树?

1 个答案:

答案 0 :(得分:0)

这是一个刺痛。您可以使用动态编程来解决子集求和问题,然后针对每个可能的子集检查它是否形成生成树。子集和的一般公式为:令C [i,S]为语句的布尔值

  

有一个S的子集与i

相加

让e成为任意边缘。然后经常发生:

  

C [i,S'U e] =如果是C [i,S']或C [i - 权重(e),S']

(你要么使用边缘e,要么不使用边缘e并确保使用边缘e不形成循环)。

如果目标成本是c,那么你需要为每个1< = i< = c执行n次扫描,其中n是边数。

最后验证拾取的边数是否比顶点数少1并且它们都是连接的。

另一种方法是使用回溯递归来搜索所有生成树< = targetCost。