Está en la página 1de 10

Proyecto 1: Maquina de Turing

Teora de la Computacin

M.C. Erick Galaad de la Vega Cardiel

Jess Rico Villa 0828106A

Morelia, Michoacn, 24 de Octubre de 2013

Objetivo: En este proyecto se pretende la simulacin e implementacin de la resta de dos


nmeros enteros utilizando el concepto de la mquina deTuring, mediante un applet de java, as
como tambin el ejemplo de Busy Beavers de 3 estados y otro pequeo ejemplo que reconoce
.

Resta de dos nmeros enteros


Para poder dar solucin o tratar de plantear una solucin a este problema se debe saber que
consiste de 3 etapas:

Comprobar que x>y


Restar
Limpiar

Para esto plantee un modelo de mquina de Turing donde primero compruebo que x>y ya que si
esto no ocurre entonces nuestra maquina estara lleno a un estado de terminacin donde x<=y.
Para realizar esto plantee tener mi mquina de Turing con un delimitador de inicio $ a manera de
poder ver dnde est el inicio de la operacin y que esto me sirva para poder hacer la
comparacin y, as mismo, la resta.
Una vez obtenidos los datos desde el applet mi cinta se vera:

Este ejemplo es 3 2 en sistema unario.


Donde al inicio tenemos nuestro delimitador ($) nuestro primer nmero, el signo (-), el segundo
nmero y por ltimo el signo de igual (=).
Una vez planteado este esquema se procede al diseo del diagrama de la mquina de turing, para
mi caso me pareci mejor hacer la comparacin despus la resta, una vez que daba por hecho que
si efectivamente el primer nmero seria mayor que el segundo, y por ultimo realizar la limpieza de
manera que me quede algo similar a la entrada, solo que ahora si en el carcter de $ y ya con el
resultado despus del signo igual(=).

Para hacer la comparacin nuestra maquina tiene el puntero en el delimitador de inicio o sea en $.
Una vez aqu este lee un 1 y lo cambia por x, despus se mueve hacia la derecha al estado q1 y
aqu realiza un ciclo hasta que pase todos los 1s y llegar al signo de despus llega a q2, aqu
cambia el primer 1 que encuentra por una x y se mueve hacia la izquierda, luego pasa al estado 4
aqu se salta todos los 1s hacia la izquierda, hecho esto busca la primera x despus de ello busca
nuevamente un 1 y sigue.

fig.1. el diagrama de estados de la mquina de Turing de la resta.


Cuando se da que no encuentra ningn 1 disponible despus del estado q0; llega al signo = donde
pasa al estado de terminacin esto indica que x<=y.
Por el contrario en el estado q2 cuando ya no tiene 1s para convertir en x, lo que hace es que llega
al signo = y entonces aqu se da por hecho que x>y.
Despus de esto pasa al estado q5 aqu pasa al q6 buscando un blanco (B) y anteponiendo un 1.
Una vez hecho esto regresa hacia la izquierda con un = y al estado q7, aqu se salta las x, y el signo
-. Despus de esto con un 1, cambindolo por x pasa al estado q8, esto es cuando llegamos al
primer 1 de derecha a izquierda del primer nmero, aqu salta x, signo - , signo =, 1s hasta llegar al
espacio en blanco del estado q5 a q6 donde hace lo mismo, pone un 1, como si estuviera copiando
los unos que quedaron sin convertirse en x.

Fig.2. En la anterior imagen se muestra nuestro applet corriendo la resta de 111 11 (3-2=1)

Fig.3. E aqu la resta en nuestro programa de 1111111111 1111 (10-4=6)

Busy Beavers 3 estados


Bsicamente de este problema encontr el diagrama en internet lo por lo que solo lo implemente
en el mismo applet, donde lo corro desde el selector ejemplo.
Este problema debe dar como resultado la escritura de 6 1s en la cinta.

Fig.4. Corriendo el Busy Beavers de 3 estados.


Para la implementacin de este en Java me base en el anterior el de la resta de dos enteros,
bsicamente lo que hice fue crear varios estados esto como mtodos recibiendo la posicin actual
del puntero y el carcter que lee esa posicin, y cuando quera irme a otro estado, solo hago una
invocacin al mtodo.

Fig.5. los estados en busy beavers.

Mquina que reconoce


Por ultimo al igual que la programacin de los anteriores, realice la de este problema, bsicamente
el profesor nos facilit el diagrama con las transiciones ya solo fue la implementacin.

Fig.6,7. Diagrama de estados de esta maquina

Fig.8. Aqu para una cadena de entrada 00111000 no llega al estado de aceptacin

Fig.9. Corriendo el programa para una cadena de entrada 000111000 se ve como acepta la cadena.
Vemos como para la cadena de entrada esta la va cambiando por varias literales y una vez hecho
esto alcanza el estado de terminacin con lo cual quiere decir que la cadena fue aceptada por
nuestra mquina de turing.

Conclusiones:
Me fue muy gratificante la realizacin de este pequeo proyecto ya que por una parte reforc un
poco en la programacin que muchas de las veces se olvida, y tambin complemente en lo que fue
estos temas de teora de la computacin.

En la implementacin de la mquina de turing para la resta al principio no saba o no me daba una


idea clara de cmo realizar la comparacin de x > y, creo que esto fue lo que ms tiempo llevo,
porque una vez lo haba entendido, la parte de la resta y la limpieza fue ms sencillo.
Para el problema de busy beavers me pareci relativamente fcil por la razn que ya tena una
manera de hacer las transiciones mediante mtodos.
En el ltimo problema de igual forma no se me hizo tan difcil la implementacin por tener y una
idea de cmo programarla de modo que realice la programacin y funcion con el diagrama que el
profesor nos facilit.

10

También podría gustarte