當前位置:吉日网官网 - 傳統美德 - 匈牙利法

匈牙利法

匈牙利法是壹件大的事物若除去壹件小的 事物 ,對這件事沒有多大影響。1955年,庫恩(W.W.Kuhn)利用匈牙利數學家康尼格(D.Konig)的關於矩陣中獨立“0”元素的定理,提出了求解指派問題的壹種方法,習慣上稱之為匈牙利法。

(1)若從效率 矩陣 (cij)的行(或列)的各元素中分別減去該行(或列)的最小元素後得到壹個新矩陣(bij),則以(bij)為效率矩陣的指派問題與原問題有相同的最優解。

經過上述變換後,(bij)中的每行和每列都至少含有壹個0元素,稱位於不同行不同列的0元素為獨立的0元素。

(2)若(bij)有n個獨立的0元素,由此可得壹個解矩陣,方法為在X中令對應於(bij)的0元素位置的元素為1,其它位置的元素為0,則X為 指派問題 的最優解。

(3)矩陣中獨立0元素的最多個數等於能覆蓋所有0元素的最少直線數。

匈牙利法的算法步驟如下:

(1)對指派問題的系數矩陣進行變換,使每行每列至少有壹個元素為“0”.

①讓系數矩陣的每行元素去減去該行的最小元素;

②再讓系數矩陣的每列元素減去該列的最小元素。

(2)從第壹行開始,若該行只有壹個零元素,就對這個零元素加括號,對加括號的零元素所在的列畫壹條線覆蓋該列,若該行沒有零元素或者有兩個以上零元素(已劃去的不算在內),則轉下壹行,依次進行到最後壹行。

(3)從第壹列開始,若該列只有壹個零元素。就對這個零元素加括號(同樣不、考慮已劃去的零元素)。再對加括號的零元素所在行畫壹條直線覆蓋該列。若該列沒有零元素或有兩個以上零元素,則轉下壹列,依次進行到最後壹列為止。

(4)重復上述步驟(1)和(2)可能出現3種情況:

①效率矩陣每行都有加括號的零元素,只要對應這些元素令

就找到了最優解。

②加括號的零元素個數少於m,但未被劃去的零元素之間存在閉回路,這時順著閉回路的走向,對每個間隔的零元素加壹個括號,然後對所有加括號的零元素所在行(或列)畫壹條直線,同樣得到最優解。

③矩陣中所有零元素或被劃去,或加上括號.但加括號的零元素少於m,這時轉入(5).

(5)按定理進行如下變換:

①從矩陣未被直線覆蓋的數字中找出壹個最小的k;

②當矩陣中的第i行有直線覆蓋時,令Ui=0;無直線覆蓋時。令Ui=K;

③當矩陣中的第j列有直線覆蓋時,令Vj=-K;無直線覆蓋時,令Vj=0;

④令原矩陣的每個元素Aij分別減去Ui和Vj.

(6)回到(2),反復進行,直到矩陣的每壹行都有壹個加括號的零元素為止。即找到最優分配方案。[1]

在實際的任務分配中,還可能出現人員(或設備)數與任務數不相等的情況,而且要求每個人員只先完成壹件任務(在人員數少於任務數時),或者有些人員可暫不安排任務(在人員數多余任務數時),可稱這樣的問題為不平衡的指派問題,此時,可通過虛擬人員或虛擬任務使之轉化為壹般(平衡)的指派問題,即在原矩陣中增加壹些行或者列,使之成為方陣,在極小型問題中所增加的元素應充分的大,如為原矩陣中最大的元素的值,而在極大型問題中增加的元素應足夠的小。如可取零值。

  • 上一篇:做燕麥餅幹的時候,應該選擇哪種燕麥比較合適?
  • 下一篇:十三向詞典
  • copyright 2024吉日网官网