我試圖做一個體面的匈牙利算法的實施,但是我被困在如何找到覆蓋數組中的所有零的最小數量的行如何找到覆蓋2維數組中所有零所需的最少行數?
也我需要知道這些行使一些計算後
這裏的解釋是:
http://www.ams.jhu.edu/~castello/362/Handouts/hungarian.pdf
在步驟3它說
使用盡可能少的行來覆蓋矩陣中的所有零。沒有簡單的規則來做到這一點 - 基本上是試錯。
在計算方面試驗和錯誤的含義是什麼?如果我有例如5行和5列的2D陣列然後
的第一行可以覆蓋所有的零,第一和第二,第一行和第一列,等等等等太多組合
ISN有沒有比這更有效率的東西?
在此先感謝
雖然它會給出一組覆蓋所有零的行,但這不會給出最小的行數;在第二行和第二列使用帶有零的3x3矩陣嘗試算法。你可以用2行覆蓋所有的零,但是這個算法會告訴你使用3行。 – gwilkins 2012-04-09 16:08:59
我有一個錯字 - 您需要找到不是來自信源的可達頂點。在你做的最大匹配(假設它是r_1 - > c_2,r_2 - > c_1)之後的例子中,從源頭可到達的是r_1,r_3,c_2,因此你根據我所解釋的選擇了r_2和c_2。這個解決方案不僅僅是推測 - 這是匈牙利算法的實現方式,我已經解決了這種方法的問題(例如:http://acm.timus.ru/problem.aspx?space=1&num=1076) – 2012-04-09 19:14:57
我認爲我誤解了你的意思是「從源頭上獲得的」。如果您有r_1-> c_2,r_2-> c_1作爲您的匹配,那麼r_3如何從源碼可達? – gwilkins 2012-04-09 21:04:57