Max Bipartite Matching

We have looked at bipartite graphs before → can be partitioned into 2 sets. We are interested in finding a maximum matching (or a maximum cardinality of the matching).

  • Input: a bipartite graph 
  • Output: a maximum cardinality set of edges that are vertex disjoint

A set  of edges is called a matching if no 2 edges in  share a vertex. A matching is a perfect matching if every vertex is matched

An interesting property is that we can reduce a bipartite graph into a max flow problem. Given a bipartite graph , construct  as follows:

So, lets prove this reduction is correct.

→ Claim: there is a matching of size  IFF there is an s-t flow of value  in 

  • clearly, if there is a matching of size , there is a flow of size , and is trivial given the graph

  • let’s show if there is a flow of size , then there is a matching of size 

    • Proof:

    • We decompose the flow into  capacity-disjoint st-paths, each with flow 1

    • Each path is 3 edges: 

    • Each edge from  and  has capacity 1

    • So, each vertex, except for  can be used on at most one path

    • Removing edges  and  gives  vertex-disjoint edges → thus, our original bipartite graph matching

→ Complexity


Minimum Vertex Cover

  • Vertex Cover: given a graph , a set  of vertices is called a vertex cover IFF for every , either  or 
    • Minimum Vertex Cover: what is the smallest  such that there exists a vertex cover  with . Minimum  is the minimum vertex cover

→ König’s Theorem

This theorem states that 

  • What we want to do is Let  in . Show  a vertex cover of size 
  • Recall that we can reduce the problem of maximum matching to a problem of max-flow
  • since the max st-flow in  is , by max-flow min-cut, there is an st-cut  in  with capacity 
  • This flow must cross the cut to reach , and it must consume  units of capacity crossing the cut
  • There are 3 cases in which capacity can possibly cross the cut:
    1. It can cross the cut going from  to 
    2. It can cross the cut going from  to 
    3. It can cross the cut going from  to 
      1. Case 2 is not possible (recall the above modification, making edges from  to  equal to 
  • Cases  to :
    • we go via an edge from  to  (elements in  but not in ) with capacity 1
  • Cases  to :
    • same reasoning as above. We go via en edge from  to  with capacity 1
    • So,  = capacity crossing the cut = # of such edges = total # vertices in →