 
Summary: Com S 633: Randomness in Computation
Lecture 14 Scribe: Ankit Agrawal
1 Derandomization
We have seen various applications of randomization, wherein we were able to design simple
and efficient algorithms for some (supposedly) deterministically hard problems. Now, we shall
see whether randomness can be eliminated or at least reduced from these algorithms; and if
so, how?
Broadly, there are two ways of achieving derandomization:
i) Algorithmic derandomization
ii) Complexity theoretic derandomization
Algorithmic derandomization techniques look at a particular randomized algorithm, and us
ing the inherent properties of the problem, analyze the randomized algorithm better to come
up with ways to remove randomness from that algorithm. Here, we start with the original
randomized algorithm for a particular problem, and improve it to derandomize it.
Complexity theoretic derandomization techniques refer to a general strategy that can be
used to remove randomness from a broad class of algorithms. Typically, this is done by
pseudorandom generators, which produce randomlooking bits.
1.1 Derandomizing Maxcut
MaxCut problem
Given a graph G = (V, E),V  = n, E = m, output two sets A and B s.t. AB = V, AB =
