- #1
gnome
- 1,041
- 1
On Sipser page 279:
If a branch of an NTM uses f(n) space, we know that f(n) is the maximum number of (input) tape cells that it scans on any branch of its computation for an input of length n. But we don't know how many times it runs back and forth over those cells before the computation branch finishes. So how does he determine that such a branch may run for [itex]2^{O(f(n))}[/itex] steps only? Why not, for example, [itex]2^{O(f(n^2))}[/itex]? Or maybe some much lower limit? I don't know. Any ideas where this [itex]2^{O(f(n))}[/itex] comes from?
Savitch's theorem
For any function [tex]\begin{equation*}\begin{split}f: N \longrightarrow N, \;\text{where}\;f(n) \geq n,\\
\text{NSPACE}(f(n)) \subseteq \text{SPACE}f^2(n)).\end{split}\end{equation}[/tex]
Proof idea: We need to simulate an f(n) space NTM deterministically. A naive approach is to proceed by trying all the branches of the NTM's computation, one by one. The simulation needs to keep track of which branch it is currently trying so that it is able to go on to the next one. But a branch that uses f(n) space may run for [itex]2^{O(f(n))}[/itex] steps, and each step may be a nondeterministic choice...
If a branch of an NTM uses f(n) space, we know that f(n) is the maximum number of (input) tape cells that it scans on any branch of its computation for an input of length n. But we don't know how many times it runs back and forth over those cells before the computation branch finishes. So how does he determine that such a branch may run for [itex]2^{O(f(n))}[/itex] steps only? Why not, for example, [itex]2^{O(f(n^2))}[/itex]? Or maybe some much lower limit? I don't know. Any ideas where this [itex]2^{O(f(n))}[/itex] comes from?
Last edited: