2010-07-10 63 views
2

我有一個匹配的問題,我不知道如何解決它:最小最大匹配問題

Given a complete bipartite graph (A, B). 
Each node a_i in A, has two states: s(a_i)=0 or s(a_i)=1 
Weighted edges are declared as: w(a_i, b_j, s(a_i)) 

固定配置的狀態,這個問題成爲一個最大匹配。

目標是找到具有最小最大匹配的配置。

實施例:

|A|=|B|=1 
w(a_0, b_0, 0) = 5; 
w(a_0, b_0, 1) = 9; 

MAX-匹配數是5和9,所以圖5是答案。 (這樣的配置是S(A_0)= 0)

+0

這不是作業!有些人傾向於將算法問題標記爲家庭作業! – Nima 2010-07-10 01:37:02

回答

2

我懷疑,這是家庭作業,作爲提問使用化名。

不幸的是,找到近似比好於2的狀態的分配(假設爲獨特遊戲;否則爲1.3606)是NP-hard。設G是最小頂點覆蓋的一個實例。集合A具有用於G的集B具有用於在G.設W每個頂點頂點的每一邊緣頂點(一個Ĵ,B ķ,0)是1,如果對應於邊緣中的較小者端點a j對應於b k,否則爲0。定義W(A Ĵ,B ķ,1)同樣地相對於所述更大的端點。這個實例的最小最大匹配的基數等於G的最小頂點覆蓋,而後一個問題很難近似。

在算法前,我們可以通過它的線性規劃雙取代的內最大重匹配問題,從而最小以最小化。這裏y j是對應於 j的雙變量,並且z k是對應於b k的雙變量。

分鐘ΣĴýĴķŽķ

S.T.

∀j,k。 ÿĴ + Z ķ≥(1 - S(一個Ĵ))W(A Ĵ,B ķ,0)+ S(一個Ĵ)W(A Ĵ, b ķ,1)

∀j。 s(a j)ε{0,1}

∀j。 ÿĴ≥0

∀k。žķ≥0

此製劑是混合整數程序,它可以無需太多人的努力通過現成的,現成的軟件(例如,GNU線性規劃工具集)被攻擊。它可能會或可能不會比蠻力更好。

+0

非常好。我手工通過一個例子,並能夠說服自己,一切正常。對於以前還沒有處理過縮減證明的人(我),我希望以下更多的手工方法有助於理解:我認爲這樣的方式是G中的每個邊都可以選擇「定位」兩個頂點中的一個。想象一下,每個邊緣以某種方式選擇一個目標。然後,運行最大加權匹配來找出存在的最大數量的不同瞄準器 - 靶標對。 (你實際上可以忽略在二分圖中的所有0加權邊... – 2010-07-16 16:58:30

+0

...在a_j和b_k之間,其中b_k不在G中的a_j上,因爲MWM將永遠不會選擇它們。)你看到的是MWM確實告訴你正在瞄準的不同頂點的數量 - 我們實際上並不關心哪個邊與頂點配對,只是每個頂點只會有一個頂點。一旦點擊,很容易看出,如果我們選擇目標頂點以最小化目標不同頂點的數量,這將(a)覆蓋G中具有最少頂點數的所有邊,並且(b)是最小最大值(A,B)上的權重匹配。 – 2010-07-16 17:05:25

+0

要記住的另一件事是,通過減少證明,我們實際上是在「向後」問題。我們不試圖分析正在考慮的問題的一個給定實例,而是我們採取另一個已知問題的實例,並從中考慮構建問題的一個實例。如果我們能做到這一點,那麼我們知道解決所考慮的問題必須至少與已知的難題一樣難。 – 2010-07-16 17:12:08