【发布时间】:2011-05-12 06:00:12
【问题描述】:
最近有人问我是否可以找到一种算法来计算给定图的最小成本生成树,其中生成树的总成本由边成本的乘积而不是它们的总和给出。
有几种算法可以计算常规最小生成树,但我不确定如何针对上述情况调整它们。有什么想法吗?
谢谢。
【问题讨论】:
标签: algorithm optimization graph graph-theory minimize
最近有人问我是否可以找到一种算法来计算给定图的最小成本生成树,其中生成树的总成本由边成本的乘积而不是它们的总和给出。
有几种算法可以计算常规最小生成树,但我不确定如何针对上述情况调整它们。有什么想法吗?
谢谢。
【问题讨论】:
标签: algorithm optimization graph graph-theory minimize
由于 log(product of edge costs) = sum (log(edge costs)),只需对边权重进行对数变换,并找到这些权重的最小成本生成树。
【讨论】:
由于对数是单调变换,当您取所有权重的对数时,以及当您保留所有权重的原样时,最小生成树将完全相同。 所以:根据所有权重的总和和所有权重的乘积求MST没有区别。
对于事实证明的文章 那 图的最小生成树 对 graoh 中权重的单调变换是不变的, 类型 最小生成树的传奇 在谷歌。 第一个链接将是您需要的链接。 第167页,单调同构。
【讨论】:
我最好的想法 - 通过蛮力找到所有最小(意味着不必要的边缘)生成树,选择具有最小产品的树。
大多数(或所有)更有效的解决方案不再适用 - 主要是最佳解决方案不再必然包含最佳子问题。 (有什么限制?非常重要 - 成本小于 1 的边实际上是负成本,长度为 1 的边是免费的。它们最好都是正的!)
我不确定这个问题是否真的有意义。一方面,您必须要么给出自循环成本(或假设 1),因为我们不能采用零的产品。分割路径的工作方式不同,走同一条路径两次花费 c^2?此外,我觉得这应该是与“成本”不同名称的路径的不同质量
【讨论】: