Anda di halaman 1dari 9

Uso del Simulador JFLAP

Guía de instrucciones mínimas


Tomás García Sáiz José Luis Fernández Vindel
30 de Noviembre de 2006

Esta herramienta permite la edición y la ejecución de autómatas, entre ellos,


las diversas variantes de máquinas de Turing que se exponen en la asignatura.
Su utilización básica es muy sencilla. Este documento solo considera el con-
junto mínimo de acciones necesarias. El lector puede investigar adicionalmente
el resto de funcionalidades de la aplicación.

1. Antes de ejecutar la aplicación


1.1. Descarga y activación
La aplicación es descargable de flap.org de forma gratuita. Lo único que se
nos solicita a cambio es cumplimentar un sencillo formulario con fines estadís-
ticos.
Esta aplicación está escrita en Java, por lo tanto lo único que necesitamos es
tener instalada la máquina Java (1.4 o superior). Las intrucciones de ejecución
(en inglés) se encuentran en http://www.jflap.org/getjflap.html

Mac OS X: hacer un doble click sobre el archivo jflap.jar descargado.


Unix/Linux: abra una ventana de comandos (shell), sitúese en el directorio
del fichero Jflap.jar y ejecute java -jar jflap.jar
Windows: hacer un doble click sobre el archivo jflap.jar descargado.

1.2. Unos minutos de reflexión previa


Como siempre que estamos programando una aplicación, y construir una
maquina de Turing no es ni más ni menos que una forma diferente de programar,
es muy aconsejable haber realizado un trabajo previo: ármese de paciencia, lápiz
y papel y dibuje un primer esquema.

1
2. Uso de la herramienta.
2.1. Ventana inicial.
Cuando se ejecuta la aplicación se nos presenta una primera ventana con un
menú, tal y como se muestra en la figura 1. En la asignatura de Autómatas II
nos interesa especialmente la generación de maquinas de Turing, tanto de una
cinta como de múltiples cintas. Así, nos centraremos, respectivamente, en las
opciones “Turing Machine” y “Multiple-Tape Turing Machine”.

Figura 1: Menú inicial de JFlap: elección de tipo de autómata

Al pulsar sobre el botón (resaltado en azul) se abre una nueva ventana


de edición para máquinas de Turing de una cinta (figura 2). Éstas resultarán
deterministas o no, dependiendo de las transiciones que se fijen posteriormente
entre los estados.

2.2. Ventana de edición.


La ventana de edición facilita un espacio donde definir (mediante el interfaz
gráfico) nuestra máquina de Turing. Para ello utilizaremos los 6 botones que

2
Figura 2: Ventana que facilita el diseño gráfico de autómatas

tenemos en la parte superior de la misma. Explicaremos el uso de los cuatro pri-


meros mientras definimos una Maquina de Turing de ejemplo: aquélla que busca
la primera aparición de la serie “xyxy” en la cadena de entrada, sustituyéndola
por “aaaa”, y que para cuando la encuentra o llega a un blanco.

2.3. Generación de los estados.


Del conjunto de iconos superiores (figura 3), utilizaremos el segundo botón,
sombreado en la imagen.

Figura 3: Iconos superiores para edición

En este estado, cada pulsación en la ventana de edición nos crea un nuevo


nodo. En nuestro caso necesitamos 12, tal y cómo se aprecia en la figura 4.
Cada nodo aparece ya con un nombre asignado mediante un patrón secuen-
cial. Tanto el nombre como la posición se pueden corregir posteriormente. De
momento, para corregir la posición, pulse el icono situado más a la izquierda
(editor de atributos), y arrastre los nodos donde desee.

3
Figura 4: Doce pulsaciones: doce estados

2.4. Generación de las transiciones


Para generar las transiciones utilizaremos el tercer botón, marcado en gris
en la figura 5. Una transición entre dos estados se define posicionándose sobre el
primer estado y manteniendo pulsado el ratón hasta el segundo. Si la transición
es de un estado en sí mismo basta pulsar sobre ese estado.

Figura 5: Entrada al estado de edición de transiciones

En este punto aparece una terna de posiciones que rellenar. El primer espacio
corresponde al carácter que lee la máquina antes de la transición; el segundo,
al carácter que escribe al ejecutar la transición; y el tercero, el movimiento que
ejecuta.
En toda máquina de Turing (de una o de varias cintas) se facilitan como
movimientos posibles L, R y S (respectivamente, izquierda, derecha y estacio-
nario). El símbolo de espacio en blanco se obtiene borrando todo el contenido
de la celda que se rellena (lo produce la aplicación).
En la figura 6 se muestra un ejemplo de edición de transiciones entre estados.
La terna a;y,R desde el estado q10 al q11 corresponde a la transición (q10 , a) `
(q11 , y, R).

4
Figura 6: Estados y transiciones

Figura 7: Cambio de posición y atributos

2.5. Editor de Atributos


Ya hemos usado el primer botón, el situado a la izquierda en la figura 7.
Se utilizó para reposicionar los estados. Si se hace sobre estados con tran-
siciones ya definidas, se mantiene la transición “elásticamente” hasta la nueva
ubicación.
Pulsando el botón derecho del ratón sobre un estado pueden variarse (figura
8) algunos de sus atributos: si es inicial o final, el nombre del estado, alguna
etiqueta adicional que se le quiera añadir, ...
El resultado de marcar (figura 9) q0 como estado inicial es que se le señala
gráficamente con un triangulo de entrada. Los estados finales se marcan con un
doble círculo.

2.6. Botón de borrado.


En el supuesto que nos equivoquemos al realizar alguna de las operaciones
anteriores disponemos de un botón para borrar. Es el cuarto icono y se muestra
sombreado en la imagen 10.
Tras pulsar ese cuarto icono, basta pulsar sobre una transición o estado para

5
Figura 8: Cambio de atributos de un estado

Figura 9: El estado q0 señalado como estado inicial

Figura 10: Eliminación de transiciones o estados

6
,

Figura 11: Reeditando las dos transiciones de q5 a q6

eliminarlo. En el desarrollo de nuestro ejemplo, como nos habíamos confundido


en las transiciones entre q5 y q6 , las borramos y las volvemos a generar (tercer
icono). El resultado se muestra en la figura 11.

2.7. Reutilización modular de máquinas


Falta mencionar, brevemente, la utilidad de los últimos 2 iconos, los situados
a la derecha del menú de edición. El quinto permite insertar una “subrutina”
Turing (una máquina almacenada en un fichero) dentro del esquema de la má-
quina que se está editando. Y el sexto facilita la definición de alguna transición
especial entre estos bloques.
Esta es una funcionalidad que se ha añadido recientemente y que puede
encontrarse en los manuales originales en el apartado “Building blocks”.

3. Ejecución de la máquina de Turing.


Una vez editada, se puede simular el funcionamiento de esa máquina para una
entrada dada. Hay varios modos distintos de ejecución (paso a paso, ejecución
rápida sobre una o múltiples entradas, etc.). En esta guía esencial trataremos
sólo la ejecución “paso a paso”.

3.1. Input
Para ver la ejecución de la maquina debemos de dar a la maquina una cinta
sobre la que trabajar: entramos en el menú “Input” y pulsamos sobre el botón
“Step ...”, tal y como se ve en la figura 12.
Tras realizar esta acción accedemos a una nueva ventana donde se introduce
la cadena de entrada con la que se quiere trabajar (figura 13).
Si estuvieramos editando una máquina de tres cintas, serían 3 las pequeñas
ventanas de introducción de datos que se nos mostraría. En cualquier caso, el
carácter blanco no se escribe: si las cintas 2 y 3 sólo contienen espacios en blanco,
se dejarían tal cual (sin rellenar).

7
Figura 12: Ejecución paso a paso

Figura 13: Introducción de la cadena de entrada

8
Figura 14: Simulación de la máquina

Figura 15: Cierre de la ejecución

Pulsando sobre el botón “Aceptar”, después de introducir la cadena, se accede


a una nueva ventana donde puede verse la ejecución de la máquina paso a paso
pulsando repetidamente sobre el botón “Step” (figura 14).
En este proceso de ejecución puede en cualquier momento pulsarse “Reset”
para comenzar la ejecución desde el principio. O “Trace”, para que se produzca
un listado secuencia de las configuraciones por las que ha pasado la máquina
hasta el momento.
Una vez terminada la ejecución se retorna a la página de edición desde el
menú “File” pulsando sobre el botón “Dismiss Tab” (o cerrando la ventana de
ejecución).
Observe en ese mismo menú (figura 15) las opciones para guardar la máquina
editada o imprimir la ventana activa.

Anda mungkin juga menyukai