TPL - Sintaxis y Semántica de los Lenguajes

17
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

description

Trabajo Práctico de Laboratorio

Transcript of TPL - Sintaxis y Semántica de los Lenguajes

Page 1: TPL - Sintaxis y Semántica de los Lenguajes

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

Page 2: TPL - Sintaxis y Semántica de los Lenguajes

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

Page 3: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 4: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 5: TPL - Sintaxis y Semántica de los Lenguajes

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

Page 6: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 7: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 8: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 9: TPL - Sintaxis y Semántica de los Lenguajes

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

Page 10: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 11: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 12: TPL - Sintaxis y Semántica de los Lenguajes

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.

Page 13: TPL - Sintaxis y Semántica de los Lenguajes

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

Page 14: TPL - Sintaxis y Semántica de los Lenguajes

UTN–FRC – SSL TP de Labor ator io 2K1 - 2015

14

Máquina de Turing

Page 15: TPL - Sintaxis y Semántica de los Lenguajes

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

Page 16: TPL - Sintaxis y Semántica de los Lenguajes

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

me

ro d

e i

nte

rva

los

Longitud de cadena

Cálculo de complejidad temporal

Inicial Avances Retroceso Final

Page 17: TPL - Sintaxis y Semántica de los Lenguajes

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.