KM算法:指派問題(有權二分圖2)

指派問題(Assignment problem)

在滿足特定指派要求條件下谅摄,使指派方案總體效果最佳服猪。(KM算法的另一種理解角度

如:有若干項工作需要分配給若干人(或部門)來完成燕刻;有若干項合同需要選擇若干個投標者來承包:有若干班級需要安排在若干教室里上課等。

image

(結合參考一的代碼和案例觀看3氩洹W钔病!)

總架構

void HungarianAlgorithm::RunAssignment() {
  (void)step_one();
  (void)step_two();
  int step = 3;
  int path_zero[2];
  while (true)
    switch (step) {
      case 3:
        step = step_three();
        break;
      case 4:
        step = step_four(path_zero);
        break;
      case 5:
        step = step_five(path_zero);
        break;
      case 6:
        step = step_six();
        break;
      case 7:
        return;
      default:
        assert(false);
    }
}

step 1

對于矩陣的每一行湿颅,找出最小的元素载绿,并將其從矩陣的每一行中減去;

step 2

在新矩陣中油航,

? 1.循環(huán)查找零點Z崭庸,且滿足行或列未被標定的話,Z點標星(M矩陣對應置1)谊囚,RowCover和ColCover置1怕享;

? 2.RowCover和ColCover數組分別置0;

step 3

計算標星點的列數镰踏,如果等于K(行數和列數的最小值)函筋,done;否則,step 4;

step 4

尋找cover行列之外的零點奠伪,設為斜點跌帐。(沒有的話取未覆蓋區(qū)域最小值,step 6)

? 1.如果該斜點的行中無星點绊率,step 5;

? 2.有星點谨敛,cover行,并uncover星點列即舌。以此類推佣盒,直到沒有uncover的零點。保存最小的uncover值顽聂,step 6;

step 5

構造一系列交替斜點星點肥惭。

  • Z0表示step 4中最后發(fā)現的斜點盯仪,Z1表示Z0同列的星點,Z2表示Z1同行的斜點蜜葱,以此類推全景,直到終止于一個斜點

  • 清除路徑上的各個星點牵囤,斜點變星點爸黄,并擦除所有的線,返回step 3;

存在終止于星點的情況揭鳞,此時炕贵,該增廣路是不反置的

step 6

  • 未覆蓋區(qū)域最小值min:覆蓋行各元素+min;未覆蓋列-min;

  • 返回step 4,不改變斜點、星點和覆蓋線野崇;

參數列表

C: cost matrix,m x n,成本矩陣;

k=min(m,n)行列最小數称开;

Z:矩陣零點;

M: mask matrix,掩膜矩陣乓梨,與成本矩陣C同緯度鳖轰,用來標注C中的星點(1)和斜點(2);

RowCover扶镀、ColCover:標記成本矩陣C的行或列的記錄蕴侣;

path_row_0path_col_0:step 4中最后一個斜點的行和列臭觉;

path_count:路徑的長度昆雀;

path:記錄增廣路徑上各點的行與列;

參考

1.Munkres' Assignment Algorithm

2.匈牙利算法 (Kuhn-Munkres) 算法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末胧谈,一起剝皮案震驚了整個濱河市忆肾,隨后出現的幾起案子荸频,更是在濱河造成了極大的恐慌菱肖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭从,死亡現場離奇詭異稳强,居然都是意外死亡,警方通過查閱死者的電腦和手機和悦,發(fā)現死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門退疫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸽素,你說我怎么就攤上這事褒繁。” “怎么了馍忽?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵棒坏,是天一觀的道長燕差。 經常有香客問我,道長坝冕,這世上最難降的妖魔是什么徒探? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮喂窟,結果婚禮上测暗,老公的妹妹穿的比我還像新娘。我一直安慰自己磨澡,他們只是感情好碗啄,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稳摄,像睡著了一般挫掏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秩命,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天尉共,我揣著相機與錄音,去河邊找鬼弃锐。 笑死袄友,一個胖子當著我的面吹牛,可吹牛的內容都是我干的霹菊。 我是一名探鬼主播剧蚣,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼旋廷!你這毒婦竟也來了鸠按?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤饶碘,失蹤者是張志新(化名)和其女友劉穎目尖,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體扎运,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡瑟曲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了豪治。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洞拨。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖负拟,靈堂內的尸體忽然破棺而出烦衣,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布花吟,位于F島的核電站启泣,受9級特大地震影響,放射性物質發(fā)生泄漏示辈。R本人自食惡果不足惜寥茫,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矾麻。 院中可真熱鬧纱耻,春花似錦、人聲如沸险耀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甩牺。三九已至蘑志,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贬派,已是汗流浹背急但。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搞乏,地道東北人波桩。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像请敦,于是被迫代替她去往敵國和親镐躲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容

  • matlab命令 聲明:本文轉自:https://www.douban.com/note/136332003/ 侵...
    我就是個初學者閱讀 13,891評論 0 44
  • 匈牙利算法的理論依據-最優(yōu)解定理 費用矩陣的一行(或列)的各個元素減去該行(或列)的最小元素所得到的新費用矩陣侍筛,與...
    野狗子嗷嗷嗷閱讀 13,674評論 0 1
  • 專業(yè)考題類型管理運行工作負責人一般作業(yè)考題內容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 9,013評論 0 13
  • 本書從各個方面幫你分析一家公司萤皂,從而確定一家公司是否值得買入。 1匣椰、成功投資的五項原則: 做好你的功課裆熙; ...
    爾東陳自水閱讀 155評論 0 0
  • 杭州之旅返程中,在動車中D2188車廂里窝爪,戴著耳機弛车,聽著吳語版歌謠《外婆謠》,軟軟糯糯的歌聲蒲每,讓我沉浸在自己的思緒...
    語戀朝顏閱讀 756評論 7 6