2013-03-03 35 views
4

我試圖在Java中實現匈牙利算法。我有一個NxN成本矩陣。我下面一步this引導臺階,並已達到第9步 -匈牙利算法 - 從這樣選擇0的最後一步,即每行和每列只有一個被選中

「通過選擇一組零的選擇匹配,使得每行或列 只有一個選擇。」

我已經有了0的矩陣。 我想弄明白這一點,唯一對我有用的東西就是蠻力方法。

我也想過選擇我遇到的第一個0,刪除那一列&行並重復;但是這種方法不起作用。

有什麼技巧或方法嗎?一些不太複雜的東西?任何建議,將不勝感激。

由於

+0

你是否設法實現算法downthere?任何問題? – gaborsch 2013-03-05 13:05:09

回答

3

從匈牙利的答案::)

  • 計算0元件爲每個行和列的數量。 (稱爲row[]column[]
  • 選擇最小值正數行和列的值。例如,假設它是column[3](如果在row中找到最小值,則同樣適用,僅交換行和列)如果具有多個具有相同值的值,請選擇任意值。
  • 在該列中選擇一個0元素,標記它。如果您有多個,請選擇任意一個。
  • 設置column[3]爲0(下次不選擇)
  • 迭代在column[3]的所有元素,如果你找到一個0元素,由1
  • 降低相應的row[i]值。如果你沒有找到一個積極的在行或列中都沒有值,你就完成了。
+0

實際上,最後的4個步驟**可以在一個循環**中完成,如果您始終選擇列中的第一個「0」元素。 – gaborsch 2013-03-04 12:50:01

+0

非常感謝,這真的很有幫助。我爲延誤表示歉意。 – 2013-03-08 22:41:45