Está en la página 1de 16

Instituto

Tecnolgico de
Saltillo

Practica #4: Uso de la Herramienta JFLAP en


Autmatas Finitos.
Lenguajes y Autmatas I.
Docente: Ing. Karina Cabrera Chagoyan.
Integrantes:
Hctor Hugo Carrillo Ibarra
Itzel Estefana Medina Barraza
Vctor Hugo Moncada Macas
Hora clase: 11:00 a.m. 12:00 p.m.

Ensayo del manejo de la herramienta haciendo nfasis en Autmatas Finitos Deterministas.


Definicin.
JFlap define a un Autmata Finito (FA, Finite Automaton en ingls) como la quntupla M = (Q, ,
, qs, F) donde:
Q es un conjunto de estados {qi | i es un entero no negativo}.
es un alfabeto finito.
es un funcin de transicin, : D 2Q donde D es un subconjunto finito de Q * .
qs (es parte de Q) es el estado inicial.
F (es un subconjunto de Q) es el conjunto final de estados.
Se denota que en esta definicin se incluyen ambos Autmata Finito determinista (DFA,
deterministic finite automata) y Autmata Finito no Determinista (NFA, nondeterministic finite
automata).

La ventana de edicin.
Para crear un autmata finito se hace click en la opcin Finite Automaton del men.

Men principal.

LENGUAJES Y AUTMATAS I

Creando un Autmata Finito.


En esta ventana, se permite crear y editar un AF, el editor est dividido entre dos reas bsicas, el
espacio de edicin, en la cual se puede construir el autmata, y la barra de herramientas, la cual
contiene las herramientas necesarias para construir el autmata.

Ventana de edicin.

La barra de herramientas.

Se compone por las siguientes herramientas:

Herramienta editora de atributos

: Configura estados iniciales y finales.

Herramienta creadora de estados

: Crea estados.

LENGUAJES Y AUTMATAS I

Herramienta creadora de transiciones

Borrador

: Crea transiciones.

: Borra estados y transiciones.

Creando estados.
Primeo se crea un estado, para realizar tal cosa se necesita activar la herramienta creadora de
estados haciendo clic en el botn en la barra de herramientas.
Luego se hace clic en el rea de edicin en cualquier parte deseado para crear estados, al hacer
esto aparecer un pequeo crculo amarillo que dice q0.

Definiendo el Estado Inicial y Final.


Arbitrariamente se decidir que q0 ser el estado inicial. Para lograr esto, se selecciona la
herramienta editora de atributos
en la barra de herramientas. Cuanto esto suceda, se hace clic
derecho en q0, aparecer un men como este:

LENGUAJES Y AUTMATAS I

El men de estados.
Desde el men desplegado al hacer clic derecho en el estado q0, se seleccionara la casilla Initial
para configurar que el estado q0 sea el estado inicial, aparece una flecha a la derecha de q0 para
indicar que este es el estado inicial.

q0 definido como estado inicial.

Para crear el estado inicial, se hace clic derecho en el estado que se quiera establecer como estado
final, se despliega un men y se selecciona la casilla Final. El crculo tendr doble lnea, indicando
que ese es el estado final.

q1 definido como estado final.

Creando transiciones.
Se conoce que las cadenas en dicho lenguajes pueden comenzar, dependiendo si es cerradura
positiva o estrella de Kleene, con una o ms as, as que el estado inicial debe tener una
transicin en a, esto significa que el autmata finito debera estar en el mismo estado despus
de procesar cualquier nmero de as. La transicin de salida de a a q0 se cicla nuevamente a s
mismo.
Para crear dicha transicin, primero se selecciona la herramienta creadora de transiciones
de la
barra de herramientas. Luego, se hace clic en q0 en el rea de edicin. Debe de aparecer una caja
de texto en el estado:

Creando una transicin.

LENGUAJES Y AUTMATAS I

Creando una transicin.


Se denota que , representa una cadena vaca, esta es inicializada para el usuario.
Se escribe a en la caja de texto y se presiona la tecla enter. Cuando se termine este
procedimiento debe lucir as:

Transicin creada.

Luego, se sabe que las cadenas en una lenguaje deben terminar con un numero de bs. Se sabe
que la transicin de salida desde q0 debe ser el estado final, cuando una cadena termine con b,
esta debera ser aceptada. Para crear una transicin desde el estado inicial q0 al estado final q1,
primero se hace clic en la herramienta creadora de transicin y luego se hace clic en q0 y se
arrastra el mouse a q1 y se hace clic. Se escribe b en la caja de texto, de la misma manera que se
hizo con a. La transicin entre a y b debera lucir asi:

Segunda transicin creada.

Finalmente, se conoce que solo las cadenas que terminen con b deberan ser aceptadas. Tambin
se sabe que q1 tiene una transicin de salida en b, esta no puede ciclarse de regreso a q1. Existen 2
opciones para la transicin: puede ir al estad inicial q0 o crear un nuevo estado, llamado q2.
Si la transicin en b fue hacia el estado inicial q0, las cadenas podran no tener que tener la forma
ab; las cadenas como ababab tambin seran aceptadas. La transicin no puede ser hacia q0, y
debe estar hacia q2.
Creando una transicin en b desde q1 a q2.
Como el autmata finito debera aceptar las cadenas que terminen con cierto nmero de bs,
esto crea otra transicin en b desde q2 a q1. Ahora el autmata finito est lleno y debe de
funcionar, este debe lucir asi:

LENGUAJES Y AUTMATAS I

Eliminando estados y transiciones.


Para borrar una transicin, primero se elige el borrador
desde la barra de herramientas, luego
se hace clic en el estado que se desee eliminar, en este caso q2, el rea de editor debera lucir asi:

El estado q2 ha sido eliminado.

De manera parecida, para borrar una transicin se hace clic en la flecha de la transicin cuando se
est en modo para borrar.
Ingresando mltiples cadenas al autmata finito.
Una vez que se termin de disear el autmata finito determinista se desea probarla y observar si
realmente acepta cadenas de un lenguaje dado. Para logra esto, se selecciona en la pestaa
Input luego Multiple Run en la barra del men.

Una nueva ventana aparecer desplegando el autmata en la parte izquierda y una tabla para
ingresar cadenas en la derecha:

Para ingresar las cadenas de entrada, se hace clic en la primera fila donde dice Input y se escribe
la cadena el cuadro de dilogo. Cuando est listo, se hace clic en Run Inputs para probar el AFD
y todas las cadenas de entrada. Los resultados, Accept o Reject se muestran en la columna
Result.
LENGUAJES Y AUTMATAS I

Haciendo clic en Clear todas las cadenas ingresadas sern borradas de los cuadros de dialogo.

LENGUAJES Y AUTMATAS I

Utilizando la herramienta JFLAP obtenga los autmatas finitos deterministas de las siguientes
expresiones:
1

X+yz*

Paso #1. Crear estados. Para esta expresin se crearan 3 estados q0, q1 y q2. Primero se har clic
en la herramienta y luego se un clic en el rea de edicin para la creacin del estado q0, luego
otro clic para el estado q1 y un ltimo clic para el estado q2.

Paso #2. Definir el estado inicial y estado final. Para esta expresin se definir al estado q0 como
estado inicial y a q2 como estado final. Por lo tanto se har clic en la herramienta , luego se hace
clic derecho al estado q0 y se elige la opcin Initial.

Una vez terminada esta parte, aparecer una flecha en la parte derecha de q0. Esta flecha define
que q0 es el estado inicial.

LENGUAJES Y AUTMATAS I

A continuacin se definir que q2 ser definido como el estado final, para lograr esto, repite el
proceso anterior pero esta vez se hace clic en q2 y se elige la opcin Final.

Ahora el estado q2 tiene doble contorno, esto quiere decir que est establecido como estado final.

Paso #3. Crear las transiciones: Una vez establecidos los estados final e inicial se procede a crear
las transiciones del autmata finito. Regresando a la expresin x+yz y analizando la misma, se debe
hacer una transicin del estado q0 al estado q1 y a esta transicin se le asignara el valor x. Para ello
se elige la herramienta , luego se selecciona el estado q0 y se arrastra la lnea al estado q1 y se
escribir x.

La transicin de q0 a q1 con el valor x ha sido establecida.

Ahora se establece una transicin de q1 a q1, debido a la cerradura positiva, es decir que existirn
cadenas que puedan poseer una o ms x. Se hace clic en la herramienta , y se selecciona q1,
luego se escribe el valor x.

La transicin de q1 a q1 ha sido establecida.

LENGUAJES Y AUTMATAS I

Luego se establece una transicin de q1 a q2 y a esta transicin se le asignara el valor y. Se hace clic
en la herramienta , y se selecciona q1, luego se arrastra el mouse a q2 y se escribe el valor y.

La transicin de q1 a q2 ha sido establecida.

Finalmente colocando la ltima parte de la expresin se tiene z* esto quiere decir que se
establecer una transicin de q2 a q2, debido a que z posee una cerradura de Kleene y esto quiere
decir que podrn existir 0 ms zs. Se hace clic en la herramienta , y se selecciona q2, luego se
escribe el valor z.

La transicin de q2 a q2 ha sido establecida y se ha finalizado de construir el diagrama.


Paso #4. Probar el autmata finito determinista: Para probar el AFD se har clic en la pestaa
Input y se seleccionara la opcin Multiple Run, esto se har con el objetivo de ingresar varias
cadenas al AFD y probar si estas llegan al estado de aceptacin.

Se probaran las siguientes cadenas:


-

xy
xyzz
xyzz
xxyzzz
zxxxyzzzz
yz

- xyyz
- xyyyz

LENGUAJES Y AUTMATAS I

1
0

Las cadenas se ingresaran en la tabla, en la primera columna Input. Una vez ingresadas las
cadenas se oprimir el botn Run Inputs.

Las cadenas aceptadas por la expresin dada muestran en la columna Result un mensaje
Accept y las que fueron rechazadas muestran en la misma columna la palabra Reject.
Analizando la tabla, se puede observar que por ejemplo la cadena xy fue aceptada por el AFD
debido que el elemento z de la expresin posea una cerradura de Kleene, por tanto pueden existir
0 o ms zs en las cadenas. Por otro lado la cadena yz fue rechaza porque el elemento x de la
expresin llevaba consigo una cerradura positiva, esto quiere decir que debe existir una o ms x.
2

ab+cd+

Paso #1. Crear estados.

Paso #2. Definir el estado inicial y estado final. Se definir a q0 como estado inicial y a q4 como
estado final.

LENGUAJES Y AUTMATAS I

1
1

Paso #3. Crear las transiciones.


-

De q0 a q1 asignando el valor a.

De q1 a q2 se asigna el valor b.

De q2 a q2 se agina el valor b, esto se debe a que b contiene una cerradura positiva.

De q2 a q3 se asigna el valor c.

De q3 a q4 se asigna el valor d.

Para finalizar el diagrama se agrega la ltima transicin de q4 a q4 y se agrega el valor


d, esto se debe a que d contiene una cerradura positiva.

Paso #4. Probar el autmata finito determinista. Se probaran las siguientes cadenas:
-

Abcd
Abbcdd
Abbbcddd
Abbcddd
Abbbcdd
Acd
Ac
Ad

LENGUAJES Y AUTMATAS I

1
2

Resultados:

Analizando los resultados se puede observar que la cadena abcd fue aceptada por el AFD debido a
que cumple con las cerraduras positivas al tener en la cadena 1 o ms c y d, mientras que la
cadena acd fue rechazada debido a que b contiene una cerradura positiva y deben existir 1 o ms
cs en la cadena.
3

(ab) +b

Paso #1. Crear estados.

Paso #2. Definir el estado inicial y estado final. Se definir a q0 como estado inicial y a q3 como
estado final.

Paso #3. Crear las transiciones.


-

De q0 a q1 asignando el valor a.

De q1 a q2 se agrega una b y de q2 a q1 se agrega a, esto se debe a que ab estn


dentro un parentes y estos 2 poseen una cerradura positiva.

LENGUAJES Y AUTMATAS I

1
3

Para finalizar el diagrama se agrega la ltima transicin de q2 a q3 y se agrega el valor


c.

Paso #4. Probar el autmata finito determinista. Se probaran las siguientes cadenas:
-

ababb
abababb
ababababb
abababababb
abb
aab
ab

Resultados:

Analizando los resultados se puede observar que la cadena abb fue aceptada por el AFD debido a
que cumple con las cerraduras positivas al tener en la cadena ms de un par de ab seguido de una
b, mientras que la cadena aab fue rechazada debido a que el conjunto ab posee una cerradura
positiva y este conjunto no estaba incluido en la cadena.

LENGUAJES Y AUTMATAS I

1
4

Conclusin:
La herramienta JFlap es muy til en el uso prctico de la materia Lenguajes y Autmatas, en esta
se pueden disear los AFD deseados. Adems en esta se incluyen herramientas muy tiles para
crear los AFD como la herramienta creadora de estados y transiciones; esta tambin permite
revisar el AFD ingresando cadenas en este y asi comprobar si el AFD cumple con la expectativa del
usuario, enva un mensaje de aceptado o rechazado de la cadena ingresada, asi el usuario sabr si
tuvo un error o no.
Bibliografa:
https://www.cs.duke.edu/csed/jflap/tutorial/fa/createfa/fa.html
http://es.slideshare.net/pavillalta/mini-manual-de-jflap
http://es.wikipedia.org/wiki/Aut%C3%B3mata_finito_determinista

LENGUAJES Y AUTMATAS I

1
5

También podría gustarte