2010-07-10 65 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