Informe Autómatas Alvarez Catalán Obando

download Informe Autómatas Alvarez Catalán Obando

of 14

Transcript of Informe Autómatas Alvarez Catalán Obando

  • 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