2019 7 22 匈牙利演算法,KM演算法

2021-09-25 11:20:14 字數 652 閱讀 9623

這幾天知識點量太大,一時間不易吸收。先占個坑,慢慢填

分享一位博主dark_scope的思路,簡單易懂還有趣,雖然是初學,也馬馬虎虎懂了個大概   

#define maxn 100000

int n,m;//n個男生 m個女生 二分圖:男生在左女生在右

bool line[maxn][maxn]; //兩者之間相互喜歡

bool used[maxn];//記錄是否被標記過

int girl[maxn];//記錄右邊女生所對應的男生的編號

bool find(int x)

} }

return false;

}int main()

}

主要用來解決帶權二分圖的匹配問題,在保證最大匹配的前提使得權值和最大。

步驟:

1.分別為左右點設定標桿,左邊初始為最大值,右邊設定為0。

2. 對於左邊的點,首先考慮權值最大的邊與之相連,連線的前提是左右點的標桿值和等於權值。 3.

存在矛盾就減少增廣路上左邊的權值同時增加增廣路右邊的權值 4.

重複以上步驟直到匹配結束。

參見博主

hehedad

的思路,寫的同樣很好嗷。  

匈牙利演算法 KM演算法

匈牙利演算法 求最大匹配,那麼我們希望每乙個在左邊的點都盡量找到右邊的乙個點和它匹配。我們依次列舉左邊的點x的所有出邊指向的點y,若y之前沒有被匹配,那麼 x,y 就是一對合法的匹配,我們將匹配數加一,否則我們試圖給原來匹配y的x 重新找乙個匹配,如果x 匹配成功,那麼 x,y 就可以新增為一對合法...

匈牙利演算法,KM演算法

bool find int x return false 主程式 for i 1 i n i include include include include include include include include include include include include include...

傳統演算法 匈牙利演算法 KM演算法

做為乙個演算法工程師,除了了解各種nn網路結構,調的一手好引數,傳統演算法這一部分也不能拉下。因此著手寫這個系列,一方面加深自己對演算法的理解,另一方面 在實際業務中的應用,畢竟ac不是目的,融匯貫通的應用才是真目標。問題 剛入職某網約車平台的l同學被安排了個任務,如下圖所示,在一塊區域有m個司機和...