我正在尝试实现匈牙利算法。一切都很好,除了矩阵不是正方形时。我搜索过的所有方法都说我应该通过添加虚拟行/列并将其填充为矩阵中的最大数量来使其变为正方形。我的问题是,这不会影响最终结果吗?哑行/列是否应至少填充 max + 1?
?答案 0 :(得分:1)
虚拟值应全部为零。关键是选择哪一个都无关紧要,最终您将忽略这些选择,因为它们不在原始数据中。通过将它们设置为零(开始时),您的算法将不必费劲地寻找不使用的值。
答案 1 :(得分:0)
匈牙利算法的主要思想基于以下事实:“如果从矩阵的任何行或列的所有条目中添加/减去一个数字,作业的最佳分配将保持不变”。因此,将虚拟值用作“ max或max + 1或0”都没有关系。可以将其设置为任意数字,最好设置为0(如 Yay295 所述,如果条目已经为0,则该算法的工作量会减少)