Teoría de Complejidad Computacional
Teoría de Complejidad Computacional
Teoría de Complejidad Computacional
Clases de complejidad
Para la clasificación de problemas existen clases de complejidad, una clase de
complejidad consiste en un conjunto de problemas de decisión, estos se pueden
definir como el problema de decidir si una frase pertenece a un conjunto dado de
frases; en un problema de decisión las respuestas posibles son “si” o “no”. Entre
las clases de complejidad, podemos encontrar la P y la NP.
Máquinas de Turing
Para entender el tema de complejidad computacional, se debe entender antes las
máquinas de Turing.
Una máquina de Turing es un modelo de una máquina que consiste en una cinta,
divida en celdas, infinita hacia la derecha y finita hacia la izquierda, un cabezal de
lectura y escritura que se me mueve a la derecha o a la izquierda, una celda a la
vez, un registro de estados que almacena el estado de la máquina y una tabla de
instrucciones. La entrada y salida de la máquina de Turing se da en símbolos
binarios (0,1), y las celdas que no tienen símbolo 0 o 1, se llenan con un símbolo
especial llamado “blanco”.
El funcionamiento de una máquina de Turing es sencillo, el cabezal se ubica en
una posición inicial, con un estado inicial, lee el valor, lo borra y escribe uno
nuevo, dependiendo de la tabla de instrucciones, de la forma:
(Estado, valor)→(estado, valor, dirección)
DEFINICIÓN
M=(Q,∑,T,s,b,F,δ),
Donde:
Q es un conjunto finito de estados.
∑ es un conjunto finito de símbolos distinto del espacio en blanco, denominado
alfabeto de máquina o de entrada.
T es un conjunto finito de símbolos de cinta, denominado alfabeto de cinta (∑ ⊆T)
s∈Q es el estado inicial.
b∈T es un símbolo denominado blanco, y es el único símbolo que se puede
repetir un número infinito de veces.
F⊆Q es el conjunto de estados finales de aceptación.
δ: QxT→ QxTx{L,R} es una función parcial denominada función de transición,
donde L es un movimiento a la izquierda y R es el movimiento a la derecha.
EJEMPLO
Definimos una máquina de Turing sobre el alfabeto {0,1}, donde 0 representa el
símbolo blanco. La máquina comenzará su proceso situada sobre un símbolo "1"
de una serie. La máquina de Turing copiará el número de símbolos "1" que
encuentre hasta el primer blanco detrás de dicho símbolo blanco. Es decir,
posiciona el cabezal sobre el 1 situado en el extremo izquierdo, doblará el número
de símbolos 1, con un 0 en medio. Así, si tenemos la entrada "111" devolverá
"1110111", con "1111" devolverá "111101111", y sucesivamente.
El conjunto de estados es {s1, s2, s3, s4, s5} y el estado inicial es s1. La tabla que
describe la función de transición es la siguiente:
2 s2 01
3 s2 010
4 s3 0100
5 s4 0101
6 s5 0101
7 s5 0101
8 s1 1101
9 s2 1001
10 s3 1001
11 s3 10010
12 s4 10011
13 s4 10011
14 s5 10011
15 s1 11011
Parada