【问题标题】:Subgraph with minimum edge weight and node weight >= Val具有最小边权和节点权重的子图 >= Val
【发布时间】:2016-02-23 15:11:29
【问题描述】:

我遇到了这个问题 - 在无向图中,每个节点和边都有一个权重。所有的权重都是非负的。给定一个值S,找到边权重之和最小的连通子图,使得其节点权重之和至少为S。

最明显的解决方案是考虑所有可能的子图的蛮力方法。但是时间复杂度是指数级的。有没有更好的算法呢?我的直觉是我们可以将节点权重转换为边权重,然后应用生成树算法。但我无法清楚地解决它。如何解决这个问题?

编辑:看起来我对子图的描述不够清楚。选定的子图必须是单个连接的组件。我希望现在很清楚。

【问题讨论】:

  • 权重是否受到限制(例如所有非负数)?如果所有的权重都是非负的,那么问题就变得微不足道了——也许您想将子图限制为仅由一组边诱导的子图?
  • 所有的权重都是非负的,所有的边都可以考虑。我们如何解决这个问题?
  • 有了这些约束,解决方案很简单:选择所有节点而不选择任何边。边权重 0,节点权重肯定高于 S,除非不可能。
  • 对不起,如果问题不清楚。所有选择的节点必须通过边连接。
  • 您确定要说“强连通分量”而不是“强连通子图”吗?强连通分量是最大的,并且有有效的算法可以找到这些。

标签: algorithm graph time-complexity graph-algorithm


【解决方案1】:

我认为这个问题是 NP-hard 通过从 Steiner 树问题简化而来的。给定一个图 G 和一组需要跨越的节点 S,将 S 中所有节点的权重设置为 1,将所有其他节点的权重设置为 0。节点权重至少为 |S| 的子图具有最小总边成本的必须是一棵树(如果有任何循环,从循环中删除一条边只会降低成本)并且必须连接所有需要跨越的节点。因此,它是一棵施泰纳树。总的来说,这种减少可以在多项式时间内计算出来,所以你的问题是 NP-hard。

【讨论】:

  • 从更新来看,似乎不需要连接解决方​​案——因此这个问题的解决方案可能是森林而不是生成树,因此不是施泰纳问题的解决方案。
  • @DanielWagner 这个问题仍然是关于连接子图的——也许我错过了什么?
  • 是的,你是对的 - 自从我写了我的评论以来,已经有了进一步的澄清。道歉!
  • @templatetypedef 有没有解决这个问题的动态编程方法?
  • @Sashank 我不知道,尽管有很好的 Steiner 树近似算法以防万一。
猜你喜欢
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多