AC (complexity)

In circuit complexity, AC is a complexity class hierarchy. Each class, ACi, consists of the languages recognized by Boolean circuits with depth $O(\log^i n)$ and a polynomial number of unlimited-fanin AND and OR gates.

The name "AC" was chosen by analogy to NC, with the "A" in the name standing for "alternating" and referring both to the alternation between the AND and OR gates in the circuits and to alternating Turing machines.[1]

The smallest AC class is AC0, consisting of constant-depth unlimited-fanin circuits.

The total hierarchy of AC classes is defined as

$\mbox{AC} = \bigcup_{i \geq 0} \mbox{AC}^i$

Relation to NC

The AC classes are related to the NC classes, which are defined similarly, but with gates having only constant fanin. For each i, we have[2][3]

$\mbox{NC}^i \subseteq \mbox{AC}^i \subseteq \mbox{NC}^{i+1}.$

As an immediate consequence of this, we have that NC = AC.[4]

It is known that inclusion is strict for i = 0.[3]

Variations

The power of the AC classes can be affected by adding additional gates. If we add gates which calculate the modulo operation for some modulus m, we have the classes ACCi[m].[4]

Notes

1. ^ Regan (1999), page 27-18.
2. ^ Clote & Kranakis (2002, p. 437)
3. ^ a b Arora & Barak (2009, p. 118)
4. ^ a b Clote & Kranakis (2002, p. 12)