Está en la página 1de 6

Controladores Programables Uniminuto

Laboratorio 2 de Maquina de turing.



Presentado por: John Muoz







Universidad uniminuto
Santiago de Cali, valle del cauca.
2014

JFLAP.
JFLAP (del ingls, Java Formal Language and Automata Package) es un software que permite
experimentar de forma grfica con los conceptos relativos a la teora de autmatas y
lenguajes formales. Permite disear, evaluar y realizar distintas transformaciones y
comprobaciones sobre autmatas finitos, gramticas, autmatas a pila, mquinas de Turing, y
otros elementos adicionales que no forman parte del contenido de este curso.
Para la realizacin de estas prcticas se requiere la descargar de la herramienta libre JFLAP de su
sitio web (http://www.jflap.org/). Adems es necesario consultar el tutorial on-line de la
herramienta (http://www.jflap.org/tutorial/), o el siguiente libro gua: Susan H. Rodger and
Thomas W. Finley. JFLAP: An Interactive Formal Languages and Automata Package. Jones &
Bartlett Publishers, Sudbury, MA (2006)

Objetivo:
El objetivo de esta hoja es practicar el diseo de maquinas de Turing que reconozcan lenguajes y
que computen funciones

Trabajo Previo:
Descargar e instalar el Software Asignado por el docente.

Antes de abordar el diseo de una maquina de Turng se deberan tener en cuenta las siguientes
consideraciones:

La mquina de Turn puede escribir en la cinta cualquier carcter que desee. Por lo tanto, a no ser
que el enunciado diga lo contrario, podemos escribir los smbolos que queramos de forma que el
diseo de la maquina sea ms sencillo o intuitivo.

La mquina de Turn se va moviendo por la cinta hacia derecha o izquierda segn nos plazca.
Al movernos por la cinta es muy importante que no perdamos la posicin en la que nos
encontramos. Por ejemplo, sabemos que a la izquierda y a la derecha de la cadena de entrada se
encuentran caracteres en blanco, por lo tanto, si buscamos el ultimo carcter de la cadena de
entrada, podemos recorrerlos todos hasta encontrar el primer blanco; encontrado este, el ultimo
carcter se encuentra a su izquierda.

De igual manera podemos hacer para encontrar el primer carcter de la cadena de entrada (si nos
movemos hacia la izquierda, estar a la derecha del primer blanco que nos encontremos).
A veces para no perdernos o para delimitar zonas en la cinta (zona donde escribir la solucin, zona
donde hacer clculos intermedios, etc.) es bueno escribir cosas en la cinta. En la cinta podemos
escribir lo que queramos, quiz escribir un * en algn sitio, pueda ser til para movernos (a
izquierda o derecha) y encontrar esa zona.

De hecho, el funcionamiento de una maquina de Turn es ese: leo un elemento, en esa posicin
escribo algo (si escribo ese mismo elemento, la cinta queda igual), me muevo a otro lado de la
cinta y hago algo, vuelvo a por otro elemento, escribo, me muevo para hacer algo, vuelvo a por
otro elemento...

Una buena manera de disear una maquina de Turing es, ante un problema dado, pensar en una
solucin que resuelva el problema de manera iterativa.
Los elementos que ya hemos ledo debemos marcarlos o eliminarlos para evitar que sean tratados
de nuevo.

Para elegir si marcarlos o eliminarlos podemos seguir las siguientes recomendaciones:
Si no vamos a volver a utilizar los smbolos podemos eliminarlos. Sin embargo, si los smbolos se
encuentran en medio de la cadena de entrada no es bueno eliminarlos, ya que al sustituirlos por el
carcter blanco, podr ocurrir que en alguna de las iteraciones, al encontrarnos con ese blanco, no
sepamos distinguir si se trata de un blanco en medio de la cadena de entrada o del blanco que
marca el final de la misma (es decir: perderamos referencias que sirven para encontrar nuestra
posicin dentro de la cinta). Por lo tanto, aunque no los vayamos a utilizar, si se encuentran en
medio de la cadena de entrada, lo mejor es marcarlos (y eliminarlos antes de analizar si es
necesario).

Sin embargo, si los vamos a utilizar posteriormente, la nica opcin es marcarlos. Es importante
crear una subrutina que trate a todos los elementos por igual (siempre que sea posible). En el
momento en que hagamos una subrutina para el primer elemento, otra para el segundo, otra para
el ultimo, etc... Ms probabilidades habr de cometer un error en el diseo de la maquina, mas
estados tendr y ms tiempo se habr invertido en su diseo.

Puntos a Desarrollar

1. Segun el ejercicio realizado en clase realice su grafica en JFLAB y mire se comportamiento de
estados segn la cadena de entrada, el problema tiene como peticin disear una maquina de
turing que reconozca:



Tal que:
Cambie un 0 por una x
Cambie un 1 por una y
Grafique e identifique sus elementos, posibles cadenas aceptadas:



2. Construya una maquina de turing que acepte el lenguaje.


Se cambia la a por la x movindose a la derecha. (Explique qu pasa con la maquina). Represente
los movimientos en la tabla de transiciones para MT.
Identifique en qu momento la mquina de turing se detiene. Cuales posibles cadenas son
aceptadas
Grafquela e identifique sus elementos. Teniendo como base la siguiente grafica:

3. Disear una Mquina de Turing que obtenga el sucesor de un nmero binario.

Solucin:
En primer lugar, se escribe un conjunto de nmeros binarios consecutivos, para intentar buscar
regularidades en los nmeros binarios que permitan idear un algoritmo para resolver el problema
de forma general.

Tras observar detenidamente por filas las dos columnas centrales sombreadas de la tabla anterior,
se puede concluir que:

-si la entrada acaba en 0, su sucesor se obtiene cambiando dicho ltimo 0 por un 1.
-si la entrada acaba en 1, la obtencin del sucesor es ms complicada:
-se debe recorrer el nmero del final al inicio, sustituyendo todos los 1s por 0s, hasta que
aparezca un 0 (o en su defecto un blanco) y cambiarlo por un 1.

Como no se especifica nada en el enunciado, se puede asumir que la cinta al final slo contendr
el sucesor, sin preservar la entrada inicial.

Basndose en esta generalizacin, se puede pasar a describir el algoritmo y definir la mquina de
Turing formalmente.

Algoritmo (detallado):
1. Recorrer el nmero hasta el final, buscando el primer blanco a la derecha de los 1s y 0s
[transiciones recursivas en estado q0]. Al llegar, mover a la izquierda una posicin
transicin de q0 a q1], para situarse en el ltimo dgito del nmero binario [llegada a
estado q1].

2. En la posicin final:
2.1. si es un 0, se cambia por un 1 [transicin de q1 a q2], y se va al paso 5.
2.2. si es un 1, ir recorriendo el nmero hacia atrs, sustituyendo 1s por 0s [transicin de
q1 a q4 y transiciones recursivas en q4], hasta que aparezca un 0 (ir a paso 3) o un
blanco (ir a paso 4).

3. Si recorriendo hacia atrs se llega a un 0, se sustituye por un 1 [transicin de q4 a q2], y se
va al paso 5.

4. Si recorriendo hacia atrs se llega a un blanco, se sustituye por un 1 [transicin de q4 a
q3], y la mquina se para, porque ya se tiene el sucesor y la cabeza lectora est al inicio del
nmero.

5. Tras obtener el sucesor, pero tener la cabeza lectora en el medio del nmero, se transita al
estado q2, donde se recorre el nmero hacia la izquierda [transiciones recursivas en q2],
hasta encontrar un blanco, movindose una posicin a la derecha [transicin a q3], para
finalizar con la cabeza lectora al inicio del nmero sucesor binario.

Definicin de la MT

MT9=({0,1},{0,1,},,{q0,q1,q2,q3,q4},q0,f,{q3}), donde f (con cabeza de la pila al inicio del
nmero)





Para desarrollar: Realice el esquema en jflap, revise el comportamiento e identifique las cadenas
que son aceptadas por el autmata, de un breve resumen en sus propias palabras del
procedimiento realizado.

Elementos de Reporte de Laboratorio:
Portada
Tema
Objetivos
Introduccin o/y marco terico
Actividades de Desarrollo
Conclusin
Referencias Bibliogrficas

Bibliografa:
http://gabriellacayo.wordpress.com/2013/07/09/laboratorio-iii-jflap/
http://dl.dropboxusercontent.com/u/20099418/manual_Completo_JFLAP.pdf
http://automatasylenguajesformales.wordpress.com/2012/03/29/introduccion-a-jflap-
herramienta-para-la-visualizacion-de-lenguajes-formales/
http://www.cs.duke.edu/csed/jflap/tutorial/fa/createfa/fa.html
http://www.cs.duke.edu/csed/jflap/tutorial/turing/one/index.html

También podría gustarte