Clase de complejidad
# Clase de complejidad

En teoría de la complejidad computacional, una clase de complejidad es un conjunto de problemas de decisión de complejidad relacionada.

Una clase de complejidad tiene una definición de la forma:

* el conjunto de los problemas de decisión que pueden ser resueltos por una máquina M utilizando O(f(n)) del recurso R (donde n es el tamaño de la entrada).

## Relación entre las principales clases de complejidad

La siguiente tabla muestra algunas de las clases de problemas (o lenguajes o gramáticas) que se consideran en teoría de la complejidad computacional. Cuando la clase X es un subconjunto estricto de Y, X aparece en la tabla bajo Y con una línea sólida uniéndolos. Cuando es subconjunto pero no se sabe si es estricto, la línea es cortada y gris. Técnicamente hablando, el corte entre problemas decidibles e indecidibles es tema de la Teoría de la computabilidad, pero resulta interesante mencionarlos aquí para poner en perspectiva las clases de complejidad

* Problema de decisión
* Lenguaje recursivo enumerable
* Problema indecidible
* Problema decidible
* ESPACIOEXP
* TIEMPOEXP
* ESPACIOP
* Gramática sensible al contexto
* ESPACIOP-completo
* Co-NP
* NP
* BPP
* BQP
* NP-completo
* P
* NC
* P-completo
* Gramática libre de contexto
* Gramática regular

### Ejemplos

* La clase NP es el conjunto de problemas de decisión que pueden ser resueltos en tiempo polinómico por una máquina de Turing no determinista.
* La clase PSPACE es el conjunto de problemas de decisión que pueden ser resueltos por una máquina de Turing determinista en espacio polinómico.
