views:

162

answers:

1

I have a matching problem and I don't know how to solve it:

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))

Fixing a configuration for the states, the problem becomes a max-matching.

The goal is to find the configuration with minimum max-matching.

Example:

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

max-matchings are 5 and 9, so 5 is the answer. (so configuration is s(a_0)=0)

+3  A: 

I doubt that this is homework, as the questioner is using his real name.

Unfortunately, finding an assignment of states with an approximation ratio better than 2 (assuming Unique Games; 1.3606 otherwise) is NP-hard. Let G be an instance of minimum vertex cover. The set A has a vertex for each edge in G. The set B has a vertex for each vertex in G. Let w(aj, bk, 0) be 1 if the lesser endpoint of the edge corresponding to aj corresponds to bk, and 0 otherwise. Define w(aj, bk, 1) similarly with respect to the greater endpoint. The minimum maximum matching of this instance has cardinality equal to the minimum vertex cover of G, and the latter problem is hard to approximate.

On the algorithms front, we can replace the inner maximum-weight-matching problem by its linear programming dual so as to minimize a minimum. Here yj is the dual variable corresponding to aj, and zk is the dual variable corresponding to bk.

min ∑j yj + ∑k zk

s.t.

∀j,k. yj + zk ≥ (1 - s(aj)) w(aj, bk, 0) + s(aj) w(aj, bk, 1)

∀j. s(aj) ∈ {0, 1}

∀j. yj ≥ 0

∀k. zk ≥ 0

This formulation is a mixed-integer program, which can be attacked without too much human effort by off-the-shelf software (e.g., the GNU Linear Programming Kit). It may or may not be better than brute force.

Very nice. I worked through an example by hand, and was able to convince myself that everything worked. For people (like me) who haven't dealt with a proof by reduction before, I hope the following more handwavy approach helps understanding: The way I think of it is that each edge in G can choose to "target" one of two vertices. Imagine that each edge picks a target somehow. Then, run maximum weighted matching to figure out the biggest number of distinct aimer-target pairs there are. (You can actually disregard all the 0-weight edges in the bipartite graph...
j_random_hacker
...between a_j and b_k where b_k is not incident on a_j in G, since MWM will never pick them.) What you see is that the MWM really tells you the number of distinct vertices that are being aimed at -- we don't actually care which edge gets paired with a vertex, just that there will be exactly one per vertex. Once that clicks, it's easy to see that if we choose to target vertices so as to minimise the number of distinct vertices targeted, this will (a) cover all edges with a minimum number of vertices in G and (b) be a minimum maximum weight matching on (A, B).
j_random_hacker
Another thing to remember is that with a reduction proof, we're actually coming at the problem "backwards". We don't try to analyse a given instance of the problem under consideration, instead we take an instance of another, known-to-be-hard problem and build an instance of the problem under consideration from it. If we can do that then we know that solving the problem under consideration must be at least as hard as the known-to-be-hard one.
j_random_hacker
brilliant, thanks :)
Nima