您好,欢迎访问三七文档
指派问题的匈牙利法求解步骤:1)变换指派问题的系数矩阵(cij)为(bij),使在(bij)的各行各列中都出现0元素,即从(cij)的每行元素都减去该行的最小元素;再从所得新系数矩阵的每列元素中减去该列的最小元素。2)进行试指派,以寻求最优解。在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以这n个独立0元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优解。找独立0元素,常用的步骤为:从只有一个0元素的行开始,给该行中的0元素加圈,记作◎。然后划去◎所在列的其它0元素,记作Ø;这表示该列所代表的任务已指派完,不必再考虑别人了。依次进行到最后一行。从只有一个0元素的列开始(画Ø的不计在内),给该列中的0元素加圈,记作◎;然后划去◎所在行的0元素,记作Ø,表示此人已有任务,不再为其指派其他任务了。依次进行到最后一列。若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,比较这行各0元素所在列中0元素的数目,选择0元素少这个0元素加圈(表示选择性多的要“礼让”选择性少的)。然后划掉同行同列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为止。若◎元素的数目m等于矩阵的阶数n(即:m=n),那么这指派问题的最优解已得到。若mn,则转入下一步。3)用最少的直线通过所有0元素。其方法:对没有◎的行打“√”;对已打“√”的行中所有含Ø元素的列打“√”;再对打有“√”的列中含◎元素的行打“√”;重复①、②直到得不出新的打√号的行、列为止;对没有打√号的行画横线,有打√号的列画纵线,这就得到覆盖所有0元素的最少直线数l。注:l应等于m,若不相等,说明试指派过程有误,回到第2步,另行试指派;若l=mn,表示还不能确定最优指派方案,须再变换当前的系数矩阵,以找到n个独立的0元素,为此转第4步。4)变换矩阵(bij)以增加0元素在没有被直线通过的所有元素中找出最小值,没有被直线通过的所有元素减去这个最小元素;直线交点处的元素加上这个最小值。新系数矩阵的最优解和原问题仍相同。转回第2步。
本文标题:匈牙利解法的步骤
链接地址:https://www.777doc.com/doc-5869692 .html