为了在分配问题中找到最佳解决方案,使用匈牙利算法很容易。例如:
A | 3 4 2
B | 8 9 1
C | 7 9 5
在此使用匈牙利算法时,您将成为:
A | 0 0 1
B | 5 5 0
C | 0 1 0
这意味着 A 被分配给“工作”2,B 被分配给工作 3,C 被分配给工作 1。但是,我想找到第二好的解决方案,这意味着我想要成本严格高于最优解决方案成本的最佳解决方案. 根据我的说法,我只需要在最后一个矩阵中找到具有最小和的分配,而不是与最优相同。我可以通过在树中搜索(修剪)来做到这一点,但我担心复杂性(O(n!))。有什么我不知道的有效方法吗?
我正在考虑一种搜索,首先对行进行排序,然后贪婪地首先选择最低成本,假设大多数最低成本将弥补最小总和 + 修剪。但是假设匈牙利算法可以产生一个有很多零的矩阵,那么复杂性又是可怕的......