|
|
Line 1: |
Line 1: |
| {{unsolved|computer science|Does '''NC''' {{=}} '''P''' ?}}
| | Hello, I am Garfield Murtagh. Circulating creation is where my major income originates from but I intend on changing it. One of the best things in the world for me personally is performing and today I have occasion to take on new things. My residence is now in New Jersey.<br><br>My web-site - [http://www.haraselmolino.com/spanish/endurance.htm jaun pablo schiappacasse canepa] |
| In [[computational complexity theory|complexity theory]], the class '''NC''' (for "Nick's Class") is the set of [[decision problem]]s decidable in [[polylogarithmic time]] on a [[parallel computing|parallel computer]] with a polynomial number of processors. In other words, a problem is in '''NC''' if there exist constants ''c'' and ''k'' such that it can be solved in time ''[[Big O notation|O]]''(log<sup>''c''</sup> ''n'') using ''[[Big O notation|O]]''(''n''<sup>''k''</sup>) parallel processors. [[Stephen Cook]] coined the name "Nick's class" after [[Nick Pippenger]],<ref name=AB120>Arora & Barak (2009) p.120</ref> who had done extensive research on circuits with polylogarithmic depth and polynomial size.
| |
| | |
| Just as the class '''[[P (complexity)|P]]''' can be thought of as the tractable problems ([[Cobham's thesis]]), so '''NC''' can be thought of as the problems that can be efficiently solved on a parallel computer.<ref name=AB118>Arora & Barak (2009) p.118</ref> '''NC''' is a subset of '''P''' because polylogarithmic parallel computations can be simulated by polynomial-time sequential ones. It is unknown whether '''NC''' = '''P''', but most researchers suspect this to be false, meaning that there are probably some tractable problems that are "inherently sequential" and cannot significantly be sped up by using parallelism. Just as the class '''[[NP-Complete]]''' can be thought of as "probably intractable", so the class '''[[P-Complete]]''', when using '''NC''' reductions, can be thought of as "probably not parallelizable" or "probably inherently sequential".
| |
| | |
| The parallel computer in the definition can be assumed to be a ''parallel, random-access machine'' ([[parallel random access machine|PRAM]]). That is a parallel computer with a central pool of memory, and any processor can access any bit of memory in constant time. The definition of '''NC''' is not affected by the choice of how the PRAM handles simultaneous access to a single bit by more than one processor. It can be CRCW, CREW, or EREW. See [[parallel random access machine|PRAM]] for descriptions of those models.
| |
| | |
| Equivalently, '''NC''' can be defined as those decision problems decidable by a [[Boolean circuit|uniform Boolean circuit]] (which can be calculated from the length of the input) with [[polylogarithmic]] depth and a polynomial number of gates.
| |
| | |
| '''[[RNC (complexity)|RNC]]''' is a class extending '''NC''' with access to randomness.
| |
| | |
| == Problems in NC ==
| |
| As with '''P''', by a slight abuse of language, one might classify function problems and search problems as being in '''NC'''. '''NC''' is known to include many problems, including
| |
| * Integer addition, multiplication and division;
| |
| * Matrix multiplication, determinant, inverse, rank;
| |
| * Polynomial GCD, by a reduction to linear algebra using [[Sylvester matrix]] (it is open whether integer GCD is in '''NC''');
| |
| * Finding a maximal matching.
| |
| | |
| Often algorithms for those problems had to be separately invented and could not be naïvely adapted from well-known algorithms – Gaussian elimination and Euclidean algorithm rely on operations performed in sequence. One might contrast [[ripple carry adder]] with a [[carry-lookahead adder]].
| |
| | |
| == The NC hierarchy ==
| |
| '''NC'''<sup>''i''</sup> is the class of decision problems decidable by uniform boolean circuits with a polynomial number of gates of at most two inputs and depth ''O''(log<sup>''i''</sup> ''n''), or the class of decision problems solvable in time ''O''(log<sup>''i''</sup> ''n'') on a parallel computer with a polynomial number of processors. Clearly, we have
| |
| | |
| :<math>\mathbf{NC}^1 \subseteq \mathbf{NC}^2 \subseteq \cdots \subseteq \mathbf{NC}^i \subseteq \cdots \mathbf{NC}</math>
| |
| | |
| which forms the '''NC'''-hierarchy.
| |
| | |
| We can relate the '''NC''' classes to the space classes '''[[L (complexity)|L]]''' and '''[[NL (complexity)|NL]]'''<ref>Papadimitriou (1994) Theorem 16.1</ref> and '''[[AC (complexity)|AC]]'''.<ref name=CK437>Clote & Kranakis (2002) p.437</ref>
| |
| | |
| :<math> \mathbf{NC}^1 \subseteq \mathbf{L} \subseteq \mathbf{NL} \subseteq \mathbf{AC}^1 \subseteq \mathbf{NC}^2 \subseteq \mathbf{P}.</math>
| |
| | |
| The NC classes are related to the AC classes, which are defined similarly, but with gates having unbounded fanin. For each ''i'', we have<ref name=AB118/><ref name="CK437"/>
| |
| | |
| :<math>\mathbf{NC}^i \subseteq \mathbf{AC}^i \subseteq \mathbf{NC}^{i+1}.</math>
| |
| | |
| As an immediate consequence of this, we have that '''NC''' = '''AC'''.<ref name=CK12>Clote & Kranakis (2002) p.12</ref>
| |
| It is known that both inclusions are strict for ''i'' = 0.<ref name=AB118/>
| |
| | |
| Similarly, we have that '''NC''' is equivalent to the problems solvable on an [[alternating Turing machine]] restricted to at most two options at each step with ''O''(log ''n'') space and <math>(\log n)^{O(1)}</math> alternations.<ref>{{cite journal|author=S. Bellantoni and I. Oitavem|title=Separating NC along the delta axis|journal=Theoretical Computer Science|volume=318|year=2004|pages=57–78}}</ref>
| |
| | |
| === Open problem: Is NC proper? ===
| |
| One major open question in [[computational complexity theory|complexity theory]] is whether or not every containment in the '''NC''' hierarchy is proper. It was observed by Papadimitriou that, if '''NC'''<sup>''i''</sup> = '''NC'''<sup>''i''+1</sup> for some ''i'', then '''NC'''<sup>''i''</sup> = '''NC'''<sup>''j''</sup> for all ''j'' ≥ ''i'', and as a result, '''NC'''<sup>''i''</sup> = '''NC'''. This observation is known as '''NC'''-hierarchy collapse because even a single equality in the chain of containments
| |
| :<math>\textbf{NC}^1 \subseteq \textbf{NC}^2 \subseteq \cdots</math>
| |
| implies that the entire '''NC''' hierarchy "collapses" down to some level ''i''. Thus, there are 2 possibilities:
| |
| | |
| # <math>\textbf{NC}^1 \subset \cdots \subset \textbf{NC}^i \subset ... \subset \textbf{NC}^{i+j} \subset \cdots \textbf{NC}</math>
| |
| # <math>\textbf{NC}^1 \subset \cdots \subset \textbf{NC}^i = ... = \textbf{NC}^{i+j} = \cdots \textbf{NC}</math>
| |
| | |
| It is widely believed that (1) is the case, although no proof as to the truth of either statement has yet been discovered.
| |
| | |
| ==Barrington's theorem==
| |
| A '''branching program''' with ''n'' variables of width ''k'' and length ''m'' consists of a sequence of ''m'' instructions. Each of the instructions is a tuple (''i'', ''p'', ''q'') where ''i'' is the index of variable to check (1 ≤ ''i'' ≤ ''n''), and ''p'' and ''q'' are functions from {1, 2, ..., ''k''} to {1, 2, ..., ''k''}. Numbers 1, 2, ..., ''k'' are called states of the branching program. The program initially starts in state 1, and each instruction (''i'', ''p'', ''q'') changes the state from ''x'' to ''p''(''x'') or ''q''(''x''), depending on whether the ''i''th variable is 0 or 1.
| |
| | |
| A family of branching programs consists of a branching program with ''n'' variables for each ''n''.
| |
| | |
| It is easy to show that every language ''L'' on {0,1} can be recognized by a family of branching programs of width 4 and exponential length, or by a family of exponential width and linear length.
| |
| | |
| Every regular language on {0,1} can be recognized by a family of branching programs of constant width and linear number of instructions (since a DFA can be converted to a branching program). '''BWBP''' denotes the class of languages recognizable by a family of branching programs of bounded width and polynomial length.<ref name=CK50>Clote & Kranakis (2002) p.50</ref>
| |
| | |
| '''Barrington's theorem'''<ref name=Bar89>{{cite journal | zbl=0667.68059 | last=Barrington | first=David A. | journal=J. Comput. Syst. Sci. | volume=38 | number=1 | pages=150–164 | year=1989 | issn=0022-0000 | url=http://www.cs.umass.edu/~barring/publications/bwbp.pdf | title=Bounded-Width Polynomial-Size Branching Programs Recognize Exactly Those Languages in '''NC'''<sup>1</sup> }}</ref> says that is exactly nonuniform '''NC'''<sup>1</sup>. The proof uses the [[solvable group|nonsolvability]] of the symmetric group S<sub>5</sup>.<ref name=CK50/>
| |
| | |
| The theorem is rather surprising. It implies that the majority function can be computed by a family of branching programs of constant width and polynomial size, while intuition might suggest that to achieve polynomial size, one needs a linear number of states.
| |
| | |
| ===Proof of Barrington's theorem===
| |
| A branching program of constant width and polynomial size can be easily converted (via divide-and-conquer) to a circuit in '''NC'''<sup>1</sup>.
| |
| | |
| Conversely, suppose a circuit in '''NC'''<sup>1</sup> is given. Without loss of generality, assume it uses only AND and NOT gates.
| |
| | |
| Lemma 1: If there exists a branching program that sometimes works as a permutation ''P'' and sometimes as ''Q'', by right-multiplying permutations in the first instruction by α, and in the last instruction left-multiplying by β, we can make a circuit of the same length that behaves as β''P''α or β''Q''α, respectively.
| |
| | |
| Call a branching program α-computing a circuit ''C'' if it works as identity when C's output is 0, and as α when C's output is 1.
| |
| | |
| As a consequence of lemma 1 and the fact that all cycles of length 5 are conjugate, for any two 5-cycles α, β, if there exists a branching program α-computing a circuit ''C'', then there exists a branching program β-computing the circuit ''C'', of the same length.
| |
| | |
| Lemma 2: There exist 5-cycles γ, δ such that their [[commutator]] <math>\gamma \delta \gamma^{-1} \delta^{-1} = \epsilon</math> is a 5-cycle. For example, γ = (1 2 3 4 5), δ = (1 3 5 4 2).
| |
| | |
| We will now prove Barrington's theorem by induction.
| |
| | |
| Assume that for all subcircuits ''D'' of ''C'' and 5-cycles α, there exists a branching program α-computing ''D''. We will show that for all 5-cycles α, there exists a branching program α-computing ''C''.
| |
| | |
| * If the circuit outputs ''x<sub>i</sub>'', the branching program has one instruction checking ''x<sub>i</sub>'' and outputting identity or α respectively.
| |
| * If the circuit outputs <math>\neg C</math>, where ''C'' is a different circuit. Create a branching program <math>\alpha^{-1}</math>-computing ''C'', and multiply output of the program (using lemma 1) by α to get a branching program outputting <math>id</math> or α, i.e. α-computing <math>\neg C</math>.
| |
| * If the circuit outputs <math>C \wedge D</math>, join the branching programs that <math>\delta^{-1}</math>-compute ''D'', <math>\gamma^{-1} </math>-compute C, δ-compute ''D'', γ-compute C. If one of the circuits outputs 0, the resulting program will be identity; if both circuits output 1, the resulting program will work as ε. In other words, we get a program ε-computing <math>C \wedge D</math>. Because ε and α are two 5-cycles, they are conjugate, and there exists a program α-computing <math>C \wedge D</math>.
| |
| | |
| The size of the branching program is at most <math>4^d</math>, where ''d'' is the depth of the circuit. If the circuit has logarithmic depth, the branching program has polynomial length.
| |
| | |
| ==References==
| |
| {{reflist}}
| |
| * {{cite book | zbl=1193.68112 | last1=Arora | first1=Sanjeev | authorlink1=Sanjeev Arora | last2=Barak | first2=Boaz | title=Computational complexity. A modern approach | publisher=[[Cambridge University Press]] | year=2009 | isbn=978-0-521-42426-4 }}
| |
| * {{cite book | last1=Clote | first1=Peter | last2=Kranakis |first2=Evangelos | title=Boolean functions and computation models | series=Texts in Theoretical Computer Science. An EATCS Series | location=Berlin | publisher=[[Springer-Verlag]] | year=2002 | isbn=3-540-59436-1 | zbl=1016.94046 }}
| |
| * [http://www.cs.armstrong.edu/greenlaw/research/PARALLEL/limits.pdf Greenlaw, Raymond, James Hoover, and Walter Ruzzo. ''Limits To Parallel computation; P-Completeness Theory''. ISBN 0-19-508591-4]
| |
| * {{cite book| first=Dexter C. | last=Kozen | authorlink=Dexter Kozen | year = 1992 | title = The design and analysis of algorithms}} Lectures 28 - 34 and 36
| |
| * {{cite book| first=Dexter C. | last=Kozen | authorlink=Dexter Kozen | year = 2006 | title = Theory of Computation | publisher = [[Springer-Verlag]] | isbn = 1-84628-297-7 | zbl=1102.68025 | series=Texts in Computer Science }} Lecture 12: Relation of ''NC'' to Time-Space Classes
| |
| * {{cite book| first=Christos | last=Papadimitriou | authorlink=Christos Papadimitriou | year = 1993 | title = Computational Complexity | publisher = Addison Wesley | edition = 1st | isbn = 0-201-53082-1 | chapter = Section 15.3: The class '''NC''' | pages=375–381 }}
| |
| * {{cite book | last=Straubing | first=Howard | title=Finite automata, formal logic, and circuit complexity | series=Progress in Theoretical Computer Science | location=Basel | publisher=Birkhäuser | year=1994 | isbn=3-7643-3719-2 | zbl=0816.68086 }}
| |
| * {{cite book | last=Vollmer | first=Heribert | title=Introduction to circuit complexity. A uniform approach | series=Texts in Theoretical Computer Science | location=Berlin | publisher=[[Springer-Verlag]] | year=1998 | isbn=3-540-64310-9 | zbl=0931.68055 }}
| |
| | |
| {{ComplexityClasses}}
| |
| | |
| {{DEFAULTSORT:Nc (Complexity)}}
| |
| [[Category:Complexity classes]]
| |
| [[Category:Circuit complexity]]
| |