Randomized Algorithms

 

* Why randomized algorithms?

* Two interesting algorithms

 

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

 

WHY RANDOMIZED ALGORITHMS?

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

 

Randomness is a useful resource to take advantage of in designing algorithms.

 

Ways randomness helps:

 

1. Use simple randomized algorithm to achieve same worst-case performance

     as complicated deterministic algorithm.  Or, sometimes have simple

     deterministic heuristic with good performance "most of the time"

     that can transform into an algorithm with good worst-case

     performance by adding randomness.

   E.g., median-finding, many standard algorithmic problems.

 

2. Sometimes can do things we don't know how to do deterministically.

   E.g., primality testing (deterministic alg requires unproven

   assumptions), linear-time min-spanning tree.

 

3. Sometimes can do things provably impossible deterministically

     (protocol or oracle problems)

 

4. Sometimes can do things that just seem impossible...

 

This course will talk about:

* Techniques for using this resource in algorithms.

* Techniques for analyzing randomized algorithms.

* Some neat randomized algorithms.

 

Book is structured in this way.  First half discusses important

techniques and 2nd half is a sampling of different areas where

randomized algorithms are useful.  What I envision for class

presentations is that in 2nd half, there are a lot more subjects than

we can really go through.  So, I'll pick some that I like, and you will

each have a chance to learn one in depth and talk about it.

 

Today: Some neat randomized algs.  Categories 1 and (3,4).

 

SPLITTING A 3-COLORABLE GRAPH INTO TWO PIECES SO NEITHER HAS A TRIANGLE

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

 

Definition of problem: You have a 3-colorable graph.  Want to split

into 3 independent sets.  NP-hard.  Easier problem: split into two

pieces so that neither has a triangle.  (If could do this for

diamonds or pentagons, then this would improve current approx ratio)

 

A solution: split arbitrarily.  Find some bad triangle.  Then pick one

of its 3 nodes AT RANDOM, and move it to the other side.  Continue

until there are no more bad triangles.

 

* How to see as random walk.  In this walk, the expected time to hit

boundary 0 or n is O(n^2) [*].  This means that expect to end in at most

that much time.

 

Proof of [*]:

 

First, let's consider 50/50 random walk --- it's easy to see proving

for this case is enough.  Why? Now, in a random walk with 2m steps,

prob that make A steps to right is 2^{-2m} * (2m choose A).  What is

the maximum value of this?  It's maximized at A=m.  Using Stirling's

formula: m! is approximately (m/e)^m * sqrt{2 pi m}, so for A=m we

have about 1/sqrt{pi m}.  So, prob that after 2m steps you are between

0 and n is at most n/sqrt{pi m}, which is < 1/2 for m = 2n^2. So, with

probability at least 1/2, we end after 4n^2 steps.  With prob > 1 -

1/2^k, we end after 4kn^2 steps.  So, expectation is O(n^2).

 

 

More exact calculation: Let E_x be the expected time to reach 0 or n

given that you start at x.  So, E_0 = E_n = 0.  What is E_x in terms

of its neighbors? E_x = 1 + 1/3(E_x + E_{x+1} + E_{x-1}).  Rewrite as:

E_{x+1} - E_x = E_x - E_{x-1} - 3.  So ``second derivative'' of E

w.r.t. x is -3.  Suggests to solve E_x = - 3/2 x^2 + cx + c' at

boundary conditions.  Get: 3/2 x(n-x).  Note: this is using

linearity of expectation, though of indep events.

 

 

FINDING THE AVERAGE GRADE, WITHOUT GIVING AWAY YOUR OWN SCORE

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

* The problem: A group of N friends wants to determine their average

score on a test, but nobody wants to reveal their own score.

 

* Even if two people collaborate, they shouldn't be able to find your

score.

 

* More generally, if K of the N "friends" are dishonest, then they

should still learn no more than the sum of the remaining N-K honest ones.

 

* Possible protocols?

 

Well see one that works next time...

 

 

[Notes: Coloring algorithm is from: Colin McDiarmid, ``A random recouloring

method for graphs and hypergraphs.''  Combinatorics, Probability and

Computing, 2:363-365, 1993.]