2. Complejidad Computacional
La Teoría de la Complejidad Computacional es una rama de la teoría de la
computación que se centra en la clasificación de los problemas
computacionales de acuerdo a su dificultad inherente, y en la relación entre
dichas clases de complejidad.
3. Clasificación de los Problemas
Problemas indecidibles: Los que no se resuelven con un algoritmo
Problemas decidibles: Los que cuentan con al menos un algoritmo para
solución.
4. Se divide en dos:
Tratables: Son los que tienen al menos un algoritmo para ser solucionado
Intratables: Son lo que no es posible obtener su solución
5. Algoritmos
Son procedimientos paso-a-paso para resolver problemas. Se puede pensar en
ellos como simples programas de computadora, escritos en un lenguaje
artificial específico.
6. Problemas de decisión
Un problema de decisión es un tipo especial de
problema computacional cuya respuesta es
solamente "sí" o "no" (o, de manera más formal,
"1" o "0").
Un problema de decisión pudiera verse como un
lenguaje formal, donde los elementos que
pertenecen al lenguaje son las instancias del
problema cuya respuesta es "sí", los que no
pertenecen al lenguaje son aquellas instancias
cuya respuesta es "no".
7. Computación no determinista y la clase NP
Muchas veces podemos evitar utilizar la fuerza bruta en
los problemas para obtener soluciones en tiempo
polinómica. Sin embargo, para algunos problemas esto no
ha podido lograrse, es decir, no se conocen algoritmos
que los resuelvan en tiempo polinómica
El término NP proviene de no determinista en tiempo
polinómica y se deriva de un caracterización alternativa
de esta clase, donde se utilizan Máquinas de Turing no
deterministas.
8. Problemas Tratables, Intratables y NP-
completos
Clase P
La clase P contiene a aquellos problemas que son solubles en tiempo
polinómico por una máquina de Turing determinista.
Clase NP
La clase de complejidad NP consta de los problemas "verificables" en
tiempo polinómico. Por verificable se entiende a un problema tal que dado
un certificado de solución (candidato a solución), se puede verificar que
dicho certificado es correcto en un tiempo polinómico en el tamaño de la
entrada. A los problemas en la clase NP usualmente se les llama problemas
NP.
Clase NP-completos
Es el subconjunto de los problemas de decisión en NP tal que todo
problema en NP se puede reducir en cada uno de los problemas de
NP-completo.
9. Clases de complejidad importantes
Complexity class Model of computation Resource constraint
DTIME(f(n)) Máquina de Turing determinista Tiempo f(n)
P Máquina de Turing determinista Tiempo poly(n)
EXPTIME Máquina de Turing determinista Tiempo 2poly(n)
NTIME(f(n)) Máquina de Turing no determinista Tiempo f(n)
NP Máquina de Turing no determinista Tiempo poly(n)
NEXPTIME Máquina de Turing no determinista Tiempo 2poly(n)
DSPACE(f(n)) Máquina de Turing determinista Espacio f(n)
L Máquina de Turing determinista Espacio O(log n)
PSPACE Máquina de Turing determinista Espacio poly(n)
EXPSPACE Máquina de Turing determinista Espacio 2poly(n)
NSPACE(f(n)) Máquina de Turing no determinista Espacio f(n)
NL Máquina de Turing no determinista Espacio O(log n)
NPSPACE Máquina de Turing no determinista Espacio poly(n)
NEXPSPACE Máquina de Turing no determinista Espacio 2poly(n)