我在二分图中搜索最大重量/最小成本匹配的
Python代码.我一直在使用NetworkX中的一般情况下最大重量匹配代码,但是我发现我的需求太慢了.这可能是由于通用算法较慢的事实,以及NetworkX解决方案完全在Python中实现的事实.理想情况下,我想找到一些Python代码,用于包含一些C/C++代码的二分法匹配问题,但现在,比NetworkX实现更快的事情将会有所帮助.
解决方法
经过进一步的调查,我发现以下两个模块特别有用(
http://pypi.python.org/pypi/pyLAPJV/0.3和
http://pypi.python.org/pypi/hungarian).它们都是使用Python绑定在C中实现的算法,并且运行速度比NetworkX匹配实现要快得多.但是,pyLAPJV实现似乎对我的需求来说有点太过分了,并且不能很好地处理相同加权的边.匈牙利语模块(虽然据说比pyLAPJV算法慢)比我正在处理的数据大小上的NetworkX实现速度大约3个数量级.我还要再次看看kunigami建议的代码,因为我相信它可以很容易地通过Shedskin运行,从而给出一个相当快的实现.