Post on 14-Apr-2016
description
Sintaxis y Semántica de los Lenguajes
Trabajo Práctico de Laboratorio
Universidad Tecnológica Nacional Facultad Regional Córdoba
Alumnos:
- GIL, Luciano Nº 68147
- LORENZO, Juan Pablo Nº 68226
Docente supervisor: Prof. Brenda Meloni
2K1
2015
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
2
Índice Introducción ............................................................................................................................... 3
Enunciado .................................................................................................................................. 4
Simuladores de Autómata a Pila .......................................................................................... 5
Simuladores de Máquinas de Turing .................................................................................. 9
Ejercicio con simuladores. .................................................................................................. 13
Complejidad ............................................................................................................................. 15
Conclusión ............................................................................................................................... 17
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
3
Introducción
En el presente trabajo se desarrollará la simulación de Máquinas Abstractas,
para la prueba del funcionamiento de las mismas y su capacidad de resolver
problemas. Se elegirán programas (simuladores), que permitan el tratamiento de
estas máquinas y mediante su uso se resolverán los problemas planteados.
Los objetivos generales del trabajo son:
Seleccionar un simulador de Autómata con Pila y uno de Máquina de
Turing considerando requerimientos funcionales y no funcionales.
Resolver un mismo problema a través de la simulación con ambas
máquinas, determinar las expresiones de la complejidad y compararlas.
Calcular complejidad del autómata planteado.
Comprenden el funcionamiento del programa a utilizar para la simulación.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
4
Enunciado
El trabajo consiste en:
a) Buscar simuladores de Autómatas con Pila en la web y seleccionar uno. Para
la selección utilizar un proceso de evaluación que asigne un puntaje a las
diferentes condiciones previstas en la especificación de requerimientos de
simuladores. Utilizar el siguiente criterio de calificación: 0 (condición que no
aplica o no se cumple), 1 (cumple con reservas) y 2 (condición que se cumple
totalmente).
b) Buscar simuladores de máquinas de Turing en la web y seleccionar uno. Para
la selección utilizar un proceso de evaluación similar al utilizado en el caso
anterior.
c) Explicar y justificar el funcionamiento de los simuladores elegidos en los
puntos “a” y “b”, considerando las propiedades de las máquinas simuladas, sus
modos de operación y funcionalidades. Mostrar ejemplos aplicando los
simuladores a no menos de tres máquinas de cada tipo, estudiadas y/o
diseñadas en clase.
d) Aplicar ambos simuladores al ejercicio 4 punto b) de la página 243 del libro.
e) Determinar y comparar las expresiones de complejidad temporal y espacial
que corresponden a la resolución de este problema con ambas máquinas.
f) Verificar que las expresiones determinadas sean correctas. Para ello
emplearlas en el cálculo de la complejidad temporal y espacial de cadenas de
largo diferente a las usadas en la determinación de las expresiones y comparar
los resultados con los valores obtenidos con el simulador.
g) Presentar un informe que describa en detalle el trabajo realizado, reproduzca
los resultados obtenidos con el simulador, el procedimiento de cálculo de las
expresiones de complejidad y las conclusiones del alumno.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
5
Simuladores de Autómata a Pila
Se procede a la evaluación de dos simuladores de autómatas a pila para
seleccionar uno de ellos con el que se realizará el trabajo. Los dos simuladores
son jFlap y jFast.
Concepto Valoración
Requerimientos funcionales jFlap jFast
Definir los dominios de operación 1 2
Editar, almacenar y recuperar la función de transición 2 0
Definir las condiciones iniciales de operación 2 2
Verificar la consistencia entre los dominios de operación, la función de transición y las condiciones iniciales de operación 2 2
Ejecutar los movimientos necesarios hasta alcanzar una configuración final 2 0
Admitir modo de operación completa y paso a paso 2 1
Determinar métricas o indicadores de operación, complejidad y/o eficiencia con el fin de facilitar la evaluación de desempeño de las máquinas y comparaciones entre ellas 0 0
PARCIAL 11 7
Requerimientos no funcionales jFlap jFast
Portabilidad 2 1
Facilidad de uso 2 1
Robustez 2 2
Eficiencia 2 2
PARCIAL 8 6
Interfaz Gráfica jFlap jFast
Facilidad para la edición de dominios, función de transición y condiciones iniciales de operación 2 1
Representación de los componentes formales del autómata a lo largo de todo el proceso de simulación 2 1
Representación de la configuración del autómata en cada intervalo de tiempo 2 0
Opción de debugging que permita alterar el contenido de la cinta de entrada 0 0
Representación del árbol de descripciones instantáneas 2 0
Representación gráfico del árbol de descripciones instantánea 2 0
Opción para la visualización de los indicadores de operación, complejidad y/o eficiencia 0 0
PARCIAL 10 2
TOTAL 29 15
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
6
Nota: Criterio de calificación: 0 (condición que no aplica o no se cumple), 1 (cumple con reservas) y 2 (condición que se cumple totalmente).
Luego de realizar la comparación en base a los criterios propuestos, elegimos
claramente el simulador jFlap frente al jFast. El simulador jFlap acumuló casi el
doble de puntos que su rival, en general en base a sus requerimientos
funcionales y a su interfaz gráfica. Cómo punto para resaltar, el jFast permite de
mejor manera definir los dominios de operación, cómo único punto superador al
jFlap en sus requerimientos funcionales. El jFlap nos permite llegar a una
configuración final exitosamente, crear la función de transición correctamente y
también operar de distintas maneras, paso a paso, de forma completa y también
con una operación de múltiples entradas.
En los requerimientos no funcionales, se puede decir que no hay grandes
diferencias. La portabilidad del jFlap dado que no necesita instalación lo distingue
del jFast.
La interfaz gráfica es la otra diferencia importante entre los dos simuladores.
jFlap no sólo permite la representación de la configuración del autómata en cada
momento y el árbol de representaciones instantáneas sino que tiene mayor
facilidad para su uso y permite al usuario entender el autómata de una forma
más espontánea, además de editarlo para una mejor representación gráfica.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
7
A continuación mostramos algunos ejemplos:
Ejercicio 3, pág. 243. (Giró, J. (2012). Máquinas Abstractas y Gramáticas
Formales). Córdoba: Editorial M&Copias Impresiones.)
Diseñar un AP que verifique si dos nibbles leídos, separados por el símbolo *
tienen ambos la misma cantidad de 1s.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
8
Ejercicio 4.c), pág. 243.1.
Diseñar un AP para el lenguaje 𝐿3 = {0𝑛12𝑛 | 𝑛 ≥ 1, ∑ = {0,1}}.
Ejercicio 2.a), pág 243.
Diseñar un AP que verifique si un byte leído tiene la misma cantidad de 1s en los
cuatro primeros bits es la misma que en los cuatro últimos.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
9
Simuladores de Máquinas de Turing
Se procede a la evaluación de dos simuladores de Máquinas de Turing para
seleccionar uno de ellos con el que se realizará el trabajo. Los dos simuladores
son Tursi y AutoSim.
Concepto Valoración
Requerimientos funcionales jFlap AutoSim
Definir los dominios de operación 2 1
Editar, almacenar y recuperar la función de transición 2 2
Definir las condiciones iniciales de operación 2 2
Verificar la consistencia entre los dominios de operación, la función de transición y las condiciones iniciales de operación 2 1
Ejecutar los movimientos necesarios hasta alcanzar una configuración final 2 1
Admitir modo de operación completa y paso a paso 2 2
Determinar métricas o indicadores de operación, complejidad y/o eficiencia con el fin de facilitar la evaluación de desempeño de las máquinas y comparaciones entre ellas 0 0
PARCIAL 11 9
Requerimientos no funcionales jFlap AutoSim
Portabilidad 2 2
Facilidad de uso 2 2
Robustez 2 1
Eficiencia 2 2
PARCIAL 8 7
Interfaz Gráfica jFlap AutoSim
Facilidad para la edición de dominios, función de transición y condiciones iniciales de operación 2 2
Representación de los componentes formales del autómata a lo largo de todo el proceso de simulación 2 1
Representación de la configuración del autómata en cada intervalo de tiempo 2 1
Opción de debugging que permita alterar el contenido de la cinta de entrada/salida 0 2
Representación del árbol de descripciones instantáneas 2 0
Representación gráfico del árbol de descripciones instantánea 2 0
Opción para la visualización de los indicadores de operación, complejidad y/o eficiencia 0 0
PARCIAL 10 6
TOTAL 29 22
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
10
Nota: Criterio de calificación: 0 (condición que no aplica o no se cumple), 1 (cumple con reservas) y 2 (condición que se cumple totalmente).
Tras realizar la comparación de los simuladores para el tratamiento de la
Máquina de Turing, nos damos nuevamente con que tenemos un rotundo
ganador, donde el simulador jFlap se impone en casi todos los requerimientos
sobre AutoSim, cabe destacar que los dos son buenos simuladores que cumplen
con casi todos los requisitos, pero que por falta de símbolos para el desarrollo
de la máquina jFlap terminó siendo el mejor para el desarrollo del trabajo. Con
ambos simuladores pudimos resolver los mismos problemas que requieren de
menos símbolos porque cuantos empezamos a necesitar más AutoSim al ser tan
limitado en ese sentido no nos permitió seguir trabajando con el. La interfaz
gráfica de ambos es muy amigable y fácil de manejar por ahi la de jFlap es más
fácil de definir la función de transición mediante el etiquetado de las flechas un
poco más intuitivo pero en términos generales funcionan igual.
A continuación mostramos algunos ejemplos:
● Ejercicio 6, pág. 299 Comprobar que la funcion que cumple la siguiente MT es verificar si una cadena
formada por bits, es de longitud par o impar. Si es par que grabe d o c si es
impar.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
11
● Ejercicio 7, pág. 299 Construir una MT que verifica una cadena formada por bits, si la cantidad de 0s
es par o impar y que grabe d si es par o c si es impar.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
12
● Ejercicio 8, pág. 299 Construir una MT que verifique en una cadena formada por bits, si la cantidad de
1s es par o impar. Si es par al finalizar la comprobación, negar la cadena en caso
contrario la máquina solo se detiene.
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
13
Ejercicio con simuladores: Ejercicio 4.b), pág. 243.
Diseñar un AP para el lenguaje 𝐿2 = {𝑎𝑝𝑏𝑛𝑐𝑝 | 𝑝 ≥ 1, 𝑛 > 0 ∑ = {𝑎, 𝑏, 𝑐}}.
Autómata a Pila
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
14
Máquina de Turing
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
15
Complejidad
Autómata a Pila
Para el cálculo de la complejidad nos basamos en una cadena 𝛽 = 𝑎𝑎𝑏𝑐𝑐
con |𝛽| = 5 = 𝑛.
Esta cadena es aceptada por el autómata y necesitará de tantos
movimientos cómo sea el largo de la cadena más uno, debido a la
transición lambda anterior al paso al estado de aceptación, por lo tanto su
complejidad temporal es igual a 𝑛+1.
Analizando el autómata, la cadena utilizada y cualquier otra cadena deben
pasar a través de cuatro estados para ser aceptadas. La complejidad
espacial del autómata es siempre igual a 4.
𝑇(𝑛) = 𝑛 + 1
𝐸(𝑛) = 4
Máquina de Turing
Para calcular la complejidad temporal nos servimos de la herramienta
proporcionada por Microsoft Excel cómo está indicado en el libro. Se
contaron los intervalos de tiempo diferenciándolos en posicionamiento
inicial (𝑇𝑖), avances (𝑇𝑎), retrocesos (𝑇𝑟) y la transición final (𝑇𝒷).
Se forma la siguiente tabla:
n Inicial Avances Retroceso Final
3 1 4 6 1
5 2 9 12 1
7 3 16 20 1
9 4 23 28 1
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
16
Representando gráficamente la tabla se obtienen las siguientes curvas:
Del gráfico podemos obtener las siguientes ecuaciones polinómicas:
𝑇𝑟(𝑛) =1
2𝑛2 + 4,9𝑛 +
1
2
𝑇𝑎(𝑛) =1
2𝑛2 + 3,9𝑛 −
1
2
También obtenemos dos ecuaciones lineales:
𝑇𝑖(𝑛) = 𝑛
𝑇𝒷(𝑛) = 1
A partir de estas cuatro ecuaciones podemos obtener la ecuación de
complejidad temporal al sumarlas:
𝑇(𝑛) =1
2𝑛2 + 4,9𝑛 +
1
2+
1
2𝑛2 + 3,9𝑛 −
1
2+ 𝑛 + 1 = 𝑛2 + 9,8𝑛 + 1
𝑇(𝑛) = 𝑛2 + 9,8𝑛 + 1
Para obtener la complejidad espacial observamos el autómata y podemos
ver que para aceptar una cadena se debe pasar a través de 8 estados del
autómata.
𝐸(𝑛) = 8
y = x
y = 0,5x2 + 3,9x - 0,5
y = 0,5x2 + 4,9x + 0,5
y = 10
5
10
15
20
25
30
3 5 7 9
Nú
me
ro d
e i
nte
rva
los
Longitud de cadena
Cálculo de complejidad temporal
Inicial Avances Retroceso Final
UTN–FRC – SSL TP de Labor ator io 2K1 - 2015
17
Conclusión
Luego de la realización del trabajo podemos apreciar que el mismo nos sirvió para afianzar contenidos previamente trabajados en la materia, permitiéndonos ver de otra forma el funcionamiento de las máquinas abstractas mediante el uso de simuladores.
Tras la resolución de los ejercicios prácticos planteados, construimos y analizamos autómatas mediante el uso de jFlap como simulador, del cual podemos decir que es muy eficiente como tal y da una gran facilidad para el desarrollo de este tipo de trabajos.
También observamos y comparamos el funcionamiento de una máquina de Turing y un autómata a pila, con la resolución de un mismo ejercicio. Pudimos ver que para este caso el autómata a pila fue más eficiente, ya que la funcionalidad de la pila que le permite con menor esfuerzo aceptar una cadena de cantidad igual de símbolos.
Fue una muy buena experiencia en grupo tratando un tema que nos gusta y llama
la atención.