informe automatas uach

download informe automatas uach

of 14

  • date post

    06-Jul-2018
  • Category

    Documents

  • view

    213
  • download

    0

Embed Size (px)

Transcript of informe automatas uach

  • 8/18/2019 informe automatas uach

    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 automatas uach

    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] Estructuras de Datos utilizadas…………………….................................página 3

    [2.2] Especificación de Métodos y algoritmos……………..............................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 automatas uach

    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 que

    además es un sistema determinista; es decir, para cada estado en que se encuentre elautó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 designa

    habitualmente como Δ (delta). Los argumentos de entrada NO deben repetirse paraconservar 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 automatas uach

    4/14

    Simulación Autómata Finito Determinista Página 3

    [2] Desarrollo

    [2.1] 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 de

    usuario, y forma parte del objeto dinámico mencionado. Al almacenar cada transición validada, se va capturando los símbolos ingresados. Estossímbolos se registran en una variable global string llamada alfabeto que contiene todos lossímbolos permitidos.

    Nuestro programa posee una variable string global llamada es_actual  que tiene comofinalidad el registrar el estado que retorna las transiciones registradas, mientras se recorrenlos símbolos de la palabra ingresada. Como también tenemos otra variable booleanallamada ready, que da la señal si se pueden agregar transiciones. Para que se puedanagregar las transiciones, el usuario debe agregar primeramente el estado inicial y estadosfinales.

    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.2] Especificación de Métodos y algoritmos: 

    Nuestro Software contará con 6 prototipos de métodos para el funcionamiento de nuestrasimulación del autómata. Cabe mencionar que en nuestro código tienen otros nombres.

      void Agregar_Transición(QString est_Entrada, QString símbEntrada, QString est_Salida) Crea un QString con los parámetros extraídos de los campos pertinentesregistrándolo de la forma que determinamos en la sección 2.1. Esta cadena se pasa

    a la lista gráfica, guardándose como un ítem dinámico de ella.Evento Asociado: void MainWindow::on_btnAgregarTransicion_pressed ()

    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 automatas uach

    5/14

    Simulación Autómata Finito Determinista Página 4

      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.Evento Asociado: void MainWindow::on_btnEditarTrans_pressed()

      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.Evento Asociado: void MainWindow::on_btnEliminarTrans_pressed() 

      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 aesta transición, sino retorna una palabra vacía.NOTA DE LOS CREADORES: este método se usará dentro del AgregarTransición.

      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’. Evento Asociado: void MainWindow::on_btnValidarPalabra_pressed () 

      bool esEstadoFinal(QString estado):Recorre la lista de estados finales, comparando los ítems de la lista con el estado

    ingresado. Si el estado es un estado final, retorna true, false sino.Eventos Asociados: void MainWindow::on_btnValidarPalabra_pressed () void MainWindow::on_btnAgregarTransicion_pressed() 

    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.

    [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;   listWidget.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 válido en el campo desímbolos, como también verificar que la transición no esté repetida.

  • 8/18/2019 informe automatas uach

    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, 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 deiniciar la pantalla principal del programa. 

    Una vez iniciado el programa se debe seleccionar el estado inicial el cual puede ser desde q0 hastaq99.

  • 8/18/2019 informe automatas uach

    7/14

    Simulación Autómata Finito Determinista Página 6

    Una vez seleccionado se deberá agregar los estados finales uno por uno a la Lista que aparece enpantalla.

    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 automatas uach

    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 automatas uach

    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 automatas uach

    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 automatas uach

    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 automatas uach

    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 automatas uach

    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 automatas uach

    14/14

    Simulación Autómata Finito Determinista Página 13

    [5] Bibliografía

      Cuaderno Teoría de Autómatas [INFO 164], Universidad Austral de Chile 2016

    Profesora: Maria Elena de la Maza W. 

      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/ 

      Crear Ejecutable[link]:

    http://dimitris.apeiro.gr/2015/06/24/build-a-static-qt5-for-windows-by-compiling/ 

      Foros: Stackoverflow.com [link]:http://stackoverflow.com/questions/tagged/qt 

      Paleta de Colores[link] 

    https://color.adobe.com/es/create/color-wheel/ 

      Diseño[link]:

    https://www.smashingmagazine.com/2016/04/web-developer-guide-color/ 

    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://stackoverflow.com/questions/tagged/qthttp://stackoverflow.com/questions/tagged/qthttps://color.adobe.com/es/create/color-wheel/https://color.adobe.com/es/create/color-wheel/https://color.adobe.com/es/create/color-wheel/http://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