HOME

TheInfoList



OR:

In
computational complexity theory In theoretical computer science and mathematics, computational complexity theory focuses on classifying computational problems according to their resource usage, and relating these classes to each other. A computational problem is a task solved by ...
, the class NC (for "Nick's Class") is the set of
decision problem In computability theory and computational complexity theory, a decision problem is a computational problem that can be posed as a yes–no question of the input values. An example of a decision problem is deciding by means of an algorithm wheth ...
s decidable in
polylogarithmic time In computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations performed by ...
on a
parallel computer Parallel computing is a type of computation in which many calculations or processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different for ...
with a polynomial number of processors. In other words, a problem with input size ''n'' is in NC if there exist constants ''c'' and ''k'' such that it can be solved in time using parallel processors.
Stephen Cook Stephen Arthur Cook (born December 14, 1939) is an American-Canadian computer scientist and mathematician who has made significant contributions to the fields of complexity theory and proof complexity. He is a university professor at the Unive ...
coined the name "Nick's class" after
Nick Pippenger Nicholas John Pippenger is a researcher in computer science. He has produced a number of fundamental results many of which are being widely used in the field of theoretical computer science, database processing and compiler optimization. He has ...
, who had done extensive research on circuits with polylogarithmic depth and polynomial size.Arora & Barak (2009) p.120 Just as the class 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.Arora & Barak (2009) p.118 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 In computational complexity theory, a problem is NP-complete when: # it is a problem for which the correctness of each solution can be verified quickly (namely, in polynomial time) and a brute-force search algorithm can find a solution by tryi ...
can be thought of as "probably intractable", so the class
P-complete In computational complexity theory, a decision problem is P-complete (complete for the complexity class P) if it is in P and every problem in P can be reduced to it by an appropriate reduction. The notion of P-complete decision problems is usef ...
, 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'' ( 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 PRAM for descriptions of those models. Equivalently, NC can be defined as those decision problems decidable by a uniform Boolean circuit (which can be calculated from the length of the input, for NC, we suppose we can compute the Boolean circuit of size ''n'' in logarithmic space in ''n'') with
polylogarithmic In mathematics, a polylogarithmic function in is a polynomial in the logarithm of , : a_k (\log n)^k + a_ (\log n)^ + \cdots + a_1(\log n) + a_0. The notation is often used as a shorthand for , analogous to for . In computer science, poly ...
depth and a polynomial number of gates with a maximum fan-in of 2. 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 In mathematics, particularly in linear algebra, matrix multiplication is a binary operation that produces a matrix from two matrices. For matrix multiplication, the number of columns in the first matrix must be equal to the number of rows in the s ...
, determinant, inverse, rank; * Polynomial GCD, by a reduction to linear algebra using
Sylvester matrix In mathematics, a Sylvester matrix is a matrix associated to two univariate polynomials with coefficients in a field or a commutative ring. The entries of the Sylvester matrix of two polynomials are coefficients of the polynomials. The determinant ...
* 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 In mathematics, Gaussian elimination, also known as row reduction, is an algorithm for solving systems of linear equations. It consists of a sequence of operations performed on the corresponding matrix of coefficients. This method can also be used ...
and
Euclidean algorithm In mathematics, the Euclidean algorithm,Some widely used textbooks, such as I. N. Herstein's ''Topics in Algebra'' and Serge Lang's ''Algebra'', use the term "Euclidean algorithm" to refer to Euclidean division or Euclid's algorithm, is an effi ...
rely on operations performed in sequence. One might contrast
ripple carry adder An adder, or summer, is a digital circuit that performs addition of numbers. In many computers and other kinds of processors adders are used in the arithmetic logic units (ALUs). They are also used in other parts of the processor, where they ...
with a
carry-lookahead adder A carry-lookahead adder (CLA) or fast adder is a type of electronics adder used in digital logic. A carry-lookahead adder improves speed by reducing the amount of time required to determine carry bits. It can be contrasted with the simpler, b ...
.


Example

An example of problem in NC1 is the parity check on a bit string. The problem consists in counting the number of 1s in a string made of 1 and 0. A simple solution consists in summing all the string's bits. Since
addition Addition (usually signified by the Plus and minus signs#Plus sign, plus symbol ) is one of the four basic Operation (mathematics), operations of arithmetic, the other three being subtraction, multiplication and Division (mathematics), division. ...
is associative, x_1 + \cdots + x_n = (x_1 + \cdots + x_) + (x_ + \cdots + x_n). Recursively applying such property, it is possible to build a
binary tree In computer science, a binary tree is a k-ary k = 2 tree data structure in which each node has at most two children, which are referred to as the ' and the '. A recursive definition using just set theory notions is that a (non-empty) binary t ...
of length O(log(n)) in which every sum between two bits x_i and x_j is expressible by means of basic
logical operator In logic, a logical connective (also called a logical operator, sentential connective, or sentential operator) is a logical constant. They can be used to connect logical formulas. For instance in the syntax of propositional logic, the binary co ...
s, e.g. through the boolean expression (x_i \land \neg x_j) \lor (\neg x_i \land x_j).


The NC hierarchy

NC''i'' is the class of decision problems decidable by uniform boolean circuits with a polynomial number of gates of at most two inputs and depth , or the class of decision problems solvable in time ''O''(log''i'' ''n'') on a parallel computer with a polynomial number of processors. Clearly, we have :\mathsf^1 \subseteq \mathsf^2 \subseteq \cdots \subseteq \mathsf^i \subseteq \cdots \mathsf which forms the NC-hierarchy. We can relate the NC classes to the space classes L and NL and AC.Clote & Kranakis (2002) p.437 : \mathsf^1 \subseteq \mathsf \subseteq \mathsf \subseteq \mathsf^1 \subseteq \mathsf^2 \subseteq \mathsf. The NC classes are related to the AC classes, which are defined similarly, but with gates having unbounded fan-in. For each ''i'', we have :\mathsf^i \subseteq \mathsf^i \subseteq \mathsf^. As an immediate consequence of this, we have that NC = AC.Clote & Kranakis (2002) p.12 It is known that both inclusions are strict for ''i'' = 0. Similarly, we have that NC is equivalent to the problems solvable on an
alternating Turing machine In computational complexity theory, an alternating Turing machine (ATM) is a non-deterministic Turing machine (NTM) with a rule for accepting computations that generalizes the rules used in the definition of the complexity classes NP and co-NP. ...
restricted to at most two options at each step with ''O''(log ''n'') space and (\log n)^ alternations.


Open problem: Is NC proper?

One major open question in complexity theory is whether or not every containment in the NC hierarchy is proper. It was observed by Papadimitriou that, if NC''i'' = NC''i''+1 for some ''i'', then NC''i'' = NC''j'' for all ''j'' ≥ ''i'', and as a result, NC''i'' = NC. This observation is known as NC-hierarchy collapse because even a single equality in the chain of containments :\mathsf^1 \subseteq \mathsf^2 \subseteq \cdots implies that the entire NC hierarchy "collapses" down to some level ''i''. Thus, there are 2 possibilities: # \mathsf^1 \subset \cdots \subset \mathsf^i \subset \cdots \subset \mathsf^ \subset \cdots \mathsf # \mathsf^1 \subset \cdots \subset \mathsf^i = \cdots = \mathsf^ = \cdots \mathsf It is widely believed that (1) is the case, although no proof as to the truth of either statement has yet been discovered.


NC0

The special class NC''0'' operates only on a constant length of input bits. It is therefore described as the class of functions definable by uniform boolean circuits with constant depth and bounded fan-in.


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 to . 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. The function mapping an input to a final state of the program is called the ''yield'' of the program (more precisely, the yield on an input is the function mapping any initial state to the corresponding final state). The program ''accepts'' a set A \subset 2^n of variable values when there is some set of functions F \subset k^k such that a variable sequence x \in 2^n is in ''A'' precisely when its yield is in ''F''. A family of branching programs consists of a branching program with ''n'' variables for each ''n''. It accepts a language when the ''n'' variable program accepts the language restricted to length ''n'' inputs. It is easy to show that every language ''L'' on can be recognized by a family of branching programs of width 5 and exponential length, or by a family of exponential width and linear length. Every regular language on 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.Clote & Kranakis (2002) p.50 Barrington's theorem says that BWBP is exactly nonuniform NC1. The proof uses the nonsolvability of the symmetric group S5. The theorem is rather surprising. For instance, it implies that the
majority function In Boolean logic, the majority function (also called the median operator) is the Boolean function that evaluates to false when half or more arguments are false and true otherwise, i.e. the value of the function equals the value of the majority of t ...
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 NC1. Conversely, suppose a circuit in NC1 is given. Without loss of generality, assume it uses only AND and NOT gates. Call a branching program α-computing a circuit ''C'' if it works as identity when 's output is 0, and as when '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. The size of the branching program is at most 4, where ''d'' is the depth of the circuit. If the circuit has logarithmic depth, the branching program has polynomial length.


Notes


References

* *
Greenlaw, Raymond, James Hoover, and Walter Ruzzo. ''Limits To Parallel computation; P-Completeness Theory''.
* Lectures 28 - 34 and 36 * Lecture 12: Relation of ''NC'' to Time-Space Classes * * * {{DEFAULTSORT:Nc (Complexity) Complexity classes Circuit complexity