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

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

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




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

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

( c i j ) = [ 2 15 13 4 10 4 14 15 9 14 16 13 7 8 11 9 ] (c_{ij}) =\begin{bmatrix} & 2 & 15 & 13 & 4 & \\\\ & 10 & 4 & 14 & 15 & \\\\ & 9 & 14 & 16 & 13 & \\\\ & 7 & 8 & 11 & 9 & \\ \end{bmatrix} (cij)=2109715414813141611415139


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

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

( c i j ′ ) = [ 0 13 11 2 6 0 10 11 0 5 7 4 0 1 4 2 ] (c_{ij}') =\begin{bmatrix} & 0 & 13 & 11 & 2 & \\\\ & 6 & 0 & 10 & 11 & \\\\ & 0 & 5 & 7 & 4 & \\\\ & 0 & 1 & 4 & 2 & \\ \end{bmatrix} (cij)=06001305111107421142


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

  • 3 3 3 列减去最小值 4 4 4 ;
  • 4 4 4 列减去最小值 2 2 2 ;

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

( b i j ) = [ 0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0 ] (b_{ij}) =\begin{bmatrix} & 0 & 13 & 7 & 0 & \\\\ & 6 & 0 & 6 & 9 & \\\\ & 0 & 5 & 3 & 2 & \\\\ & 0 & 1 & 0 & 0 & \\ \end{bmatrix} (bij)=06001305176300920





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

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

( b i j ) = [ 0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0 ] (b_{ij}) =\begin{bmatrix} & 0 & 13 & 7 & 0 & \\\\ & 6 & 0 & 6 & 9 & \\\\ & 0 & 5 & 3 & 2 & \\\\ & 0 & 1 & 0 & 0 & \\ \end{bmatrix} (bij)=06001305176300920

进行试指派 ;


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

优先从唯一选择开始 ,

2 2 2 行只有 1 1 1 0 0 0 元素 , 该元素是独立 0 0 0 元素 ;

【运筹学】匈牙利法 ( 匈牙利法示例 )_匈牙利法

3 3 3 行只有 1 1 1 0 0 0 元素 , 该元素是独立 0 0 0 元素 ( 红色矩形框 ) , 位于第 1 1 1 列 ; 同时第 1 1 1 列中的其它 0 0 0 元素标记为 废弃 0 0 0 元素 ( 绿色矩形框 );

【运筹学】匈牙利法 ( 匈牙利法示例 )_匈牙利法_02

1 1 1 行和第 4 4 4 行都有多个 0 0 0 元素 ;

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

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

【运筹学】匈牙利法 ( 匈牙利法示例 )_整数规划问题_03

4 4 4 列有 独立 0 0 0 元素 ( 红色矩形框 ) ; 位于第 1 1 1 行 , 将第 1 1 1 行的其它 0 0 0 元素标记为 废弃 0 0 0 元素 ( 绿色矩形框 ) , 已经标记过了 , 不用再进行标记 ;

【运筹学】匈牙利法 ( 匈牙利法示例 )_匈牙利法_04

这里第一次指派就找到了最优解 ;