Upload
pablo-leal-troncoso
View
240
Download
0
Embed Size (px)
Citation preview
8/18/2019 Informe Autómatas Alvarez Catalán Obando
1/14
Universidad Austral de Chile Facultad de Ciencias de la Ingeniería
Valdivia
Simulación de Autómata Finito
Determinista
Informe Final
Integrantes: Marco Álvarez, Fabián Catalán, Jorge Obando
Profesor del curso: María Eliana de la Maza W.
Fecha de entrega: Jueves 14 de Abril, 2016
8/18/2019 Informe Autómatas Alvarez Catalán Obando
2/14
Simulación Autómata Finito Determinista Página 1
[0] Índice
Contenido
[0] Índice………………………………………………………….. ............................página 1
[1] Introducción……….…………………………………………..............................página 2
[2] Desarrollo
[2.1] Especificación de Métodos y algoritmos……………..............................página 3
[2.2] Estructuras de Datos utilizadas…………………….................................página 3
[2.3] Creación de una transición…………………………................................página 4
[3] Especificación de Programa y Manual de Uso…….…..................................página 5
[4] Conclusión......................................................................................................página 12
[5] Bibliografía………………………………………………… ................................página 13
8/18/2019 Informe Autómatas Alvarez Catalán Obando
3/14
Simulación Autómata Finito Determinista Página 2
Introducción
Un autómata finito determinista (abreviado AFD) es un autómata finito queademás es un sistema determinista; es decir, para cada estado en que se encuentre el
autómata, y con cualquier símbolo del alfabeto leído, existe siempre a lo más una transiciónposible desde ese estado y con ese símbolo.
Está formado por:
1. Un conjunto finito de estados, a menudo designado como Q.2. Un conjunto finito de símbolos de entrada, a menudo designado como ∑ (sigma). 3. Una función de transición que toma como argumentos un estado y un símbolo de
entrada y devuelve un estado como salida. La función de transición se designahabitualmente como Δ (delta). Los argumentos de entrada NO deben repetirse para
conservar el determinismo del autómata.4. Un estado inicial es uno de los estados de Q.5. Un conjunto de estados finales o de aceptación F. El conjunto F es un subconjunto
de Q.
En este informe se especificará el funcionamiento de un software que simule un AFD,usando una interfaz visual grata para el cliente, junto con los métodos principales que hacenponer en marcha la simulación de nuestro autómata finito determinista.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
4/14
Simulación Autómata Finito Determinista Página 3
[2] Desarrollo
[2.1] Especificación de Métodos y algoritmos:
Nuestro Software contará con 5 métodos fundamentales para el funcionamiento de nuestrasimulación del autómata:
void Agregar_Transición(QString est_Entrada, QString símboloEntr, QString est_Salida): Crea un QString con los parámetros extraídos de los campos pertinentes(ver sección2.2) registrándolo de la forma que determinamos en la sección 2.2. Esta cadena sepasa a la lista gráfica, guardándose como un ítem dinámico de ella.
void Editar_Transición(QString est_Entrada, QString símboloEntrada, QString est_Salida):Edita una transición seleccionada de la lista dinámica de transiciones agregadas.
void Eliminar_Transición(QString est_Entrada, QString símb_Entr, QString est_Salida):Elimina una transición seleccionada de la lista dinámica de transiciones agregadas.
QString Estado_de_Salida(QString est_Entrada, QString símbolo_Entrada):Dado un estado de entrada y un símbolo de entrada, el método deberá recorrer lalista de transiciones hasta hallar una transición con los parámetros ingresados. Siencuentra una transición con estos valores, retorna el estado de salida adjunto a
esta transición, sino retorna una palabra vacía.
bool ValidarPalabra(QString palabra):Recorre una palabra ingresada por usuario, verificando que cada letra de ellapertenezca al alfabeto(almacenado como QString) y que además, retorne un estadode salida por cada una de ellas. Si se llega a la palabra final con un estadoresultante y además sea un estado final, entonces acepta la palabra, retornandoverdadero. Si una de las condiciones subrayadas no se cumple, entonces la palabrano es aceptada y el algoritmo finaliza retornando un booleano ‘falso’.
bool esEstadoFinal(QString estado):
Recorre la lista de estados finales, comparando los ítems de la lista con el estadoingresado. Si el estado es un estado final, retorna true, false sino.
Cabe mencionar que los métodos declarados acá, son llamados desde eventos de botones,eventos de cambio de ítem de listas, de comboboxs e incluso del campo de símbolos. Cadaevento tiene sus propias sentencias que, no son de relevancia en el funcionamiento delalgoritmo, más bien, son para mejorar la visualización gráfica del programa, por lo tanto, nofueron incluidas en este apartado.
.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
5/14
Simulación Autómata Finito Determinista Página 4
[2.2] Estructuras de datos utilizados
El estado de Entrada se registrará en la clase principal como una variable globalQString y el conjunto de estados Finales se registraran en un objeto de tipo lista dinámica
(QListWidget) propio de la interfaz del programa. Las transiciones de nuestro autómata finitodeterminista se procesarán como cadenas de texto que se guardarán en una lista dinámicavisual (QListWidget). La estructura de esta cadena de texto será de la forma:
“d(estado_entrada,simbolo_entrada)=estado_salida”
Lo anterior, es un string con los parámetros subrayados extraídos desde la interfaz deusuario, y forma parte del objeto dinámico mencionado. Al almacenar cada transición validada, se va capturando los símbolos ingresados. Estos
símbolos se registran en una variable global string llamada alfabeto que contiene todos lossímbolos permitidos.
Nuestro programa tiene también una variable string global llamada es_actual que tienecomo finalidad el registrar el estado que retorna las transiciones registradas, mientras serecorren los símbolos de la palabra ingresada. Como también tenemos otra variablebooleana llamada ready, da la señal si se pueden agregar transiciones. Para que sepuedan agregar las transiciones, el usuario debe agregar el estado inicial y estados finales.
Para una mejor comprensión de la lista visual usada, citaremos la definición extraída ytraducida desde http://doc.qt.io/qt-4.8/qlistwidget.html#details
"La clase QListWidget ofrece un widget de lista basada en elementos. QListWidget es unaclase de conveniencia que ofrece una vista de lista, pero con una interfaz clásica basada enelemento para añadir y eliminar elementos. QListWidget utiliza un modelo in ternod inámic o para la gestión de cada artículo QListWidget en la lista.”
[2.3] Creación de una transición:
Esto es parte del código del método agregarTransición()
QString est_entrada = ui->c3->currentText(); //extraido de un combobox QString sÍmbolo = ui->simb->text(); //extraido de un lineEdit (campo texto) QString est_entrada = ui->c4->currentText(); //extraido de un combobox QString transicion = “d(“ + est_entrada+ “,” + sÍmbolo + “)=” + est_salida; listaTransiciones.addItem( transicion ); //se guarda el string dinámicamente en la lista
Cabe mencionar que se hacen validaciones internas como, verificar que el usuario hayaseleccionado un estado en los comboboxs y si ingresó algún simbolo distinto de ‘blanco’ enel campo de símbolos.
http://doc.qt.io/qt-4.8/qlistwidget.html#detailshttp://doc.qt.io/qt-4.8/qlistwidget.html#detailshttp://doc.qt.io/qt-4.8/qlistwidget.html#details
8/18/2019 Informe Autómatas Alvarez Catalán Obando
6/14
Simulación Autómata Finito Determinista Página 5
[3] Especificación del programa y Manual de Uso
Nombre del programa: Automatótes © Lenguaje de implementación: C++, Qt 5+ Sistema Operativo: Windows , versiones: Vista, XP SP3, 7, 8, 8.1, 10
El programa posee un archivo ejecutable al cual se le debe hacer doble click para que elprograma comience.
Una vez ejecutado el programa aparecerá en pantalla un mensaje de bienvenida al usuario, antes de
iniciar la pantalla principal del programa.
Una vez iniciado el programa se debe seleccionar el estado inicial el cual puede ser desde q0 hasta
q99.
Una vez seleccionado se deberá agregar los estados finales uno por uno a la Lista que aparece enpantalla.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
7/14
Simulación Autómata Finito Determinista Página 6
Si se equivoca en ingresar un estado final se debe clickear y seleccionar el elemento en la lista yluego en el botón eliminar (el botón con el símbolo de un tacho de basura).
8/18/2019 Informe Autómatas Alvarez Catalán Obando
8/14
Simulación Autómata Finito Determinista Página 7
Cuando se finalice de ingresar los estados finales se debe clickear el botón con el check paraacceder a la siguiente pestaña.
Las transiciones se ingresan con el siguiente formato: Estado entrada, Letra del alfabeto, Estado dellegada. Así como se muestra en la imagen.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
9/14
Simulación Autómata Finito Determinista Página 8
En caso de error solo se debe seleccionar la transición y luego hacer click en el botón editar
en el caso de que se quiera cambiar la transición, y si desea eliminar una transición,
simplemente debe pulsar el botón con un tacho de basura
Una vez ingresada una transición se desbloqueara el segmento donde se puede ingresar la palabradeseada.
Una vez ingresada la palabra se puede, hacer click en el botón con el ticket para analizar la palabra,o hacer click en el botón con el tacho de basura para borrarla.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
10/14
Simulación Autómata Finito Determinista Página 9
Una vez ingresada la palabra y hecho click en el botón para analizar la palabra se mostrara unaventana que le dirá al usuario si su palabra es aceptada por el autómata o no.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
11/14
Simulación Autómata Finito Determinista Página 10
Además existe un cuadro de ayuda para el usuario donde aparece el lenguaje del autómata y lasposibles letras iniciales de una palabra aceptada por el autómata.
Para más ayuda para el usuario además se implementó una caja inferior donde se mostraran tipspara ayuda a la ejecución óptima del programa.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
12/14
Simulación Autómata Finito Determinista Página 11
También hay tips si se coloca el mouse sobre algunos botones en el caso de que no comprenda quehacer a continuacion
8/18/2019 Informe Autómatas Alvarez Catalán Obando
13/14
Simulación Autómata Finito Determinista Página 12
[4] Conclusión
Como bien vimos en clases los autómatas finitos deterministas nos ayudan paradeterminar el lenguaje aceptado por una máquina, decimos que un AFD acepta una palabra
si y solo si de un estado inicial existe siempre a lo más una transición posible desde eseestado y con ese conjunto de símbolos, llegando a un estado que debe ser final. A travésde este programa, logramos entender que un autómata se comporta como una función devalidación pues, recibe un parámetro de entrada (palabra) y esta se analiza mediantefunciones de transiciones finitas definidas por el propio usuario, que en conjunto logrananalizar palabras.
Después de haber culminado el software y tras muchas pruebas en dondeingresábamos palabras, concluimos que nuestro programa logra lo pedido, aceptando orechazando la palabra bien sea el caso. Además cabe destacar que posee un diseñointuitivo y de fácil comprensión; pero si en algún momento el usuario no entendiese algohemos añadido un manual explicativo.Unas de herramientas que utilizamos a la hora de programar y que nos fue de gran ayudafue el Qt 5+, que gracias a su fácil programación en el área de interfaz gráfica y apoyado enel lenguaje C++ logramos desarrollar un software limpio y eficaz.
8/18/2019 Informe Autómatas Alvarez Catalán Obando
14/14
Simulación Autómata Finito Determinista Página 13
[5] Bibliografía
Introducción del informe [link]:http://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_autom
atas/afd.pdf Documentación Qt [link]: http://doc.qt.io/ Foros: Stackoverflow.com [link]: http://stackoverflow.com/questions/tagged/qt Cuaderno de la asignatura Teoria de Autómatas [Maria Elena de la Maza W.]. Paleta de Colores[link]: https://color.adobe.com/es/create/color-wheel/
http://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_automatas/afd.pdfhttp://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_automatas/afd.pdfhttp://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_automatas/afd.pdfhttp://doc.qt.io/qt-4.8/http://doc.qt.io/qt-4.8/http://doc.qt.io/qt-4.8/http://stackoverflow.com/questions/tagged/qthttp://stackoverflow.com/questions/tagged/qthttp://stackoverflow.com/questions/tagged/qthttp://stackoverflow.com/questions/tagged/qthttp://doc.qt.io/qt-4.8/http://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_automatas/afd.pdfhttp://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_automatas/afd.pdf