成本最低的非二分配问题

时间:2010-11-10 00:19:09

标签: algorithm search graph variable-assignment graph-theory

如何实现有效算法(优于O(n 2 ))以解决非二分图中的赋值问题的任何想法?

主要想法如下:

我有两个相同的集合,例如S1 = [A,B,C,D]S2 = [A,B,C,D],并且集合的不同元素之间存在一些边缘,具有给定的成本,例如A->B (cost 4)B->C (cost 3)C->A (cost 10)D->A (cost 6)

我想找到最佳分配方式,以便:分配的元素数量最大,总成本最低。 (分配的元素数量更重要)。

因此,对于此示例,最佳分配将是:

A->D (cost 6)  
B->C (cost 3)  

[A,B,C,D]已分配,费用最低:9

另一个,但不是最好的将是:

A->B (cost 4)  

其余部分无法分配,因为A已被分配,因此分配不是最大值

我在O(n 2 )中设计了一个太慢的贪婪解决方案。

集合的大小通常很小(5-10)个元素。

2 个答案:

答案 0 :(得分:1)

我假设您有一个无向图,并且您希望选择最大边数,以便在同一节点上没有两个边入射(节点=描述中的set元素)。您还希望使用所选边的最小总成本来打破关系。如果这不符合您的要求,请告诉我。

创建上面一个的双重图形(每个原始边缘一个节点,如果相应的原始边缘入射到同一个顶点,则连接两个节点)。然后,您正在寻找双节点的maximum independent set。不幸的是,这是一个NP难题。这只是最大边数,使用权重打破关系可能稍微困难一些。幸运的是,你的N是5-10,所以你可以蛮力。

答案 1 :(得分:1)

听起来你想要一个最大的非二分匹配:12

该算法很难实现,我没有看到任何实现,特别是如果你想要最低成本。对于这么小的输入,在我看来你最好强制它。

你是如何用贪心算法解决的?你确定它有效吗?