\documentclass{article}
\usepackage{amsmath, amssymb}
\input{preamble.tex}

\begin{document}

\lecture{4}{February 15, 2001}{Daniel A. Spielman}{Matthew Lepinski}

\section*{Polynomial Hierarchy}
Recall from last lecture the three definitions of the Polynomial Time Hierarchy.

\begin{definition} \label{alt_def}
$\Sigma_k^P$ is the class of all languages which are accepted by a polynomial
time alternating turing machine which begins in a existential state and has at
most $k-1$ alternations. Similarly, $\Pi_k^P$ is the class of all languages which
are accepted by a polynomial time alternating turning machine which begins in
a universal state and has at most $k-1$ alternations.
\end{definition}

\begin{definition} \label{or_def}
\begin{eqnarray*}
\Sigma_0^P &=& \Pi_0^P  =  P \\
\Sigma_k^P &=& NP^{\Sigma_{k-1}^P} \\
\Pi_k^P &=& co-NP^{\Sigma_{k-1}^P}
\end{eqnarray*}
\end{definition}

\begin{definition} \label{wit_def}
$\Sigma_0^P = \Pi_0^P = P$.
\begin{eqnarray*}
\Sigma_k^P & = & \{ A\; |\; \exists\; B \in \Pi_{k-1}^P,\; c > 0
\mbox{ such that } x \in A \iff \exists\; y \mbox{ such that } (x,y) \in B
\mbox{ and } |y| \leq |x|^c \} \\
\Pi_k^P & = & \{ A\; |\; \exists\; B \in \Sigma_{k-1}^P,\; c > 0
\mbox{ such that } x \in A \iff \forall\; y \mbox{ such that } (x,y) \in B
\mbox{ and } |y| \leq |x|^c \}
\end{eqnarray*}
\end{definition}

\begin{definition}
The polynomial hierarchy $PH = \bigcup_k \Sigma_k^P = \bigcup_k \Pi_k^P$.
\end{definition}

In the previous lecture, we proved the equivalence of Definition \ref{alt_def} and
Definition \ref{or_def}. In this lecture, we prove the equivalence of Definition 
\ref{alt_def} and Definition \ref{wit_def}. In this proof we will make use of the 
following fact:

\begin{fact}
Definition \ref{wit_def} is equivalent to
$L \in \Sigma_k^P$ if, and only if $\exists c >0$ and $A \in P$ such that 
$x \in L \Leftrightarrow \exists y_1 \forall y_2 \exists y_3 \ldots (\exists / \forall)
y_k$ $(x,y_1,y_2,\ldots,y_k) \in A$ and $|y_i| < |x|^c$.
\end{fact}

To see that this fact is true, first unroll the recursion in Definition \ref{wit_def}.
Then observe that if $|y_{i+1}|$ is polynomial in 
$(|y_i|+|y_{i-1}+ \ldots +|x|)$ and $|y_j|$ is polynomial
in $|x|$ for $j \leq i$, then $|y_{i+1}|$ is polynomial in $|x|$. 

\begin{theorem}
Definition \ref{alt_def} is equivalent to Definition \ref{wit_def}.
\end{theorem}

\begin{proof}
The main difference between Definition \ref{wit_def} and Definition \ref{alt_def} is
that in Definition \ref{wit_def} the machine is required to so through all of its
Existential and Universal states before it does any other computation. Whereas in 
Definition \ref{alt_def} the machine is allowed to interleave computation, Universal
states and Existential states however it sees fit. (As long as there are at most
$k-1$ alternations.)

With this in mind, it is clear that Definition \ref{alt_def} includes
Definition \ref{wit_def}. This is because the alternating machine in
Definition \ref{alt_def} is allowed to do it's alternation before it's other computation
and thus can recognize any language of the form specified by Fact 1.

To see that Definition \ref{wit_def} includes Definition \ref{alt_def}, consider
a language $L$ which is accepted by a polynomial time 
alternating turing machine $M$ which
starts in an existential state and alternates at most $k-1$ times. 
We will construct a constant $c$ and a language $A \in P$ which satisfies Definition
\ref{wit_def}. 

Since $M$ runs in polynomial time, there is a polynomial $p(n)$ which bounds it's 
running time. Let $c$ be a constant such that for all sufficiently large $n$,
$p(n) < n^c$.

We now construct a turing machine $M'$ (we think of $M'$ as simulating $M$ without the
non-determinism). We will define A to be the language accepted by $M'$. Therefore, we
construct $M'$ to take inputs of the form $(x,y_1, y_2, \ldots, y_k)$. $M'$ begins 
simulating $M$ on $x$ and uses the following rules to handle the existential and
universal states of $M$.
\begin{itemize}
\item When $M$ would enter a existential state, $M'$ reads a bit from auxiliary input
$y_1$ and follows the branch zero if the bit is 0 and follows the branch one if
the bit is 1.
\item Continue using $y_1$ to determine which branch to follow up until the point
where $M$ enters it's first universal state.
\item When $M$ would enter a universal state, $M'$ reads a bit from auxiliary input
$y_2$ and follows the branch zero if the bit is 0 and follows the branch one if
the bit is 1.
\item Continue using $y_2$ to determine which branch to follow up until the point
where $M$ enters it's next existential state.
\item Continue in this fashion advancing to the next auxiliary input each time
$M$ alternates between existential and universal states (or vice versa). Note: Since
$M$ is guaranteed to have at most $k-1$ alternations, $M'$ will not run out of 
auxiliary inputs.
\end{itemize}

By the construction of $M'$, if $M'$ accepts $(x,y_1, y_2, \ldots, y_k)$
for some $y_1$ and all $y_2$ and some $y_3$ \ldots, then $M$ would accept $x$.
\end{proof}


\section*{The Polynomial Time Hierarchy Collapses}
\begin{proposition}
If $\Sigma_k^P = \Pi_k^P$ then $\Sigma_k^P = \Sigma_j^P$ for all $j > k$.
\end{proposition}

\begin{proof}
In this proof we use Definition \ref{wit_def}. (Since we've proved all three 
definitions equivalent, we can use whichever is most convenient.)
Additionally, we prove only the case where $j=k+1$, all other $j's$ follow easily by
induction.

$L \in \Sigma_{k+1}^P \Rightarrow \exists c, \; A \in \Pi_k^P$ such that 
$x \in L$ if and only if $\exists (x,y) \in A$ with $|y| < |x|^c$.

Since $\Sigma_k^P = \Pi_k^P$, we know $A \in \Sigma_k^P$. Therefore, 
$\exists d, \; B \in \Pi_{k-1}^P$ such that $(x,y) \in A$ if and only if $\exists
(x,y,z) \in A$ with $|z| < |x,y|^d$.

Therefore, $x \in L$ if and only if $\exists y \; \exists z$ such that $(x,y,z) \in B$
and $|y| < |x|^c$ and $|z| < |x,y|^d$.

Now we combine the two existential quantifiers into a single existential quantifier to
get $x \in L$ if and only if $\exists (y,z)$ such that $(x,(y,z)) \in B$ and 
$|(y,z)| < |x|^{cd+1}$.

Since, $B$ is a $\Pi_{k-1}^P$ language, $L$ is in $\Sigma_k^P$ by the definition of 
$\Sigma_k^P$.
\end{proof}

If the hypothesis of the previous proposition is satisfied (that is, if 
$\Sigma_k^P = \Pi_k^P$) we say that the Polynomial Time Hierarchy collapses to the 
$k^{th}$ level. This is the complexity theorist's way of saying ``Horses Can Fly!''. 
It has not been proven that the hierarchy does not collapse, however, complexity 
theorists universally believe that such a collapse does not occur.

Many theorems in complexity theory take the form ``If Pigs Could Whistle Then 
Horses Could Fly!''. That is, a complexity theorist might want to prove a result like
NP is NOT in P/POLY (i.e. Pigs Can't Whistle) but finds herself unable to do so. Therefore,
the complexity theorist instead proves the result ``If NP in P/POLY then the Polynomial
Time Hierarchy Collapses'' (i.e. If Pigs Could Whistle Then Horses Could Fly). 
Since no one believes that the hierarchy collapses (i.e. no one believes that horses
can fly), this result is taken as strong evidence that NP is NOT in P/Poly (i.e.
strong evidence that Pigs Can't Whistle).

In the next lecture we will prove the first theorem of this type. However, first
we must define Non-Uniform Complexity.

\section*{Non-Uniform Complexity}

\begin{definition}
For a function $f : \{0,1\}^n \rightarrow \{0,1\}$, the Circuit Complexity of
$f$ is the minimum $m$ such that there exists a circuit with $m$ AND, OR and NOT gates
that computes $f$
\end{definition}

We denote the Circuit Complexity of $f$ by $C(f)$.

\begin{definition}
A language, $L$, has Polynomial Circuit Complexity if there exists a $k$ such
that $C(f_n)=O(n^k)$ where
$f_n = 1 \Leftrightarrow$ $x \in L$ and $|x| = n$.
\end{definition}

Observe that Polynomial Circuit Complexity can give you undecidable languages.
For, instance the language $L = \{x: \mbox{Turing Machine number } |x| \mbox{ halts} \}$ has
Polynomial Circuit Complexity.

\begin{definition}
$L \in P$/Poly if there exists $A \in P$, $k>0$ and an infinite sequence of
strings $\{S_n\}$ such that $|S_n| = O(n^k)$.
\end{definition}

\begin{theorem}
$L \in P$/Poly if and only if $L$ has Polynomial Circuit Complexity.
\end{theorem}
\begin{proof}
If $L$ has Polynomial Circuit Complexity then there exists a sequence of 
circuits $\{C_n\}$ and some $k>0$ such that $|C_n| = O(n^k)$ and 
for all $|x|=n$, $x \in L \Leftrightarrow C_n(x)=1$.

To show that Polynomial Circuit Complexity is contained in P/Poly, we just
let $S_n$ be a description of $C_n$ and let $A$ be CVAL (the Circuit Value
Problem). Observe that $x \in L \Leftrightarrow (x,C_{|x|})\in CVAL$.

To show the containment of P/Poly in Polynomial Circuit Complexity, let $L$
be a language in P/Poly and let $M$ be a Turing Machine that accepts $A$.
Then $x \in L \Leftrightarrow M(x, S_{|x|})$ accepts. Since $A \in P$ we
know that there exists some polynomial $p(n)$ which bounds the running time
of $M$.

Recall the proof that CVAL is P-Complete. From that proof we know that we
can transform $M$ into a circuit, $C$, with input $(x,S_{|x|})$ and size
$O(p(n)^2)$ such that
$C(x,S_{|x|})=1$ if and only if $M(x,S_{|x|})$ accepts. Now we choose 
$C_n$ to be the circuit $C$ with $S_{n}$ hardwired in as the second input.
\end{proof} 

\end{document}
