具有约束的二分图中的最大权重匹配

时间:2012-06-13 21:05:11

标签: algorithm graph bipartite

假设我们有两组:A =(a_1,a_2,...,a_m)和B =(b_1,b_2,...,a_n)(不一定具有相同的大小)。函数F为从集合A到集合B的每个链路分配权重:F:A * B-> R。因此,例如,F(a_1,b_1)= 2表示a_1和b_1之间的链接权重为2。 问题是将集合A的元素连接到集合B的元素,以便最大化满足这些约束的链接权重之和:

  • 集合A的元素必须与集合B中的一个元素完全匹配。
  • 允许集合B的元素具有零个或多个匹配(0,1,2 ...),但是对于B的元素存在对权重之和C_i的约束。即,如果我们选择连接a_1对于b_1和a_2至b_1,权重F(a_1,b_1)+ F(a_2,b_1)的总和应小于或等于C_1。这个约束适用于B的所有元素。

我已经搜索了一些想法,我研究了分配问题和匈牙利算法。另外一点是,这些都不考虑我的第二个约束。您对如何解决这个问题有任何想法吗?

由于

1 个答案:

答案 0 :(得分:4)

这是NP难的。

取一个子集和实例{x 1 ,x 2 ,...,x n },其中x &gt; 0和数字k。创建一个二分图,其中左顶点为{a 1 ,...,a n },右顶点为{b 1 ,b < sub> 2 },并且:

F(a i ,b 1 )= x i

F(a i ,b 2 )= 0

C 1 = k

C 2 = 0

因此,您可以通过将 i 与b 1 连接来取数字x i ,并通过连接b 保留它2 。显然,如果子集求和实例有解,则存在权重k匹配。