【运筹学】匈牙利法 ( 克尼格定理 | 匈牙利法引入 )
文章目錄
- 一、克尼格定理
- 二、匈牙利法引入
一、克尼格定理
匈牙利法 主要用于解決指派問題 , 其主要依據是 克尼格定理 ;
指派問題 參考 【運籌學】整數規劃 ( 整數規劃求解方法 | 指派問題 ) 博客 ;
克尼格定理 :
分配問題 效率矩陣 [aij][a_{ij}][aij?] 中 ,
每一行元素 中加上或減去一個常數 uiu_iui? ,
每一列元素 中加上或減去一個常數 vjv_jvj? ,
得到新的效率矩陣 [bij][b_{ij}][bij?] ,
兩個效率矩陣 [aij][a_{ij}][aij?] 與 [bij][b_{ij}][bij?] 分配問題的 最優解相同 ;
克尼格定理示例 : 指派問題 , 給 444 個人指派 444 個崗位 , 每個人在不同的崗位產生的利潤不同 , 如何安排使得利潤最高 ;
| 甲 | 858585 | 929292 | 737373 | 909090 |
| 乙 | 959595 | 878787 | 787878 | 959595 |
| 丙 | 828282 | 838383 | 797979 | 909090 |
| 丁 | 868686 | 909090 | 808080 | 888888 |
給 甲 對應的行加上所有表格都加上 555 , 變為如下表格 ,
| 甲 | 909090 | 979797 | 787878 | 959595 |
| 乙 | 959595 | 878787 | 787878 | 959595 |
| 丙 | 828282 | 838383 | 797979 | 909090 |
| 丁 | 868686 | 909090 | 808080 | 888888 |
甲 今天狀態好 , 不管四個工作 , 哪個分配給 甲 , 其產生的利潤都會增加 ;
最終計算出來的指派問題的最優解是不變的 ;
二、匈牙利法引入
給 甲乙丙丁 四人分配 ABCDABCDABCD 四項工作 , 每人做每項工作的耗時如下 , 如何指派問題使得耗時最小 ;
| 甲 | 666 | 777 | 111111 | 222 |
| 乙 | 444 | 555 | 999 | 888 |
| 丙 | 333 | 111 | 101010 | 444 |
| 丁 | 555 | 999 | 888 | 222 |
分派任務時 , 給每個人分配其所用時間最小的工作 ,
- 給 甲 分配 DDD 任務 , 其只用 2 時間即可完成該任務 , 耗時最小 ;
- 給 乙 分配 AAA 任務 , 其只用 4 時間即可完成該任務 , 耗時最小 ;
- 給 丙 分配 BBB 任務 , 其只用 1 時間即可完成該任務 , 耗時最小 ;
- 給 丁 分配 CCC 任務 , ABDABDABD 任務已經分配給了其它人 , 只能給 丁 分配 CCC 任務 ;
如果 為每個人選擇了耗時最小的任務 , 正好位于不同行 , 不同列 , 那么當前的指派 , 就是該問題的 最優解 ;
但是上述示例中 , 給 丁 分配任務時 , 合適的任務都分配給了甲乙丙 , 只能分配 CCC 任務 ;
這時就需要討論給 丁 指派 CCC 任務是否是最優的 ;
這里就需要 引入 匈牙利法 解決上述問題 ;
總結
以上是生活随笔為你收集整理的【运筹学】匈牙利法 ( 克尼格定理 | 匈牙利法引入 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【运筹学】整数规划 ( 整数规划示例 |
- 下一篇: 【运筹学】匈牙利法 ( 匈牙利法示例 2