Randomized algorithms

 

Approximating the Permanent         Chap 11.3

 

==============================================================================

 

Per(A): like determinant except don't alternate signs.  I.e., if a_ij

is the (i,j)th element of A, and A_ij is the (n-1)x(n-1) matrix obtained by

taking A and removing row i and column j, then:

     Per(A) = sum_j( a_1j*Per(A_1j))

Or, can think of as number of suitably defined "legal paths" through A.

 

If G is an n by n bipartite graph on (X,Y), and we define a_ij = 1 if

there is an edge from element i in X to element j in Y, then Per(A) is

the number of perfect matchings in A.  Equivalently, if G is a

directed graph and we define A=A(G) in the usual way, then Per(A) is

the number of cycle covers.

 

Det(A) is easy to compute, but Per(A) is #P-hard.  We'll be looking at

approximating Per(A) where A is the matrix for a n by n bipartite graph of

minimum degree n/2.  (Computing exactly is still #P-hard for these.)

 

Looking at graph G, bipartite on two sets X and Y of n vertices each.

m = number of edges.

 

* One strategy: pick a random permutation on (1,...,n) and see if it

corresponds to a matching in the graph and repeat.  Would be fine if

graph was REALLY dense, but the problem is we might never find a

matching this way.

 

* Last time, had picture of S contained in S_1 contained in S_2 ...

Actually, not going to do it quite that way.

 

* Define M_k as set of k-edge matchings.  Our goal is to estimate |M_n|.

  Do a random walk on M_k U M_{k-1}.  Will define some graph on these

  sets of matchings and show that it quickly approaches uniform.  Then

  see how often it ends up in the two sets to estimate |M_k|/|M_{k-1}|.

 

* In fact, will just look at M_n and M_{n-1}.  Turns out we can reduce

  the problem of random sampling M_k U M_{k-1} in graph G to the problem

  of sampling M_n' U M_{n'-1} in some appropriately-defined n' by n'

  bipartite graph G'.  Specifically, add n-k new vertices to X and

  connect these each to all the old vertices in Y.  Similarly add n-k

  new vertices to Y and connect these to all the old vertices in X.

  Then, can use results from walk on perfect and near-perfect matchings

  of G' to calculate the desired quantity for G.  (See exercise 11.11)

 

* To get a good estimate, we need:

  (A) M_k is not much larger than M_{k-1}: easy to see it's at most a

     factor of n^2 larger.

  (B) M_k is not too much (at most a factor n^2) SMALLER than M_{k-1}:

     Associate to each matching x in M_k, all matchings y in M_{k-1} that

     agree with x on at least n-2 edges.  There are at most n^2 of these.

     Now, not hard to see that the fact that the minimum degree of the

     graph is at least n/2 implies that every y in M_{k-1} is associated to

     at least one x in M_k.

 

* Then will multiply all these estimates to get a good estimate of |M_n|.

 

First: do argument modulo assumption that a certain walk is rapidly

mixing.  Then, we'll prove that it's rapidly mixing.

 

* Define the walk:  Let's look at M_n U M_{n-1}.

 

   * with 1/2 prob, we stay put.

 

   * with 1/2 prob, we pick a random edge e in the graph G:

 

     REDUCE: if current state is in M_n and e is IN the matching, then

          remove e (going into M_{n-1})

 

     ROTATE: if in M_{n-1} and e has one matched endpoint and one

          unmatched, then insert e and remove the other edge.

 

     AUGMENT: if in M_{n-1} and neither endpoint of e is matched,

          then add e (going into M_n).

 

     otherwise, stay put.

 

 

Go through example on K_{2,2}  (See p.321 of the text).

 

Claim: for any states i,j Pr(i-->j) = Pr(j-->i).  Why?

 

     (in particular, if the probability is non-zero, then it's 1/2m)

 

Claim: stationary distribution is uniform.

--> since symmetric, both row and column sums are 1 (called "doubly

    stochastic"), so can verify that uniform dist is stationary.

 

Also, easy to see it's aperiodic.  So, all that's left is to figure

out how fast we converge to uniform.  To do this, we want to bound the

second-eigenvalue away from 1.

 

Note: our goal is weaker than that of explicit construction of

expanders.  We have a walk on N (which is exponential in n) states,

and unlike the case of expanders,

1) It's ok that our graph has degree O(n), and not constant.

2) Just need 1-lambda_2 >= 1/poly(n)

 

(Or, in terms of N, we want an expander, but allowing polylog(N)

degree and 1/polylog(N) eigenvalue separation.  This is easier than

getting both of these constant.)

 

(Once we get this gap, can run walk poly(n) steps to get very close to

stationary distrib.  Not hard to see that "very close" is good enough.)

 

Will show eigenvalue gap by showing that the graph has edge expansion,

weighted according to pi.  Called "high conductance".

 

* Capacity(S) C_S = sum_{i in S} pi_i.

  (prob of being in S according to pi.  --> measure of size of S)

 

* flow(S) = sum_{i in S, j not in S} w_ij,

  where w_ij = (pi_i)*(p_ij) = prob of being on edge i->j in pi.

  (measure of # edges leaving S).

 

* Conductance Phi = min_{S: C_S <= 1/2} Phi_S

              Phi_S = flow(S)/capacity(S).

 

E.g., in our case, pi_i = 1/N, p_ij = 1/2m, so w_ij = 1/(2mN).

Phi_S = (1/2m)(# edges leaving S)/|S|