当前位置:   article > 正文

【运筹学】匈牙利法 ( 匈牙利法示例 2 | 第一步 : 变换系数矩阵 | 第二步 : 试指派 | 行列打√ | 直线覆盖 | 第二轮试指派 )

匈牙利法





一、使用匈牙利法求解下面的指派问题



四人分别完成四项工作所用时间 :

A A A B B B C C C D D D
7 7 7 15 15 15 13 13 13 4 4 4
9 9 9 4 4 4 14 14 14 15 15 15
8 8 8 14 14 14 16 16 16 13 13 13
7 7 7 8 8 8 11 11 11 9 9 9
4 4 4 8 8 8 11 11 11 9 9 9




二、第一步 : 变换系数矩阵 ( 每行每列都出现 0 元素 )



先写出指派问题的系数矩阵 :

( c i j ) = [ 7 5 9 8 11 9 12 7 11 9 8 5 4 6 9 7 3 6 9 6 4 6 7 5 11 ] (c_{ij}) =

[75981191271198546973696467511]
(cij)=79874512536974678116951199611


使每行都出现 0 0 0 元素 : ( c i j ) (c_{ij}) (cij) 系数矩阵中 , 每行都 减去该行最小元素 ;

  • 1 1 1 行减去最小值 5 5 5 ;
  • 2 2 2 行减去最小值 7 7 7 ;
  • 3 3 3 行减去最小值 4 4 4 ;
  • 4 4 4 行减去最小值 3 3 3 ;
  • 5 5 5 行减去最小值 4 4 4 ;

( c i j ′ ) = [ 2 0 4 3 6 2 5 0 4 2 4 1 0 2 5 4 0 3 6 3 0 2 3 1 7 ] (c_{ij}') =

[2043625042410254036302317]
(cij)=2244005102400333426162537


此时发现有两列 , 第 4 4 4 列 , 第 5 5 5 列 , 没有 0 0 0 元素 , 这两列每列都减去最小值 :

  • 4 4 4 列减去最小值 1 1 1 ;
  • 5 5 5 列减去最小值 2 2 2 ;

最终得到行列都有 0 0 0 元素的系数矩阵 ( b i j ) (b_{ij}) (bij) :

( b i j ) = [ 2 0 4 2 4 2 5 0 3 0 4 1 0 1 3 4 0 3 5 1 0 2 3 0 5 ] (b_{ij}) =

[2042425030410134035102305]
(bij)=2244005102400332315040315





三、第二步 : 试指派 ( 找独立 0 元素 )



基于上一步的行列都有 0 0 0 元素的系数矩阵 ,

( b i j ) = [ 2 0 4 2 4 2 5 0 3 0 4 1 0 1 3 4 0 3 5 1 0 2 3 0 5 ] (b_{ij}) =

[2042425030410134035102305]
(bij)=2244005102400332315040315

进行试指派 ;


找出每行的独立 0 0 0 元素 ,

优先从唯一选择开始 ,


1 1 1 行只有 1 1 1 0 0 0 元素 , 该元素是独立 0 0 0 元素 ( 红色矩形框 ) , 位于第 2 2 2 列 ;

同时第 2 2 2 列中的其它 0 0 0 元素标记为 废弃 0 0 0 元素 ( 绿色矩形框 );

在这里插入图片描述

3 3 3 行只有 1 1 1 0 0 0 元素 , 该元素是独立 0 0 0 元素 ( 红色矩形框 ) , 位于第 3 3 3 列 ;

同时第 3 3 3 列中的其它 0 0 0 元素标记为 废弃 0 0 0 元素 ( 绿色矩形框 );

在这里插入图片描述

2 2 2 行中原来有两个 0 0 0 元素 , 有一个被标记为 废弃 0 0 0 元素 , 因此只剩下一个 0 0 0 元素 , 标记为独立 0 0 0 元素 ;

在这里插入图片描述


4 4 4 行没有独立 0 0 0 元素 , 第 5 5 5 行都有多个 0 0 0 元素 ;

然后从列里面找独立 0 0 0 元素 , 第 2 , 3 , 5 2,3,5 2,3,5 列都已经找到了 0 0 0 元素 , 这里看 第 1 , 4 1,4 1,4 列 ;

1 1 1 列有 独立 0 0 0 元素 ( 红色矩形框 ) ; 位于第 5 5 5 行 , 将第 5 5 5 行的其它 0 0 0 元素标记为 废弃 0 0 0 元素 ( 绿色矩形框 ) ;

在这里插入图片描述


这里只找到了 4 4 4 个独立 0 0 0 元素 , 红色矩形框中 ;

使用最少的直线 , 覆盖所有的 0 0 0 元素 ;





四、第二步 : 试指派 ( 打 √ )



本步骤的目的是使用最少的直线 , 将所有的 0 0 0 元素都覆盖住 , 如果能一眼看出来最好 , 如果不能 , 就需要使用打钩的方法 ;


定位一个没有独立 0 0 0 元素的行 : 先对没有 0 0 0 元素的行打钩 √ : 第 4 4 4 行没有独立 0 0 0 元素 , 第 4 4 4 行打 √ ;

在这里插入图片描述

讨论第 4 4 4 行 : 4 4 4 行没有独立的 0 0 0 元素 , 但是有废弃的 0 0 0 元素 , 因为在第一步已经保证了每行每列都有 0 0 0 元素 ;

在第 4 4 4 行 的 废弃 0 0 0 元素所在列 , 即第 2 2 2 列 , 打 √ ;

在这里插入图片描述

讨论第 2 2 2 列 : 上述打钩的列中 , 查看是否有 独立的 0 0 0 元素 , 如果有对应的行就打 √ ;

1 1 1 行有独立的 0 0 0 元素 , 在第 1 1 1 行位置打 √ ;

在这里插入图片描述


讨论第 1 1 1 行 : 查看第 1 1 1 行是否有废弃的 0 0 0 元素 , 如果有就继续打 √ , 如果没有就停止 ;

1 1 1 行没有废弃的 0 0 0 元素 , 直接停止 ;


讨论 的时候讨论的是 废弃的 0 0 0 元素 ,

讨论 的时候讨论的是 独立的 0 0 0 元素 ;





五、第二步 : 试指派 ( 直线覆盖 )



本步骤的目的是使用最少的直线 , 将所有的 0 0 0 元素都覆盖住 , 如果能一眼看出来最好 , 如果不能 , 就需要使用打钩的方法 ;


打 √ 完毕 , 开始讨论覆盖 ,

没有 打 √ 的行划线 , 打 √ 的列划线 , 四条线就将所有的 0 0 0 元素覆盖了 ,

在这里插入图片描述

在没有被覆盖的元素中 , 找最小的元素 1 1 1 , 将该元素所在的没有覆盖的行 − 1 -1 1 , 覆盖的列 + 1 +1 +1 ;

1 , 4 1, 4 1,4 行中的元素 − 1 -1 1, 第 2 2 2 列中的元素 + 1 +1 +1 ;

最终得到如下矩阵 :

( b i j ) = [ 1 0 3 1 3 2 6 0 3 0 4 2 0 1 3 3 0 2 4 0 0 3 3 0 5 ] (b_{ij}) =

[1031326030420133024003305]
(bij)=1243006203300231314030305


本质 : 没有覆盖的元素统一减去最小值 , 被覆盖的行列交叉值增加了该最小元素值 ;






五、第二步 : 试指派 ( 第二轮 )



再次进行试指派此时发现 , 试指派还是 4 4 4 个独立 0 0 0 元素 ,

先找有独立 0 0 0 元素的行 , 找到后 标记为 独立 0 0 0 元素 ( 红色矩形框 ) , 将对应列的 0 0 0 元素标记为废弃 ( 绿色矩形框 ) ;

然后找有独立 0 0 0 元素的列 ;

在这里插入图片描述

再次执行 打 √ ,

没有 0 0 0 元素的行为起点 :

在这里插入图片描述

将该行废弃 0 0 0 元素列打钩 , 有两个 :

在这里插入图片描述

将废弃 0 0 0 元素列中对应的 独立 0 0 0 元素 行 打钩 :

在这里插入图片描述

上述两行对应的 废弃 0 0 0 元素的列打钩 :

在这里插入图片描述

在上述打钩的列中 , 将独立 0 0 0 元素所在行打钩 :

在这里插入图片描述

直线覆盖 : 没打勾的行画一条直线 , 打钩的列画一条直线 ; 目的是使用最少的直线覆盖住所有的 0 0 0 ;

在这里插入图片描述

在没有被覆盖的元素中 , 找最小的元素 1 1 1 , 将该最小元素所在的没有覆盖的行 − 1 -1 1 , 覆盖的列 + 1 +1 +1 ;

1 , 2 , 3 , 4 1, 2,3,4 1,2,3,4 行中的元素 − 1 -1 1, 第 2 , 3 , 4 2,3,4 2,3,4 列中的元素 + 1 +1 +1 ;

最终矩阵为 :

( b i j ) = [ 0 0 3 0 3 1 6 0 2 0 3 2 0 0 3 2 0 2 3 0 0 4 4 0 6 ] (b_{ij}) =

[0030316020320032023004406]
(bij)=0132006204300240203030306


本质 : 没有覆盖的元素统一减去最小值 , 被覆盖的行列交叉值增加了该最小元素值 ;


这个矩阵 0 0 0 很多 , 选出 5 5 5 个独立 0 0 0 元素 , 成立的解有好多个 ;


如下指派 , 正好能找出 5 5 5 个独立 0 0 0 元素 ;
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/663521
推荐阅读
相关标签
  

闽ICP备14008679号