给定一组节点A和一组节点B,其中A中的每个节点仅连接到B中的一个节点。现在我想在A中选择连接到B中每个节点的最小节点集。 ,而每个选定的节点都无法相互连接。
我相信有一种解决这个问题的方法可能是匹配的,独立的设置或其他什么。
答案 0 :(得分:0)
虽然我还没能证明我的算法是正确的,但我还是把它放在这里。
如果A中的节点之间没有边缘,那么这将是一个二分图匹配问题。现在这已成为一个二分图匹配问题,如果选择了A中的某个节点,它可能会取消A中其他节点的限制。
为了便于观察,想象一侧的A和另一侧的B,类似于为二分匹配绘制的视觉效果。现在,在A和B之间添加另一组节点C.在C中添加节点的条件如下:
a
),A中没有边缘,请在C中创建一个新节点(比如c
),将a
加入c
},并将B中a
的所有相应节点加入c
。a1
和a2
)中有两个共享边缘的节点,请在C(c
)中创建一个新节点并从a1
创建边缘从c
,a2
到c
,从c
到B中的所有相应节点。现在我们可以使用Max-Flow算法来获得所需的输出。我们应该将C中每个节点的节点容量设置为1(实现这一目的的方法是创建另一个中间层D,它是C的副本,边缘容量等于1,用于C和D之间的边缘)
任何有助于证明严格或任何反例的帮助都会有所帮助。