0% encontró este documento útil (0 votos)
127 vistas14 páginas

Guia Lab8-AutomataPila

Este documento presenta una guía de laboratorio sobre teoría de la computación. Explica conceptos clave como pilas, gramáticas independientes del contexto y autómatas de pila. Incluye ejemplos y ejercicios resueltos sobre cómo modelar lenguajes formales usando autómatas de pila. El objetivo es que los estudiantes comprendan mejor estas herramientas y puedan aplicarlas para reconocer lenguajes formales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
127 vistas14 páginas

Guia Lab8-AutomataPila

Este documento presenta una guía de laboratorio sobre teoría de la computación. Explica conceptos clave como pilas, gramáticas independientes del contexto y autómatas de pila. Incluye ejemplos y ejercicios resueltos sobre cómo modelar lenguajes formales usando autómatas de pila. El objetivo es que los estudiantes comprendan mejor estas herramientas y puedan aplicarlas para reconocer lenguajes formales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

EDITH PAMELA RIVERO TUPAC


Ing. Informática y de Sistemas
Magister en Seguridad Informática

GUÍA DE LABORATORIO
TEORÍA DE LA COMPUTACIÓN

2021 A

COMPETENCIAS
Al finalizar la asignatura el estudiante podrá aplicar de forma transformadora conocimientos de teoría de la
computación como herramienta para evaluar, sintetizar y mostrar información como fundamento de sus ideas y
perspectivas para la resolución de problemas.
Curso: Teoría de la Computación Página: 1

Laboratorio
Autómata de Pila

8
I
OBJETIVOS
 Comprender las diferencias de un autómata de pila con respecto a un autómata finito.
 Practicar mediante ejercicios el desarrollo de un autómata de pila.

II
TEMAS A TRATAR
 Pila
 Gramáticas independientes o libres de contexto
 Autómatas a pila

III
MARCO TEÓRICO
1 Pila
En una pila el último elemento que se coloca es el siguiente elemento que se retira
LIFO (Last In First Out). La posición del último elemento empujado sobre la pila se
llama la parte superior o tope y la posición del primer elemento empujado hacia la
pila se llama la parte inferior. Generalmente las pilas se suelen ilustrar verticalmente.
Por ejemplo, si ponemos los elementos A, B y C (en ese orden) en una pila, el
siguiente elemento que se quitará es C. Con las pilas, poner un elemento se llama
apilar un elemento en la pila mientras que quitar un elemento es llamado desapilar un
elemento de la pila.

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 2

2 Gramáticas independientes del contexto (GIC)


Una GIC es una forma de describir lenguajes mediante reglas recursivas
denominadas producciones. Una GIC consta de un conjunto de variables, un conjunto
de símbolos terminales y una variable inicial, así como de producciones. Cada
producción consta de una variable de cabeza y un cuerpo formado por una cadena de
cero o más variables y/o símbolos terminales.
Por ejemplo la siguiente es una GIC:
E→E+E|E∗E
El árbol de derivación:

2.1 Aplicaciones de las gramáticas independientes del contexto


Las gramáticas independientes del contexto han tenido mayor auge a medida que en las
Ciencias de la Computación se ha multiplicado el uso de conceptos definidos
recursivamente. Dos de estos usos son:

a) Las gramáticas se utilizan para describir lenguajes de programación. Lo más


importante es que existe una forma mecánica de convertir la descripción del
lenguaje como GIC en un analizador sintáctico, el componente del compilador que
descubre la estructura del programa fuente y representa dicha estructura mediante
un árbol de derivación.
Mgt. Edith Pamela Rivero Tupac
Curso: Teoría de la Computación Página: 3

Esta aplicación constituye uno de los usos más tempranos de las GIC;
de hecho, es una de las primeras formas en las que las ideas teóricas de las
Ciencias de la Computación pudieron llevarse a la práctica.

b) El desarrollo del XML(ExtensibleMarkup Language) facilitará el comercio


electrónico permitiendo compartir pedidos, las descripciones de los productos y de
otros muchos tipos de documentos. Una parte fundamental del XML es la DTD
(Document Type Definition, definición de tipo de documento), que principalmente
es una gramática independiente del contexto que describe las etiquetas permitidas
y las formas en que dichas etiquetas pueden anidarse. Las etiquetas son las
palabras clave encerradas entre corchetes triangulares que el lector puede conocer
del HTML, como por ejemplo, <EM> y </EM> para indicar que el texto que
encierran tiene que escribirse en cursiva. Sin embargo, las etiquetas XML no se
ocupan de dar formato al texto, sino del significado del mismo. Por ejemplo, la
pareja de etiquetas XML <TELEFONO> y </TELEFONO> marcaría que la
secuencia de caracteres encerrada entre ellas debe interpretarse como un número
de teléfono.

3 Autómatas a Pila
Existe un tipo de autómata que define los lenguajes independientes del contexto. Dicho
autómata, conocido como “autómata a pila”, es una extensión del autómata finito no
determinista con transiciones-ε , el cual constituye una forma de definir los lenguajes
regulares. El autómata a pila es fundamentalmente un AFN-ε con la adición de una pila.

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 4

La pila se puede leer, se pueden introducir elementos en ella y extraer sólo el elemento
que está en la parte superior de la misma, exactamente igual que la estructura de datos de
una “pila”.

La presencia de una pila significa que, a diferencia del autómata finito, el autómata a pila
puede “recordar” una cantidad infinita de información. Sin embargo, a diferencia de las
computadoras de propósito general, que también tienen la capacidad de recordar una
cantidad arbitrariamente grande de información, el autómata a pila sólo puede acceder a
la información disponible en su pila de acuerdo con la forma de manipular una pila.

3.1 Equivalencia entre Autómata a Pila y GIC


Un lenguaje es generado por un GIC si y solo si es aceptado por un Autómata de Pila con
la pila vacía si y solo si es aceptado por un estado final.

PDA: PushDown Automata (Autómata a Pila)

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 5

3.2 Definición formal de un autómata de pila:


La siguiente definición consta de 7 componentes:

El significado de cada uno de los componentes es el siguiente:

Q: Un conjunto finito de estados, como los estados de un autómata finito.


: Un conjunto finito de símbolos de entrada, también análogo al componente
correspondiente de un autómata finito.
: Un alfabeto de pila finito. Este componente, que no tiene análogo en los autómatas
finitos, es el conjunto de símbolos que pueden introducirse en la pila.
: La función de transición. Como en el autómata finito, controla el comportamiento del
autómata. Formalmente toma como argumento (q,a,X), donde:

1. q es un estado de Q.
2. a es cualquier símbolo de entrada de o a=, la cadena vacía, que se
supone que no es un símbolo de entrada.
3. X es un símbolo de la pila, es decir, pertenece a .

La salida de es un conjunto finito de pares (p,), donde p es el nuevo estado y es la
cadena de símbolos de la pila que reemplaza X en la parte superior de la pila. Por ejemplo,
si  , entonces se extrae un elemento de la pila, si = X, entonces la pila no cambia y si
YZ, entonces X se reemplaza por Z e Y se introduce en la pila.
q0: El estado inicial. El autómata a pila se encuentra en este estado antes de realizar
ninguna transición.
Z0: El símbolo inicial. Inicialmente, la pila del autómata a pila consta de una instancia de
este símbolo y de nada más.
F: El conjunto de estados de aceptación o estados finales

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 6

IV
ACTIVIDADES

1. Entender la aplicación de un autómata de pila.


¿En el siguiente AFND cuál es el lenguaje aceptado?

Lenguaje: (a|b)(a|b)*
Lenguaje: (a|b)+

¿Cómo podríamos definir a una cantidad específica de apariciones de a y/o b?


La respuesta es un autómata de pila que permite controlar las apariciones de los
símbolos del alfabeto.

Por ejemplo: Se requiere diseñar un autómata a pila que permita reconocer el


siguiente lenguaje:
L= {anbn tal que n>=1}

Ejemplo: Cadena: aaabbb

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 7

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 8

V
EJERCICIOS RESUELTOS

1. Ejercicio 1:
En base al autómata anterior. Realizar su definición formal respectiva.
Q: {q0, q1, q2}
: {a, b}
: {Z, 1}
:
(q0,a, ) = (q0, 1)
(q0, b, 1) = (q1,  )
(q1, b, 1) = (q1,  )
(q1,, Z) = (q2, )
q0: q0
Z0: Z
F: {q2}

2. Ejercicio 2:
En base al autómata antes presentado, ¿Cuál es la gramática independiente de
contexto que lo define?
S-> a S b
S-> 
3. Ejercicio 3:
Realizar su implementación en Bison.

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 9

a) Archivo prog1.l

%{
#include "prog1.tab.h"
int yyparse();
%}
%%
a {return A;}
b {return B;}
\n {return NL;}
. return *yytext;
%%
int yywrap(void){
yyparse();
return 0;
}

b) Archivo prog1.y

%{
#include <stdio.h>
int yylex();
int yyerror (char *s);
#define YYERROR_VERBOSE
%}
%token A
%token B
%token NL
%%
cadena: S NL {printf("Se imprimio una cadena \n");};
S: A S B
|
;
%%
int yyerror (char *s){
printf("%s \n",s);
return 1;
}
int main(int argc ,char ** argv) {
yyparse();
return 0;
}

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 10

4. Ejercicio 4:
En base al autómata a pila, indicar cuál es el lenguaje que acepta.

Respuesta: L= {anb2n tal que n>=1}

5. Ejercicio 5:
En base al autómata a pila, indicar cuál es el lenguaje que acepta.

Respuesta: L= {wwR tal que w={a,b}+}


6. Ejercicio 6:
Sea L={ w | w es una cadena con paréntesis balanceados}
={a, b, (, )}
Las palabras aceptadas serían:
 a
 b
 (a)
 (b)
 ((a))
 (((b)))

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 11

¿Cuál es su gramática independiente del contexto?


S -> (S) | A
A -> a | b

¿Cuál es su autómata a pila?

¿Qué diferencias encuentran con respecto al siguiente diagrama?

VI
EJERCICIOS PROPUESTOS

1. Para el ejercicio 4, realizar la definición formal del autómata (2 puntos)

2. Para el ejercicio 4, definir la GIC y realizar su implementación en Bison (3


puntos)

3. Para el ejercicio 5, realizar la definición formal del autómata (2 puntos)

4. Para el ejercicio 5, definir la GIC y realizar su implementación en Bison (3


puntos)

5. Modificar el ejercicio 6 para que acepte cadenas de una o varias apariciones de a


y/o b. Por ejemplo:
 a
Mgt. Edith Pamela Rivero Tupac
Curso: Teoría de la Computación Página: 12

 b
 aba
 bba
 (a)
 (b)
 (abb)
 (((bab)))

Diagramar el autómata y definir su GIC (4 puntos)

6. Para la siguiente GIC (6 puntos)

I → a | b | Ia | Ib | I0 | I1

E → I | E ∗ E | E + E | (E)

Definir:

 La función de transición de su respectivo autómata a pila

 Diagrama en JFLAP del autómata.

Mgt. Edith Pamela Rivero Tupac


Curso: Teoría de la Computación Página: 13

VIII
BIBLIOGRAFÍA
[1] J. E.Hopcroft, R. Motwani and J. D. Ullman, Teoría de autómatas, lenguajes y
computación, Addison Wesley, 2007.

[2] D.Kelley, Teoría de Autómatas y lenguajes formales, Prentice Hall, 1995.

Mgt. Edith Pamela Rivero Tupac

También podría gustarte