您好,欢迎访问三七文档
匈牙利算法示例(二)、解题步骤:指派问题是0-1规划的特例,也是运输问题的特例,当然可用整数规划,0-1规划或运输问题的解法去求解,这就如同用单纯型法求解运输问题一样是不合算的。利用指派问题的特点可有更简便的解法,这就是匈牙利法,即系数矩阵中独立0元素的最多个数等于能覆盖所有0元素的最少直线数。第一步:变换指派问题的系数矩阵(cij)为(bij),使在(bij)的各行各列中都出现0元素,即(1)从(cij)的每行元素都减去该行的最小元素;(2)再从所得新系数矩阵的每列元素中减去该列的最小元素。第二步:进行试指派,以寻求最优解。在(bij)中找尽可能多的独立0元素,若能找出n个独立0元素,就以这n个独立0元素对应解矩阵(xij)中的元素为1,其余为0,这就得到最优解。找独立0元素,常用的步骤为:(1)从只有一个0元素的行(列)开始,给这个0元素加圈,记作◎。然后划去◎所在列(行)的其它0元素,记作Ø;这表示这列所代表的任务已指派完,不必再考虑别人了。(2)给只有一个0元素的列(行)中的0元素加圈,记作◎;然后划去◎所在行的0元素,记作Ø.(3)反复进行(1),(2)两步,直到尽可能多的0元素都被圈出和划掉为止。(4)若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,则从剩有0元素最少的行(列)开始,比较这行各0元素所在列中0元素的数目,选择0元素少的那列的这个0元素加圈(表示选择性多的要“礼让”选择性少的)。然后划掉同行同列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为止。(5)若◎元素的数目m等于矩阵的阶数n,那么这指派问题的最优解已得到。若mn,则转入下一步。第三步:作最少的直线覆盖所有0元素。(1)对没有◎的行打√号;(2)对已打√号的行中所有含Ø元素的列打√号;(3)再对打有√号的列中含◎元素的行打√号;(4)重复(2),(3)直到得不出新的打√号的行、列为止;(5)对没有打√号的行画横线,有打√号的列画纵线,这就得到覆盖所有0元素的最少直线数l。l应等于m,若不相等,说明试指派过程有误,回到第二步(4),另行试指派;若l=mn,须再变换当前的系数矩阵,以找到n个独立的0元素,为此转第四步。第四步:变换矩阵(bij)以增加0元素。在没有被直线覆盖的所有元素中找出最小元素,然后打√各行都减去这最小元素;打√各列都加上这最小元素(以保证系数矩阵中不出现负元素)。新系数矩阵的最优解和原问题仍相同。转回第二步。例一:任务人员ABCD甲215134乙1041415丙9141613丁78119911871316149151441041315224104750111006211130249700102350960607130241047501110062111304200102350960607130◎Ø◎ØØ◎◎0100000100101000有一份中文说明书,需译成英、日、德、俄四种文字,分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将中文说明书译成不同语种的说明书所需时间如下表所示,问如何分派任务,可使总时间最少?任务人员ABCD甲67112乙4598丙31104丁5982例二、求解过程如下:第一步,变换系数矩阵:2142289541013895421176)(ijc06733902451009540173340240100454-5第二步,试指派:17334241454◎◎◎ØØ找到3个独立零元素但m=3n=4第三步,作最少的直线覆盖所有0元素:17334241454◎◎◎ØØ√√√独立零元素的个数m等于最少直线数l,即l=m=3n=4;第四步,变换矩阵(bij)以增加0元素:没有被直线覆盖的所有元素中的最小元素为1,然后打√各行都减去1;打√各列都加上1,得如下矩阵,并转第二步进行试指派:62442513430000000100001000011000得到4个独立零元素,所以最优解矩阵为:17334241454◎◎◎ØØ√√√06244251343◎◎◎ØØ156244251343◎◎◎ØØ◎练习:115764戊69637丁86458丙9117129乙118957甲EDCBA费工作用人员43475115764696379645891171291189577132036304520142405263402-1-250320153043101403052424025032015304310140305242402◎Ø◎◎◎ØØ5032015304310140305242402◎Ø◎◎◎ØØ√√√l=m=4n=55032015304310140305242402◎Ø◎◎◎ØØ50330042033102403062313015033004203310240306231301◎Ø◎Ø◎Ø◎Ø√√√5033004203310240306231301√√√√5033004203310240306231301◎Ø◎Ø◎Ø◎Ø√√√√√√√l=m=4n=55033004203310240306231301◎Ø◎Ø◎Ø◎Ø√√√√√√√604400320230023020613030060440032023002302061303006044003202300230206130300◎ØØ◎ØØ◎Ø◎Ø◎此问题有多个最优解286044003202300230206130300◎ØØ◎ØØ◎Ø◎Ø◎6044003202300230206130300◎ØØ◎ØØ◎Ø◎Ø◎用匈牙利法求解下列指派问题,已知效率矩阵分别如下:7910121312161715161415111215163821038729764275842359106910
本文标题:匈牙利算法示例
链接地址:https://www.777doc.com/doc-3633906 .html