Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
NL (complexity)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Computational complexity}} {{unsolved|computer science|{{tmath|\mathsf{L \overset?{{=}} NL} }}}} In [[computational complexity theory]], '''NL''' ('''N'''ondeterministic '''L'''ogarithmic-space) is the [[complexity class]] containing [[decision problem]]s that can be solved by a [[nondeterministic Turing machine]] using a [[logarithm]]ic amount of [[Memory space (computational resource)|memory space]]. '''NL''' is a generalization of '''[[L (complexity)|L]]''', the class for logspace problems on a [[deterministic Turing machine]]. Since any deterministic Turing machine is also a [[nondeterministic Turing machine]], we have that '''L''' is contained in '''NL'''. '''NL''' can be formally defined in terms of the computational resource [[nondeterministic space]] (or NSPACE) as '''NL''' = '''NSPACE'''(log ''n''). Important results in complexity theory allow us to relate this complexity class with other classes, telling us about the relative power of the resources involved. Results in the field of [[algorithm]]s, on the other hand, tell us which problems can be solved with this resource. Like much of complexity theory, many important questions about '''NL''' are still [[open problem|open]] (see [[Unsolved problems in computer science]]). Occasionally '''NL''' is referred to as '''RL''' due to its [[#Probabilistic definition|probabilistic definition]] below; however, this name is more frequently used to refer to [[RL (complexity)|randomized logarithmic space]], which is not known to equal '''NL'''. ==Definitions== There are several equivalent definitions of the '''NL''' class. === Standard definition === '''NL''' is the complexity class of decision problems that can be solved by a nondeterministic Turing machine (NTM) using a logarithmic amount of memory space. In more detail, a language <math>L</math> is NL iff there exists a NTM <math>M</math> such that * <math>M</math> runs on logspace. * <math>M</math> always halts. * If <math>x \in L</math>, then there exists at least one computational trace of <math>M(x)</math> that results in the machine halting in an accepting state. * If <math>x \not\in L</math>, then all computational traces of <math>M(x)</math> results in the machine halting in an unaccepting state. ===Probabilistic definition=== Suppose ''C'' is the [[complexity class]] of [[decision problems]] solvable in logarithmithic space with [[probabilistic Turing machine]]s that never accept incorrectly but are allowed to reject incorrectly less than 1/3 of the time; this is called ''one-sided error''. The constant 1/3 is arbitrary; any ''x'' with 0 ≤ ''x'' < 1/2 would suffice. It turns out that ''C'' = '''NL'''. Notice that ''C'', unlike its deterministic counterpart '''[[L (complexity)|L]]''', is not limited to polynomial time, because although it has a polynomial number of configurations it can use randomness to escape an infinite loop. If we do limit it to polynomial time, we get the class '''[[RL (complexity)|RL]]''', which is contained in but not known or believed to equal '''NL'''. There is a simple algorithm that establishes that ''C'' = '''NL'''. Clearly ''C'' is contained in '''NL''', since: * If the string is not in the language, both reject along all computation paths. * If the string is in the language, an '''NL''' algorithm accepts along at least one computation path and a ''C'' algorithm accepts along at least two-thirds of its computation paths. To show that '''NL''' is contained in ''C'', we simply take an '''NL''' algorithm and choose a random computation path of length ''n'', and execute this 2<sup>''n''</sup> times. Because no computation path exceeds length ''n'', and because there are 2<sup>''n''</sup> computation paths in all, we have a good chance of hitting the accepting one (bounded below by a constant). The only problem is that we don't have room in log space for a binary counter that goes up to 2<sup>''n''</sup>. To get around this we replace it with a ''randomized'' counter, which simply flips ''n'' coins and stops and rejects if they all land on heads. Since this event has probability 2<sup>−''n''</sup>, we [[expected value|expect]] to take 2<sup>''n''</sup> steps on average before stopping. It only needs to keep a running total of the number of heads in a row it sees, which it can count in log space. Because of the [[Immerman–Szelepcsényi theorem]], according to which NL is closed under complements, the one-sided error in these probabilistic computations can be replaced by zero-sided error. That is, these problems can be solved by probabilistic Turing machines that use logarithmic space and never make errors. The corresponding complexity class that also requires the machine to use only polynomial time is called [[ZPLP (complexity)|ZPLP]]. Thus, when we only look at space, it seems that randomization and nondeterminism are equally powerful. ===Certificate definition=== '''NL''' can equivalently be characterised by [[Certificate (complexity)|certificates]], analogous to classes such as '''[[NP (complexity)|NP]]'''. Let a ''verifier'' be a deterministic logarithmic-space bounded deterministic Turing machine that has an additional read-only read-once input tape (that is, the verifier may only move the read-head forwards, never backwards). A language <math>L</math> is in '''NL''' if and only if<ref name=":0">{{cite book |last1=Arora |first1=Sanjeev |url=http://www.cs.princeton.edu/theory/complexity/ |title=Complexity Theory: A Modern Approach |last2=Barak |first2=Boaz |date=2009 |publisher=Cambridge University Press |isbn=978-0-521-42426-4 |chapter= |author1link=Sanjeev Arora |author2link=Boaz Barak}}</ref>{{Pg|location=Definition 4.19}} * There exists a polynomial function <math>p</math>. * There exists a verifier <math>TM</math>. * For any <math>x</math>, <math>x \in L</math> iff there exists a certificate <math>u</math> with length <math>|u| \leq p(|x|)</math>, such that <math>TM(x, u) = 1</math>. In words, it means that if a sentence is in the language, then there exists a polynomial-length proof that it is in the language. It does not say anything about the case where the sentence is ''not'' in the language, though by the Immerman–Szelepcsényi theorem, it is clear that there exists some verifier that can verify both <math>x \in L</math> and <math>x \not\in L</math>. Note that the read-once condition is necessary. If the verifier can read forwards and backwards, this extends the class to the '''NP''' class.<ref name=":0" />{{Pg|location=Exercise 4.7}} [[Cem Say]] and Abuzer Yakaryılmaz have proven that the deterministic logarithmic-space Turing machine in the statement above can be replaced by a bounded-error probabilistic constant-space Turing machine that is allowed to use only a constant number of random bits.<ref>A. C. Cem Say, Abuzer Yakaryılmaz, "Finite state verifiers with constant randomness," ''Logical Methods in Computer Science'', Vol. 10(3:6)2014, pp. 1-17.</ref> === Descriptive definition === In [[descriptive complexity theory]], '''NL''' is defined as those languages expressible in [[first-order logic]] with an added [[transitive closure]] operator. == Closure properties == The class NL is closed under the operations complementation, union, and therefore intersection, [[Concatenation#Concatenation_of_sets_of_strings|concatenation]], and [[Kleene star]]. ==NL-completeness== A problem is '''[[NL-complete]]''' iff it is '''NL''', and any problem in '''NL''' is [[log-space reduction|log-space reducible]] to it. Problems that are known to be '''NL'''-complete including [[ST-connectivity]] and [[2-satisfiability]]. [[ST-connectivity]] asks, for nodes ''S'' and ''T'' in a [[directed graph]], whether ''T'' is [[reachability|reachable]] from ''S''. [[2-satisfiability]] asks, given a [[propositional logic|propositional]] formula of which each clause is the [[disjunction]] of two literals, if there is a variable assignment that makes the formula true. An example instance, where <math> \neg </math> indicates ''not'', might be: :<math>(x_1 \vee \neg x_3) \wedge (\neg x_2 \vee x_3) \wedge (\neg x_1 \vee \neg x_2)</math> ==Containments== It is known that {{sans-serif|NL}} is contained in {{sans-serif|[[P (complexity)|P]]}}, since there is a [[polynomial-time algorithm]] for [[2-satisfiability]], but it is not known whether {{sans-serif|NL {{=}} P}} or whether {{sans-serif|L {{=}} NL}}. It is known that {{sans-serif|NL {{=}} co-NL}}, where {{sans-serif|co-NL}} is the class of languages whose [[complement (complexity)|complement]]s are in {{sans-serif|NL}}. This result (the [[Immerman–Szelepcsényi theorem]]) was independently discovered by [[Neil Immerman]] and [[Róbert Szelepcsényi]] in 1987; they received the 1995 [[Gödel Prize]] for this work. In [[circuit complexity]], {{sans-serif|NL}} can be placed within the {{sans-serif|[[NC (complexity)|NC]]}} hierarchy. In Papadimitriou 1994, Theorem 16.1, we have: :<math>\mathsf{NC_1 \subseteq L \subseteq NL \subseteq NC_2}</math>. More precisely, {{sans-serif|NL}} is contained in {{sans-serif|[[AC (complexity)|AC<sup>1</sup>]]}}. It is known that {{sans-serif|NL}} is equal to {{sans-serif|[[ZPL (complexity)|ZPL]]}}, the class of problems solvable by randomized algorithms in logarithmic space and unbounded time, with no error. It is not, however, known or believed to be equal to {{sans-serif|[[RLP (complexity)|RLP]]}} or {{sans-serif|[[ZPLP (complexity)|ZPLP]]}}, the polynomial-time restrictions of {{sans-serif|RL}} and {{sans-serif|ZPL}}, which some authors refer to as {{sans-serif|RL}} and {{sans-serif|ZPL}}. We can relate {{sans-serif|NL}} to deterministic space using [[Savitch's theorem]], which tells us that any nondeterministic algorithm can be simulated by a deterministic machine in at most quadratically more space. From Savitch's theorem, we have directly that: :<math>\mathsf{NL \subseteq SPACE}(\log^2 n) \ \ \ \ \text{equivalently, } \mathsf{NL \subseteq L}^2.</math> This was the strongest deterministic-space inclusion known in 1994 (Papadimitriou 1994 Problem 16.4.10, "Symmetric space"). Since larger space classes are not affected by quadratic increases, the nondeterministic and deterministic classes are known to be equal, so that for example we have {{sans-serif|[[PSPACE]] {{=}} [[NPSPACE]]}}. ==Notes== {{Reflist}} ==References== * {{CZoo|NL|N#nl}} * {{cite book|last=Papadimitriou | first = C. | title= Computational Complexity | publisher = Addison-Wesley | year = 1994 | isbn = 0-201-53082-1 | chapter = Chapter 16: Logarithmic Space}} * {{cite book | author = Michael Sipser | author-link = Michael Sipser | date = 27 June 1997 | title = Introduction to the Theory of Computation | publisher = PWS Publishing | isbn = 0-534-94728-X | chapter = Sections 8.4–8.6: The Classes L and NL, NL-completeness, NL equals coNL | pages = [https://archive.org/details/introductiontoth00sips/page/294 294–302] | url-access = registration | url = https://archive.org/details/introductiontoth00sips/page/294 }} * [https://web.archive.org/web/20160303183247/http://www.wisdom.weizmann.ac.il/~oded/PS/CC/l7.ps Introduction to Complexity Theory: Lecture 7]. Oded Goldreich. Proposition 6.1. Our ''C'' is what Goldreich calls badRSPACE(log n). {{ComplexityClasses}} {{DEFAULTSORT:Nl (Complexity)}} [[Category:Complexity classes]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:CZoo
(
edit
)
Template:Cite book
(
edit
)
Template:ComplexityClasses
(
edit
)
Template:Pg
(
edit
)
Template:Reflist
(
edit
)
Template:Sans-serif
(
edit
)
Template:Short description
(
edit
)
Template:Unsolved
(
edit
)