【问题标题】:Algorithm to find minimum spanning tree when cost is given by multiplying edge weights当通过乘以边权重给出成本时找到最小生成树的算法
【发布时间】:2011-05-12 06:00:12
【问题描述】:

最近有人问我是否可以找到一种算法来计算给定图的最小成本生成树,其中生成树的总成本由边成本的乘积而不是它们的总和给出。

有几种算法可以计算常规最小生成树,但我不确定如何针对上述情况调整它们。有什么想法吗?

谢谢。

【问题讨论】:

    标签: algorithm optimization graph graph-theory minimize


    【解决方案1】:

    由于 log(product of edge costs) = sum (log(edge costs)),只需对边权重进行对数变换,并找到这些权重的最小成本生成树。

    【讨论】:

    • 哦,好答案!如果不是很明显,我只会提到约束 - 成本必须都是正数,并且都应该 > 1。
    • @jon_darkstar 你是对的,它们必须都是积极的,但我相信值 0-1 是可以的。结果树不会是最小成本子图(因为添加额外的边可能会降低成本),但它仍然是最小成本
    • 是的,你是对的,“树”约束已经阻止了这种愚蠢。
    • 我相信你甚至不需要进行日志转换。标准的 MST 算法除了边权重之间的比较之外不使用任何东西,并且 log 是单调函数,因此它不会改变排序。
    • @Aniko,(0-1] 是日志可接受的范围,但 AlexTex 必须注意零加权边,因为 log(0) 未定义。
    【解决方案2】:

    由于对数是单调变换,当您取所有权重的对数时,以及当您保留所有权重的原样时,最小生成树将完全相同。 所以:根据所有权重的总和和所有权重的乘积求MST没有区别。

    对于事实证明的文章 那 图的最小生成树 对 graoh 中权重的单调变换是不变的, 类型 最小生成树的传奇 在谷歌。 第一个链接将是您需要的链接。 第167页,单调同构。

    【讨论】:

      【解决方案3】:

      我最好的想法 - 通过蛮力找到所有最小(意味着不必要的边缘)生成树,选择具有最小产品的树。

      大多数(或所有)更有效的解决方案不再适用 - 主要是最佳解决方案不再必然包含最佳子问题。 (有什么限制?非常重要 - 成本小于 1 的边实际上是负成本,长度为 1 的边是免费的。它们最好都是正的!)

      我不确定这个问题是否真的有意义。一方面,您必须要么给出自循环成本(或假设 1),因为我们不能采用零的产品。分割路径的工作方式不同,走同一条路径两次花费 c^2?此外,我觉得这应该是与“成本”不同名称的路径的不同质量

      【讨论】:

      • 为了便于讨论,我们可以假设所有成本都是大于或等于 1 的正数。感谢您的想法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多