【发布时间】:2017-02-18 05:58:43
【问题描述】:
我对分配问题并不那么精通,并试图找到一种替代 Munkres/匈牙利方法的替代方法,该方法适用于分配问题的变体,其中:
- 某些分配是不允许的
- 可能无法将每个人/行分配给一个分配/列(在这种情况下,我只想进行尽可能多的分配 - 也许通过查找和使用最大的可解矩阵)李>
我已经能够修改 Munkres 实现来处理 #1,但在以下情况下它会崩溃:
[ D, D, 1, D, D, D, D, D]
[ D, D, D, D, 1, D, D, D]
[ 1, D, D, D, D, 1, 1, 1]
[ D, D, D, D, D, 2, 2, 2]
[ D, 1, D, D, D, 3, 3, 3]
[ D, D, 1, 2, 3, D, D, D]
[ D, D, 1, 2, 3, D, D, D]
[ D, D, 1, 2, 3, D, D, D]
# ("D" = disallowed)
最终还是过不去:
[ D, D, 0, D, D, D, D, D]
[ D, D, D, D, 0, D, D, D]
[ 0, D, D, D, D, 0, 0, 0]
[ D, D, D, D, D, 0, 0, 0]
[ D, 0, D, D, D, 0, 0, 0]
[ D, D, 0, 0, 2, D, D, D]
[ D, D, 0, 0, 2, D, D, D]
[ D, D, 0, 0, 2, D, D, D]
我应该使用另一种算法来处理这个问题吗?或者在将其传递给算法之前使用某种算法方法来检测上述无法解决的情况(如果我每次都先运行算法来检测这些情况会变得相当昂贵)?
作为参考,这是我正在使用的代码(在 Python 中): https://github.com/knyte/munkres/blob/master/munkres.py
【问题讨论】:
标签: python algorithm matrix hungarian-algorithm