對KM演算法暫時性的理解

最爱丁珰發表於2024-05-31

假設我們現在迴圈到了第\(i\)個點,且前面\(i-1\)個點都已經被匹配了,現在的相等子圖為\(S\)

\(A_i+\delta,B_i-\delta\)後,相等子圖變成了\(S'\)

對於匹配邊,其兩端要麼都在交錯樹中要麼都不在交錯樹中,不可能出現一端在一端不在的情況,所以匹配邊仍然在\(S'\)

對於交錯樹上的邊,顯然每一條仍然在\(S'\)

我們不妨假設前面\(i-1\)個點都是直接地找到了匹配邊(也就是沒有尋找增廣路的過程),所以對\(S'\)重新跑一遍匈牙利,前面\(i-1\)個點選的匹配邊仍然不變,第\(i\)個點的交錯樹一定是\(S\)中第\(i\)個點的交錯樹的超集

假設原圖中仍然存在邊\((i,j)\)滿足\(i∈T,j∉T\),那麼我們肯定就可以找到這麼一個最小的\(\delta\)

先來驗證在\(A_i+\delta,B_i-\delta\)後,對原圖(注意不是\(S\)\(S'\),是資料給出的所有邊和所有點組成的原圖)中的任意一條邊仍然滿足頂標不等式:如果這條邊兩端都在交錯樹或者都不在交錯樹中,那麼仍然滿足不等式;如果這條邊的右部在交錯樹中但是左部不在,那麼由於右部增加了一個\(\delta\)而左部沒變,所以這條邊仍然滿足不等式;如果這條邊的左部在交錯樹中但是右部不在,由於我們找的\(\delta\)是最小的,所以仍然滿足不等式

也就是說如果我們每次都能找到這麼一個\(\delta\),那麼構建的新的相等子圖\(S'\)一定滿足頂標不等式,也就說明P430的定理可以用

那麼我們在第\(i\)個點找到增廣路之前,一定能夠找到這麼一個\(\delta\)嗎?

是可以的

假設我們已經找不到這麼一個\(\delta\)了但是還是沒有找到增廣路。我們為什麼會找不到這麼一個\(\delta\)?是因為原圖中不存在滿足\(i∈T,j∉T\)的邊\((i,j)\)了。我們考慮第\(i\)個點,這就說明與其關聯的邊\((i,j)\)都已經被加入到相等子圖中了(否則的話此時第\(i\)個點的交錯樹就不會包含這條邊,因為這條邊壓根就沒有被新增到相等子圖中,而交錯樹的邊肯定都是相等子圖的邊,也就是說原圖中存在滿足\(i∈T,j∉T\)的邊\((i,j)\));由於此時我們還沒有找到增廣路,也就是說對每條與\(i\)關聯的邊的另一個端點\(j\)都是匹配點(否則\(i->j\)就是一條增廣路),考慮每個\(j\)的匹配點\(match_j\),對每個\(match_j\)來說,與其關聯的邊\((match_j,k)\)也都已經被加入到相等子圖中了(否則的話此時第\(i\)個點的交錯樹就不會包含這條邊,因為這條邊壓根就沒有被新增到相等子圖中,而交錯樹的邊肯定都是相等子圖的邊,也就是說原圖中存在滿足\(match_j∈T,k∉T\)的邊\((match_j,k)\));以此類推。然後考慮最終形成的這棵交錯樹是什麼樣子的呢?實際上就是我們將原圖中所有的邊都新增進這個相等子圖中,然後第\(i\)個點跑出的交錯樹(因為與交錯樹中的左部節點關聯的邊全部被加入到了相等子圖中)。然而,由於原圖存在完備匹配,所以如果我們將原圖中所有的邊都新增進這個相等子圖中,第\(i\)個點根本跑不出交錯樹,矛盾了,所以說明我們在第\(i\)個點找到增廣路之前,一定能夠找到這麼一個\(\delta\)

綜上我們能在滿足頂標不等式的前提下找到一個帶權最大匹配

程式碼熟悉一下

相關文章