# Lecture 4: Alternating Turing Machines

Recap:

L ≝ SPACE(\log(n))\\ ⊆ NL ≝ NSPACE(\log(n)) = coNL \\ ⊆ P ≝ TIME(n^{O(1)}) \\ ⊆ NP ≝ NTIME(n^{O(1)}) \\ ⊆ PSPACE ≝ SPACE(n^{O(1)}) \overset{\text{Savitch}}{=} NPSPACE \overset{\text{Immermann}}{=} coNPSACE

# Alternating Turing Machines

Kozen (1976)

An Alternating Turing Machine:

$ℳ ≝ (Q_∃, Q_∀, Γ, q_0, Δ, F, R)$ where $Q ≝ Q_∃ \sqcup Q_∀$

NB: ndT ⟺ $Q_∀ = ∅$

A configuration of ATM $ℳ$ on input $x$:

is a tree TM configurations s.t. if the trees $T_1, ⋯, T_n$ are children of $C$

• if $C$ is accepting/rejecting, then $n=0$ ($q∈ F, R$, the tree is a leaf)
• if $C$ is existential ($q ∈ Q_∃ \backslash (F ∪ R)$), then

• $n ≤ 1$
• $C \overset{Δ}{⟶} root(T)$ if $n=1$
• if $C$ is universal ($q∈ Q_∀ \backslash (F ∪ R)$), then:

• for all $C \overset{Δ}{⟶} C’$ , there is a $T_i$ with root $C’$
A computation tree is accepting:

if all leaves are accepting

An input is accepted by $ℳ$:

if there’s an accepting tree rooted at $C_0(x)$

An ATM runs in $TIME(f)$ (resp. $SPACE(f)$):

every computation tree rooted in $C_0(x)$ has height/all branches of length $≤ f(\vert x \vert)$ (resp. all visited configurations (in the tree) of size $≤ g(\vert x \vert)$)

⟶ $ATIME(f), ASPACE(f)$

and

TIME(f) ⊆ NTIME(f) ⊆ ATIME(f) \\ SPACE(f) ⊆ NSPACE(f) ⊆ ASPACE(f)

(TM are special cases of NTM, which themselves are special cases of ATM)

QBF ∈ AP ≝ ATIME(n^{O(1)})

Input: formula of the form

∃ x_1, ∀ x_2, ⋯, ∃x_n. \bigwedge_i \bigwedge_j ± x_{i, j}

Existentially guess, universally check: for each

• existentially quantified variable $x_i$: one guesses a value $true$ or $false$
• universally quantified $x_j$: are given all possible values ($true$ and $false$: one in each copy/thread of the ATM)

then: formula evaluated

Corollary: $PSPACE ⊆ AP$

Because QBF is PSPACE-hard (since it is PSPACE-complete): for all $L ∈ PSPACE$:

L ≼_{\bf L} QBF ∈ AP

Th: $PSPACE = AP$

Proof: Only need to show $AP ⊆ PSPACE$

Let $L ∈ AP$, recognized by $ℳ$.

There is a PSPACE machine $ℳ’$ that recognizes $L$ (that recognizes $L$ (says if $ℳ$ accepts $x$))

$ℳ’$ simulates $ℳ$ as follows:

• define val(C) (value of a configuration)
• evaluate vale(C_0(x))
val(C) ≝ looks at q:
if q ∈ F: return YES
if q ∈ R: return NO
if q ∈ Q_∃, evaluate
val(C_1) ∨ ⋯ ∨ val(C_n)
for all C_i s.t. C ⟶ C_i
if q ∈ Q_∃, evaluate
val(C_1) ∧ ⋯ ∧ val(C_n)
for all C_i s.t. C ⟶ C_i`

The program terminates since the machine $ℳ$ terminates on any input. Stack of size $p(n)$ at most, comprised of configurations of size $p(n)$ ⟹ space bounded by $(p(n))^2$

Can be generalized to $SPACE(poly(f(n))) = ATIME(poly(f(n)))$ for $f(n) ≥ n$

# Logical problems

HornSAT:

Conjunction of clauses with at most one positive litteral

Circuit Value:
an acyclic directed graph with
• nodes labelled with $∨, ∧, \overline{∨}, \overline{∧}$
• a distinguished output node
• answer = YES if the output node evaluates to true.
digraph {
rankdir=LR;
z1, z2[label=0, shape=none]
u1[label=1, shape=none]
or1, or2[label=∨, shape=square];
and[label=∧, shape=square];
bl[shape=none, label=""]
z1 -> or1;
u1 -> or1, and;
z2 -> and;
or1 -> or2[label=1];
and -> or2[label=0];
or2 -> bl[label=1];
}

How is it different from evaluating a boolean expression?

⟶ value not kept on the stack, but in memory

Boolean formulas ≡ Circuit values for trees (not just a general acyclic DAG)

for example: in the previous example, the 1 on the left is shared.

In boolean formulas: subexpressions that are identical can thought of as shared ⟹ general circuit value

Monotone Circuit Value (MCV):

CV but only uses $∨, ∧$ (so the output cannot but increase when changed)

MCV ≼_{\bf L} CV ≼_{\bf L} HornSAT

(the first reduction is trivial (special case), we’ll focus on the second one)

Tags:

Updated: