\documentclass{article}
\usepackage{amsmath,amssymb}
\input{preamble.tex}
\newcommand{\p}{\mathsf{P}}
\newcommand{\np}{\mathsf{NP}}
\newcommand{\co}{\mathsf{co}}
\newcommand{\bpp}{\mathsf{BPP}}
\newcommand{\pspace}{\mathsf{PSPACE}}
\newcommand{\ph}{\mathsf{PH}}
\newcommand{\sigmap}[1]{\Sigma_{#1}^{\p}}
\newcommand{\pip}[1]{\Pi_{#1}^{\p}}
\newcommand{\poly}{\mathrm{poly}}
\newcommand{\gapp}{\mathsf{GapP}}
\newcommand{\numberp}{{\mathsf{\#}\p}}
\newcommand{\problem}[1]{\ensuremath{\mbox{\textsc{#1}}}}
\newcommand{\eqdef}{~\stackrel{\mbox{\tiny \textnormal{def}}}{=}~}
\newcommand{\ints}{\mathbb{Z}}
\newcommand{\tup}[1]{\langle #1 \rangle}
\newcommand{\pr}[2][{}]{\mathtt{Pr}_{#1}\!\left[ #2 \right]}
\newcommand{\cpr}[2]{\pr{#1 \,|\, #2}}
\newcommand{\expect}[1]{\mathtt{E}\!\left[ #1 \right]}
\renewcommand{\mod}{~\mathrm{mod}~}
\newcommand{\numberc}{{\rm \#C}}
\newcommand{\fp}{{\rm FP}}
\newcommand{\rp}{{\rm RP}}
\newcommand{\bp}{{\mathsf{BP}}}
\newcommand{\C}{{\cal C}}
\newcommand{\true}{\mathsf{true}}
\begin{document}
\lecture{9}{8 March 2001}{Dan Spielman}{David Liben-Nowell}
Today, we will explore the class $\numberp$, as part of an
investigation of classes that fall between $\ph$ and $\pspace$. We
will also outline the proof of Toda's Theorem, skipping over some of
the details, showing that $\ph \subseteq \p^{\numberp}$.
\section{Counting Classes}
The class $\numberp$ [Valiant c.~1979] (say ``sharp $\p$'' or ``number
$\p$'') is a class of functions counting the number of accepting
computations in a Turing machine:
\[
\begin{array}{l}
\numberp \eqdef \big\{f:\{0,1\}^* \longrightarrow \ints ~|~
\exists~\mbox{a nondeterministic polynomial time Turing machine $M$
s.t.} \\
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~f(x) = \mbox{the number of accepting paths of $M$ on input $x$}\big\}.
\end{array}
\]
Note there is also a class $\gapp$, in which we count the difference
between the number of accepting computations and the number of
rejecting computations. Sometimes it's easier to work with $\gapp$
than $\numberp$. (In $\numberp$, e.g., we can only map inputs into
the non-negative integers.)
Note that $\np \subseteq \numberp$ (``is there some accepting path?'')
and $\co\np \subseteq \numberp$ (``are all paths accepting?''). Today
we'll also sketch Toda's theorem:
\begin{theorem}[Toda]
$\ph \subseteq \p^{\numberp}$.
\end{theorem}
First, though, some more about $\numberp$. A function $f$ is
\emph{$\numberp$-Complete} if
\begin{enumerate}
\item[\textit{(i)}] $f \in \numberp$,
\item[\textit{(ii)}] For all $g \in \numberp$, there exists a
polynomial time oracle Turing machine $M^?$ such that $M^F(x)$
outputs $g(x)$.
\end{enumerate}
Interestingly, $\numberp$-Complete problems do not necessarily
correspond to hard decision problems.
For a circuit $C$, define $\problem{circuitsat}(C)$ to be the number
of input setting that satify the circuit:
\[
\#\problem{circuitsat}(C) \eqdef \left|\left\{x : C(x) =1 \right\}\right|.
\]
$\#\problem{circuitsat}$ is $\numberp$-Complete.
A \emph{matching} is a graph is a subset of the edges using each node
exactly once. (The number of matchings is the permanent of the
adjacency matrix, where $\mathsf{perm}(M) = \sum_\pi \prod_{i=1}^n
m_{i,\pi(i)}$. Despite its superficial similarity to the determinant
$\mathsf{det}(M) = \sum_\pi \prod_{i=1}^n (-1)^{\mathrm{sign}(\pi)}
m_{i,\pi(i)}$, it is much harder to compute.) Valiant proved that
counting the number of matchings in a graph is $\numberp$-Complete.
Finding a single matching is easy (unlike $\#\problem{circuitsat}$,
where finding one is $\np$-hard).
See Papadimitriou for more details, and Jerrum, Sinclar, and Vigoda
[ECCC/STOC'01] for a randomized PTAS for approximately counting the
number of matchings.
\section{Toda's Theorem}
For the rest of the lecture, we will discuss some of the ideas behind
Toda's Theorem.
To get an intuition for Toda's theorem, we need to define some new
complexity classes. For class $\C$, we will define four class
operators. We can use these to get all kinds of new classes.
\begin{definition}
For a complexity class $\C$,
\begin{eqnarray*}
% ----- %
\Sigma \cdot \C &\eqdef&
\{L: \exists ~\mathrm{polynomial}~ p ~~\exists A\in\C\\
&& ~~~~~~~~~~~~~~~~ x\in L \iff
\exists y\in\{0,1\}^{p(|x|)} \tup{x,y}\in A\} \\
% ----- %
\Pi \cdot \C &\eqdef&
\{L: \exists ~\mathrm{polynomial}~ p ~~\exists A\in\C\\
&& ~~~~~~~~~~~~~~~~ x\in L \iff
\forall y\in\{0,1\}^{p(|x|)} \tup{x,y}\in A\} \\
% ----- %
\oplus \cdot \C &\eqdef&
\Bigg\{L: \exists ~\mathrm{polynomial}~ p ~~\exists A\in\C\\
&& ~~~~~~~~~~~~~~~~ x\in L \iff
\bigg| \left\{ y\in\{0,1\}^{p(|x|)}: \tup{x,y}\in A\right\} \bigg|
\mathrm{~is~odd} \Bigg\} \\
% ----- %
\bp \cdot \C &\eqdef&
\Bigg\{L: \exists ~\mathrm{polynomial}~ p ~~\exists A\in\C\\
&& ~~~~~~~~~~~~~~~~ x\in L ~\Longrightarrow \Pr_{|y|=p(|x|)}
\limits [\tup{x,y} \in A] > 2/3 \\
&& ~~~~~~~~~~~~~~~~ x\notin L ~\Longrightarrow \Pr_{|y|=p(|x|)}
\limits [\tup{x,y} \in A] < 1/3\Bigg\}. \\
% ----- %
\end{eqnarray*}
\end{definition}
(Read $\oplus\cdot\C$ as ``parity $\C$''.)
Using these class operators, we can state the key elements of Toda's
theorem.
\begin{claim}
$\np \subseteq \bp \cdot \oplus \cdot \p,$ and more generally,
$\Sigma_k^P \subseteq (\bp \cdot \oplus)^k \cdot \p$.
\end{claim}
\begin{claim}
For any ``reasonable class'' $\C$,
\begin{eqnarray*}
\oplus \cdot \bp \cdot \C &\subseteq& \bp \cdot \oplus \cdot \C\\
\oplus \cdot \oplus \cdot \C &=& \oplus \cdot \C\\
\bp \cdot \bp \cdot \C &=& \bp \cdot \C.
\end{eqnarray*}
\end{claim}
So $\sigmap{k} \subseteq \bp \cdot \oplus \cdot \p$.
\begin{claim}
$\bp \cdot \oplus \cdot \p \subseteq \p^\numberp$.
\end{claim}
Toda's theorem then follows from these claims. We will give the main
ideas of these proofs today, skipping over the hairy details which, we
are assured, are hairy.
\begin{lemma}
$\np \subseteq \bp \cdot \oplus \cdot \p$.
\end{lemma}
\begin{proof}
We show that the $\np$-Complete problem $\problem{circuitsat} \in
\bp \cdot \oplus \cdot \p$.
Recall the theorem of Valiant and Vazirani from last lecture: there
exists a random polynomial time procedure that takes a circuit $C$
and returns $n+1$ circuits $C_1, ..., C_{n+1}$ such that if $C$ is
satistfiable,
\[
\pr{\exists i ~ C_i \text{ has exactly one satisfying assignment}}
~~>~~ 1/8,
\]
and otherwise no $C_i$ has a satisfying assignment. $\bp$ allows us
to get random bits; when there is only zero or one satisfying
assignment, $\oplus$ lets us determine which is the case.
Two things are not so good about this. First, the $1/8$ should be a
$2/3$. Second, we have $n+1$ circuits and we want to have 1.
To handle the first problem, we amplify the probability by
repetition. Say we output $C_1^i, ..., C_{n+1}^i$ for $i = 1, 2,
..., 20$. Then
\[
\pr{\exists i, j~ C_j^i \text{ has exactly one satisfying
assignment}} ~~>~~ 1 - (7/8)^{20} ~~\approx~~ 0.930 ~~>~~ 2/3.
\]
How can we handle the second problem? We do something like ``AND
them all togther'' --- but not quite, because that doesn't work.
Write $\#C$ for the number of satisfying assignments for a circuit
$C$. We want to build a circuit $C'$ so that: (1) $\#C'$ is odd if
any $\#C_i$ is odd, $\#C'$ is even if all $\#C_i$s are even.
The function $\#C' = 1 + \prod_{i=1}^m (\#C_i + 1)$ yields the
desired properties. But how do be build the circuit $C'$? Toda's
insight was that we can play arithmetic games with the number of
satisfying assignments.
Given two circuits $C_1(x)$ and $C_2(y)$, we can build a circuit
$C'$ with $\#C' = \#C_1 + \#C_2$, as follows. Add a new input $t$,
and let the circuit be $C'(x,y) = (C_1(x) \wedge t) \vee (C_2(y)
\wedge \neg t)$. Similarly, we can build a circuit $C'$ with $\#C'
= \#C_1 \#C_2$: $C'(x,y) = C_1(x) \wedge C_2(y)$. It is easy to
build a circuit with any constant number of satisfying assignments
(e.g., 1).
Thus we can build $C'$ so that $\#C' = 1 + \prod_{i=1}^m (\#C_i +
1)$. So we have a randomized polynomial time procedure which works
as follows: (1) apply Valiant/Vazirani and amplify; (2) with
probability at least $9/10$, we have one $C_i$ with an odd number of
satisfying assignments if $C$ is satisfiable, and with probability
zero if not; (3) $\#C'$ is odd iff $C$ is satisfiable, with good
probability.
\end{proof}
\begin{lemma}
$\bp \cdot \oplus \cdot \p \subseteq \p^\numberp$.
\end{lemma}
\begin{proof}
Consider a language $L \in \bp \cdot \oplus \cdot \p$. That is,
unwinding the definition, there exists a polynomial time Turing
machine $M$ so that $M(w)$ outputs a circuit $C_w$ so that
\begin{enumerate}
\item[\textit{(i)}] if $w \in L$, then $\pr[x]{|\{y:C_w(x,y)=1\}|
\mathrm{~is~odd}} > 2/3$.
\item[\textit{(ii)}] if $w \notin L$, then
$\pr[x]{|\{y:C_w(x,y)=1\}| \mathrm{~is~odd}} < 1/3$.
\end{enumerate}
So deciding whether $w \in L$ is equivalent to differentiating
whether $\pr[x]{|\{y:C_w(x,y)=1\}| \mathrm{~is~odd}}$ is more than
$2/3$ or less than $1/3$.
We need to show how to do this differentiation in $\p^\numberp$.
Idea \#1: try $\sum_x \sum_y \#C_w(x,y)$. But the sum of two odds
is even, so this doesn't help. But: if we're given $y_1, \ldots,
y_N \in \{0,1\} \mod 4N$, then summing them $\mod 4N$ tells us how
many are odd.
\begin{eqnarray*}
h(a) &\eqdef& 4a^3 + 3a^4 \\
h^{(1)}(a) &\eqdef& h(a) \\
h^{(c)}(a) &\eqdef& h(h^{(c-1)}(a)).
\end{eqnarray*}
If $a\equiv0 \mod 2$ then $h^{(c)}(a) \equiv 0 \mod 2^{2^c}$. If
$a\equiv1 \mod 2$ then $h^{(c)}(a) \equiv -1 \mod 2^{2^c}$. (To
prove this, show that if $a\equiv0 \mod 2^c$ then $h(a) \equiv 0
\mod 2^{2c}$ and if $a\equiv1 \mod 2^c$ then $h(a) \equiv -1 \mod
2^{2c}$, and then use induction.)
Instead of $\sum_x \sum_y \#C(x,y)$, we compute $\sum_x
h^{(c)}\left(\sum_y \#C(x,y)\right)$. For a fixed $x$, the value
$h^{(c)}\left(\sum_y \#C(x,y)\right)$ is either $0$ or $-1 \mod
2^{2^c}$. We choose $c=\log m$, so $2^{2^c}$ is large enough that
we can count the number of $x$ so for which this value is $-1$. Now
we can check whether $\pr[x]{|\{y:C_w(x,y)\}| \equiv -1 \mod
2^{2^c}}$ is more than $2/3$ or less than $1/3$ by
nondeterministically choosing $x$. $h^{(c)}$ now has degree $4^c$,
which is polynomial in $m$.
\end{proof}
The rest of Toda's theorem isn't so hard --- this lecture has sketched
almost all of the hard ideas.
\end{document}