NC (complexity)
Encyclopedia
In complexity theory
Computational complexity theory
Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other...

, the class NC (for "Nick's Class") is the set of decision problem
Decision problem
In computability theory and computational complexity theory, a decision problem is a question in some formal system with a yes-or-no answer, depending on the values of some input parameters. For example, the problem "given two numbers x and y, does x evenly divide y?" is a decision problem...

s decidable in polylogarithmic time on a parallel computer
Parallel computing
Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently . There are several different forms of parallel computing: bit-level,...

 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 O
Big O notation
In mathematics, big O notation is used to describe the limiting behavior of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions. It is a member of a larger family of notations that is called Landau notation, Bachmann-Landau notation, or...

(logc n) using O
Big O notation
In mathematics, big O notation is used to describe the limiting behavior of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions. It is a member of a larger family of notations that is called Landau notation, Bachmann-Landau notation, or...

(nk) parallel processors. Stephen Cook
Stephen Cook
Stephen Arthur Cook is a renowned American-Canadian computer scientist and mathematician who has made major contributions to the fields of complexity theory and proof complexity...

 coined the name "Nick's class" after Nick Pippenger
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 also achieved the rank of IBM Fellow at Almaden IBM...

, who had done extensive research on circuits with polylogarithmic depth and polynomial size.

Just as the class P
P (complexity)
In computational complexity theory, P, also known as PTIME or DTIME, is one of the most fundamental complexity classes. It contains all decision problems which can be solved by a deterministic Turing machine using a polynomial amount of computation time, or polynomial time.Cobham's thesis holds...

can be thought of as the tractable problems, so NC can be thought of as the problems that can be efficiently solved on a parallel computer. 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 which are "inherently sequential" and cannot significantly be sped up by using parallelism. Just as the class NP-Complete
NP-complete
In computational complexity theory, the complexity class NP-complete is a class of decision problems. A decision problem L is NP-complete if it is in the set of NP problems so that any given solution to the decision problem can be verified in polynomial time, and also in the set of NP-hard...

can be thought of as "probably intractable", so the class P-Complete
P-complete
In complexity theory, the notion of P-complete decision problems is useful in the analysis of both:# which problems are difficult to parallelize effectively, and;# which problems are difficult to solve in limited space....

, 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
Parallel Random Access Machine
In computer science, Parallel Random Access Machine is a shared memory abstract machine. As its name indicates, the PRAM was intended as the parallel computing analogy to the random access machine...

). 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
Parallel Random Access Machine
In computer science, Parallel Random Access Machine is a shared memory abstract machine. As its name indicates, the PRAM was intended as the parallel computing analogy to the random access machine...

 for descriptions of those models.

Equivalently, NC can be defined as those decision problems decidable by a uniform Boolean circuit
Boolean circuit
A Boolean circuit is a mathematical model of computation used in studying computational complexity theory. Boolean circuits are the main object of study in circuit complexity and are a special kind of circuits; a formal language can be decided by a family of Boolean circuits, one circuit for each...

 (which can be calculated from the length of the input) with polylogarithmic
Polylogarithmic
A polylogarithmic function in n is a polynomial in the logarithm of n,In computer science, polylogarithmic functions occur as the order of memory used by some algorithms .All polylogarithmic functions are...

 depth and a polynomial number of gates.

The NC Hierarchy

NCi is the class of decision problems decidable by uniform boolean circuits with a polynomial number of gates and depth O(logi n), or the class of decision problems solvable in time O(logi n) on a parallel computer with a polynomial number of processors. Clearly, we have


which forms the NC-hierarchy.

We can relate the NC classes to the space classes L
L (complexity)
In computational complexity theory, L is the complexity class containing decision problems which can be solved by a deterministic Turing machine using a logarithmic amount of memory space...

and NL
NL (complexity)
In computational complexity theory, NL is the complexity class containing decision problems which can be solved by a nondeterministic Turing machine using a logarithmic amount of memory space....

. From Papadimitriou 1994, Theorem 16.1:


Similarly, we have that NC is equivalent to the problems solvable on an alternating Turing machine
Alternating Turing machine
In computational complexity theory, an alternating Turing machine is a non-deterministic Turing machine with a rule for accepting computations that generalizes the rules used in the definition of the complexity classes NP and co-NP...

 with space and alternations.

Open problem: Is NC proper?

One major open question in complexity theory
Computational complexity theory
Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other...

 is whether or not every containment in the NC hierarchy is proper. It was observed by Papadimitriou that, if NCi = NCi+1 for some i, then NCi = NCj for all j ≥ i, and as a result, NCi = NC. This observation is known as NC-hierarchy collapse because even a single equality in the chain of containments
implies that the entire NC hierarchy "collapses" down to some level i. 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.

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 ≤ in), and p and q are functions from {1,2,...,k} to {1,2,...,k}. 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 i-th variable is 0 or 1.

A family of branching programs consists of a branching program with n variables for each n.

It's easy to show that every language L on {0,1} can be decided using a family of branching programs of width 4 and exponential length, or using a family of exponential width and linear length.

Every regular language on {0,1} can be recognized with a family of branching programs of constant width and linear number of instructions (since a DFA can be converted to a branching program).

Barrington's theorem says that the class of languages recognized with a family of branching programs of width 5 and polynomial length is exactly nonuniform NC1. The proof uses nonsolvability
Solvable group
In mathematics, more specifically in the field of group theory, a solvable group is a group that can be constructed from abelian groups using extensions...

 of symmetric group S5.

The theorem is rather surprising. It implies that majority function can be computed with a family of branching programs of constant width and polynomial size, while intuition might suggest that to achieve polynomial size, one needs 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.

Lemma 1: If there exists a branching program that sometimes works as permutation P and sometimes as Q, by right-multiplying permutations in first instruction by , and in last instruction left-multiplying by , we can make a circuit of the same length that behaves as or respectively.

Call a branching program -computing a circuit 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 exists 5-cycles such that their commutator
Commutator
In mathematics, the commutator gives an indication of the extent to which a certain binary operation fails to be commutative. There are different definitions used in group theory and ring theory.-Group theory:...

is a 5-cycle. For example, , .

We will now prove Barrington's theorem by induction.

Assume that for all subcircuits of and 5-cycles , there exists a branching program -computing . We will show that for all 5-cycles , there exists a branching program -computing .
  • If the circuit outputs , the branching program has one instruction checking and outputting identity or respectively.
  • If the circuit outputs , where is a different circuit. Create a branching program -computing , and multiply output of the program (using lemma 1) by to get a branching program outputting or , i.e. -computing .
  • If the circuit outputs , join the branching programs that -compute D, -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 . Because and are two 5-cycles, they are conjugate, and there exists a program -computing .


The size of the branching program is at most , where d is the depth of the circuit. If the circuit has logarithmic depth, the branching program has polynomial length.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK