Trabajo_Automatas

Anuncio
TRABAJO DE AUTOMATAS Y LENGUAJES FORMALES
Integrantes: Carlos Julián Manrique Ortega
Luís Fernando Ramírez Silva
Cod: 2050222
Cod: 2040086
Ejercicio: en notación base 3 multiplica por 2 la cadena de entrada.
Solución: Para el desarrollo del ejercicio, pensamos en usar una maquina que se
encargue de duplicar el numero de entrada (dado en base 3)y lo coloque después
de dos asteriscos, luego implementamos la maquina multiplicador, que se va a
encargar de multiplicar en base 3 toda la cadena de entrada y dar el resultado
sobrescrito en la cadena multiplicada.
Ejemplo:
La cadena de entrada es: 110121 (en base 3)
La cadena de salida seria para este caso: 221012
Nuestro programa haría los siguientes pasos:
1ro. Pide el numero de entrada después de un “#” y sabe que termina al encontrar
dos “##s”
#110121##
2do. Toma ese mismo numero y lo duplica (maquina duplicadora vista en clase)
#110121##110121##
3ro. Se para en el tercer “#” y comienza a leer el ultimo numero ingresado, recorre
todo el numero y empieza la multiplicación por 2.
4to. Arranca de atrás hacia delante sobrescribiendo el numero que encuentra por
la respectiva producto de su multiplicación x2 en base 3.
1. Maquina multiplicador x2:
0/0R
1/1R
2/2R
#/# R
0/0L
1/2L
#/# L
0/1L
2/1L
1/0L
2/2L
#/1L
1.) Inicio.
2.) q0: estado de inicio.
3.) Encuentra # escribe # y se mueve al siguiente numero hacia la derecha.
4.) q1: estado 1, en este estado, si encuentra 0, escribe 0, si encuentra 1,
escribe 1, y si encuentra 2, escribe 2 y se mueve a la derecha, o sea recorre
todo el numero hasta el final y lo deja tal como esta.
5.) Encuentra # escribe # y se mueve hacia la izquierda.
6.) q2: Estado2, en el caso en el que no lleve nada la multiplicación o sea
encuentre un cero, coloca un cero y si encuentra un 1 coloca un 2, que seria
el correspondiente producto de multiplicar por 2.
7.) q2: Estado2, en el caso en el que encuentre un 2, ya su resultado seria 4,
que en base 3, es 11, entonces coloca 1, y lleva uno.
8.) q3: ciclos repetitivos de cuando lleva uno, para el caso que el siguiente
numero que encuentre a la izquierda fuera 1, colocaria 0 ya que 2x1=2+ 1
que llevaba seria 3, que es 10 en base 3, o sea pone cero y lleva 1 (este
ciclo se repite hasta encontrar un cero)
9.) q3:cilco repetitivo de cuando lleva uno, ahora que encuetre 2 en el siguiente
numero a la izquierda, entonces coloca 2 ya que si encuentra 2, es 2x2 = 4
+1 que llevaba seria 5, que es 12 en base 3, o sea pone el dos y lleva 1
mas (este ciclo se repite hasta encontrar un cero).
10) q3: Ahora encuentra cero (0), coloca por obligación el 1 que llevaba, no
puede llevar mas de 1 por consiguiente pone el 1 y regresa al estado q2.
11) q3: en el caso en que encuentre un numeral, se da por terminado el
numero, por consiguiente el programa finaliza.
Descargar