Este algoritmo fue desarrollado para un curso de tercer ciclo: Teoría de la Computación.
Consiste en, hacer un algoritmo que reciba como entradas un autómata, y una palabra;
y que devuelva como resultado, si la palabra es reconocida o no por el autómata.
Es decir:
Algoritmo:
Autómata finito determinista general para reconocer palabras
Entrada:
- AFD como 5-tupla: donde:
- es el Conjunto de Estados/Variables
- es el Alfabeto
- es la función de transición
- es el estado inicial
- es el Conjunto de estados finales
Salida:
- Valor booleano que determina si la palabra evaluada pertenece al AFD.
Proceso:
1. Hacer la lectura del AFD
- Leer : estado inicial // representado por un número
- Leer : Conjunto de estados // representado por un arreglo de números
- Leer : vocabulario // representado por un arreglo de caracteres
que pertenecen a - Dados los tamaños de y de ,
crear una matriz de tamaño
para representar/almacenar las transiciones
rellenando con en donde no hay transición - Leer : Conjunto de estados finales
3. Analizar la palabra:
Tenemos el estado actual/temporal (el cual evalúa según momento)
Tenemos el valor booleano
Para cada caracter , mientras no termine la palabra:
si y
sino
error: palabra no reconocida
Comentarios adicionales:
1. En aquella época no sabía manejar GUIs, por eso la precariedad del programa.
Ahora se vería más bonito e interesante con un creador gráfico de estados y transiciones:
2. Me quedaba la duda de: siempre S0 será el estado inicial? (Y así, omitir el paso 1.1. del algoritmo)
3. Imágenes, cortesía de Wikipedia
buenas, te agradeceria si me pasaras unos link acerca de GUIs para crear gráficos
ResponderBorrarde estados y transiciones.
orale chido jeje
ResponderBorrary el proyecto en java no lo tienes xD
ResponderBorrar