Está en la página 1de 8

201 3

Mquina de Turing

LENGUAJES FORMALES
Integrantes: Marcos Cedeo Gabriela Carabal

Mquina de Turing
La mquina de Turing es un modelo computacional introducido por Alan Turing en el trabajo On computable numbers, with an application to the Entscheidungsproblem, publicado por la Sociedad Matemtica de Londres, en el cual se estudiaba la cuestin planteada por David Hilbert sobre si las matemticas son decidibles, es decir, si hay un mtodo definido que pueda aplicarse a cualquier sentencia matemtica y que nos diga si esa sentencia es cierta o no. Turing construy un modelo formal de computador, la mquina de Turing, y demostr que existan problemas que una mquina no poda resolver. La mquina de Turing es un modelo matemtico abstracto que formaliza el concepto de algoritmo. Una mquina de Turing con una sola cinta puede ser definida como una 6-tupla , donde Q es un conjunto finito de estados es un conjunto finito de smbolos de cinta, el alfabeto de cinta Este modelo est conformado por un alfabeto de entrada y uno de salida, un smbolo especial llamado blanco(normalmente b, o 0), un conjunto de estados finitos y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una funcin de transicin, que recibe un estado inicial y una cadena de caracteres(la cinta, la cual es finita por la izquierda) pertenecientes al alfabeto de entrada. Luego va leyendo una celda de la cinta, borrando el smbolo, escribir el nuevo smbolo perteneciente al alfabeto de salida y finalmente avanza a la izquierda o a la derecha(solo una celda a la vez), repitiendo esto segn se indique en la funcin de transicin, para finalmente detenerse en un estado final o de aceptacin, representando as la salida. Mediante este modelo terico y el anlisis de complejidad de algoritmos, fue posible la categorizacin de problemas computacionales de acuerdo a su comportamiento, apareciendo as, el conjunto de problemas denominados P y NP, cuyas soluciones en tiempo polinmico son encontradas segn el determinismo y no determinismo respectivamente de la mquina de Turing. De hecho, se puede probar matemticamente que para cualquier programa de computadora es posible crear una mquina de Turing equivalente. Esta prueba resulta de la Tesis de Church-Turing, formulada por Alan Turing y Alonzo Church, de forma independiente a mediados del 1 La idea subyacente es el concepto de que una mquina de Turing es una persona ejecutando un procedimiento efectivo definido formalmente, donde el espacio de memoria de trabajo es ilimitado, pero en un momento determinado slo una parte finita es accesible. Caractersticas Se usa para gramticas del tipo 1. Existe una cinta en la que se graba la palabra a analizar y un carcter especial llamado fin o null, que obviamente indica el fin de la palabra.

La idea es recorrer la cinta sobrescribiendo los caracteres a medida que los leo para despus controlar que todos hayan sido sobrescritos (obviamente existe una lgica para sobrescribir que me permite controlar que se cumplan las restricciones del lenguaje).

Aplicacin
Para cambiar de estado se utiliza la siguiente terna: (, opCinta, Mov) Donde: es el carcter que estoy leyendo de la cinta. opCinta es el carcter que voy a escribir en el lugar del carcter ledo. Esto indica que operacin realizo en la cinta ya que si coloco el mismo carcter que haba estoy leyendo, en cambio si coloco otro carcter estoy sobrescribiendo. Mov es hacia donde me voy a mover. Se indica R si me muevo hacia la derecha y L si me muevo hacia la izquierda. La palabra es reconocida si se llega al estado final o de reconocimiento. Algo a tener en cuenta es que en la mquina de turing el primer nodo se debe llamar ST y el ltimo se debe llamar STP (start y stop).

Ejemplo:
Lo voy a tratar de explicar con un ejemplo ya que es muy difcil de explicar en palabras. Supongamos que queremos escribir la mquina de turing del siguiente lenguaje:

L= {a^n + b^n + c^n / n>=1} (donde ^ es el smbolo que representa la potencia). La cinta ser de la forma (tomando a como el carcter q indica el fin de la palabra):

..

..

..

Algunas palabras seran por ejemplo: a a a a b a b b c b c b c c c

Para ir armando la mquina de turing se debe trabajar con la expresin general pero para facilitar el aprendizaje voy a armar la maquina con el primer ejemplo. 1) Voy a leer una a (ya que n>= 1, una n va a haber seguro) a,A,R a 1 A a b b c c a b b c c

ST

Ntese que remplac a por A para indicar que ya la le y me mov a la derecha. 2) Debo tener en cuenta que puede haber ms a y que debo leer de a un conjunto por vez, es decir que cuando leo una a debo leer una b y una c para luego leer la siguiente a: a,a,R * ST a,A,R 1 A A a a b b b b c c c c

Entonces cuando lea otra a la voy a reemplazar por una a, es decir, no la voy a cambiar. 3) En cuanto encuentre la primera b debo reemplazarla por una B. A c c a b b * ST a,A,R 1 a,a,R b,B,R 2 A a B b c c

4) Igual que 2 pero con b: A * ST a,A,R 1 a,a,R b,B,R b,b,R 2 A a B b a B b c c c c

5) Cuando aparezca la primera c lo que debo hacer es reemplazarla por C como en los casos anteriores pero esta vez me voy a mover para la izquierda (como ya consegu la c que necesitaba para completar el conjunto, ahora debo volver para atrs para analizar el prximo conjunto de abc). * a,A,R a,a,R b,B,R b,b,R c,C,L

ST

3 A A a a B B b b c C c c

6) Debo volver hasta la ltima a que encuentre, al hacer eso me puedo llegar a encontrar con C, b, B o a as que: a,A,R a,a,R b,B,R b,b,R c,C,L
C,C,L b,b,L B,B,L a,a,L

ST

A A A A

a a a a

B B B B

b b b b

C C C C

c c c c

7) Cuando llegue al ltimo a, hago un artilugio para volver al nodo ST y que el ciclo empiece de nuevo. * a,A,R a,a,R b,B,R b,b,R c,C,L
C,C,L b,b,L B,B,L a,a,L

ST

A,A,R

A A

a a

B B

b b

C C

c c

8) Vuelvo a hacer los pasos anteriores, pero ocurre algo: en la cinta ahora hay una B, entonces, debo AGREGAR en el bucle, leer tambin la B y reemplazarla por otra B. Lo mismo pasa cuando llegue a b,b,R C,C,L la C,C,R b,b,L Ca,a, R B,B,R B,B,L a,A,R * b,B,R c,C,L a,a,L ST 1 2 3

A,A,R A A A A A A A A A a A A A A A A A A B B B B B B B B B b b b B B B B B B C C C C C C C C C c c c c c C C C C

8) Ahora tenemos toda la cinta leda, ahora viene la parte en que reconocemos si la palabra pertenece o no a el lenguaje(no voy a dibujar los nodos 1, 2 y 3 pero deben A C C B A estar). B * ST

B,B,R 4

9) Puede haber ms de una B as que repetimos hasta q aparezca una C *

ST

A A B,B,R A 5 C,C,R

A A A

B B B

B B B

C C C

C C C

B,B,R 4

10) Puede haber ms de una C as que debo repetir hasta que aparezca el fin de cadena. *

ST

B,B,R 4 B,B,R 5 C,C,R , ,R A A A Entonces la Maquina quedara as: a,a,R B,B,R * ST a,A,R 1 b,B,R 2 b,b,R C,C,R c,C,L 3
C,C,L b,b,L B,B,L a,a,L

C,C,R
STP

A A A

B B B

B B B

C C C

C C C

B,B,R 4 B,B,R C,C,R 5

A,A,R C,C,R
STP

, ,R

Otro Ejemplo: L= {a^2n + b^n + c^n / n>=1} a,a,R B,B,R * ST a,A,R 1 a,A,R 2 b,B,R 3 b,b,R C,C,R c,C,L 4
C,C,L b,b,L B,B,L a,a,L

B,B,R 5 B,B,R C,C,R 6

A,A,R C,C,R
STP

, ,R

También podría gustarte