A parallel computer can perform multiple operations simultaneously, as opposed to sequential computers

We focus on massive parallelism

In theoretical work, the Parallel Random Access Machine is also used, where idealized processors with a simple instruction set interact via shared memory

Here, we look at a simpler model based on Boolean circuits

We take each gate to be an individual processor, and so define the processor complexity of a circuit to be its size, and the parallel time complexity to be its depth

As in our exploration of Circuit Complexity, we look at circuit families to handle variable sized inputs

To make sure this corresponds to the standard PRAM computation model, we also impose a uniformity requirement, so that all circuits in a family can be easily obtained

Definition: A family of circuits is uniform if some log space transducer outputs when ‘s input is

We consider the simultaneous size-depth circuit complexity

Example:
Say is the language over of all strings with an odd number of s

We can test membership with a standard gate, which can be written with standard operations as

To generalize to variables, we could make a sequence of circuits, which uses size-depth

Or even better, we can construct a binary tree of gates, for a size-depth complexity of

Example:
The Boolean matrix multiplication function takes variables representing and , and outputs values representing where

The circuit for this function has gates for each , and for every a binary tree of gates to compute the outer expression

Each tree has gates with depth, so this circuit has size and depth

We extend this example to calculate the transitive closure of , the matrix

This matrix is closely related to the problem (the canonical -complete problem), where we view as an adjacency matrix of a directed graph

The computation of can be represented with a binary tree of size and depth , hence computing takes

We make circuits for each which adds another factor of to the size and an additional layer of depth (but not a factor)

Hence the size-depth complexity of transitive closure is

It turns out that many interesting problems have complexity for some , and can therefore be considered highly parallelizable

Definition: Let be the class of languages that can be decided by a uniform family of circuits with polynomial size and depth

is the class of languages in for some
Functions computed by such families are called NC computable

stands for Nick’s class (Nick Pippenger)

A small note is that this is not quite the standard definition for

Theorem:

On input of length , as needed the algorithm can construct the th circuit and evaluate the circuit with a depth-first search

Since the circuit depth is logarithmic, we can store the path and partial results in logarithmic space

Theorem:

Let be a language (encoded into ) decided by an machine

We construct a uniform circuit family for

Note that a configuration of on in a log space machine describes the state, the contents of the work tape, and the positions of both the input and the work tape heads, but not itself

This means that there are polynomially many configurations, and we can make the edges match a computation on by looking at the transition function and the head position on

Thus, we can output a circuit that computes the transitive closure of a graph that matches the computation graph for and then outputs the position indicating the presence of such a path

This circuit has polynomial size and depth (as explained in our earlier example)

That this can be done by a log space transducer is a bit unintuitive, but keep in mind we can be flexible with the output representation of a circuit

Theorem:

A polynomial time algorithm can just run the log space transducer to generate and then simulate it on an input of length

would imply all polynomial time solvable problems are highly parallelizable, which seem unlikely

Definition: A language is P-complete if and every in is log space reducible to

Theorem: If and then

This follows because circuit families can compute log space reductions

Theorem: is -complete

We’ve already seen how to reduce a language to a circuit when we first introduced circuit complexity

We reduce a language in on input by producing a circuit simulating and passing in that circuit and to

We can do this reduction in log space because the circuit has a simple and repetitive structure, so is -complete