用于在加权二分图上找到最优匹配的快速算法

时间:2012-09-16 13:06:04

标签: algorithm optimization graph-algorithm

我需要有效地解决分配问题(给定一个完整的加权二分图,选择最大总重量的完美匹配),并且我一直在使用这里的http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=hungarianAlgorithm的O(n ^ 3)版本。然而,我读过的一篇论文在“密集和稀疏线性分配问题的最短增强路径算法”中提到了一种“更有效的方法”,这是一个付费墙背后的遗憾。有没有我应该注意的更快的算法(渐近,或者只是更小的常数/更均匀的内存访问或其他什么)?我正在使用浮点权重而不是整数权重,这对于匈牙利方法似乎并不重要,但对于更快的整数实现可能是一个问题。非常感谢任何相关链接。

2 个答案:

答案 0 :(得分:5)

有一些论文有加权快速算法 二分图。

最近的一篇论文Ramshaw和Tarjan,2012"关于非平衡二分图中的最小成本分配"提出了一种名为FlowAssign和Refine的算法,它解决了最小成本,非平衡,二分分配问题,并使用权重缩放来解决完美和不完美的分配问题,但不是增量的运行时复杂性 O(m * sqrt(n)* log(n * C))  其中m是图中的边数(a.k.a.弧),  n是要匹配的两个图中的最大节点数,  C是大于或等于最大值的常数  边缘重量大于或等于1.

权重缩放是允许算法实现的  关于s,性能要好得多  其中s是匹配节点的数量。

其他快速解决方案可以在1990年代早期找到。 1993年的一篇论文叫做#34; QuickMatch:一种非常快速的算法 作业问题"由李和奥林 提出了一种他们估计运行时的算法 有效线性 弧的图形大小。 http://jorlin.scripts.mit.edu/docs/publications/WP4-quickmatch.pdf

QuickMatch算法将分配问题解决为 n个最短路径问题的序列。他们使用交替 源节点和目标节点之间的最短路径 与启发式一起减少计算次数。 作者估算了平均运行时复杂度 实证结果与理论界限的比较 算法。他们发现他们的算法与数字是线性的 图边缘(a.k.a. arcs),但算法是 不像"正向反向拍卖那样高效。 Bertsekas的算法也使用 交替的最短路径。以后的参考 没有印在纸上,但可能在 "针对分配问题的反向拍卖算法", Castanon,1992, MACS Seris in Discrete Mathematics and Computer Science

还有Berkeley分割的算法 基准代码用于在评估分割结果期间与人类绘制边界相比的二分匹配。 http://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/ 他们使用Goldberg CSA包 http://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/code/CSA++/ 据报道,其运行时与图形大小呈线性关系 并解决稀疏的最低成本分配问题。 参考文献是 "分配问题的有效成本缩放算法",1993 由戈德堡和肯尼迪 和Cherkassky和Goldberg,"关于实施PushRelabel 最大流量问题的方法," PROC。第四 整数规划和组合优化配置,第157页 - 171,1995年5月。

答案 1 :(得分:0)

它可以平均转换为最小成本最大流量问题,您可以查看。

AFAIK,匈牙利人是最快的。