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:
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 conen donde no hay transición
- Leer
: Conjunto de estados finales
3. Analizar la palabra:
Tenemos el estado actual/temporal
Tenemos el valor booleano
Para cada caracter
siy
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