Pcomplete

In complexity theory, the complexity class Pcomplete is a set of decision problems and is useful in the analysis of which problems can be efficiently solved on parallel computers. A decision problem is in Pcomplete if it is in P, and every problem in P can be reduced to it in polylogarithmic time on a parallel computer with a polynomial number of processors. In other words, a problem A is in Pcomplete if, for each problem B in P, there are constants c and k such that B can be reduced to A in time O((log n)^{c}) using O(n^{k}) parallel processors. See NC for the definition of parallel processors.
Contents 
Motivation
The class P, typically taken to consist of all the "tractable" problems for a sequential computer, contains the class NC, which consists of those problems which can be efficiently solved on a parallel computer. This is because parallel computers can be simulated on a sequential machine. It is not known whether NC=P. In other words, it is not known whether there are any tractable problems that are inherently sequential. Just as it is widely suspected that P does not equal NP, so it is widely suspected that NC does not equal P.
The class NPcomplete, which can be thought of as containing the "probably intractable" problems, is introduced to analyze the P=NP question, and the class Pcomplete, which can be thought of as containing the "probably not parallelizable" or "probably inherently sequential" problems, serves in a similar manner to study the NC=P question. Finding an efficient way to parallelize the solution to some Pcomplete problem would disprove the suspicion that NC ≠ P.
Pcomplete problems
The most basic Pcomplete problem is this: given a Turing machine, an input for that machine, and a number T (written in unary), does that machine halt on that input within the first T steps? It is clear that this problem is Pcomplete: if we can parallelize a general simulation of a sequential computer, then we will be able to parallelize any program that runs on that computer. If this problem is in NC, then so is every other problem in P.
This problem illustrates a common trick in the theory of Pcompleteness. We aren't really interested in whether a problem can be solved quickly on a parallel machine. We're just interested in whether a parallel machine solves it much more quickly than a sequential machine. Therefore, we have to reword the problem so that the sequential version is in P. That is why this problem required T to be written in unary. If a number T is written as a binary number (a string of n ones and zeros, where n=log(T)), then the obvious sequential algorithm can take time 2^{n}. On the other hand, if T is written as a unary number (a string of n ones, where n=T), then it only takes time n. By writing T in unary rather than binary, we have reduced the obvious sequential algorithm from exponential time to linear time. That puts the sequential problem in P. Then, it will be in NC if and only if it is parallelizable.
Many other problems have been proved to be Pcomplete, and therefore are widely believed to be inherently sequential. These include the following problems, either as given, or in a decisionproblem form:
 Circuit Value Problem (CVP)  Given a circuit, the inputs to the circuit, and one gate in the circuit, calculate the output of that gate
 Restricted Case of CVP  Like CVP, except each gate has two inputs and two outputs (F and Not F), every other layer is just AND gates, the rest are OR gates (or, equivalently, all gates are NAND gates, or all gates or NOR gates), the inputs of a gate come from the immediatelypreceding layer
 Linear programming  Maximize a linear function subject to linear inequality constraints
 Depth First Search Ordering  Given a graph with fixed ordered adjacency lists, and nodes u and v, is vertex u visited before vertex v in a depthfirst search?
 Context Free Grammar Membership  Given a contextfree grammar and a string, can that string be generated by that grammar?
 Horn satisfiability: given a set of Horn clauses, is there a variable assignment which satisfies them? This is P's version of the boolean satisfiability problem.
 Game of Life  Given an initial configuration of Conway's Game of Life, a particular cell, and a time T (in unary), is that cell alive after T steps?
 LZW (algorithm) (1978 paradigm) Data Compression  given strings s and t, will compressing s with an LZ78 method (such as Unisys's LZW technology) add t to the dictionary? (Note that for LZ77 compression such as gzip, this is much easier, as the problem reduces to "Is s in t?".)
In order to prove that a given problem is Pcomplete, one typically tries to reduce a known Pcomplete problem to the given one, using an efficient parallel algorithm.
Problems not known to be Pcomplete
Some problems are not known to be either NPcomplete or P. These problems (e.g. factoring) are suspected to be difficult. Similarly there are problems that are not known to be either Pcomplete or NC, but are thought to be difficult to parallelize. Examples include the decision problem forms of finding the greatest common divisor of two binary numbers, and determining what answer the extended Euclidean algorithm would return when given two binary numbers.
References
 Greenlaw, Raymond, James Hoover, and Walter Ruzzo. 1995. Limits To Parallel computation; PCompleteness Theory. ISBN 0195085914. — Develops the theory, then catalogs 96 PComplete problems.
 Satoru Miyano, Shuji Shiraishi, and Takayoshi Shoudai. A List of PComplete Problems (http://www.i.kyushuu.ac.jp/~shoudai/Pcomplete/all/all.html). Kyushu University, RIFISTRCS17. December 1990.
Important complexity classes (more) 
P  NP  CoNP  NPC  CoNPC  NPhard  UP  #P  #PC  L  NC  PC 
PSPACE  PSPACEC  EXPTIME  EXPSPACE  BQP  BPP  RP  ZPP  PCP  IP  PH 