Lecture 3:

Immermann-Szelepcsenyi (1987)

got the Gödel Prize in 1995! ⟶ solved many problems in the aftermath

Th: Immermann-Szelepcsenyi:

coNSPACE(f(n))NSPACE(f(n))

for f(n)log(n)

Reminder: GAP is a.k.a REACH

First step: coGAPNL

is there NO path between s and t?

We will guess the set of reachable states, but we can’t remember them (too large: doesn’t fit in Logspace) ⟶ instead, one remembers their number

d = 0; N = 1
repeat
  pN = N # previous value of N
  N = 0
  for all nodes n in G:
    new = false # is it a new one ?
    cpt = 0
    for all nodes n' in G:
      guess if s ⟶_≤d n' # the NL algo for GAP
      if yes:
        cpt += 1
        if n' ⟶_≤1 n:
->         if n == t: reject
          N += 1
          new = true
    if cpt < pN:
      reject # the machine has forgotten some paths s ⟶_≤d n'
    d = d+1 # N is the new value
until N = pN
-> now accept

The run which always guesses right gives the correct computation.

What about t? ⟶ the at the beginning of the lines

Now when it comes to our f:

Let LcoNSPACE(f(n))

⟹ there exists a non-deterministic TM recognizing L

Given xA, let’s build a non-deterministic (in space f(n)) TM which decides “ rejects x”.

⟹ Now the graph is the configurations of on x.

runs algo for coGAP on this graph, with s being the initial configuration on x, t being a final one.

But one has to add those instructions:

(at the beginning)
size seen so far = size of |x|

(after the initial repeat)
configuration of size ≤ size seen so far + O(1)
# to go from one node to another, without testing all the possible configurations (it would require that f is computable)

NB: flogn because of the pointer in the input ⟶ not bounded by f, bu the need to store it in the configurations.

Corollary: for f=log:

coNLNL

And as co(coNL)=NL, we have the other inclusion:

coNL=NL

And __

Conjecture:

coNL=NLL

QBF: Quantified Boolean Formulae

Ex: x.y.(xz.(yz))

QBFPSPACE

Recursive algorithm:

eval(φ):
  if φ = ∃x. ψ:
    eval(ψ[x←true]) or eval(ψ[x←false])
  if φ = ∀x. ψ:
    eval(ψ[x←true]) and eval(ψ[x←false])  
  if φ = ψ ∨ χ:
    eval(ψ) or eval(χ)
  if φ = ψ ∧ χ:
    eval(ψ) and eval(χ)
  if φ = true:
    return true
  else:
    return false

Stack of size |φ|, each level being of size |φ| ⟶ overall space memory = |φ|2

QBF is PSPACE-complete

Proof: we will reuse the same ideas than when we showed that NPLSAT

L recognized by in time t(n), space f(n).

We will assume, wlog, that the machine writes on the input tape, in space f(n).

As the space is now in f(n), the time is exponential in f(n), so we use the quantifiers of the QBF formula to resort to dichotomy on the time.

The problem is that the formulas “going from x to y in 2d steps” use exponential space ⟶ trick: we use universal quantifiers not to copy them twice at each recursive step.

Leave a comment