【发布时间】:2011-05-07 14:34:22
【问题描述】:
关于如何实现一个有效的算法(优于 O(n2))来解决非二分图中的分配问题有什么想法吗?
主要思路如下:
我有两个相同的集合,比如说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(n2) 中设计了一个太慢的贪婪解决方案。
集合的大小通常是小(5-10)个元素。
【问题讨论】:
-
两套有什么意义?
-
您的成本清单与示例中的分配不匹配。也许缺少一些解释
-
你是对的(擦除错误:P)。我刚刚编辑了费用清单
-
4 或 5 项的 O(n^2) 有多慢?
-
因为可以有许多边连接节点(元素)。另外,算法执行了很多次(需要很多不同的赋值),总之O(n^2)会影响整体性能
标签: algorithm search graph variable-assignment graph-theory