Sie sind auf Seite 1von 14

Universidad Austral de Chile

Facultad de Ciencias de la Ingeniera


Valdivia

Simulacin de Autmata Finito


Determinista
Informe Final

Integrantes:
Marco lvarez, Fabin Cataln, Jorge Obando
Profesor del curso:
Mara Eliana de la Maza W.
Fecha de entrega:
Jueves 14 de Abril, 2016

[0] ndice
Contenido
[0]

ndice..............................pgina 1

[1]

Introduccin...............................pgina 2

[2]

Desarrollo
[2.1] Especificacin de Mtodos y algoritmos..............................pgina 3
[2.2] Estructuras de Datos utilizadas.................................pgina 3
[2.3] Creacin de una transicin................................pgina 4

[3]

Especificacin de Programa y Manual de Uso...................................pgina 5

[4]

Conclusin......................................................................................................pgina 12

[5]

Bibliografa................................pgina 13

Simulacin Autmata Finito Determinista

Pgina 1

Introduccin
Un autmata finito determinista (abreviado AFD) es un autmata finito que
adems es un sistema determinista; es decir, para cada estado en que se encuentre el
autmata, y con cualquier smbolo del alfabeto ledo, existe siempre a lo ms una transicin
posible desde ese estado y con ese smbolo.
Est formado por:
1. Un conjunto finito de estados, a menudo designado como Q.
2. Un conjunto finito de smbolos de entrada, a menudo designado como (sigma).
3. Una funcin de transicin que toma como argumentos un estado y un smbolo de
entrada y devuelve un estado como salida. La funcin de transicin se designa
habitualmente como (delta). Los argumentos de entrada NO deben repetirse para
conservar el determinismo del autmata.
4. Un estado inicial es uno de los estados de Q.
5. Un conjunto de estados finales o de aceptacin 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 mtodos principales que hacen
poner en marcha la simulacin de nuestro autmata finito determinista.

Simulacin Autmata Finito Determinista

Pgina 2

[2] Desarrollo
[2.1] Especificacin de Mtodos y algoritmos:
Nuestro Software contar con 5 mtodos fundamentales para el funcionamiento de nuestra
simulacin del autmata:

void Agregar_Transicin(QString est_Entrada, QString smboloEntr, QString est_Salida):

Crea un QString con los parmetros extrados de los campos pertinentes(ver seccin
2.2) registrndolo de la forma que determinamos en la seccin 2.2. Esta cadena se
pasa a la lista grfica, guardndose como un tem dinmico de ella.

void Editar_Transicin(QString est_Entrada, QString smboloEntrada, QString est_Salida):

Edita una transicin seleccionada de la lista dinmica de transiciones agregadas.

void Eliminar_Transicin(QString est_Entrada, QString smb_Entr, QString est_Salida):

Elimina una transicin seleccionada de la lista dinmica de transiciones agregadas.

QString Estado_de_Salida(QString est_Entrada, QString smbolo_Entrada):

Dado un estado de entrada y un smbolo de entrada, el mtodo deber recorrer la


lista de transiciones hasta hallar una transicin con los parmetros ingresados. Si
encuentra una transicin con estos valores, retorna el estado de salida adjunto a
esta transicin, sino retorna una palabra vaca.

bool ValidarPalabra(QString palabra):

Recorre una palabra ingresada por usuario, verificando que cada letra de ella
pertenezca al alfabeto(almacenado como QString) y que adems, retorne un estado
de salida por cada una de ellas. Si se llega a la palabra final con un estado
resultante y adems sea un estado final, entonces acepta la palabra, retornando
verdadero. Si una de las condiciones subrayadas no se cumple, entonces la palabra
no 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 estado
ingresado. Si el estado es un estado final, retorna true, false sino.
Cabe mencionar que los mtodos declarados ac, son llamados desde eventos de botones,
eventos de cambio de tem de listas, de comboboxs e incluso del campo de smbolos. Cada
evento tiene sus propias sentencias que, no son de relevancia en el funcionamiento del
algoritmo, ms bien, son para mejorar la visualizacin grfica del programa, por lo tanto, no
fueron incluidas en este apartado.
.

Simulacin Autmata Finito Determinista

Pgina 3

[2.2] Estructuras de datos utilizados


El estado de Entrada se registrar en la clase principal como una variable global
QString y el conjunto de estados Finales se registraran en un objeto de tipo lista dinmica
(QListWidget) propio de la interfaz del programa. Las transiciones de nuestro autmata finito
determinista se procesarn como cadenas de texto que se guardarn en una lista dinmica
visual (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 parmetros subrayados extrados desde la interfaz de
usuario, y forma parte del objeto dinmico mencionado.
Al almacenar cada transicin validada, se va capturando los smbolos ingresados. Estos
smbolos se registran en una variable global string llamada alfabeto que contiene todos los
smbolos permitidos.
Nuestro programa tiene tambin una variable string global llamada es_actual que tiene
como finalidad el registrar el estado que retorna las transiciones registradas, mientras se
recorren los smbolos de la palabra ingresada. Como tambin tenemos otra variable
booleana llamada ready, da la seal si se pueden agregar transiciones. Para que se
puedan agregar las transiciones, el usuario debe agregar el estado inicial y estados finales.
Para una mejor comprensin de la lista visual usada, citaremos la definicin extrada y
traducida desde http://doc.qt.io/qt-4.8/qlistwidget.html#details
"La clase QListWidget ofrece un widget de lista basada en elementos. QListWidget es una
clase de conveniencia que ofrece una vista de lista, pero con una interfaz clsica basada en
elemento para aadir y eliminar elementos. QListWidget utiliza un modelo interno
dinmico para la gestin de cada artculo QListWidget en la lista.

[2.3] Creacin de una transicin:


Esto es parte del cdigo del mtodo agregarTransicin()

QString est_entrada = ui->c3->currentText(); //extraido de un combobox


QString smbolo = ui->simb->text();
//extraido de un lineEdit (campo texto)
QString est_entrada = ui->c4->currentText();
//extraido de un combobox
QString transicion = d( + est_entrada+ , + smbolo + )= + est_salida;
listaTransiciones.addItem( transicion ); //se guarda el string dinmicamente en la lista

Cabe mencionar que se hacen validaciones internas como, verificar que el usuario haya
seleccionado un estado en los comboboxs y si ingres algn simbolo distinto de blanco en
el campo de smbolos.

Simulacin Autmata Finito Determinista

Pgina 4

[3] Especificacin del programa y Manual de Uso

Nombre del programa: Automattes


Lenguaje de implementacin: 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 el
programa 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 en
pantalla.

Simulacin Autmata Finito Determinista

Pgina 5

Si se equivoca en ingresar un estado final se debe clickear y seleccionar el elemento en la lista y


luego en el botn eliminar (el botn con el smbolo de un tacho de basura).

Simulacin Autmata Finito Determinista

Pgina 6

Cuando se finalice de ingresar los estados finales se debe clickear el botn con el check para
acceder a la siguiente pestaa.

Las transiciones se ingresan con el siguiente formato: Estado entrada, Letra del alfabeto, Estado de
llegada. As como se muestra en la imagen.

Simulacin Autmata Finito Determinista

Pgina 7

En caso de error solo se debe seleccionar la transicin y luego hacer click en el botn editar
en el caso de que se quiera cambiar la transicin, y si desea eliminar una transicin,
simplemente debe pulsar el botn con un tacho de basura
Una vez ingresada una transicin se desbloqueara el segmento donde se puede ingresar la palabra
deseada.

Una vez ingresada la palabra se puede, hacer click en el botn con el ticket para analizar la palabra,
o hacer click en el botn con el tacho de basura para borrarla.

Simulacin Autmata Finito Determinista

Pgina 8

Una vez ingresada la palabra y hecho click en el botn para analizar la palabra se mostrara una
ventana que le dir al usuario si su palabra es aceptada por el autmata o no.

Simulacin Autmata Finito Determinista

Pgina 9

Adems existe un cuadro de ayuda para el usuario donde aparece el lenguaje del autmata y las
posibles letras iniciales de una palabra aceptada por el autmata.

Para ms ayuda para el usuario adems se implement una caja inferior donde se mostraran tips
para ayuda a la ejecucin ptima del programa.

Simulacin Autmata Finito Determinista

Pgina 10

Tambin hay tips si se coloca el mouse sobre algunos botones en el caso de que no comprenda que
hacer a continuacion

Simulacin Autmata Finito Determinista

Pgina 11

[4] Conclusin
Como bien vimos en clases los autmatas finitos deterministas nos ayudan para
determinar el lenguaje aceptado por una mquina, decimos que un AFD acepta una palabra
si y solo si de un estado inicial existe siempre a lo ms una transicin posible desde ese
estado y con ese conjunto de smbolos, llegando a un estado que debe ser final. A travs
de este programa, logramos entender que un autmata se comporta como una funcin de
validacin pues, recibe un parmetro de entrada (palabra) y esta se analiza mediante
funciones de transiciones finitas definidas por el propio usuario, que en conjunto logran
analizar palabras.
Despus de haber culminado el software y tras muchas pruebas en donde
ingresbamos palabras, concluimos que nuestro programa logra lo pedido, aceptando o
rechazando la palabra bien sea el caso. Adems cabe destacar que posee un diseo
intuitivo y de fcil comprensin; pero si en algn momento el usuario no entendiese algo
hemos aadido un manual explicativo.
Unas de herramientas que utilizamos a la hora de programar y que nos fue de gran ayuda
fue el Qt 5+, que gracias a su fcil programacin en el rea de interfaz grfica y apoyado en
el lenguaje C++ logramos desarrollar un software limpio y eficaz.

Simulacin Autmata Finito Determinista

Pgina 12

[5] Bibliografa

Introduccin del informe [link]:


http://www.uaeh.edu.mx/docencia/P_Presentaciones/huejutla/sistemas/lenguajes_autom
atas/afd.pdf
Documentacin Qt [link]: http://doc.qt.io/
Foros: Stackoverflow.com [link]: http://stackoverflow.com/questions/tagged/qt
Cuaderno de la asignatura Teoria de Autmatas [Maria Elena de la Maza W.].
Paleta de Colores[link]: https://color.adobe.com/es/create/color-wheel/

Simulacin Autmata Finito Determinista

Pgina 13

Das könnte Ihnen auch gefallen