當前位置:吉日网官网 - 傳統故事 - 什麽是匈牙利算法

什麽是匈牙利算法

談匈牙利算法自然避不開Hall定理,即是:對於二部圖G,存在壹個匹配M,使得X的所有頂點關於M飽和的充要條件是:對於X的任意壹個子集A,和A鄰接的點集為T(A),恒有: │T(A)│ >= │A│

匈牙利算法是基於Hall定理中充分性證明的思想,其基本步驟為:

1.任給初始匹配M;

2.若X已飽和則結束,否則進行第3步;

3.在X中找到壹個非飽和頂點x0,作V1 ← {x0}, V2 ← Φ;

4.若T(V1) = V2則因為無法匹配而停止,否則任選壹點y ∈T(V1)\V2;

5.若y已飽和則轉6,否則做壹條從x0 →y的可增廣道路P,M←M?E(P),轉2;

6.由於y已飽和,所以M中有壹條邊(y,z),作 V1 ← V1 ∪{z}, V2 ← V2 ∪ {y}, 轉4;

設數組up[1..n] --- 標記二分圖的上半部分的點。

down[1..n] --- 標記二分圖的下半部分的點。

map[1..n,1..n] --- 表示二分圖的上,下部分的點的關系。

True-相連, false---不相連。

over1[1..n],over2[1..n] 標記上下部分的已蓋點。

use[1..n,1..n] - 表示該條邊是否被覆蓋 。

首先對讀入數據進行處理 ,對於壹條邊(x,y) ,起點進集合up,終點進集合down。 標記map中對應元素為true。

1. 尋找up中壹個未蓋點 。

2. 從該未蓋點出發 ,搜索壹條可行的路線 ,即由細邊出發, 由細邊結束, 且細粗交錯的路線 。

3. 若找到 ,則修改該路線上的點所對應的over1,over2,use的元素。重復步驟1。

4. 統計use中已覆蓋的邊的條數total,總數n減去total即為問題的解。

  • 上一篇:試論傳統的身心研究
  • 下一篇:十五首傳統名曲歌詞
  • copyright 2024吉日网官网