【问题标题】:Find dominating set of vertices on one side of bipartite graph在二分图的一侧找到支配的顶点集
【发布时间】:2014-05-13 22:01:49
【问题描述】:

我有一个像这里这样的二分图

我试图在图的右侧找到最小的节点集,以便图左侧的每个节点都连接到图右侧的一个节点。对于上面的图表,看起来像这样。

我不太确定我该怎么做。我有一种感觉,它类似于图论或基础 CS 中的一些常见问题,并且通过一些转换就等同于已知解决方案的问题。

【问题讨论】:

  • 我意识到我的标题非常模糊,但我想不出一个能更好地解释我的问题的标题。我愿意接受有关更好标题的建议。
  • 所以链接 p1 -> c1 and p2 -> c2 and p3 -> c3 and p4 -> c4 and p5 -> c5 and p1, p2, p3 -> c6 and p1, p4, p5 -> c7,最好的解决方案是,例如,c4、c5、c6(而不是 c6、c7)?

标签: algorithm graph


【解决方案1】:

您的问题是 NP-hard,因为 set cover problem(或者更确切地说,正如 David 所说,exact cover problem)可以简化为它。一种简单的指数时间算法适用于节点子集上的动态规划。它可以在 O(2^m * n) 的时间内实现,其中 m 是左侧的节点数,n 是右侧的节点数。

基于 Branch & Bound 的算法在实践中可能更有效。

【讨论】:

    【解决方案2】:

    “图左侧的每个节点都连接到图右侧的一个节点”这听起来像是一个精确覆盖问题,它增加了包装约束来设置覆盖。它也是 NP 难的,我对精确覆盖的整数编程不如集合覆盖那么乐观,尽管值得一试。 Knuth 的Algorithm X 可能在精确封面上比固定封面效果更好,所以也值得一试。

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多