匈牙利方法,也稱為匈牙利算法或Kuhn算法,是一種用於解決分配問題和指派問題的算法。它是一種疊代過程,基於Hall定理的充分性證明思想,常用於尋找二分圖中的最大匹配。匈牙利方法的核心理念是通過尋找增廣路徑來逐步最佳化匹配,直至找到最大匹配。
匈牙利方法的具體步驟包括:
初始化:創建一個成本矩陣,其中每個元素代表將一個任務分配給一個工人的成本。
行操作:對每行減去其最小成本,以確保每行至少有一個零元素。
標記零元素:在結果矩陣中找到零元素。如果其所在行和列中沒有加星號的零,則將該零標星。
覆蓋操作:覆蓋包含加星零的列。如果覆蓋了所有行,則算法終止;否則,繼續下一步。
調整成本:對於未覆蓋的零,將其所在行的元素加上一個最小值,而未覆蓋列的每個元素減去這個最小值。
重複操作:重複以上步驟,直到找到最大匹配或確定不存在完美匹配。
匈牙利方法的一個重要套用是Munkres算法,也稱為最優分配算法,它是匈牙利方法的一個變種。Munkres算法通過處理包含所有零的最小行集和最大獨立零點集來工作,以找到最優分配。
匈牙利算法的發明人是Edmonds,他在1965年提出了這種方法。它不僅在數學中有廣泛套用,也在計算機視覺和機器學習等領域中用於尋找最佳匹配。