Savitch's Theorem

Imagine a maze-solving robot with a broken clock but a photographic memory bounded by a small notebook. It cannot count how many steps it has taken. Yet it can still decide whether an exit exists, so long as it is clever about how it searches. This is the essence of a fundamental question in complexity theory: how much extra memory does a computation need if we take away the ability to guess correctly at every step? Nondeterministic machines are allowed to guess a computation path out of thin air. Deterministic machines must actually search for it. The question of whether guessing is a genuinely free resource, or one that costs something to simulate away, is one of the oldest and most elegant questions in the theory of computation. Savitch's Theorem, proved by Walter Savitch in 1970, gives a strikingly clean answer for space: guessing costs at most a squaring of memory. Any problem solvable by a nondeterministic machine using f(n)f(n) space can be solved by a deterministic machine using only O(f(n)2)O(f(n)^2) space. This stands in sharp contrast to the analogous question for time. There, the best known simulation of nondeterministic time t(n)t(n) requires roughly 2O(t(n))2^{O(t(n))} deterministic time. This is an exponential blowup that nobody knows how to avoid (this is essentially the P vs NP question). Space, it turns out, is far more forgiving. A nondeterministic search over exponentially many branches can be deterministically simulated by reusing the same small amount of memory over and over. This works because, unlike time, space can be freed and recycled. The proof is not a black-box counting argument. It's a beautiful, constructive divide-and-conquer algorithm called the reachability method, sometimes described via yieldability: does configuration C2C_2 become reachable from configuration C1C_1 within a given number of steps? Savitch's insight is that this reachability question, over an exponentially large graph of configurations, can be answered recursively. It does this by asking about a midpoint configuration. This cuts the "time budget" in half at each level of recursion. It only slightly grows the space needed to remember where you are in the recursion. This article builds the algorithm from scratch: configuration graphs, the recursive `CANYIELD` procedure, the complexity analysis showing the space bound is genuinely O(f(n)2)O(f(n)^2), and a full worked trace on a small nondeterministic machine. It closes by placing the theorem in the landscape of PSPACE. It also foreshadows its dramatic corollary for the classes L and NL.

Key takeaways
  • Savitch's Theorem: NSPACE(f(n))⊆SPACE(f(n)2)\text{NSPACE}(f(n)) \subseteq \text{SPACE}(f(n)^2) for space-constructible f(n)≥log⁡nf(n) \geq \log n.
  • The proof simulates nondeterminism by recursively asking "can configuration C1C_1 reach C2C_2 within tt steps?", splitting tt in half at each recursive call (the yieldability / reachability method).
  • Recursion depth is O(log⁡t)O(\log t) and each level needs O(f(n))O(f(n)) space to store one configuration, giving total space O(f(n)⋅log⁡t)=O(f(n)2)O(f(n) \cdot \log t) = O(f(n)^2).
  • The dramatic corollary: PSPACE=NPSPACE\text{PSPACE} = \text{NPSPACE} — polynomial space is unaffected by nondeterminism, unlike the P vs NP situation for time.
  • The same argument shows NL⊆SPACE(log⁡2n)\text{NL} \subseteq \text{SPACE}(\log^2 n), a key stepping stone in understanding L and NL.
  • The theorem exemplifies that space, unlike time, can be reused, making nondeterminism far cheaper to remove.
The core insight

Nondeterministic space can be simulated deterministically with only a quadratic blowup, because a machine can recycle its limited memory to search a middle configuration recursively instead of tracking an entire exponential computation tree at once.

The idea

A nondeterministic Turing machine NN using space f(n)f(n) has, for each input of length nn, a configuration graph GNG_N: vertices are configurations (tape contents, head positions, state — everything needed to resume computation), and there is a directed edge C1→C2C_1 \to C_2 if NN can move from C1C_1 to C2C_2 in one step. Because NN uses only f(n)f(n) space, the number of configurations is bounded by

∣V(GN)∣≤cf(n)|V(G_N)| \le c^{f(n)}

for some constant cc depending on the machine's alphabet and state set — exponential in f(n)f(n), but each individual configuration can be written down using only O(f(n))O(f(n)) bits. NN accepts its input if and only if there is a directed path in GNG_N from the start configuration CstartC_{\text{start}} to some accepting configuration CacceptC_{\text{accept}}. This reduces the language-membership question to a graph reachability question on an exponentially large but implicitly-described graph. The brute-force way to decide reachability — breadth-first or depth-first search, storing a visited-set — would need to remember which of the exponentially many configurations have been seen, costing exponential space. Savitch's trick avoids ever storing the visited set. The key auxiliary notion is yieldability with a step bound: define REACH(C1,C2,t)\text{REACH}(C_1, C_2, t) to be true iff NN can get from C1C_1 to C2C_2 in at most tt steps. Because the whole graph has at most cf(n)c^{f(n)} vertices, if a path exists at all, one exists using at most cf(n)c^{f(n)} steps (no need to revisit a vertex). So acceptance is equivalent to REACH(Cstart,Caccept,cf(n))\text{REACH}(C_{\text{start}}, C_{\text{accept}}, c^{f(n)}). The magic step is realizing that REACH(C1,C2,t)\text{REACH}(C_1, C_2, t) can be answered by guessing a midpoint configuration CmC_m and recursively checking REACH(C1,Cm,t/2)\text{REACH}(C_1, C_m, t/2) and REACH(Cm,C2,t/2)\text{REACH}(C_m, C_2, t/2) — cutting the time parameter in half while only adding one configuration (size O(f(n))O(f(n))) to the recursion stack.

How it works

The algorithm is a recursive procedure `CANYIELD(C1, C2, t)` that returns true iff C1C_1 can reach C2C_2 in at most tt steps of NN. The top-level call uses t=cf(n)t = c^{f(n)}, the maximum meaningful number of steps (larger than the total configuration count would ever require). ``` // N: a nondeterministic TM using space f(n) // C1, C2: configurations of N (encoded in O(f(n)) bits) // t: a step budget (a power of two, WLOG, for clean halving) function CANYIELD(C1, C2, t): if t == 1: return (C1 == C2) or (N can move from C1 to C2 in exactly one step) // base case checked directly: O(f(n)) space, no recursion if t > 1: for every configuration Cm of N that uses <= f(n) space: // Cm ranges over all c^{f(n)} possible configurations, // trying them one at a time and REUSING space each time if CANYIELD(C1, Cm, ceil(t/2)) and CANYIELD(Cm, C2, floor(t/2)): return true return false function DETERMINISTIC-SIMULATE(N, x): n = length(x) C_start = initial configuration of N on x // try every accepting configuration reachable within max steps T = c^(f(n)) // upper bound on path length in G_N for every accepting configuration C_accept: if CANYIELD(C_start, C_accept, T): accept reject ``` The crucial implementation detail — the one that makes the space bound work — is how the `for every configuration Cm` loop and the recursive calls share memory. At each level of recursion we only need to store:

  • the current pair (C1,C2)(C_1, C_2) being tested, each O(f(n))O(f(n)) bits,
  • the current candidate midpoint CmC_m being tried, O(f(n))O(f(n)) bits,
  • the current step budget tt (or equivalently the recursion depth, a number up to log⁡T=O(f(n))\log T = O(f(n)), needing O(log⁡f(n))O(\log f(n)) bits to store as a counter),

and then the recursive call to `CANYIELD` for the left half can reuse this same block of memory, and once it returns, the same memory is reused again for the right half. This is exactly like how depth-first recursion on a tree only needs to store one root-to-current-node path at a time, not the whole tree.

Figure
The recursion tree for CANYIELD: each level halves the step budget, and only one root-to-leaf path is held in memory at a time
CANYIELD(C1, C2, t) recursion — depth = log t (C1, C2, t) (C1, Cm, t/2) (Cm, C2, t/2) (C1, Cm', t/4) (Cm', Cm, t/4) ⋮ ⋮ t = 1: direct check Only the RED path is stored at once — depth log₂T levels × O(f(n)) bits/level = O(f(n)·log T) = O(f(n)²) space Sibling subtrees (light boxes) are explored one at a time and their memory is reused

The final algorithm calls `CANYIELD(C_start, C_accept, T)` for each of the finitely many accepting configurations (or, equivalently, adds a single "super-accept" configuration reachable from all accepting ones), and accepts iff any call returns true.

Complexity & correctness

Space bound. Let f(n)≥log⁡nf(n) \ge \log n be space-constructible, and suppose NN is a nondeterministic TM deciding a language in space f(n)f(n). The configuration graph has at most T=2O(f(n))T = 2^{O(f(n))} vertices (a standard counting bound: states × head positions × tape contents over f(n)f(n) cells), so we may take T=2k⋅f(n)T = 2^{k \cdot f(n)} for a constant kk. The recursion `CANYIELD(C1, C2, t)` has depth exactly ⌈log⁡2t⌉\lceil \log_2 t \rceil, since tt halves at each level down to the base case t=1t = 1. With t=T=2kf(n)t = T = 2^{k f(n)}, the depth is

log⁡2T=k⋅f(n).\log_2 T = k \cdot f(n).

At each level of the recursion, the algorithm must store the current pair of configurations (C1,C2)(C_1, C_2) (or (C1,Cm)(C_1, C_m), etc.), each requiring O(f(n))O(f(n)) bits, plus O(log⁡f(n))O(\log f(n)) bits to track which candidate midpoint is currently being tried (an index into 2O(f(n))2^{O(f(n))} candidates still only needs O(f(n))O(f(n)) bits to write down explicitly, since we store the actual configuration, not an abstract index) and O(log⁡log⁡T)=O(log⁡f(n))O(\log \log T) = O(\log f(n)) bits for a loop counter. So each stack frame costs O(f(n))O(f(n)) space, and there are O(f(n))O(f(n)) frames alive simultaneously (one per recursion level, since it's depth-first), giving total space

O(f(n))×O(f(n))=O(f(n)2).O(f(n)) \times O(f(n)) = O(f(n)^2).

This proves NSPACE(f(n))⊆SPACE(f(n)2)\text{NSPACE}(f(n)) \subseteq \text{SPACE}(f(n)^2).

Why reuse works (the key invariant). The crucial invariant is: at any moment during execution, the deterministic simulator's memory holds exactly one root-to-current-node path in the recursion tree, never two siblings at once. This is guaranteed because the algorithm is depth-first: it fully completes (and discards) the left recursive call `CANYIELD(C1, Cm, t/2)` before beginning the right one `CANYIELD(Cm, C2, t/2)`, reusing the exact same tape region for both. Because the recursion tree has depth O(f(n))O(f(n)) and each level's frame is O(f(n))O(f(n)) bits, no matter how astronomically wide the tree is (branching factor up to 2O(f(n))2^{O(f(n))} at each level, since we try every possible midpoint), the space used is proportional only to the tree's depth, not its size. This is the whole trick, and it is why space complexity behaves so differently from time complexity: a time-bounded algorithm cannot "forget" the branches it explored (it must sequentially spend time on each), but a space-bounded algorithm can throw away all information about a branch as soon as it's done with it.

Correctness (proof sketch by induction on tt). Claim: `CANYIELD(C1, C2, t)` returns true iff NN can reach C2C_2 from C1C_1 in at most tt steps.

  • Base case t=1t = 1: trivially correct — either C1=C2C_1 = C_2 (zero steps) or there's a direct one-step transition, which is checked exhaustively from NN's transition function.
  • Inductive step: Suppose the claim holds for all budgets less than tt. If C1→≤tC2C_1 \to^{\le t} C_2 via some path of length ≤t\le t, let CmC_m be the configuration at the midpoint of that path (position ⌈len/2⌉\lceil \text{len}/2 \rceil). Then C1→≤⌈t/2⌉CmC_1 \to^{\le \lceil t/2\rceil} C_m and Cm→≤⌊t/2⌋C2C_m \to^{\le \lfloor t/2\rfloor} C_2, so by the inductive hypothesis both recursive calls with budget halved return true for this choice of CmC_m — and the algorithm tries every possible CmC_m, so it will find this one. Conversely, if the algorithm returns true for some CmC_m, then by the inductive hypothesis both halves are genuine sub-paths, which concatenate to a path of length ≤t\le t from C1C_1 to C2C_2. ■\blacksquare

Time cost (the honest tradeoff). Savitch's construction is not time-efficient. The recursion at each level branches over all 2O(f(n))2^{O(f(n))} possible midpoints, and there are O(f(n))O(f(n)) levels, giving a time bound of roughly

(2O(f(n)))O(f(n))=2O(f(n)2),\left(2^{O(f(n))}\right)^{O(f(n))} = 2^{O(f(n)^2)},

which is far worse than the original nondeterministic running time. Savitch's Theorem is purely a space result; it says nothing good about time, and indeed no polynomial-time simulation of NSPACE by DSPACE machines is known — that would collapse major complexity classes. This tradeoff — quadratic space blowup at the cost of a much larger time blowup — is the price of removing nondeterminism this way, and it is the honest limitation of the technique.

Corollary — PSPACE = NPSPACE. If L∈NSPACE(nk)L \in \text{NSPACE}(n^k) for some polynomial bound, Savitch's theorem places LL in SPACE((nk)2)=SPACE(n2k)\text{SPACE}((n^k)^2) = \text{SPACE}(n^{2k}), still a polynomial. Hence nondeterministic polynomial space equals deterministic polynomial space:

PSPACE=NPSPACE.\text{PSPACE} = \text{NPSPACE}.

This is a genuinely different phenomenon from P\text{P} vs. NP\text{NP}: while allowing nondeterminism is conjectured to give strictly more computational power in polynomial time, it provably gives no extra power at all in polynomial space.

Worked example

Consider a tiny nondeterministic machine NN whose configuration graph on some fixed input is the following 6-vertex directed graph (imagine configurations labeled by tape snapshots, abbreviated AA–FF):

A→B,A→C,B→D,C→D,C→E,D→F,E→FA \to B, \quad A \to C, \quad B \to D, \quad C \to D, \quad C \to E, \quad D \to F, \quad E \to F

Let Cstart=AC_{\text{start}} = A and Caccept=FC_{\text{accept}} = F. There are ∣V∣=6|V| = 6 configurations, so any existing path has length at most 66; round up to T=8T = 8 (a power of two) as the step budget for the top-level call. We trace `CANYIELD(A, F, 8)`. The algorithm tries every candidate midpoint Cm∈{A,B,C,D,E,F}C_m \in \{A,B,C,D,E,F\} in some fixed order, recursing with budget 44 on each half, until one succeeds.

Midpoint tried CmC_mLeft callRight callResult
AA`CANYIELD(A,A,4)` → true (t=1 trivially reachable via t/2 chain, C1=C2C_1=C_2)`CANYIELD(A,F,4)` → recurse (leads to same problem, smaller budget; eventually fails to shortcut, algorithm moves on after exhausting its midpoints without success within depth)fails at this branch*
BB`CANYIELD(A,B,4)` → true (A→BA\to B direct, verified via nested recursion down to t=1t=1)`CANYIELD(B,F,4)` → is FF reachable from BB in ≤4 steps? B→D→FB \to D \to F, length 2 ≤ 4 → truetrue → return true

(The Cm=AC_m = A branch is explored first in a real run but shown here abbreviated; the important content is the successful branch.) Once Cm=BC_m = B is tried, `CANYIELD(A,B,4)` recurses: try midpoints for the A→BA\to B sub-problem; Cm=BC_m = B itself works immediately since `CANYIELD(A,B,2)` further reduces to the direct-edge base case. Similarly `CANYIELD(B,F,4)` succeeds via midpoint Cm=DC_m = D: `CANYIELD(B,D,2)` is a direct edge (true), `CANYIELD(D,F,2)` is a direct edge (true). Both recursive calls bottom out at t=1t=1 direct-transition checks, which read straight from NN's transition table. So `CANYIELD(A,F,8)` returns true, correctly reflecting that A→B→D→FA \to B \to D \to F is a genuine accepting path of length 3.

Space accounting for this trace. At the deepest point of the successful path, the recursion stack holds frames for budgets 8,4,2,18, 4, 2, 1 — depth log⁡28=3\log_2 8 = 3 plus the base case, i.e. 44 live frames, each storing a pair of configuration labels (a few bits each, since only 6 configurations exist). If instead NN used f(n)=20f(n) = 20 bits per configuration and had a configuration graph of size 2202^{20}, the analogous trace would have recursion depth log⁡2(220)=20\log_2(2^{20}) = 20 levels, each holding O(20)O(20) bits — total O(20×20)=O(400)=O(f(n)2)O(20 \times 20) = O(400) = O(f(n)^2) bits, exactly matching the general bound derived above.

Common pitfalls & traps

PitfallWhy it's wrongFix
Assuming the visited-set BFS approach also gives O(f(n)2)O(f(n)^2) spaceStoring a visited set of configurations needs Ω(2f(n))\Omega(2^{f(n)}) bits in the worst case — exponential, not polynomialUse the recursive midpoint method, which never stores a global visited set
Believing Savitch's Theorem also bounds time efficientlyThe recursion's branching factor is 2O(f(n))2^{O(f(n))} at each of O(f(n))O(f(n)) levels, giving 2O(f(n)2)2^{O(f(n)^2)} time — much worse than NN's original running timeState the theorem only as a space result; time is a separate, much harder open question
Forgetting the base case t=1t=1 must check both equality and a real one-step transitionOmitting the equality check breaks correctness for zero-length paths (e.g. Cstart=CacceptC_{\text{start}} = C_{\text{accept}})Explicitly handle C1=C2C_1 = C_2 as an automatic "yes" in the base case
Treating recursion depth as O(T)O(T) instead of O(log⁡T)O(\log T)Confusing linear step-counting with the halving structure destroys the space bound entirelyRecognize the recursion halves tt each call: depth is log⁡2T=O(f(n))\log_2 T = O(f(n)), not TT
Not reusing space between sibling recursive callsIf both `CANYIELD` calls' stack frames are kept simultaneously (e.g., stored in an array instead of true recursion), space blows up to O(f(n)⋅2f(n))O(f(n) \cdot 2^{f(n)})Implement as genuine depth-first recursion so sibling frames are freed before the next begins
Misapplying the theorem below log⁡n\log n spaceThe construction and the underlying configuration-counting argument assume space-constructibility and f(n)≥log⁡nf(n) \ge \log n (needed to address tape positions)State the theorem's precondition explicitly; sub-logarithmic space needs separate careful treatment

Pioneers & history

Origins · 1 minWalter J. Savitch and how this was discovered
WJ
Walter J. Savitch
born 1943 · American computer scientist, University of California San Diego

Savitch proved this theorem in 1970 as part of his early work on the structure of space-bounded computation, building directly on the framework of space complexity classes formalized by Hartmanis and Stearns in the preceding decade. His result was among the first to show a clean, provable structural relationship between deterministic and nondeterministic resource-bounded computation, in contrast to the many open questions surrounding time complexity.

History
1965
— Hartmanis and Stearns formalize time and space complexity classes, launching structural complexity theory.
1970
— Walter Savitch publishes "Relationships Between Nondeterministic and Deterministic Tape Complexities," proving NSPACE(f)⊆SPACE(f2)\text{NSPACE}(f) \subseteq \text{SPACE}(f^2).
1970
s — The corollary PSPACE=NPSPACE\text{PSPACE} = \text{NPSPACE} becomes a standard foundational fact, contrasted sharply with the open P\text{P} vs NP\text{NP} question.
1976
— Savitch's reachability method is recognized as an early example of the general reachability method, later reused in results about PSPACE-Completeness such as showing TQBF is PSPACE-complete.
1980
s–present — The theorem becomes a standard stepping stone in showing NL⊆SPACE(log⁡2n)\text{NL} \subseteq \text{SPACE}(\log^2 n), feeding directly into the study of L and NL and the famous open question of whether L=NL\text{L} = \text{NL}.

Where this matters

Savitch's Theorem is not merely a historical curiosity; it is a load-bearing result in the architecture of complexity theory. It directly establishes that PSPACE = NPSPACE, which means that whenever a system's resource bound of interest is polynomial space — as in analyzing board games, planning problems, or verification tasks with large but boundable state spaces — nondeterminism (the ability to guess a winning strategy or a satisfying assignment) provides no theoretical advantage in the space required, even though it may dramatically help in time. This underlies why problems like generalized geography, quantified Boolean formula satisfiability (TQBF), and many two-player game analyses are studied inside PSPACE without needing to separately track a nondeterministic variant. The same reachability-doubling idea, applied at the sub-polynomial scale, shows NL⊆SPACE(log⁡2n)\text{NL} \subseteq \text{SPACE}(\log^2 n): any problem solvable nondeterministically with logarithmic memory — including graph reachability itself (directed s-t connectivity), a core primitive behind compilers' dataflow analyses, dependency resolution, and network routing reachability checks — can be solved deterministically using only O(log⁡2n)O(\log^2 n) memory. (The Immerman–Szelepcsényi theorem later sharpened understanding of NL\text{NL} further, showing it is closed under complement, but Savitch's quadratic bound remains the classical general-purpose tool for taming nondeterminism in space.) Beyond its direct corollaries, the reachability method itself — recursively splitting a path-existence question at a guessed midpoint — became a reusable proof technique across theoretical computer science, appearing in space-bounded simulation arguments, in the proof that TQBF is PSPACE-complete, and in the general study of how memory, unlike time, can be recycled. Any system or algorithm that reasons about implicitly-described exponential state spaces using only polynomial working memory — model checkers, symbolic planners, certain automated theorem provers — rests conceptually on the same insight Savitch formalized: space is a renewable resource.

Ask the tutor: Can you walk through why the recursion depth in CANYIELD is logarithmic in the number of configurations, and how that directly produces the f(n)² space bound?

Does Savitch's Theorem prove that P = NP?

No. Savitch's Theorem is a statement about space, not time. It shows nondeterministic space f(n)f(n) can be simulated deterministically using O(f(n)2)O(f(n)^2) space, but the simulation's running time can blow up to roughly 2O(f(n)2)2^{O(f(n)^2)}, which is far worse than typical nondeterministic running times. The P vs NP question concerns simulating nondeterministic time efficiently in deterministic time, a completely different and still-open problem. In fact, the contrast is instructive: space is a "reusable" resource that can be recycled across branches of a search, while time cannot be reused once spent, which is exactly why the space case admits this clean quadratic result while the time case remains one of the deepest open problems in mathematics.

Why does the theorem require f(n) ≥ log n?

The proof needs each configuration of the nondeterministic machine to be expressible in O(f(n))O(f(n)) bits, and it needs to be able to address positions on an f(n)f(n)-space work tape, which itself requires at least log⁡n\log n bits merely to write down a tape position for machines whose input has length nn. If f(n)f(n) were sublogarithmic, the machine could not even count up to nn to remember its input head position without extra care, and the standard configuration-counting arguments (bounding the graph size by cf(n)c^{f(n)}) break down. Space complexity below logarithmic space is studied with more delicate models (such as two-way multihead automata) precisely because these usual assumptions fail; Savitch's classical statement is designed for the well-behaved regime f(n)≥log⁡nf(n) \ge \log n.

How is this different from ordinary breadth-first or depth-first search for reachability?

Standard graph search algorithms like BFS or DFS maintain a visited set to avoid revisiting nodes and to guarantee termination in time linear in the graph size. For Savitch's configuration graphs, the graph has up to 2O(f(n))2^{O(f(n))} vertices, so storing a visited set costs exponential space — unacceptable. Savitch's recursive method sidesteps the visited set entirely by asking a different question (bounded-length reachability via a guessed midpoint) that can be answered without remembering the whole search history, at the cost of exploring some paths redundantly and using far more time. It trades away time efficiency to buy back space efficiency.

What exactly is a "configuration" in this context?

A configuration of a Turing machine captures everything needed to resume the computation from that exact point: the current state, the position of every tape head, and the contents of all work tapes (the input tape is typically treated as read-only and not counted toward space usage). For a nondeterministic machine using f(n)f(n) space, a configuration can be written down using O(f(n))O(f(n)) bits, since there are only a constant number of states, a constant number of tape head positions each needing O(log⁡f(n))O(\log f(n)) bits (or O(f(n))O(f(n)) bits treated generously), and f(n)f(n) tape cells each holding a symbol from a fixed alphabet. This is precisely what makes the reachability graph's vertex set exponential in size while each individual vertex remains compactly representable — the property the whole proof exploits.

Is Savitch's Theorem tight — could the true bound be better than quadratic?

This remains a genuinely open and subtle question for general space classes; no better general simulation of NSPACE by DSPACE is known, and Savitch's quadratic bound has stood as the best general-purpose result since 1970. For specific subclasses more is known: for example, the Immerman–Szelepcsényi theorem shows NL\text{NL} is closed under complementation, a structural fact stronger in flavor than Savitch's bound but not a smaller space bound for simulating NL deterministically — the best known deterministic simulation of NL\text{NL} is still Savitch's O(log⁡2n)O(\log^2 n). Whether NL=L\text{NL} = \text{L} (no blowup at all) remains a famous open problem in the study of L and NL.

Why is the technique called the "reachability method"?

Because the entire proof reduces the original question ("does the nondeterministic machine accept?") to a purely graph-theoretic question ("is there a path from vertex CstartC_{\text{start}} to vertex CacceptC_{\text{accept}} in the configuration graph?"), and then answers that reachability question with a recursive divide-and-conquer over path length rather than an explicit search. This same reduction-to-reachability idea is reused throughout complexity theory, most famously in proving that the quantified Boolean formula problem TQBF is PSPACE-complete, since evaluating a quantified formula can be phrased as a similar recursive halving of "moves remaining" in a two-player game tree.

How does this connect to PSPACE-completeness?

Savitch's Theorem establishes that PSPACE = NPSPACE, which means when proving a problem is PSPACE-complete, one need not worry about whether "nondeterministic polynomial space" is a bigger class than "deterministic polynomial space" — they coincide. The recursive midpoint technique used in the proof is also structurally the same technique used to design polynomial-space algorithms for problems involving quantifier alternation or game-tree search, making Savitch's Theorem both a foundational class-equality result and a template algorithmic idea that reappears throughout the study of PSPACE-Completeness.

Before this

Where this leads