关于Kuhn-Munkres算法矩阵调整步骤的疑问
Kuhn-Munkres算法矩阵调整步骤的原理与必要性疑问
在众多Kuhn-Munkres算法的实现中,常能看到如下矩阵调整的代码片段:
//minval is the minimum of the uncovered items if (row_covered_[i]) { cost_matrix_(i, j) += minval; } if (!col_covered_[j]) { cost_matrix_(i, j) -= minval; }
我理解给未被覆盖的行列交叉元素减去最小值是为了生成新的零元素,但完全搞不懂为什么要给row_covered=1且col_covered=1的元素加上这个最小值。结合算法运行示意图(图12找到最小值1,图13将其加到矩阵左上角),我觉得这段代码应该改成这样:
//minval is the minimum of the uncovered items if (!row_covered[i] && !col_covered_[j]) { cost_matrix_(i, j) -= minval; }
特此询问该矩阵调整步骤的原理及必要性。
内容的提问来源于stack exchange,提问作者cooronx
相关产品推荐
相关产品推荐

