四人分别完成四项工作所用时间 :
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 |
甲
乙
丙
丁
戊
先写出指派问题的系数矩阵 :
使每行都出现
元素 :
系数矩阵中 , 每行都 减去该行最小元素 ;
行减去最小值
;
行减去最小值
;
行减去最小值
;
行减去最小值
;
行减去最小值
;
此时发现有两列 , 第
列 , 第
列 , 没有
元素 , 这两列每列都减去最小值 :
列减去最小值
;
列减去最小值
;
最终得到行列都有
元素的系数矩阵
:
基于上一步的行列都有
元素的系数矩阵 ,
进行试指派 ;
找出每行的独立
元素 ,
优先从唯一选择开始 ,
第
行只有
个
元素 , 该元素是独立
元素 ( 红色矩形框 ) , 位于第
列 ;
同时第
列中的其它
元素标记为 废弃
元素 ( 绿色矩形框 );
第
行只有
个
元素 , 该元素是独立
元素 ( 红色矩形框 ) , 位于第
列 ;
同时第
列中的其它
元素标记为 废弃
元素 ( 绿色矩形框 );
第
行中原来有两个
元素 , 有一个被标记为 废弃
元素 , 因此只剩下一个
元素 , 标记为独立
元素 ;
第
行没有独立
元素 , 第
行都有多个
元素 ;
然后从列里面找独立
元素 , 第
列都已经找到了
元素 , 这里看 第
列 ;
第
列有 独立
元素 ( 红色矩形框 ) ; 位于第
行 , 将第
行的其它
元素标记为 废弃
元素 ( 绿色矩形框 ) ;
这里只找到了
个独立
元素 , 红色矩形框中 ;
使用最少的直线 , 覆盖所有的
元素 ;
本步骤的目的是使用最少的直线 , 将所有的
元素都覆盖住 , 如果能一眼看出来最好 , 如果不能 , 就需要使用打钩的方法 ;
定位一个没有独立
元素的行 : 先对没有
元素的行打钩 √ : 第
行没有独立
元素 , 第
行打 √ ;
讨论第
行 : 第
行没有独立的
元素 , 但是有废弃的
元素 , 因为在第一步已经保证了每行每列都有
元素 ;
在第
行 的 废弃
元素所在列 , 即第
列 , 打 √ ;
讨论第
列 : 上述打钩的列中 , 查看是否有 独立的
元素 , 如果有对应的行就打 √ ;
第
行有独立的
元素 , 在第
行位置打 √ ;
讨论第
行 : 查看第
行是否有废弃的
元素 , 如果有就继续打 √ , 如果没有就停止 ;
第
行没有废弃的
元素 , 直接停止 ;
讨论 行 的时候讨论的是 废弃的
元素 ,
讨论 列 的时候讨论的是 独立的
元素 ;
本步骤的目的是使用最少的直线 , 将所有的
元素都覆盖住 , 如果能一眼看出来最好 , 如果不能 , 就需要使用打钩的方法 ;
打 √ 完毕 , 开始讨论覆盖 ,
没有 打 √ 的行划线 , 打 √ 的列划线 , 四条线就将所有的
元素覆盖了 ,
在没有被覆盖的元素中 , 找最小的元素
, 将该元素所在的没有覆盖的行
, 覆盖的列
;
第
行中的元素
, 第
列中的元素
;
最终得到如下矩阵 :
本质 : 没有覆盖的元素统一减去最小值 , 被覆盖的行列交叉值增加了该最小元素值 ;
再次进行试指派此时发现 , 试指派还是
个独立
元素 ,
先找有独立
元素的行 , 找到后 标记为 独立
元素 ( 红色矩形框 ) , 将对应列的
元素标记为废弃 ( 绿色矩形框 ) ;
然后找有独立
元素的列 ;
再次执行 打 √ ,
没有
元素的行为起点 :
将该行废弃
元素列打钩 , 有两个 :
将废弃
元素列中对应的 独立
元素 行 打钩 :
上述两行对应的 废弃
元素的列打钩 :
在上述打钩的列中 , 将独立
元素所在行打钩 :
直线覆盖 : 没打勾的行画一条直线 , 打钩的列画一条直线 ; 目的是使用最少的直线覆盖住所有的
;
在没有被覆盖的元素中 , 找最小的元素
, 将该最小元素所在的没有覆盖的行
, 覆盖的列
;
第
行中的元素
, 第
列中的元素
;
最终矩阵为 :
本质 : 没有覆盖的元素统一减去最小值 , 被覆盖的行列交叉值增加了该最小元素值 ;
这个矩阵
很多 , 选出
个独立
元素 , 成立的解有好多个 ;
如下指派 , 正好能找出
个独立
元素 ;