匈牙利法的基本思路:对费用矩阵C的行和列减去某个常数,将C化为有n个位于不同行不同列的零元素,令这些零元素对应的变量取1,其余变量取0,即得到指派问题的最优解。
匈牙利法是基于指派问题的标准型的,标准型需满足以下3个条件:
(1)目标函数求min;
(2)效率矩阵为n阶方阵;
(3)效率矩阵中所有元素Cij≥0,且为常数。
匈牙利法的计算步骤:
(1)变换效率矩阵C,使每行每列至少有一个0,变换后的矩阵记为B
- 行变换:找出每行min值,该行各元素减去它;
- 列变换:找出每列min值,该列各元素减去它;
- 若某行/列已有0元素,则不用减。
(2)
(3)如果○的个数少于n,则进行这一步。
- 对没有圈○的行打“√”;
- 在已打“√”的行中,对×所在列打“√”ÿ