管理运筹学——匈牙利法
- 格式:doc
- 大小:12.50 KB
- 文档页数:1
第一步:效率矩阵的初始变换----零元素的获得
(1)行变换:找出每行的最小元素,该行各元素减去这个最小元素。
(2)列变换:找出每列的最小元素,该列各元素减去这个最小元素。
经变换后的效率矩阵,其每行、每列至少有一个零元素。
第二步:最优性检验
检查能否找到m个位于不同行、不同列的零元素,即检查覆盖所有零元素的直线是否为m条
(1)逐行检查:从第一行开始,如果该行只有一个零元素,就在这个
零元素上打上括号,并划去打括号零元素同列的其他零元素。
如果该行没有零元素,或有两个或多个零元素(已划去的不记在
内),则转下行
(2)逐列检查:依照行检查的方法从第一列开始逐列检查。
最优性检验后可能可能出现的情况
①每行都有一个零元素标有括号,显然这些括号零在不同行
和不同列,因此得到最优解。
②每行、每列都有两个或更多的零,这是从剩有零元素最少的
行开始,比较这行各零元素所在列中零元素的个数,选择零
元素少的那列的这个零元素打括号,划掉同行同列的其他零
元素,然后重复以上步骤,直到所有零都做了标记。
③矩阵中所有零都做了标记,但标有()的零元素个数少于
m,此时就可以找出能覆盖矩阵中所有零元素的最少直线的
集合。
步骤如下:
步骤如下:
对无()的行打√
对打√行上所有零元素的列打√
在打√的列上有()的行打√
重复步骤,直到过程结束
对没有打√的行划横线,对所有打√的列划垂线,这时得
到覆盖矩阵中所有零的最少直线数
第三步:非最优阵的变换——零元素的移动
当表中的覆盖所有零的直线数小于m时,得到的不是最优解,因此需要对表中矩阵进一步进行变换,过程如下:
①在未被直线覆盖的所有元素中找出最小元素
②所有未被直线覆盖的元素都减去这个最小元素
③覆盖线十字交叉处的元素都加上这个最小元素
④只有一条直线覆盖的元素的值保持不变。
由此,得到新的效率矩阵,以此更易标出m个不同的行和列的零元素。
第四步:重新标号
抹掉原来的标号,回到最优性检验,并进行重新标号,直到得到最优解7 9 10 12
13 12 16 17
15 16 14 15
11 12 15 16