NC (complexity)

In computational complexity theory, the class NC (for "Nick's Class") is the set of decision problems decidable in polylogarithmic time on a parallel computer 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 O((log n)c) using O(nk) parallel processors.

[5] 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.

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.

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 depth and a polynomial number of gates with a maximum fan-in of 2.

RNC is a class extending NC with access to randomness.

[6] 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.

Recursively applying such property, it is possible to build a binary tree of length

NCi 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 n)i), or the class of decision problems solvable in time O((log n)i) on a parallel computer with a polynomial number of processors.

[5] 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

[10] One major open question in complexity theory is whether or not every containment in the NC hierarchy is proper.

Thus, there are 2 possibilities: It is widely believed that (1) is the case, although no proof as to the truth of either statement has yet been discovered.

The special class NC0 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.

A branching program with n variables of width k and length m consists of a sequence of m instructions.

It is easy to show that every language L on {0,1} 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 {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.

For instance, 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.

A branching program of constant width and polynomial size can be easily converted (via divide-and-conquer) to a circuit in NC1.

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.

We will now prove Barrington's theorem by induction: Suppose we have a circuit C which takes inputs x1,...,xn and 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. By assuming the subcircuits have branching programs so that they are α-computing for all 5-cycles α∈S5, we have shown C also has this property, as required.

If the circuit has logarithmic depth, the branching program has polynomial length.