Documentos de Académico
Documentos de Profesional
Documentos de Cultura
F = {q1}
Solución
1. Repaso de AFD y AFND
F = {q0,q3}
Solución
2. Conceptos previos
Maquinas de Turing
Q = {conjunto de estados}
= {conjunto de símbolos permitidos en la cinta}
B es el símbolo blanco.
es el subconjunto de símbolos de entrada no incluyendo el blanco.
donde es la función del siguiente movimiento, I
significa movimiento a izquierda, D significa movimiento a derecha, y S parada
(stop).
es el estado inicial.
es el subconjunto de estados finales
2. Conceptos previos
Maquinas de Turing.
Formalmente, el lenguaje aceptado por una máquina de Turing :
Ejemplo:
3. Lenguaje de libre de contexto
λ
3. Lenguaje de libre de contexto
Ejemplo:
La siguiente gramática genera las cadenas del lenguaje
L1 = {w c w | w ϵ {a, b}* }
G1 = ({A}, {a, b, c}, P1, S1), y
1. S aSb
2. S ab
Notación de Backus-Naur
Las gramáticas libres del contexto se escriben,
frecuentemente, utilizando una notación conocida
como BNF (Backus-Naur Form). BNF es la técnica más
común para definir la sintaxis de los lenguajes de
programación.
3. Lenguaje de libre de contexto
Notación de Backus-Naur
En esta notación se deben seguir las siguientes
convenciones:
los no terminales se escriben entre paréntesis
angulares < >
los terminales se representan con cadenas de
caracteres sin paréntesis angulares
el lado izquierdo de cada regla debe tener
únicamente un no terminal (ya que es una gramática
libre del contexto)
el símbolo ::=, que se lee “se define como” o “se
reescribe cómo”, se utiliza en lugar de →
3. Lenguaje de libre de contexto
Notación de Backus-Naur
<A> ::= <B1>
<A> ::= <B2>
.
.
.
<A> ::= <Bn>
Derivaciones
Derivación Directa. Se representa mediante v⇒w y es la
aplicación de una regla de producción x→y a una cadena v
para convertirla en otra palabra w, de tal forma que si v =
αxγ entonces w = αyγ.
Derivaciones
Derivación. Se representa mediante v ⇒* w y es la
aplicación de una secuencia de producciones a una cadena.
Ejemplo: E + E * E ⇒* id + id * id
3. Lenguaje de libre de contexto
Derivaciones
Derivaciones
Ejemplo: E ⇒ E + E ⇒ E + id ⇒ ( E ) + id ⇒ ( E * E) + id ⇒
( E * id) + id ⇒ ( id * id) + id
3. Lenguaje de libre de contexto
Arboles de derivación
Un árbol es un conjunto de puntos, llamados nodos, unidos
por líneas, llamadas arcos. Un arco conecta dos nodos
distintos. Para ser un árbol un conjunto de nodos y arcos
debe satisfacer ciertas propiedades:
Arboles de derivación
3. Lenguaje de libre de contexto
Arboles de derivación
La siguiente definición BNF describe la sintaxis
(simplificada) de una sentencia de asignación de un
lenguaje tipo Pascal:
<sent_asig> ::= <var> := <expresion>
<expresion> ::= <expresion> + <termino> | <expresion> -
<termino> | <termino>
<termino> ::= <termino> * <factor> | <termino> / <factor>
| <factor>
<factor> ::= ( <expresion> ) | <var> | <num>
<var> ::= A B C D ... Z
<num> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
3. Lenguaje de libre de contexto
Ejemplo,
La sentencia A:= A + B es una sentencia de asignación que
pertenece al lenguaje definido por la definición BNF dada;
elaborar el árbol de derivación:
Solución
3. Lenguaje de libre de contexto
Ejemplo,
La sentencia C := D – E * F es una sentencia de asignación que
pertenece al lenguaje definido por la definición BNF dada;
elaborar el árbol de derivación: :
Solución
3. Lenguaje de libre de contexto
Ambiguedad
Una gramática es ambigua cuando tiene la capacidad de
producir, para la misma cadena, más de una derivación o
árbol, ya sea por la izquierda o por la derecha. Es decir, se
puede sustituir los no terminales en más de un orden y llegar
al mismo conjunto de símbolos terminales.
3. Lenguaje de libre de contexto
Ambigüedad
Ejemplo:
Considerando que se tiene la siguiente regla gramatical:
E→E+E
E→E–E
E→x|y|z
Ambiguedad
Ejercicio:
Considerando que se tiene la siguiente regla gramatical:
G = (VN, VT, E, P) con VT= {id, num, +, *, (, )} VN = {E}
P: E→E+E | E*E | (E) | id | num
Ambiguedad
Ejercicio:
Considerando que se tiene la siguiente regla gramatical:
G = (VN, VT, E, P) con VT= {id , + , - , \ , *, ( , ) }
VN = {E, T, F}
P: E E+T|E-T|T
TT*F|T/F|F
F ( E ) | id
Estudiar los posibles árboles de derivación para la cadena
id*(id+id)/id - id:
Solución
4. Estructura de datos: pilas
Definición:
Una pila es una colección ordenada de elementos en la cual, en
un extremo, pueden insertarse o retirarse otros elementos,
ubicados por la parte superior de la pila. Una pila permite la
inserción y eliminación de elementos, por lo que realmente es
un objeto dinámico que cambia constantemente.
Trabajan con filosofía LIFO (Last In- First Out ).
Ejemplos:
Pila de platos
Pila de discos
Pila de llamadas a funciones
Pila de recursión
Pila de resultados parciales de formulas aritméticas, etc.
4: Estructura de datos: pilas
4. Estructura de datos: pilas
Operaciones básicas con pilas
PUSH (insertar).- Agrega un elementos a la pila en el extremo
llamado tope.
POP (remover).- Remueve el elemento de la pila que se encuentra en
el extremo llamado tope.
VACIA.- Indica si la pila contiene o no contiene elementos.
LLENA.- Indica si es posible o no agregar nuevos elementos a la pila.
4. Estructura de datos: pilas
Representación de pilas
Usando arreglos: Define un arreglo de una dimensión (vector)
donde se almacenan los elementos.
0 1 2 3 4 5
C
B B B
A A A A
Tope -1 Tope Tope Tope Tope
5. Autómata de Pila
5. Autómatas de pilas
λ
λ
6. Autómatas de pilas deterministas (APD)
Ejemplo: sea con una gramática:
P → 0P0,
P → 1P1,
P → λ.
Podemos definir un APD para tiene 3 estados y operando
de la siguiente manera:
Los nodos, nodo inicial y final, son como los hemos visto antes.
La diferencia principal es que en las transiciones (arcos) la
etiqueta significa que tiene el par . Ósea nos
dice la entrada (a) y como estaba (X) y como queda la parte
superior del stack.
λ λ λ
λ
6. Autómatas de pilas deterministas (APD)
Ejemplo: Diseñe un APD para que genere el lenguaje
L=
Reglas o condiciones:
Si estoy en el estado q0 con 0 en la entrada y Z0 en la cima: (q0, aZ0)
quiere decir apila a y continua en estado q0
Si estoy en el estado q0 con 1 en la entrada y a en la cima: (q1, λ)
quiere decir desapila a y cambia al estado q1
Si estoy en el estado q1 y leo como entrada 1 y en la cima hay una a
desapilo
Si termino la entrada con la pila vacía acepto
6. Autómatas de pilas deterministas (APD)
Reglas o condiciones:
La pila apila la primera parte de la palabra
Usamos no determinismo para empezar la segunda parte
En la segunda parte si en la cima hay una a y leo una a Desapilo
En la segunda parte si en la cima hay una b y leo una b Desapilo
Si termino la entrada con la pila vacıa acepto
Muchas Gracias!!!
mhuapaya.chu@gmail.com