# Lecture 5

For the past four lectures we studied the basics of circuits and why they are interesting. Today we finally started to talk about the first topic of the course, namely Hardness-Randomness tradeoff.

We began by defining probabilistic Turing machines and defining complexity classes that capture randomness. We further noticed that P is contained in BPP which in turn is contained in PSPACE. In fact, a cool theorem by Sipser (which was later improved by Gacs) shows that BPP is contained in the second level of PH (see Chapter 7 of Arora-Barak, which we followed for this part of the lecture). There is also an alternative proof for this (and more) by Goldreich and Zuckerman.

We then switched to talk about pseudrandom sets or equivalently pseudorandom generators (PRG) (Chapter 20 of Arora-Barak). We saw how a PRG against circuits would allow us to derandomize efficient algorithms. This is a neat applications of circuits – to derandomize *uniform* algorithms, we need to fool these *non-uniform* circuits. Next time we will see that circuits play a central role in the construction of PRG as well. We will see that a hardness generator (generator that outputs the truth table of a hard function) yields a pseudorandomness generator. Thus, improving circuit lower bounds is a route for derandomization!

But before going into that, we saw one example of a pseudorandom set, one that fools a very specific algorithm – the algorithm that computes a random parity of its input. This pseudorandom set, introduced by Naor and Naor in the early 90s, is a very important object in theoretical computer science and is called a small-bias set. We saw a construction of such a set, called the Powering Construction, mainly so to give an example of how to construct (and even more importantly – analyze) things that look random (but also because we will use small-bias sets later on). A very good talk available online about small-bias sets was given by Amir Yehudayoff.

Next lecture we will show how to construct a PRG given a hardness generator. However, in this course we are more interested in the other direction of the tradeoff, so we will only sketch the proof and start to cover a bit more theory we need so to prove the other direction, namely, prove that derandomization implies circuit lower bounds!

A great online talk about Hardness-Randomness tradeoffs was given a few years ago by Kabanets. Another more introductive and high level video lecture about pseudorandom generators by Impagliazzo was given a few years ago: part 1 and part 2. For a more formal treatment see an extensive survey about derandomization of complexity classes by Miltersen.