匈牙利算法 - 二分图方法



我一直在理解这里概述的匈牙利算法时遇到一些困难。 对我来说,这似乎是不完整和/或错误的。 主要问题是行:

如果 R_T ^ Z 为非空,则反转有向的方向 路径...

我们如何知道选择哪条路径作为"路径"? 如果我们选择了错误的路径,我们如何恢复? 这似乎是一种单调赋值算法,因为我们只能创建新的赋值,但永远不能删除或更改现有赋值。

假设我们有一个简单的例子 S = {A, B}, T = {W, X},权重为 AW: 2, AX: 2, BW: 6, BX: 4。 我们如何选择是首先将AW还是AX添加到映射中,或者如何从错误的选择中恢复?

我更熟悉矩阵解释,但它看起来确实有点缺失。

我们如何知道选择哪条路径作为"路径"?

只需选择一个;哪个并不重要(只要它在RT中)。在这一点上,它们都应该是等效的。

如果我们选择了错误的路径,我们如何恢复?这似乎是一种单调赋值算法,因为我们只能创建新的赋值,但永远不能删除或更改现有赋值。

这是缺少的部分,由于我对图形方法不太熟悉,因此我无法确切地告诉您如何做到这一点,但是允许更改现有分配。缺少的选项是,您可以将现有分配交换到成本相等的未分配边,从而允许您进行新分配。更难的部分是找到要交换的边缘,使其不会与任何其他分配冲突,并且通过进行此交换,您可以进行新分配。

最新更新