Escolar Documentos
Profissional Documentos
Cultura Documentos
INDICE
1.
2.
3.
4.
5.
6.
INTRODUCCION
GRAMATICAS
AUTOMATAS FINITOS
MAQUINAS DE TURING
GRAMATICAS Y AUTOMATAS
APLICACIONES A LENGUAJES
1. INTRODUCCION
1.1 CONJUNTOS FINITOS E INFINITOS
Los conjuntos
X={1,2,3}
Y={a,b,c,d}
se definen de una manera explcita. Los conjuntos que
contienen un nmero finto muy largo de miembros o un
nmero infinto de miembros se definen de manera implcita.
Ejemplo: El conjunto de todos los cuadrados perfectos es
definido como:
{n | n=m2 para algn nmero natural m}
X* = U Xi
i=0
Contien todos loas cadenas construdas desde X incluyendo la
cadena nula.
Si no se incluye la cadena vaca entonces tenemos a
X+ = U Xi
i=1
El conjunto de cadenas no nulas construdas desde X.
Ejercicios.
Sea X = {aa,bb} y Y = {b,ab}
Lista las cadenas en el conjunto XY.
Lista las cadenas de el conjunto Y* de longitud tres o menos.
Cuntos cadenas de longitud 6 existen en X* ?
Dar un lenguaje L sobre el alfabeto {a,b} que contenga
todas las cadenas que comienzan con aa y terminan con bb.
Sea L1= {aaa}*, L2= {a,b}{a,b}{a,b}{a,b} y L3= L2*.
Describe las cadenas que estan en los lenguajes L2, L3 y
L1 L3
2. GRAMATICAS
1.1 Introduccin a las Gramticas
Una gramtica es una herramienta o notacin que nos
permite definir un lenguaje por medio de una serie de reglas
que nos dicen como construr cadenas validas (oraciones)
para el lenguaje.
Chomski formaliz el concepto de una gramatica, al hacer
observaciones importantes en la complejidad de una
gramtica que a su vez establece la complejidad de el lenguaje
Como se estableci antes, un lenguaje es un conjunto finto
de cadenas desde un alfabeto. Una gramtica es una forma de
describir al lenguaje.
Ejercicios:
Construr una gramtica con alfabeto {a,b,c} para los
Siguientes lenguajes:
{anb2ncm | n,m > 0}
{anbmc 2n+m | n,m>0}
Construr una gramtica con alfabeto {a,b} cuyo lenguaje contiene
Precisamente cadenas con el mismo numero de as y bs.
b A
Gramticas Regulares
Estas gramticas constituyen una importante subclase de
las gramticas de contexto libre. Son tambin tiles en la
definicin de lenguajes de programacin.
Una gramtica es regular (GR) si cada regla o produccin
cumple con las siguientes formas:
1. A a
2. A aB
3. A
Donde A, B son miembros de V y a es miembro de
Una GR G genera un lenguaje regular L(G).
Ejemplo
La siguiente es una GCL ( U (ab)+a* )
G: S abSA |
a
una correspondiente gramtica regular sera:
S aB |
B bS | bA
A aA |
Expresiones Regulares
Sea un alfabeto. Una expresin regular para se define
recursivamente como:
i) Base: 0 (el conjunto vaco), y a para cada a que es
miembro de son expresiones regularespara
ii) Paso recursivo: Sea u y v expresiones regulares para
Las expresiones
(u U v)
(uv)
(u*)
son expresiones regulares para
iii) Cierre: u es una expresin regular para solo si puede
ser obtenido de los elementos base por medio de un
nmero infinto de aplicaciones de el paso recursivo.
Diagramas Sintcticos
Es tambin un tipo de notacin para especificar la sintxis de
Un lenguaje. La diferencia con la notacin BNF es que en
esta
se usan lneas y figuras en lugar de nombres.
Diagrama sintctico de un
Smbolo no terminal
Smbolo no terminal
Smbolo terminal
trmino
trmino
trmino
+
-
factor
factor
*
/
factor
identificador
factor
nmero
(
expresin
3. AUTOMATAS FINITOS
En este captulo estudiaremos un tipo de mquinas abstractas
de computacin en donde la entrada consiste de una cadena de un
determinado alfabeto, y la salida o resultado de la computacin
es la aceptacin o no de la cadena de entrada. El conjunto de
cadenas aceptadas por la mquina es el lenguaje reconocido por
la mquina. De esta forma, asociamos lenguajes y mquinas, los
dos tpicos principales de esta materia.
(Continuacin)
M: Q = {q0, q1, q2 }
a, b}
F = {q2}
La funcin de transicin es dada en forma tabular y
llamada tabla de transicin.
q0
q0
q1
q1
q0
q2
q2
q2
q2
[q0, abab]
-[q0, bab]
-[q1, ab]
-[q0, b]
rechazado
Diagramas de Estado
El diagrama de estado de un AFD es un grafo dirigido-etiquetado
en el cual los nodos representan los estados de la mquina y los
arcos son obtenidos de la funcin de transicin.
Otra definicin es la siguiente:
El diagrama de estado de un AFD M = (Q, q0, F) es un
grafo etiquetado G definido por las sig. condiciones:
i) Los nodos de G son los elementos de Q.
ii) Las etiquetas sobre los arcos de G son elementos de
iii) q0 es el nodo inicial, representado con >
iv) F es el conjunto de nodos aceptadores; cada nodo acaptador
se representa con
a
q0
q1
q2
a,b
b
q0
q1
q2
Ejercicios:
1. Sea M un AFD
M: Q = {q0, q1, q2 }
a, b}
F = {q2}
q0
q0
q1
q1
q2
q1
q2
q2
q0
Ejercicios:
2. Construye AFD en forma de diagrama de estados que
acepte el lenguaje descrito:
El conjunto de cadenas para alfabeto {a,b} en
donde la subcadena aa ocurra al menos dos veces.
El conjunto de cadenas para alfabeto {a,b,c} que
comienzan con a, contienen exactamente dos bs y
terminan con cc.
(ab)*ba
(ab)*(ba)*
a
qn
qi
qn
a
a
qj
qn
[q0 ,ababb]
-[q0 ,babb]
-[q0 ,abb]
-[q0 ,bb]
-[q0 ,b]
-[q0 , ]
[q0 ,ababb]
-[q0 ,babb]
-[q1 ,abb]
q0
q0
{q0, q1}
q1
q2
q2
[q0 , ababb]
-[q0 , babb]
-[q0 , abb]
-[q0 , bb]
-[q1 , b]
-[q2 , ]
a,b
q0
q1
q2
q0
a
q1
q2
q3
a
Transiciones Lambda
Las transiciones de estado a estado en AFD y AFN se llevan a
cabo al procesar o leer un smbolo de entrada. Podemos
tambin redefinir a un AFN de tal manera que admita
transiciones de estado a estado sin leer un smbolo de
entrada.
Una transicin de esta forma es llamada transicin lambda.
A este tipo de mquinas se les llama AFN-
Por medio de movimientos lambda se puede construr
mquinas complejas a partir de mquinas mas simples.
La definicin de halting (cuando parar) se extiende para
incluir la posibilidad que una computacin puede continuar
usando transiciones lambda despus de que toda la cadena de
entrada ha sido leda. Tambin se pide, al igual que en los
anteriores autmatas, que termine en un estado final, esto para
finalizar el AFN- con xito.
a,b
q1,0
Q1,1
a,b
b
Q1,2
Q2,0
M2
a
b
Q2,1
a,b
a,b
b
q1,0
Q1,1
b
Q1,2
Q2,0
a
b
Q2,1
a,b
q1,0
Q1,1
a,b
b
Q1,2
Q2,0
M2
a
b
Q2,1
q2
Q3
a
q1
Q4,
Q5
Q6
b
a
q0
q1
q0
q1
{q1}
q2
{q2}
q2
c
q0
q1
{q1}
q2
{q1}
{ q1, q2}
{q1}
q0
q1
q2
c
b
a
q0
a
q1
q2
c
Se crean tres nuevos estados
a los cuales se les aplica el
mismo procedimiento para
obtener hacia que estados se
mover. Este procedimiento
termina hasta que no hay no
se genere un nuevo estado
Su correspondiente diagrama de
estados:
t
q0
q1
{q1}
q2
{q1}
{ q1, q2}
{q1}
{q1}
{ q1, q2}
{q1}
{ q1, q2}
{q1}
{ q1, q2}
q0
q1
{q1}
q2
0
{q1}
{q0}
{q1}
{ q1, q2}
{q1}
{ q1, q2}
{q1}
{ q1, q2}
b,c
{ q1, q2}
{q1}
c
{q1, q2}
b
a,c
b
a,b,c
{q1}
a
q0
q1
q2
a
a
M:
{q0}
{q0, q1}
{q1, q2}
a, b
a
M1:
q1
a
b
q2
M2:
q3
M:
q0
a
b
a
q3
q2
q0
{q2, q3}
q1
{q2}
q2
{q1}
q3
{q3}
{q2, q3}
b
b
{q1}
b
a,b
a
{q2}
b
{q3}
q1
q0
q0
q0
q1
q1
M1
FM1
SM2
M2
FM2
SM1
M1
FM1
SM2
M2
FM2
SM1
M1
FM1
CONCLUSION
Usando los autmatas finitos anteriores podemos construir
una mquina para cualquier expresin regular que
describa a un lenguaje o conjunto regular. Por lo tanto, la
conclusin es de que la familia de lenguajes aceptados por
una mquina o autmata finito son del tipo regular.
Ejercicio: Construir un AFN- que acepte el lenguaje
denotado por (a|b)*ba.
a
ba
b
(a|b)
a
(a|b)*
(a|b)*ba
a
a
b
b
b
4. AUTOMATAS DE PUSH-DOWN
Los lenguajes regulares se caracterizan por ser lenguajes
generados por gramticas regulares y aceptados por
autmatas finitos. En este captulo estudiaremos un tipo
de mquina usada para aceptar lenguajes de contexto
libre. Esta mquina recibe el nombre de autmata de
push-down (APD).
4.1 Definicin.
Un Autmata de Push-Down (APD) es una mquina de estado
finto aumentada o extendida con una pila de memoria externa.
La adicin de la pila al autmata le proporciona a este un medio
de almacenamiento de memoria LIFO (last-in, first-out). Esta
combinacin de pila con estados le da la posibilidad a un APD
de aceptar lenguajes como {aibi | i>=0}.
Un APD es un sextuple (Q, q0, F), donde Q es el
conjunto finito de estados, es un conjunto finito de el alfabeto
de entrada, es un conjunto finito llamado el alfabeto de la pila,
q0 es el estado inicial, F (un subconjunto de Q) es el conjunto de
estados finales y es la funcin de transicin de Q x (U {x
( U {}) a subconjuntos Q x ( U {}) .
qi
a A/B
qj
Ejemplo:
A/
*Pop una A
qi
(qi, , ) = [qi, A]
*Push una A
qi
a
(qi,a, = [qj, ]
qi
qj
*Lee una a
a /A
q0
b A/
b
q1
Ejercicios:
Construir un APD que acepte el lenguaje {wcwR | w es un
miembro de {a,b}*}.
Construir un APD que acepte el lenguaje {aicjbi | i,j>=0}.
Construir un APD que acepte el lenguaje {aibjck | i+k=j}.
A a
A
La gramtica G en forma de Greibach que acepta {aibi | i>=0}
es usada para ilustrar la construccin de un APD equivalente.
G:
S aAB | aB
A aAB | aB
Bb
El APD tiene dos estados: un estado inicial q0 y un estado
aceptador o final q1. Una regla S de la forma S aA1A2An
genera una transicin que procesa el smbolo terminal a, mete
(push) las variables A1A2An a la pila y se mueve al estado q1.
El resto de las operaciones usan el smbolo de entrada y el tope
de la pila para determinar la transicin apropiada. La funcin de
transicin de el APD es definido directamente de las reglas de
G.
(q0,a, ) = {[q1,AB], [q1,B]}
(q1,a,A) = {[q1,AB], [q1,B]}
(q1,a,B) = {[q1, ]}
Por otra parte es tambin posible construr una gramtica de
contexto libre a partir de un APD.
5. MAQUINAS DE TURING
La mquina de Turing nos proporciona muchas de las
caractersticas comnmente asociadas con una computadora
moderna. De hecho, la mquina de Turing fue el modelo
utilizado para disear y construir la primer computadora de
programa almacenado. Esta mquina utiliza una secuencia
de operaciones elementales para acceder y alterar una
posicin de memoria. A diferencia de una computadora,
una mquina de Turing no tiene un lmite de memoria o de
tiempo para realizar un clculo. Por ltimo, la mquina de
Turing representa lo mximo dentro de los dispositivos de
computacin abstractos.
q1
y
qj
B
q0 q1,B,R
q1 q2,B,L
q1,b,R q1,a,R
q2
q2,a,L
q2,b,L
q0
B/B R
q1
a/a L
b/b L
B/B L
q2
a/X R
COPY:
q0
B/B R
q1
b/Y R
B/B L
X/a L
Y/b L
q2
a/a R
b/b R
q6
q7
B/B R
B/B R
a/a R
b/b R
q3
B/a L
b/b R
a/a R
q5
X/X R
Y/Y R
a/a L
q4
B/b L
b/b L
B/B L
Ejercicios:
Construir una mquina de Turing para mover la entrada
un espacio a la derecha. La configuracin de entrada
q0BuB resulta en qfBBuB.
Construir una mquina de Turing para concatenar una
copia de la cadena de entrada en reversa. La
configuracin de entrada q0BuB resulta en qfBuuRB.
q0
B/B R
q1
a/a R
q2
a/a R
q3
b/b R
qj
.
q0
copy
R(M)R(M)
ciclo
para
M no para con entrada R(M)
R(D)
copy
R(D)R(D)
ciclo
para
D no para con entrada R(D)