5

What does the notation co- mean when prefixing co-NP, co-RE (recursively enumerable), or co-CE (computably enumerable) ?

Raphael
  • 73,212
  • 30
  • 182
  • 400
Vanwaril
  • 161
  • 4

2 Answers2

11

Often, in mathematical terminology, the prefix co- refers to a dual in some sense. For complexity and computability classes, the prefix co- has a fixed meaning: if X is a class of decision problems, then co-X is the class of problems whose complement is in X. That is, if the problem “does this object have the property $P$” is in X, then the problem “does this object have the property $\neg P$?” is in co-X.

For example, RE is the class of semi-decidable problems, that is, problems for which there is a Turing machine that can verify a positive answer. Co-RE is the class of problems for which there is a Turing machine that can verify a negative answer. A well-known problem that is in RE but not in co-RE is the halting problem (intuitively, you can verify that a Turing machine halts by running it to completion, but if the machine runs forever, you'll never be sure).

NP is the class of problems for which a solution can be verified in polynomial time; equivalently, NP is the class of problems that can be solved by a non-deterministic Turing machine in polynomial time. Co-NP is the class of problems for which the absence of a solution can be proved in polynomial time. It is not known whether $\text{NP} = \text{co-NP}$.

Gilles 'SO- stop being evil'
  • 44,159
  • 8
  • 120
  • 184
5

In the more algebraic side of theoretical computer science, co- means dual, as in Gilles' answer, but it has a very precise interpretation. If the concept of interest (let's say a product) is formalised in Category Theory, then the dual (a coproduct) is the same concepts with the arrows going in the opposite direction.

A simple example (yet abstract) is the idea of an algebra, which, for a functor $F$, is a pair $\langle S,\alpha:FS\to S\rangle$. Algebras are important in computer science for modelling data types. The dual of an algebra is a coalgebra, which is a pair $\langle S,\alpha:S\to FS\rangle$. Coalgebras are important for modelling systems.

What happened when we dualized? Well, the arrow $FS\to S$ was reversed, obtaining $S\to FS$.

One of the cool things about this idea is that all of the theory that works for one concept works for the dual concept, where all of the arrows are reversed.

Dave Clarke
  • 20,345
  • 4
  • 70
  • 114