日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/6/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【运筹学】匈牙利法 ( 匈牙利法示例 2 | 第一步 : 变换系数矩阵 | 第二步 : 试指派 | 行列打√ | 直线覆盖 | 第二轮试指派 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、使用匈牙利法求解下面的指派問題
  • 二、第一步 : 變換系數(shù)矩陣 ( 每行每列都出現(xiàn) 0 元素 )
  • 三、第二步 : 試指派 ( 找獨立 0 元素 )
  • 四、第二步 : 試指派 ( 打 √ )
  • 五、第二步 : 試指派 ( 直線覆蓋 )
  • 五、第二步 : 試指派 ( 第二輪 )





一、使用匈牙利法求解下面的指派問題



四人分別完成四項工作所用時間 :

AAABBBCCCDDD
777151515131313444
999444141414151515
888141414161616131313
777888111111999
444888111111999




二、第一步 : 變換系數(shù)矩陣 ( 每行每列都出現(xiàn) 0 元素 )



先寫出指派問題的系數(shù)矩陣 :

(cij)=[75981191271198546973696467511](c_{ij}) =\begin{bmatrix} & 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 & \\ \end{bmatrix}(cij?)=????????????????79874?512536?97467?811695?1199611?????????????????


使每行都出現(xiàn) 000 元素 : (cij)(c_{ij})(cij?) 系數(shù)矩陣中 , 每行都 減去該行最小元素 ;

  • 111 行減去最小值 555 ;
  • 222 行減去最小值 777 ;
  • 333 行減去最小值 444 ;
  • 444 行減去最小值 333 ;
  • 555 行減去最小值 444 ;

(cij′)=[2043625042410254036302317](c_{ij}') =\begin{bmatrix} & 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 & \\ \end{bmatrix}(cij?)=????????????????22440?05102?40033?34261?62537?????????????????


此時發(fā)現(xiàn)有兩列 , 第 444 列 , 第 555 列 , 沒有 000 元素 , 這兩列每列都減去最小值 :

  • 444 列減去最小值 111 ;
  • 555 列減去最小值 222 ;

最終得到行列都有 000 元素的系數(shù)矩陣 (bij)(b_{ij})(bij?) :

(bij)=[2042425030410134035102305](b_{ij}) =\begin{bmatrix} & 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 & \\ \end{bmatrix}(bij?)=????????????????22440?05102?40033?23150?40315?????????????????





三、第二步 : 試指派 ( 找獨立 0 元素 )



基于上一步的行列都有 000 元素的系數(shù)矩陣 ,

(bij)=[2042425030410134035102305](b_{ij}) =\begin{bmatrix} & 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 & \\ \end{bmatrix}(bij?)=????????????????22440?05102?40033?23150?40315?????????????????

進行試指派 ;


找出每行的獨立 000 元素 ,

優(yōu)先從唯一選擇開始 ,


111 行只有 111000 元素 , 該元素是獨立 000 元素 ( 紅色矩形框 ) , 位于第 222 列 ;

同時第 222 列中的其它 000 元素標記為 廢棄 000 元素 ( 綠色矩形框 );

333 行只有 111000 元素 , 該元素是獨立 000 元素 ( 紅色矩形框 ) , 位于第 333 列 ;

同時第 333 列中的其它 000 元素標記為 廢棄 000 元素 ( 綠色矩形框 );

222 行中原來有兩個 000 元素 , 有一個被標記為 廢棄 000 元素 , 因此只剩下一個 000 元素 , 標記為獨立 000 元素 ;


444 行沒有獨立 000 元素 , 第 555 行都有多個 000 元素 ;

然后從列里面找獨立 000 元素 , 第 2,3,52,3,52,3,5 列都已經(jīng)找到了 000 元素 , 這里看 第 1,41,41,4 列 ;

111 列有 獨立 000 元素 ( 紅色矩形框 ) ; 位于第 555 行 , 將第 555 行的其它 000 元素標記為 廢棄 000 元素 ( 綠色矩形框 ) ;


這里只找到了 444 個獨立 000 元素 , 紅色矩形框中 ;

使用最少的直線 , 覆蓋所有的 000 元素 ;





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



本步驟的目的是使用最少的直線 , 將所有的 000 元素都覆蓋住 , 如果能一眼看出來最好 , 如果不能 , 就需要使用打鉤的方法 ;


定位一個沒有獨立 000 元素的行 : 先對沒有 000 元素的行打鉤 √ : 第 444 行沒有獨立 000 元素 , 第 444 行打 √ ;

討論第 444 行 :444 行沒有獨立的 000 元素 , 但是有廢棄的 000 元素 , 因為在第一步已經(jīng)保證了每行每列都有 000 元素 ;

在第 444 行 的 廢棄 000 元素所在列 , 即第 222 列 , 打 √ ;

討論第 222 列 : 上述打鉤的列中 , 查看是否有 獨立的 000 元素 , 如果有對應的行就打 √ ;

111 行有獨立的 000 元素 , 在第 111 行位置打 √ ;


討論第 111 行 : 查看第 111 行是否有廢棄的 000 元素 , 如果有就繼續(xù)打 √ , 如果沒有就停止 ;

111 行沒有廢棄的 000 元素 , 直接停止 ;


討論 的時候討論的是 廢棄的 000 元素 ,

討論 的時候討論的是 獨立的 000 元素 ;





五、第二步 : 試指派 ( 直線覆蓋 )



本步驟的目的是使用最少的直線 , 將所有的 000 元素都覆蓋住 , 如果能一眼看出來最好 , 如果不能 , 就需要使用打鉤的方法 ;


打 √ 完畢 , 開始討論覆蓋 ,

沒有 打 √ 的行劃線 , 打 √ 的列劃線 , 四條線就將所有的 000 元素覆蓋了 ,

在沒有被覆蓋的元素中 , 找最小的元素 111 , 將該元素所在的沒有覆蓋的行 ?1-1?1 , 覆蓋的列 +1+1+1 ;

1,41, 41,4 行中的元素 ?1-1?1, 第 222 列中的元素 +1+1+1 ;

最終得到如下矩陣 :

(bij)=[1031326030420133024003305](b_{ij}) =\begin{bmatrix} & 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 & \\ \end{bmatrix}(bij?)=????????????????12430?06203?30023?13140?30305?????????????????


本質(zhì) : 沒有覆蓋的元素統(tǒng)一減去最小值 , 被覆蓋的行列交叉值增加了該最小元素值 ;






五、第二步 : 試指派 ( 第二輪 )



再次進行試指派此時發(fā)現(xiàn) , 試指派還是 444 個獨立 000 元素 ,

先找有獨立 000 元素的行 , 找到后 標記為 獨立 000 元素 ( 紅色矩形框 ) , 將對應列的 000 元素標記為廢棄 ( 綠色矩形框 ) ;

然后找有獨立 000 元素的列 ;

再次執(zhí)行 打 √ ,

沒有 000 元素的行為起點 :

將該行廢棄 000 元素列打鉤 , 有兩個 :

將廢棄 000 元素列中對應的 獨立 000 元素 行 打鉤 :

上述兩行對應的 廢棄 000 元素的列打鉤 :

在上述打鉤的列中 , 將獨立 000 元素所在行打鉤 :

直線覆蓋 : 沒打勾的行畫一條直線 , 打鉤的列畫一條直線 ; 目的是使用最少的直線覆蓋住所有的 000 ;

在沒有被覆蓋的元素中 , 找最小的元素 111 , 將該最小元素所在的沒有覆蓋的行 ?1-1?1 , 覆蓋的列 +1+1+1 ;

1,2,3,41, 2,3,41,2,3,4 行中的元素 ?1-1?1, 第 2,3,42,3,42,3,4 列中的元素 +1+1+1 ;

最終矩陣為 :

(bij)=[0030316020320032023004406](b_{ij}) =\begin{bmatrix} & 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 & \\ \end{bmatrix}(bij?)=????????????????01320?06204?30024?02030?30306?????????????????


本質(zhì) : 沒有覆蓋的元素統(tǒng)一減去最小值 , 被覆蓋的行列交叉值增加了該最小元素值 ;


這個矩陣 000 很多 , 選出 555 個獨立 000 元素 , 成立的解有好多個 ;


如下指派 , 正好能找出 555 個獨立 000 元素 ;

總結(jié)

以上是生活随笔為你收集整理的【运筹学】匈牙利法 ( 匈牙利法示例 2 | 第一步 : 变换系数矩阵 | 第二步 : 试指派 | 行列打√ | 直线覆盖 | 第二轮试指派 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。