假设我们有两组: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的元素,以便最大化满足这些约束的链接权重之和:
我已经搜索了一些想法,我研究了分配问题和匈牙利算法。另外一点是,这些都不考虑我的第二个约束。您对如何解决这个问题有任何想法吗?
由于
答案 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匹配。