如何将其转换为图算法?

时间:2016-09-17 05:51:09

标签: algorithm

给定一组节点A和一组节点B,其中A中的每个节点仅连接到B中的一个节点。现在我想在A中选择连接到B中每个节点的最小节点集。 ,而每个选定的节点都无法相互连接。

我相信有一种解决这个问题的方法可能是匹配的,独立的设置或其他什么。

1 个答案:

答案 0 :(得分:0)

虽然我还没能证明我的算法是正确的,但我还是把它放在这里。

如果A中的节点之间没有边缘,那么这将是一个二分图匹配问题。现在这已成为一个二分图匹配问题,如果选择了A中的某个节点,它可能会取消A中其他节点的限制。

为了便于观察,想象一侧的A和另一侧的B,类似于为二分匹配绘制的视觉效果。现在,在A和B之间添加另一组节点C.在C中添加节点的条件如下:

  • 如果A中有一个节点(比如a),A中没有边缘,请在C中创建一个新节点(比如c),将a加入c },并将B中a的所有相应节点加入c
  • 如果A(a1a2)中有两个共享边缘的节点,请在C(c)中创建一个新节点并从a1创建边缘从ca2c,从c到B中的所有相应节点。

现在我们可以使用Max-Flow算法来获得所需的输出。我们应该将C中每个节点的节点容量设置为1(实现这一目的的方法是创建另一个中间层D,它是C的副本,边缘容量等于1,用于C和D之间的边缘)

任何有助于证明严格或任何反例的帮助都会有所帮助。