Randomized Algorithms

 

* random walks on graphs       Chap 6.1, 6.3, 6.4, 6.5

 

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

random walks on graphs.

Lots of applications:

     - approximation/estimation problems: estimating permanent, volumes

     - random selection: pick a random consistent linear separator.

     - derandomizing randomized algs.

 

Plus, it's neat by itself.  Say you're lost in a maze and don't have good

  memory.  How long will it take to get out if you just move around randomly?

 

Random walk on a graph:  Start at some initial vertex.  Pick neighbor

  at random and go there, etc.  Equivalently, think of as currently on

  some edge heading in some direction.  Then move to random neighboring

  edge in forward direction.

 

 

Interesting quantities to look at:

 

H_uv = "hitting time" from u to v: E[#steps to first reach v | start at u]

 

C_uv = "commute time: E[# steps to go from u to v then back to u]

 

     C_uv = H_uv + H_vu.  Why? 

 

     (linearity of expectation: X = # steps to first hit v.

                                   Y = # steps to hit u after first hit v.)

 

C_u = "cover time from u" is the expected time to visit entire graph

     when we start at u.

 

C_G = "cover time of G" = max_u ( C_u )

 

 

THEOREM: for all connected G,  C_G <= 2m(n-1).    m=#edges, n=#vertices.

 

  We will prove this in two ways.

 

  Implication: s-t connectivity in "randomized log space". Only have

     O(log n) bits of read/write memory, and required to halt in poly time,

     can determine connectivity with 1-sided error.

 

------------------------------------------------------------------------------

Method 1: [Aleliunas, Karp, Lipton, Lovasz, Rackoff]

 

Let's fix some arbitrary starting vertex for our walk.

 

Look at ratio:  (# visits to u in first t steps of random walk)/t.

 

Claim: with probability 1, as t->infinity, this approaches a limiting

 value.  We'll call that value pi_u.

 

 Can think of pi_u as "steady-state prob of being at u".  E.g.,

 

     if graph is:   u-----v    then we're at u half of the time.

 

 

 Proof: Let X_i denote the time between the ith visit to u and the

     (i+1)st visit to u. 

 

     E[X_i] = H_uu, which is finite.  Also, finite variance.

 

     Implies:

     (1) As t->infinity, the number of visits to u goes to

          infinity too, with probability 1.

 

     (2) Can apply "law of large numbers": As s->infinity,

         (X_1 + ... + X_s)/s  --> H_uu with probability 1.

 

     Now, notice that numerator is t, denominator is number of

     visits to u in t steps.

 

     So, pi_u = 1/H_uu.

 

  In other words, what you expect to happen happens.

 

    -----u-------u----u-----------u-----------u----u------->

 

  H_uu = average distance between marks = 1/(limiting frequency of being at u).

 

 

FACT: sum_u pi_u = 1.   (You're always somewhere).

 

Lemma: pi_u/d(u) is the same for all nodes u.  (d(u) is the degree of u).

 

  I.e., think of the walk as being on edges.  Then, this lemma says that

  all edges are equally frequent, no matter what the graph!

 

 

Proof: Let pi(v,t) = prob at v at time t.  Say u has neighbors v1, ..., vd.

 

  So, pi(u,t) = pi(v1,t-1)/d(v1) + pi(v2,t-1)/d(v2) + ... + pi(vd,t-1)/d(vd).

 

  Since pi_v is the limiting value of the average of the pi(v,t), we

can remove the t's.   Also, let's divide both sides by d(u)

 

     pi_u / d(u) = AVG[pi_v1 / d(v1), ... ,pi_vd / d(vd)].

 

     ==> everybody is the average of all their neighbors.

 

     ==> all equal.  (consider working outward from the maximum)

 

     ==> all are equal to 1/2m.  i.e., pi_u = d(u)/2m.

 

 

Where are we now: we have that the average time between successive

traversals of some edge u-->v is 2m.

 

 

Corollary: for any edge (u,v), C_uv <= 2m.

 

Proof: E[time to go to v and back to u | at u (and just came from v)]

 

       <= E[time to traverse (v,u) | on (v,u)] = 2m.

 

---------------------------------------------------------------------

Leemon gave an interesting alternative proof to the above:  imagine we

begin by picking a random edge and direction to start our random walk

(i.e., we start in the distribution specified in the Lemma).

Then, notice this distribution is a fixed point: after 1 step, we

remain with equal probability on each edge in each direction.  So,

over a sequence of t steps, the expected number of times we traverse

edge u-->v is t/2m.  Now, we just want to invert this to say that

the expected time between two consecutive traversals of u-->v is 2m.

We can do this using the earlier idea of setting a random variable X_i

to denote the time between the ith and (i+1)st traversals, and saying

that this has finite expectation and variance, so long as the graph is

connected.  (If the graph is disconnected, then X_0 has infinite

expectation).  So, as t->infinity, the number of traversals of u-->v

goes to infinity too, and we're ok.

 

---------------------------------------------------------------------

To finish the proof about the cover time of graph:

 

 Let's consider some spanning tree of the graph.  Has n-1 edges.

 Consider some fixed tour on the spanning tree.  --> traverses each

 edge twice.  So,

 

 E[time to visit nodes in that order] = sum, over all directed edges

     (u,v) in the tree, of H_uv.  For each {(u,v), (v,u)}, get

     H_uv + H_vu = C_uv <= 2m.

 

     Since n-1 edges, we get:

 

          2m(n-1).

 

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

Proof 2.

 

Something different: resistors.

 

Resistive network is a graph with resistors on the edges.  E.g.,

 

              *-----2 Ohms------*

              |                 |

            1 Ohm              2 Ohms

              |                 |

              *-----3 Ohms------*

 

Kirchoff's law: current is like water flow.  For any node, sum

     entering equal sum leaving.

 

Ohm's law: V=IR.  (V = voltage difference across resistor).

 

     Voltage is a property of a node.  Sometimes called "potential".  

 

Two resistors in series add resistance:

 

          *-------R1--------*-------R2-------*

         V0                V1                V2

 

 

     Say I = current flowing from left to right.  Then V1 = V_0 - I*R_1.

 

     V2 = V0 - I*R1 - I*R2  ==> delta(V) = I(R1 + R2).

 

                                _____R1______

                               /             \

Two resistors in parallel:  V0*               *V1

                               \_____R2______/

 1/R = 1/R1 + 1/R2.

 

 

 See via: I1 = (V0 - V1)/R1, I2 = (V0-V1)/R2.  and I=I1+I2.

 

 

 Neat fact:

 

 THEOREM: Take a graph G and think of each edge as a unit resistor.

 Let R_uv = effective resistance between u and v.  Then:

 

     C_uv = 2m R_uv.