SlideShare una empresa de Scribd logo
1 de 29
Java Formal Languages and Automata Package
Herramienta visual e interactiva
Construir, probar y depurar:
AFDs y AFNs
Expresiones regulares
Lenguajes
Máquinas de Turing
Gramáticas
Y mucho más!!!
Comenzó en 1990 como varias herramientas
Susan H. Rodger
ꜛ NPDA
LR Parser 
LL Analizator
Tubb
En 1996 FLAP fue rescrito en Java en la Universidad de Duke
En 2002 fue rescrita de nuevo utilizando Swing
Se utiliza en 161 países diferentes
Añadir
transición a
los estados
Marcar los
estados
inicial y final
Crear los
estados
Ejecución paso a paso
Ejecución paso a paso con cierre
Ejecución rápida
Ejecución múltiple
Ejecución múltiple como transductor
Pulsamos
Step
Volvemos a
pulsar Step
No ha quedado
en estado de
aceptación
El verde
significa
que ha
quedado en
estado de
aceptación
Escribimos
la entrada
y si es
válida nos
muestra
los
estados
Pulsar
en Keep
Looking
Seleccionamos,
pulsamos en Run inputs
y después en View
Trace
Simulación por fuerza bruta
y ver el árbol creado
Saber su tipoIntroducir
una gramática
Convertir a AFN
AFλAFDAFN
Elegimos el autómata con el
que lo queremos comparar
Elegimos Compare
EquivalencePulsamos Test
Utilizando JFLAP, dada la siguiente expresión regular:
(a+b+c)*baba(a+b+c)*
Decir a qué lenguaje pertenece
Convertimos la
expresión a un
AFN y hacemos
una ejecución
múltiple
Comprobamos
que corresponde
a todas las
cadenas que
contiene “baba”
Obtener un AFN que acepte
la gramática definida por
dicha expresión regular.
Obtener un AFλ que acepte
la gramática definida por
dicha expresión regular.
Obtener un AFD que acepte
la gramática definida por
dicha expresión regular.
Ya lo teníamos
del ejercicio
anterior
Pulsamos a convertir a
AFD y comprobamos
que no haya transiciones
λ
Añadimos dos
estados y los
unimos al inicial
con transiciones λ
Decidir si los autómatas
anteriores son
equivalentes
Decidir si es equivalente a la siguiente gramática
Los comparamos
dos a dos
J  baba J  a
K  λ J  b
J  c K  J
Convertir
a un FA
Lo comparamos
con uno de los
que ya habíamos
creado
Dibujar una máquina de Turing de una sola cinta que solo quede en estado de
aceptación si el número de unos es par teniendo como alfabeto de entrada Σ = {0,
1} y como alfabeto de cinta Γ = {0, 1, □}
Si estamos en
“q0” hay un
número par de
unos
Dibujar una máquina de Turing de una sola cinta cuyo alfabeto de entrada sea
Σ = {0, 1}, cuyo alfabeto de cinta sea Γ = {0, 1, □} y que solo acepte cadenas de
unos seguidos de ceros, excluyendo la cadena vacía.
q0
acepta
unos
q1
acepta
ceros
q2 es necesario porque
sino la máquina cuando
leyera un cero quedaría
en estado de aceptación
y se pararía
Modelar una máquina de Turing compuesta por bloques formados por las
máquinas de los apartados b) y c).
Nos fijaremos en que la
máquina de Turing del
apartado c) solo acepta
cadenas que empiecen
por 1, por tanto esta
será la transición que
nos servirá para unir los
dos bloques del
autómata compuesto
Importamos las dos
máquinas
Utilizando JFLAP, diseñar una máquina de Turing que solo acepte
palíndromos en binario mayores que 0 y que calcule si el número de unos
de su sucesor en binario es par o impar imprimiendo el resultado con la
forma “número de unos en unario”+”blanco”+ “PAR” o “IMPAR”, por ejemplo
“11111□IMPAR” o “111111□PAR”.
Lo dividimos en 4
bloques!!!!
Transiciones
con 1
Leerá el primer carácter de la
entrada
Recorrerá la cadena hasta el
final
Comprobará si el último es el
mismo carácter que el ya leído
Sustituirá ambos por un blanco
Terminará cuando la cinta solo
tenga blancos
Bloque q0  Palíndromos
Si termina en 0  cambio el 0
por 1 y termino
Si termina en 1  cambio todos
los unos por ceros hasta encontrar
un cero, que cambio por un 1 y
termino
Bloque q1  Número siguiente en binario
Recorreremos la cadena hasta
llegar a un 0, que cambiamos por X
Seguimos leyendo ceros hasta
encontrar otro 1, que cambiamos por
un 0
Sustituimos la X que por un 1
Cuando no haya más unos en la
cadena a la derecha del control finito,
sustituimos todos los ceros por
blancos
Bloque q2  Eliminación de ceros
q0 representa un número par de
unos
q1 representa un número impar de
unos
Cuando se termina la cadena se
imprime el resultado
Bloque q3  ¿Número de unos impar?
Lo unimos todo!!!!
Como es un
palíndromo pasa a q1,
de lo contrario se
quedaría en q0
En q1 ya ha calculado
el sucesor, que es el
número que aparece
en la cinta
En q2 ha quitado los
ceros existentes en el
número calculado por
q1, dejando el
resultado en la cinta
en la cinta
En q3 ha comprabado si
el número de unos es
par y ha impreso el
resultado, dejando la
cinta en la forma pedida
en el enunciado
Utilizando JFLAP, diseñar una máquina de Turing compuesta por un
bloque, que con varias cintas compruebe si la cadena de entrada es del tipo
AnBnCn tal que n>0, y por otro que la duplique. El resultado final debe tener
la forma AnBnCnAnBnCn, o dicho de otra manera (AnBnCn)2
Entrada y C’s
Copiar B’s
Copiar A’s
Marcar el final de la cinta con Y
Marcar el carácter leído con X
Copiarlo en el primer espacio en
blanco
Cuando nos volvamos a encontrar
la Y, copiar el primer carácter en su
lugar
Unimos la máquina AnBnCn con la que copia
Pasa de q0 a q1
porque el
número de As,
Bs y Cs es igual
Una vez que ha
terminado la
ejecución de q2,
la cadena de
entrada queda
duplicada en la
cinta
Presentación tutorial JFLAP en español

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Turing machine by_deep
Turing machine by_deepTuring machine by_deep
Turing machine by_deep
 
Máquinas de turing y autómatas acotados
Máquinas de turing y autómatas acotadosMáquinas de turing y autómatas acotados
Máquinas de turing y autómatas acotados
 
Tema4
Tema4Tema4
Tema4
 
Autómatas Finitos Deterministas y Lenguajes Formales
Autómatas Finitos Deterministas y Lenguajes FormalesAutómatas Finitos Deterministas y Lenguajes Formales
Autómatas Finitos Deterministas y Lenguajes Formales
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 
Operaciones entre lenguajes
Operaciones entre lenguajesOperaciones entre lenguajes
Operaciones entre lenguajes
 
Tipos Primitivos y Elementos Léxicos de Java
Tipos Primitivos y Elementos Léxicos de JavaTipos Primitivos y Elementos Léxicos de Java
Tipos Primitivos y Elementos Léxicos de Java
 
Autómata de Pila
Autómata de Pila Autómata de Pila
Autómata de Pila
 
push down automata
push down automatapush down automata
push down automata
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
maquinas de turing jflap
maquinas de turing jflapmaquinas de turing jflap
maquinas de turing jflap
 
Regular expressions
Regular expressionsRegular expressions
Regular expressions
 
De palabras y lenguajes
De palabras y lenguajesDe palabras y lenguajes
De palabras y lenguajes
 
JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2JavaScript pilas (Stacks) y colas (Queues) 2
JavaScript pilas (Stacks) y colas (Queues) 2
 
Teoria de automatas
Teoria de automatasTeoria de automatas
Teoria de automatas
 
Ejercicio de máquina de turing
Ejercicio de máquina de turingEjercicio de máquina de turing
Ejercicio de máquina de turing
 
Regular Languages
Regular LanguagesRegular Languages
Regular Languages
 

Similar a Presentación tutorial JFLAP en español

Desarrollo momento 3
Desarrollo momento 3Desarrollo momento 3
Desarrollo momento 3Jose Rojas
 
Máquina de turing
Máquina de turingMáquina de turing
Máquina de turingIvan
 
Examen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes FormalesExamen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes FormalesDiego Perdomo
 
Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de Turing
Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de TuringPortafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de Turing
Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de TuringHumano Terricola
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Automatas
AutomatasAutomatas
Automatasveriyo
 
348327107-Presentacion-Maquinas-de-Turing.pptx
348327107-Presentacion-Maquinas-de-Turing.pptx348327107-Presentacion-Maquinas-de-Turing.pptx
348327107-Presentacion-Maquinas-de-Turing.pptxLuis Miguel Torres Barrios
 
Manual Practico de Pascal
Manual Practico de PascalManual Practico de Pascal
Manual Practico de Pascalapohlo
 
Reny galaviz web quest
Reny galaviz web questReny galaviz web quest
Reny galaviz web questReny-Galaviz
 
Reny Galaviz Web Quest
Reny Galaviz Web QuestReny Galaviz Web Quest
Reny Galaviz Web QuestReny-Galaviz
 
Teoria de Conjuntos
Teoria de Conjuntos Teoria de Conjuntos
Teoria de Conjuntos Asu RaGu
 
Trabajo colaborativo 1
Trabajo colaborativo 1Trabajo colaborativo 1
Trabajo colaborativo 1anarojasparra
 
Manual De Pascal
Manual De PascalManual De Pascal
Manual De PascalMANUELRSG
 

Similar a Presentación tutorial JFLAP en español (20)

Evaluación
EvaluaciónEvaluación
Evaluación
 
Desarrollo momento 3
Desarrollo momento 3Desarrollo momento 3
Desarrollo momento 3
 
Mod auto 4
Mod auto 4Mod auto 4
Mod auto 4
 
Máquina de turing
Máquina de turingMáquina de turing
Máquina de turing
 
Examen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes FormalesExamen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes Formales
 
Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de Turing
Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de TuringPortafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de Turing
Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de Turing
 
1 ejercicio mt.
1 ejercicio mt.1 ejercicio mt.
1 ejercicio mt.
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Automatas
AutomatasAutomatas
Automatas
 
Modu saya 4
Modu saya 4Modu saya 4
Modu saya 4
 
Mod auto 4
Mod auto 4Mod auto 4
Mod auto 4
 
348327107-Presentacion-Maquinas-de-Turing.pptx
348327107-Presentacion-Maquinas-de-Turing.pptx348327107-Presentacion-Maquinas-de-Turing.pptx
348327107-Presentacion-Maquinas-de-Turing.pptx
 
Manual Practico de Pascal
Manual Practico de PascalManual Practico de Pascal
Manual Practico de Pascal
 
Modulo2b
Modulo2bModulo2b
Modulo2b
 
Reny galaviz web quest
Reny galaviz web questReny galaviz web quest
Reny galaviz web quest
 
Reny Galaviz Web Quest
Reny Galaviz Web QuestReny Galaviz Web Quest
Reny Galaviz Web Quest
 
Teoria de Conjuntos
Teoria de Conjuntos Teoria de Conjuntos
Teoria de Conjuntos
 
Maquina de turing
Maquina de turingMaquina de turing
Maquina de turing
 
Trabajo colaborativo 1
Trabajo colaborativo 1Trabajo colaborativo 1
Trabajo colaborativo 1
 
Manual De Pascal
Manual De PascalManual De Pascal
Manual De Pascal
 

Presentación tutorial JFLAP en español

  • 1.
  • 2. Java Formal Languages and Automata Package Herramienta visual e interactiva Construir, probar y depurar: AFDs y AFNs Expresiones regulares Lenguajes Máquinas de Turing Gramáticas Y mucho más!!!
  • 3.
  • 4. Comenzó en 1990 como varias herramientas Susan H. Rodger ꜛ NPDA LR Parser  LL Analizator Tubb
  • 5. En 1996 FLAP fue rescrito en Java en la Universidad de Duke En 2002 fue rescrita de nuevo utilizando Swing Se utiliza en 161 países diferentes
  • 6. Añadir transición a los estados Marcar los estados inicial y final Crear los estados
  • 7. Ejecución paso a paso Ejecución paso a paso con cierre Ejecución rápida Ejecución múltiple Ejecución múltiple como transductor
  • 8. Pulsamos Step Volvemos a pulsar Step No ha quedado en estado de aceptación El verde significa que ha quedado en estado de aceptación
  • 9. Escribimos la entrada y si es válida nos muestra los estados Pulsar en Keep Looking
  • 10. Seleccionamos, pulsamos en Run inputs y después en View Trace
  • 11. Simulación por fuerza bruta y ver el árbol creado Saber su tipoIntroducir una gramática
  • 13. AFλAFDAFN Elegimos el autómata con el que lo queremos comparar Elegimos Compare EquivalencePulsamos Test
  • 14. Utilizando JFLAP, dada la siguiente expresión regular: (a+b+c)*baba(a+b+c)* Decir a qué lenguaje pertenece Convertimos la expresión a un AFN y hacemos una ejecución múltiple Comprobamos que corresponde a todas las cadenas que contiene “baba”
  • 15. Obtener un AFN que acepte la gramática definida por dicha expresión regular. Obtener un AFλ que acepte la gramática definida por dicha expresión regular. Obtener un AFD que acepte la gramática definida por dicha expresión regular. Ya lo teníamos del ejercicio anterior Pulsamos a convertir a AFD y comprobamos que no haya transiciones λ Añadimos dos estados y los unimos al inicial con transiciones λ
  • 16. Decidir si los autómatas anteriores son equivalentes Decidir si es equivalente a la siguiente gramática Los comparamos dos a dos J  baba J  a K  λ J  b J  c K  J Convertir a un FA Lo comparamos con uno de los que ya habíamos creado
  • 17. Dibujar una máquina de Turing de una sola cinta que solo quede en estado de aceptación si el número de unos es par teniendo como alfabeto de entrada Σ = {0, 1} y como alfabeto de cinta Γ = {0, 1, □} Si estamos en “q0” hay un número par de unos
  • 18. Dibujar una máquina de Turing de una sola cinta cuyo alfabeto de entrada sea Σ = {0, 1}, cuyo alfabeto de cinta sea Γ = {0, 1, □} y que solo acepte cadenas de unos seguidos de ceros, excluyendo la cadena vacía. q0 acepta unos q1 acepta ceros q2 es necesario porque sino la máquina cuando leyera un cero quedaría en estado de aceptación y se pararía
  • 19. Modelar una máquina de Turing compuesta por bloques formados por las máquinas de los apartados b) y c). Nos fijaremos en que la máquina de Turing del apartado c) solo acepta cadenas que empiecen por 1, por tanto esta será la transición que nos servirá para unir los dos bloques del autómata compuesto Importamos las dos máquinas
  • 20. Utilizando JFLAP, diseñar una máquina de Turing que solo acepte palíndromos en binario mayores que 0 y que calcule si el número de unos de su sucesor en binario es par o impar imprimiendo el resultado con la forma “número de unos en unario”+”blanco”+ “PAR” o “IMPAR”, por ejemplo “11111□IMPAR” o “111111□PAR”. Lo dividimos en 4 bloques!!!! Transiciones con 1
  • 21. Leerá el primer carácter de la entrada Recorrerá la cadena hasta el final Comprobará si el último es el mismo carácter que el ya leído Sustituirá ambos por un blanco Terminará cuando la cinta solo tenga blancos Bloque q0  Palíndromos
  • 22. Si termina en 0  cambio el 0 por 1 y termino Si termina en 1  cambio todos los unos por ceros hasta encontrar un cero, que cambio por un 1 y termino Bloque q1  Número siguiente en binario
  • 23. Recorreremos la cadena hasta llegar a un 0, que cambiamos por X Seguimos leyendo ceros hasta encontrar otro 1, que cambiamos por un 0 Sustituimos la X que por un 1 Cuando no haya más unos en la cadena a la derecha del control finito, sustituimos todos los ceros por blancos Bloque q2  Eliminación de ceros
  • 24. q0 representa un número par de unos q1 representa un número impar de unos Cuando se termina la cadena se imprime el resultado Bloque q3  ¿Número de unos impar?
  • 25. Lo unimos todo!!!! Como es un palíndromo pasa a q1, de lo contrario se quedaría en q0 En q1 ya ha calculado el sucesor, que es el número que aparece en la cinta En q2 ha quitado los ceros existentes en el número calculado por q1, dejando el resultado en la cinta en la cinta En q3 ha comprabado si el número de unos es par y ha impreso el resultado, dejando la cinta en la forma pedida en el enunciado
  • 26. Utilizando JFLAP, diseñar una máquina de Turing compuesta por un bloque, que con varias cintas compruebe si la cadena de entrada es del tipo AnBnCn tal que n>0, y por otro que la duplique. El resultado final debe tener la forma AnBnCnAnBnCn, o dicho de otra manera (AnBnCn)2 Entrada y C’s Copiar B’s Copiar A’s
  • 27. Marcar el final de la cinta con Y Marcar el carácter leído con X Copiarlo en el primer espacio en blanco Cuando nos volvamos a encontrar la Y, copiar el primer carácter en su lugar
  • 28. Unimos la máquina AnBnCn con la que copia Pasa de q0 a q1 porque el número de As, Bs y Cs es igual Una vez que ha terminado la ejecución de q2, la cadena de entrada queda duplicada en la cinta