Hola.
Esta vez les traigo algo más sobre Java. Y específicamente algo de autómatas.
Tengo una clase que se llama Teoría de la Computación, en la cual estamos viendo analizadores léxicos, gramáticos, autómatas y algo más. Y pues tengo una maestra buena gente que nos comenzó enseñando teoría sobre los autómatas que finitos, determinísticos, no determinísticos etc., y el caso es que nos encargo a todo el grupo que, por equipos, programáramos un autómata (ella no lo asigno) en cualquier lenguaje de programación (por supuesto que elegí Java).
Las condiciones del programa eran:
1.- Recibir las cadenas de un archivo de texto
2.- Usar la matriz de transición
3.- Validar correctamente las cadenas y decir si eran validas o no
Suena sencillo (o al menos así lo escuche yo), y al momento de comenzar a programarlo, batalle mucho porque no sabía cómo utilizar correctamente la matriz de transición.
Así que comencé a leer, leer, leer y por ultimo internet. Y no encontraba algo solido, concreto que me pudiera ayudar. Pero nada que una mente joven no pueda resolver, varias desveladas y lo conseguí.
La representación grafica del autómata es algo parecida a esto.
Ya explicado para que le entiendan.
La cadena debe de empezar por una o más letras mayúsculas (L) (Cualquier letra del abecedario), seguido de una o más letras minúsculas (l) (Cualquier letra del abecedario), después puede seguir un digito cualquiera una o más veces (d), y ahí puede terminar el autómata. Sin embargo entra una condición más que contempla la entrada de un guion bajo (_) y seguido de un digito una o más veces. Concluye cuando después de la cadena se encuentra con un Enter, un Tabulador o un Espacio.
Como podemos ver, parece algo sencillo, pero no lo es. Por eso, yo lo quiero compartir con todos ustedes por si a alguna persona le sirve, lo puede descargar. Este es el archivo Automata.java (Cópienlo y lo guardan con la extensión .java) y este es el archivo Cadena.txt de donde toma las cadenas (los 2 archivos deben encontrarse dentro de la misma ubicación).
Espero y les sirva a más de uno. Si tienen alguna duda, pueden mandarme un correo electrónico para tratar de resolvérsela. Y si les sirve, pueden dejar un comentario para saber si le estoy ayudando a alguien, para poder darme cuenta y seguir poniendo mas códigos.
Ya para terminar quiero decirles que tengo en el comal una nueva versión de FCalculator, que estaré publicando la siguiente semana. Creo que será el día 4 de Abril. Como lo estoy acabando de darle su última pulida, no lo tuve listo para ponerlo hoy.
Nos vemos después con más novedades.
ACTUALIZACION:
Si te interesó este artículo sobre autómatas, puedes ver este otro autómata que diseñe especificamente para los programadores novatos como yo.
Es un autómata para verificar las constantes numéricas. Te lo recomiendo. Esta muy bien explicado.





