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|