Está en la página 1de 1

Aut

omatas y Lenguajes Formales


Grupo: 7038

Proyecto 1.
Objetivo: Elaborar un programa que pueda leer la tabla de un automata finito determinista y
lo simule aceptando o rechazando cadenas del lenguaje aceptado por el automata.
Salida:
1. La tabla del automatata.
2. Cada una de las cadenas alimentadas y si la acepto o no.
Entradas:
1. El n
umero de estados (los estados pueden manejarlos directamente con enteros, sin
nombre).
2. El alfabeto de entrada en forma de cadena.
3. Una lista (separada entre s por comas o blancos) de los estados finales.
4. Cada renglon de la tabla con el siguiente formato:
hii (i, a0 ) . . . (i, an )
Cada renglon debe ir encabezado por el numero del estado y luego el n
umero de estado
al que se transfiere con el orden dado en el alfabeto.
5. Un n
umero arbitrario de cadenas de entrada formadas con smbolos del alfabeto. Para
cada una de ellas el AFD dira si la acepta o no.
Fecha de asignaci
on: Viernes 24 de febrero de 2017.
Fecha de entrega: (por correo electronico) Domingo 12 de marzo a las 23:59 horas.
Notas:
1. El automata consiste de una tabla de transiciones y una variable que guarda el es-
tado actual. Conforme se van leyendo smbolos en las cadenas, el estado actual va
cambiando. Al empezar el estado actual es q0 . Si al final de leer una cadena el estado
actual es un estado final, el automata acepta la cadena.
2. Deberemos poder probar sus proyectos con nuestros propios automatas, siempre y
cuando la entrada sea como se describe en el inciso correspondiente.
3. Les sugerimos iniciar con una tabla ya armada para ver si la simulacion del automata
es adecuada, para despues trabajar la parte de como leer un AFD y guardarlo en
memoria.
Restricciones: No se contaran proyectos elaborados con lenguajes funcionales como Python,
Haskell o Scheme.
Sugerencias: Trabajen con un archivo de disco como entrada ya que es muy cansado estar
probando el programa con la entrada desde la consola. Pueden leer de disco la descripcion
del automata y de consola las cadenas a reconocer.