Automatas y Lenguajes
Automatas y Lenguajes
Automatas y Lenguajes
TEORÍA
DE
AUTÓMATAS
Y LENGUAJES
FORMALES
2
A
T 1
L 4
F
3
1
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Estos apuntes no quieren (ni mucho menos) sustituir los que impartirá el profesor de la
asignatura. Sirven únicamente como una especie de "bastón" a la hora de estudiar la
asignatura. Fueron tomados en el Curso 2003/2004 y los he intentado organizar de
alguna forma para poder pasarlos a ordenador y posteriormente ponerlo a disposición de
la gente. Es muy posible que encuentren más de una errata, estos apuntes fueron
tomados por mí en clase, por lo que me he podido equivocar hasta copiando de la
pizarra. De ser así ruego me lo comuniquen para corregirlo lo antes posible.
He obviado pasar el tema 0 del curso, que es una introducción al C++, porque en mi
opinión no tienen nada que ver con el contenido real de la asignatura, y quiero
centrarme estrictamente en el contenido de la materia.
Los títulos en rojo anuncian el comienzo de un nuevo tema, que explicaré hasta
que aparezca otro título en rojo o se termine el temario.
Cualquier cosa que me quieran comunicar, sean erratas, comentarios, etc., lo pueden
hacer a la siguiente dirección de correo: [email protected]
2
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
TEMARIO DE LA ASIGNATURA
Tema 6: Resolubilidad
3
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tema 1
Conceptos Previos.
Lógica Proposicional.
• Equivalencia P ≡ Q Significa que P es equivalente a Q, siempre que P es cierto
⇒ Q es cierto, y siempre que P es falso ⇒ Q es falso.
• Negación (p → ¬p)
Tabla de verdad
p ¬p
F T
T F
(F = False, T = True)
• Conjunción (p ∧ q)
Tabla de verdad
p q p∧q
F F F
F T F
T F F
T T T
• Disyunción (p ∨ q)
Tabla de verdad
p q p∨q
F F F
F T T
T F T
T T T
• Condicional (p → q)
Tabla de verdad
p q p→q
F F T
F T T
T F F
T T T
4
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
• Recíproca (q → p)
5
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
P. ej:
• Cuantificadores
Universal
Para todo x, P(x) es verdadera
∀ x, P(x)
Existencial
Existe un x del conjunto de significados para el que P(x) es cierta
· ·
∃ x P(x), ∃ x P(x) ( ∃ = "Existe un único")
__________________________________________________________
Teoría de conjuntos.
Se denotarán los conjuntos con letras mayúsculas, y los elementos con letras
minúsculas.
6
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Teor: (A ⊆ B) ∧ (B ⊆ A) ⇔ A = B.
Teor: Si (A ⊆ B) ∧ (B ⊆ C) ⇒ A ⊆ B.
P. ej.: A = {0, 1}
2 A =℘ (A) = {{0}, {1}, {0, 1}, { ∅ }}
{ ∅ } ∈ 2A , ∀ A
| 2 A | = 2 |A|
A ∈, 2 A ∀ A
P.ej.:
1 1
Si ∀ n > 0, An = [- , ], { An | n∈Ν, n > 0 } es F.I.C.
n n
1 1
An = { [-1, 1], [- , ], .... }
2 2
7
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplos:
U - A = {x | x∈U ∧ x∉A}, también se denomina conjunto
−
complementario de A, se denota también: A
−
U=∅
−
∅= U
Teor:
_______ __ __
1) A ∪ B = A ∩ B
_______ __ __
2) A ∩ B = A ∪ B
=
3) A = A (doble complementación)
__
4) A - B = A ∩ B
Ejemplos:
ℜ ⊆ A× A (relación sobre A)
ℜ ⊆ Ν×Ν
(x, y)∈ ℜ si x ≤ y
8
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
verifica:
1) ∀ A, B∈ Ψ , A ∩ B= ∅ , ó bien A=B
B=A
2)
Υ
B∈Ø
P.ej.:
Sea A={0,1,2,3,4,5,6,7,8,9,10}
Ψ = {{0,2,4,6},{1,3,5,7},{8,10},{9}}
P.ej.:
Relación sobre X: ℜ ⊆ X× X
ℜ ={(x, y) | x e y están en el mismo conjunto de Ψ }
X={1,2,3}
Ψ ={{1},{2,3}}
ℜ ={(2,3),(2,2),(3,3),(1,1),(3,2)}
9
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplos:
g: Ν
→ Ν
p α g(p) = p+1 Es inyectiva, pero no sobre ( ∃ f −1 (0))
h: Ρ
→ Ρ Hay elementos de y que no son imágenes
q α h(q) = q² de x, luego no es inyectiva (por ej, los nºs
negativos), y tampoco es sobre porque por
ejemplo el -1 y el 1 tienen la misma imagen.
Ejemplo:
ℜ = {(0,1),(1,3),(1,2),(0,2)}
10
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
ℑ = {(1,a),(1,b)}
ℑ ο ℜ ={(0,a), (0,b)}
ℜ οℑ =∅
Sean f, g: A → A
g οf = {(a, b) | Para algún x∈A, f(a) = x ∧ g(x) = b)}
Ejemplo:
Sea A ⊆ Ν,
A es inductivo si:
∀ x∈A, x + 1∈A
Por ejemplo:
{10,11,12,13,14,15...} es inductivo
{1,3,5,7,...} no es inductivo
Dem:
n n+2 3(n + 1)
0 2 3
1 3 6
2 4 9
3 5 12
11
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
n+2=2
1) n = 0; 2 < 3, luego la función es cierta para n=0,
3(n + 1) = 3
luego ya tenemos base de inducción.
n ∑ n²
0 1 1
1 4 4
2 9 9
3 16 16
1) Si n = 1, 1 = 1²
2) Sup. 1 + 3 + 5 + ... + (2n - 1) = n²
Hip. de inducción: 1 + 3 + 5 + ... + (2q - 1) = q²
?
1 + 3 + 5 + ... + (2q - 1) + (2(q+1) - 1) = (q + 1)²
1 + 3 + 5 + ... + (w1 - 1) + (2(q + 1) -1) = q² + (2q + 1) = (q + 1)²
P. ej.:
{a, b, c} ≅ {1, 2, 3} Como vemos, tienen el mismo cardinal.
12
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
a 1
b 2
c 3
A≅C
Teor: B ≅ D A∪B≅ C∪D
A ∩ B = C ∩ D = ∅
A es finito si:
a) A = ∅ , en este caso card|A| = | ∅ | = 0
b) A ≅ B = A K , en este caso card|A|=| Ν K | = K
Υ
B∈Ø
A∩ B = ∅
Teor: |A ∪ B| = |A| + |B|
A, B, finitos
X
X
*
X
*
X
*
X
X
P N
13
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Vemos que hay más palomas que nidos, luego al menos en algún
nido deberá haber más de una paloma, con lo cual:
B≅ A
Como A es enumerable ⇒ ∃ f: A
→ Ν ∧ ∃ f: Ν
→ A
es biyectiva.
f(n) = a n
A={a 0 , a 1 , a 2 .... a n }
Sea h 0 el primer subíndice tal que a n 0 ∈B
Sea h 1 el primer subíndice tal que a n1 ∈B - {a n 0 }
Μ
Sea h k el primer subíndice tal que a nk ∈B - {a n 0 , a n1 , a nk −1 }
⇓
B es enumerable
14
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tema 2
Conceptos Básicos. Lenguajes.
Alfabetos, cadenas y Lenguajes.
Def: Se denomina Alfabeto ( ∑ ) a un conjunto finito y no vacío de
símbolos.
Ejemplos:
∑ = {0, 1} ∑ = {a}
∑ = {· , -} ∑ = {©, ®}
Sea ∑ = {a, b, c}
a ∈∑
€∉∑
Ejemplos:
w=0101 w=aaaaa
w=· --· · -· w=©©
Ejemplos:
Sea ∑ = {0, 1}
15
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Aclaración: { } ≠∅
Más ejemplos:
Sea ∑ = {x, *}
L 1 ={x} L 2 ={x****,x}
L 3 ={*,**,***,...
L4 =∅ L 5 ={ }
Ejemplo:
∑ = {a}, ∑ *={ , a, aa, aaa........}
Sean x, w∈ ∑ *,
• x· w = concatenación
Sea ∑ = {a, b, c}
a, b∈ ∑ , c∈ ∑ , ab· c = abc
• w n = potencia
ε , si n = 0
wn = n −1 si n ≥ 1
w·w
Sea ∑ = {1,0}
w=010∈ ∑ *
16
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
(010) 0 =
Def: Una cadena es igual a otra sii tienen la misma longitud y los
símbolos en la misma posición.
Ejemplos:
Sea w=123,
Prefijos(w) = { å, 1, 12, 123}
Ejemplos de subcadenas:
Sea w = 123,
Subcadenas sobre w: 1, 2, 3, 12, 23
s = 1 + 2 + 3 + ... + m
s = m + m-1 + ... + 1_
2s = (m + 1) + ( m + 1)+...+( m + 1)
Porque
es subcadena de toda cadena
m(m + 1)
2s = (m + 1)· m ⇒ s = +1
2
P.ej.:
w = abcre; Subsecuencias: "ace", "abre", "acre", "bre", "are"...
17
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
ε si w =
wi = i
y a si w = ay (a ∈ ∑ , y ∈ ∑ *)
P.ej.:
(arroz) i = (rroz) i a = (roz) i r = (oz) i rra = (z) i orra =
i
zorra = zorra
P.ej.:
L 1 = {0, 1}
L 2 = {a, b, cd}
Potencia:
Sea L ⊆ ∑ *,
å si n = 0
L n = n−1
L·L si n ≥ 1
P. ej.:
L = {0, 1}
L0 = { } ≠ ∅
L¹ = L· L 0 =L· { }=L={0, 1}
Teor: ∅ x = ∅, ∀x ≥ 1
Sean L 1 , L 2 ⊆ ∑ *,
L 1 ∪ L 2 = {x∈ ∑ * | x∈L 1 ∨ x∈L 2 }
L 1 ∩ L 2 = {x∈ ∑ * | x∈L 1 ∧ x∈L 2 }
Def: L 1 es sublenguaje de L 2 si L 1 ⊆ L 2
18
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Teor: Dos lenguajes son iguales si tienen todos sus elementos iguales
Teor: Sean L 1 , L 2 ,L 3 ⊆ ∑ *,
L 1 (L 2 ∪ L 3 )=L 1 L 2 ∪ L 1 L 3
(L 1 ∪ L 2 )L 3 =L 1 L 3 ∪ L 2 L 3
∞
i 0
∪ L¹ ∪ L² ∪ L³ ∪ .... Por eso existe ∑ *
L*=
ΥL = L
i =0
∞
L+=
Υ L = L¹ ∪ L² ∪ L³ ∪ ....
i
i =1
Teor: L+ = L* - { }
Complementación:
Sean L 1 , L 2 ⊆ ∑ *,
L 1 - L 2 = { x∈ ∑ * | x∈L 1 ∧ x∉L 2 }
__
∑ * - L = L = { x∈ ∑ * | x∈ ∑ * ∧ x∉L}
Teor: (A*)* = A*
Teor: (A+)+ = A+
Expresiones regulares.
1) ∅ es Expresión regular
2) es Expresión regular
3) ∀ a∈ ∑ , a es Expresión regular
4) Si r 1 y r 2 son expresiones regulares ⇒ r 1 · r 2 , r 1 | r 2 , r* son E.R.
5) Ninguna otra secuencia de métodos es Expresión regular.
a {a}
r1· r 2 L(r 1 )· L(r 2 )
19
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
r1 | r 2 L(r 1 ) ∪ L( r 2 )
r1* L(r 1 )*
Inversa:
Sea L ⊆ ∑ *,
L i ={w∈ ∑ * | w i ∈L}
P.ej.:
L 1 ={abra, cadabra}
L i ={arba, arbadac}
20
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tema 3
Lenguajes Regulares y Autómatas
Finitos.
Expresiones Regulares.
P.ej.:
∑ ={d, c, z}
∑ *={ ,d,c,z,dd,dc,dz,cd,cc,cz,zd,zc,zz......
∑ *≅ Ν
Teor:
℘(∑ *) ≅ 2 Ν
Ningún método de especificación determinará TODOS los
| N |< 2 Ν
lenguajes sobre un alfabeto.
*
·
|
21
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
r|s=s|r r(s|t)=rs|rt
r| ∅ = ∅ |r=r (r|s)t=rt|st
r|r=r r*=r**=r*r*=( |r)*=r*(r| )= |rr*
r | (s | t) = (r | s) | t (r|s)*=(r*|s*)*=(r*s*)*
r = r=r
r(sr)*=(rs)*r
r ∅ = ∅ r= ∅ (r*s)*= å|(r|s)*s
(rs)t=r(st)
Ejercicios:
Describir con palabras qué lenguaje representan las siguientes expresiones regulares:
22
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
M ≡ ( ∑ , Q, F, q 0 , ä)
Descripción de cada uno de los elementos del autómata:
∑ → Como ya sabemos, es el alfabeto, en este caso el alfabeto del autómata
Q → Es el conjunto de estados del autómata. Q ≠ ∅ , ha de ser finito y
Q∩ ∑ =∅
F → F ⊆ Q, es el conjunto de estados de aceptación, o estados finales
q 0 → q 0 ∈Q, es el estado de arranque o inicial del autómata
ä → Es la función de transición del autómata. Viene definida como:
ä:Q × ∑ → Q
ä(q, a) = p
p, q ∈ Q
a∈ ∑
Estructura de un autómata.
a b c d e f g h i j k l m n o p…$
23
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
a
a
0 b
1 2
qi
El estado inicial se representa por
qj
Los estados finales se representarán por
qi a
qj
Las transiciones lo harán como: δ (qi, a) = qj ⇔
24
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
P. ej.:
a, b
a a
0 1 2
b
b
a, b
Ejercicio
Hacer el autómata que reconozca este lenguaje: (a|b)aba*
a, b a b
0 1 2 3
Ejercicio
Hacer el diagrama de transiciones con esta definición del autómata:
Q={0,1,2,3} q i /δ a b
∑ ={a, b}
0 0 1
q 0 =0
1 0 2
F={0, 1, 2} 2 0 3
3 3 3
25
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
a,b
b
b b
0 a 1 2 3
Este autómata, por ejemplo, acepta combinaciones de cadenas que no tengan 3 "b"
seguidas.
Ejercicio
Q={q 0 ,q 1 } q i /δ 0 1
∑ ={0, 1} q0 q0 q1
F={q 0 } q1 q1 q0
q 0 =q 0
0 0
1
q0 1 q1
Teor: Los lenguajes reconocidos por los DFA son los lenguajes regulares
Ejercicio.
Suponiendo ∑ ={0, 1}, dibujar los diagramas de transición que reconozcan:
a) Cadenas terminadas en 00
b) Cadenas con dos "unos" consecutivos
c) Cadenas que no contengan dos "unos" consecutivos
d) Cadenas con dos "ceros" consecutivos o dos "unos" consecutivos
e) Cadenas con dos "ceros" consecutivos y dos "unos" consecutivos
f) Cadenas acabadas en 00 o 11
g) Cadenas con un "uno" en la antepenúltima posición
h) Cadenas de longitud 4.
26
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
a)
1 0
0
0
A 1
B C
1
b)
0 0, 1
1
1
A 0
B C
c)
0
1
1
A 0 B M
d)
1
1 B D
A 0 1
0
C 0
E
e)
0,1
0
1 0
1 B C D E
1
A 0 1
0,1
0
1
F 0
G H 1
I
0
27
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
f)
1
0 1
0 0 1 1
A B C D E
0
1 0
g)
0
1 0,1 0,1
A B C D
h)
0,1 0,1 0,1 0,1
A B C D E
Def: Se dice que r, s∈Q son distinguibles, si ∃ w∈ ∑ *| δ (r, w)∈F ∧ δ (s, w)∉F.
28
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
dicho algoritmo. Si hubiera un conjunto cuyo cardinal fuera uno (es decir, tiene un
elemento), no hace falta comprobar con él las transiciones, puesto que éste no puede
cambiar. Si en algún paso del algoritmo, dos o más estados de un mismo conjunto
transitasen a un mismo conjunto distinto del que están, esos estados se separan en un
conjunto nuevo. El orden en que se aplican los a∈ ∑ puede ser arbitrario. El algoritmo
para una vez que no hayan cambios con NINGUNO de los a∈ ∑ , es decir, con ningún
símbolo del alfabeto. Los estados equivalentes serán aquellos que pertenezcan a un
mismo subconjunto de π n , siendo π n el último paso.
Ejemplo:
C
b
a
b
A a
B D b
E
a
a a
Ahora ni probando con la "a" ni con la "b" vemos que haya cambio, con lo cual el
algoritmo termina. Llegamos a la conclusión de que los estados A y C son estados
equivalentes. El diagrama de transiciones queda pues así:
29
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
b
b
{A,C}
a
B D b
E
a
a a
Otro ejemplo:
1
a b
a
b
b
0 2
a
b b
3 b
4
a
π 0 ={{0, 1, 2, 4}, {3}}
Si cogemos la "a" como símbolo, vemos que el estado 2 transita al estado 1, mientras
que 4 con el mismo símbolo transita a 4, luego los separamos.
π 2 ={{0,1},{2},{4},{3}}
Vemos que el estado 0 con la "a" va al estado 1, que está en el mismo conjunto, y el
estado 1 hace lo mismo; y el estado 0 con la "b" va al estado 3, y el estado 1 hace lo
mismo. Por tanto, no hay cambios y el autómata mínimo se obtiene uniendo los estados
0 y 1, y nos queda un autómata de 4 estados.
30
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Cuando tenemos más de una transición con un mismo símbolo del alfabeto desde un
estado, hablamos de NFA.
Dibujo ilustrativo:
0 a
1 b
2
a
b
b
3 4
El estado 0, para el símbolo "a" tiene dos transiciones, una al estado 1 y otra al estado 4,
es decir, δ (0, a) = {1, 4}
∅ ∈℘(Q )
Aclaración:
Q ∈℘(Q)
31
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo:
0,1 0,1
0 0
1 0
2
1
3
1
4
0,1
δ (A, 0) = {A, D}
δ ({A, D}, 1) = δ (A, 1) ∪ δ (D, 1) = {A, B} ∪ ∅ = {A, B}
δ ({A, B}, 0) = {A, D} ∪ ∅ = {A, D}
δ ({A, D}, 0) = {A, D, E}
δ ({A, D, E}, 1) = {A, B, E}
¿Se acepta la cadena? El último conjunto, {A, B, E} ∩ F= {E}, luego como {E} ≠ ∅ ,
esta cadena se acepta.
32
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
1) Q ' = ℘(Q )
2) ∑ = ∑ '
3) q '0 ={q 0 } (conjunto de estados que contiene el de arranque del NFA)
4) F' ⊆ Q' (aquellos subconjuntos de Q que contengan algún p∈F)
5) δ '({ q1 , q 2 , ... q k }, a) = {p 1 , p 2 ... p m } ⇔ δ ({q 1 , q 2 , ... q k }, a) = {p 1 ,
p 2 ... p m }
Ejemplo:
0 a
1
a
a
2 3
b
∑ ={a, b}, q 0 =0
Empezamos aplicando δ sobre el símbolo inicial Estados nuevos
δ ({0}, a) = {1, 2} Este conjunto no lo teníamos, se añade a la lista → {1, 2}
δ ({0}, b) = { ∅ } {∅}
Ahora hay que marcar estos estados, y ver si salen estados nuevos. {3}
δ ({1, 2}, a) = { ∅ } {2}
δ ({1, 2}, b) = {3} No estaba, lo añadimos
δ ({ ∅ }, a) = δ ({ ∅ }, b) ={ ∅ }
δ ({3}, a) = {2}
δ ({3}, b) = { ∅ }
δ ({2}, a) = { ∅ }
δ ({2}, b) = {3}
33
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ya tenemos todos los estados marcados, ahora ya sólo queda pintar el diagrama de
transiciones, luego el DFA quedaría así:
{1,2} b
a {3}
b
{0} a
a {2}
b
b
a
{∅}
a,b
ä: Q × (Σ ∪ {å})
→℘(Q )
Ejemplo ilustrativo
a
ε 1 2 ε
0 5 a
6
ε
ε
3 b
4
34
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Como ya sabemos, ε representa una cadena vacía, es decir |w|=0, pero también se puede
definir como un símbolo que nos permite transitar a otro estado sin consumir símbolos.
A raíz de esto, se puede definir la ε-Clausura.
P.ej.:
En el anterior diagrama de transiciones,
-cl(0) = {0, 1, 3}
-cl(2)={2, 5, 0, 1, 3} = {0, 1, 2, 3, 5}
Sea r∈Q,
δ (r, a) =
Υδ ( q , a )
q∈R
δˆ (q, )= -cl(q)
a∈ ∑ , w∈ ∑ *
δˆ (r, a)=
Υδ (q, a)
q∈R
En general, δ ≠ δˆ .
L(M)={w∈ ∑ *| δˆ (q 0 , w) ∩ F ≠ ∅ }
Ejemplo:
ε b
1 2 6
5
a ε
3 b 4 ε
6
35
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Para saber si w∈L(M), se procede haciendo la -cl del símbolo inicial. Posteriormente
Sea w = a, |w| = 1
δˆ(0, w)= δ (0, a)
Para empezar, se hace la -cl del símbolo inicial, esto nos dará un conjunto, al que
llamaremos, por ejemplo, S. Hay que marcar (véase def. en pág. 34) ese estado con los
símbolos del alfabeto. A partir de aquí, cada vez que al marcar cada uno de los símbolos
nos salga un conjunto que aun no tiene nombre, se aplica la -cl sobre éste, se le da un
36
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
a
ε 2 3 ε
ε ε
0 1 ε 6 7
ε
4 b
5 a
ε
8
b
10 b
9
∑ ={a, b}
-cl({3, 8})={1, 2, 3, 4, 6, 7, 8} = B
-cl({5})={1, 2, 4, 5, 6, 7} = C
Marcamos dichos conjuntos
δ (B, a)={3, 8} Este ya lo teníamos, es B, luego no hace falta volver a hacer
su -cl.
37
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
C
b
b
a
a
b
a b
S B a D E
L(M) = L(M')
En este algoritmo se trata de aplicar la función δˆ a cada estado con todos los símbolos
a ∈ ∑ . Cuando al aplicarla obtengamos un conjunto con n estados, significa que desde el
estado al que estamos haciendo la δˆ, debemos poner una transición a cada uno de esos
n estados que hemos obtenido al final.
q∈Q
a∈ ∑
38
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo
0 1 2
ε ε
A B C
∑ ={0, 1, 2}
Nota: Esto significa que desde el estado A, con el símbolo 0, hemos de añadir
en el diagrama nuevo una transición a A, otra a B y otra a C
· δˆ(C, 0) =
-cl( δ (
-cl(C), 0)) =
-cl( δ ({C}, 0)) = -cl( ∅ )= ∅
todos aquellos cuya -cl contenga algún estado de aceptación de ese NFA- , en este
caso los tres estados serán de aceptación. El diagrama del NFA sin -transiciones queda
como sigue:
0, 1, 2
0 1 2
0, 1 1, 2
A B C
39
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Construcción de Thompson.
Este algoritmo nos permite convertir una expresión regular en un NFA- . Para ello, se
a
a∈ ∑
(α )
α |β
(β )
(α )
(β )
α· β
(α )
α*
40
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo:
Sea α =ba*
a
0 1
b
2 3
a
0 1
ε ε
4 ε
5
b· a*
ε
Concatenación
a
0 1
ε ε
2 b
3 ε
4 ε
5
Otro ejemplo:
α =01|1*
41
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
A 0
B ε
C 1
D
1*
ε
1
F G
ε ε
E ε
H
01|1*
A 0
B ε
C 1
D
ε ε ε
I F
1
G J
ε ε
ε ε
E ε
H
Hay 3 reglas:
1) A 0 =L(M)
2) Es posible que A i = ∅
3) Si q i ∈F, ε ∈ Ai
42
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo:
a b
0 1 2
a
a, b
b
5 a, b
b
3 a
4
A 0 = aA 1 ∪ bA 3
A 1 = aA 5 ∪ bA 2
Regla 3, Si q i ∈F, ε ∈ Ai , es decir, como es
A 2 = aA 5 ∪ bA 5 ∪
de aceptación, se añade
A 3 = aA 4 ∪ bA 5
A 4 = aA 5 ∪ bA 5 ∪
A5=∅
Como A 5 = ∅ ,
A 4 = aA 5 ∪ bA 5 ∪ =a ∅ ∪ b ∅ ∪ = ∅ ∪ ∅ ∪
=
A 3 = aA 4 ∪ bA 5 = a ∪ b ∅ = a
A 2 = aA 5 ∪ bA 5 ∪ = A 4
A 1 = aA 5 ∪ bA 2 = a ∅ ∪ b = b
A 0 = aA 1 ∪ bA 3 = ab ∪ ba.
0 b
1
En este ejemplo,
A 0 =aA 0 ∪ bA 1
A1=
43
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Luego, A 0 =aA 0 ∪ b = aA 0 ∪ b
???
En principio este sistema nos ha dado una expresión sin solución, ya que la función A 0
depende de sí misma. Estos casos tienen una única solución, y se aplica el llamado
Lema de Arden.
!
X = AX ∪ B ⇔ X=A*B
C = C ∩ AC ⇒ C ⊆ AC
∉A. Es absurdo, la cadena más corta de AC ha de ser más larga que la cadena más
corta de C. Esto sólo es posible si C = ∅ , con lo cual hemos llegado al absurdo por
suponer que había otra solución que no fuese X = A*B, con lo cual ésta es única.
Otro ejemplo
a b
0 a
1 a
2 a
3 b
4
A 0 =aA 1
A 1 =aA 2 ∪ bA 4
44
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
A 2 =aA 3 ∪ bA 4
A 3 =aA 3 ∪ bA 4 ∪ ε
A 4 =bA 4 ∪ ε
Solución:
Arden
A 4 = bA 4 ∪ ε = b* = b*
A 3 = aA 3 ∪ bA 4 ∪ ε = aA 3 ∪ (bb* ∪ ε ) = aA 3 ∪ b* = a*b*
A 2 = aA 3 ∪ bA 4 = a(a*b*) ∪ bb* = a+b* ∪ b+
A 1 = aA 2 ∪ bA 4 = a(a+b* ∪ b+) ∪ bb* = aa+b* ∪ ab+ ∪ b+
A 0 = aA 1 = a(aa+b* ∪ ab+ ∪ b+) = aaa+b* ∪ aab+ ∪ ab+
1) w = xyz
2) | xy |≤ n
∀ L ⊆ ∑ *, ∃ n∈Ν | si w∈ ∑ *, w∈L con |w| ≥ n ⇒
3) | y |≥ 1
4) xy y z ∈ L, ∀k ∈ N
Teor: Si un lenguaje cumple el lema del bombeo, PUEDE que sea regular y
puede que no. Si un lenguaje no lo cumple, entonces es únicamente
cuando podemos afirmar que no es regular.
Dem:
L={a m b m | m ≥ 0}
Sea n∈Ν
(Nota: ¡n no se debe concretar!)
Sea w = a n b n .
45
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
|w| = 2n ≥ n.
Si w∈L, ha de ocurrir:
1) w = xyz
2) |y| ≥ 1
3) |xy| ≤ n
4) xy k z ∈L, ∀ k∈Ν
w= a n b n =,aaa...a, ,bbb...b,=xyz
n n
Entonces sea x = a , y = a s , y por tanto z = a n −( r + s ) b n
r
Otro ejemplo.
Dem:
2
Sea L = {a i | i ≥ 1}
Sea n∈Ν
2
Sea z∈L; z = a n ; |z| = n² ≥ n, ∀ n.
1) z = uvw
2) |v| ≥ 1
3) |uv| ≤ n
4) uv r w∈L, ∀ r∈Ν
Luego, L no es regular.
46
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
__
Teor: Sea L ⊆ ∑ *, si L es regular ⇒ L es regular.
47
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tema 4
Gramáticas. Lenguajes
independientes del contexto.
Gramáticas.
Def: Una gramática es una cuaterna formada de la siguiente manera:
G ≡ (V, ∑ , S, P)
Ejemplo:
1) E → E + E
2) E → E * E
3) E → (E)
4) E → a
S=E
V={E}
P={1), 2), 3), 4)}
∑ ={+, *, (, ), a}
E * E
a ( E )
E + E
a a
Vemos que los nodos hoja corresponden a lo que nos pedía el ejercicio, luego eso sería
una manera de llegar a la cadena w.
48
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
derivaen
Si (A → γ )∈P, αAβ ⇒ α γ β
P.ej:
n 1 n −1
α⇒β → α ⇒ γ ⇒ β
*
Notación: α ⇒ β se lee: α en una serie de derivaciones deriva en β .
P. ej.:
En la gramática de antes:
E⇒a
E ⇒ (E) ⇒ (a)
E ⇒ (E) ⇒ ((E)) ⇒ ((a)) L(G)={a, (a), ((a)), a+a,....}
*
E ⇒ E+E ⇒ a+a
S→t
L(G)={t}
S → Sa
S ⇒ Sa ⇒ Saa ⇒ Saaa ⇒ Saaaa ...
L(G)= ∅ , ya que esta gramática nunca "para".
S → Sa | e
L(G)=ea*
49
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
P.ej.:
S → 0A
A → 10A |
L(G)=L(0(10)*)
Otro ej.:
S → S10|0
S⇒0
S ⇒ S10 ⇒ 010
S ⇒ S1010 ⇒ 01010
L(G)=L(0(10)*)
Teor: Dos gramáticas son equivalentes si los lenguajes que generan son el
mismo, es decir, G1 ≡ G2 ⇔ L(G1 ) = L(G2 ) . Vemos que esto ocurre en
los dos ejemplos anteriores.
V=Q
∑ = ∑
S = q0
P = {(q, ap) | δ (q, a)=p} ∪ {(q, å) | q∈F}
50
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo:
a
B a, b
b a, b
A C
G ≡ (V, ∑ , S, P)
NFA, M ≡ ( ∑ , Q, F, q 0 , δ )
q1 a2
q2 qn
a1 an
A B
51
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
q1 a2
q2 qn
a1 an
A f
Def: Las gramáticas independientes del contexto son un caso particular de las
anteriores. Se definen así:
G ≡ (V, ∑ , S, P)
A→α
A∈V, α ∈( ∑ ∪V )*
P. ej.:
S → aSb | L(G)={a n b n | n ≥ 0}
Como vimos en el tema pasado, por el lema del bombeo demostramos
que no es regular, sin embargo ahora hemos dado una gramática que
genera este lenguaje, de lo cual concluimos que el conjunto de los
lenguajes independientes del contexto es un superconjunto del de los
regulares.
Lenguajes regulares
Propiedades:
52
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
2) Hojas: ∑ ∪ { }
P. ej.:
S → AB
A → aA | a
B → bB | b
A B
A A b B
a b B
No es situación normal que dada una cadena tenga siempre el mismo AAS.
P.ej.:
S → SbS | ScS | a
Como vemos, siempre se sustituye el símbolo que está más a la derecha hasta formar la
cadena, que es w.
53
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
S c S
S b S a
a a
S b S
a S c S
a a
Def: Se dice que una gramática es ambigua si una cadena tiene más de un
árbol de análisis sintáctico distinto. Si existe una cadena con más de una
derivación a la izquierda o a la derecha, también es ambigua.
Ejercicio
Ver si la siguiente gramática es ambigua o no, si w = a:=b+c*a
∑ ={a, b, c, +, *, (, ), :=}
Los símbolos de este alfabeto son llamados tokens.
P
S → I:=E
I → a|b|c
E → E + E | E * E | (E) | I
V={S, I, E}
54
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Hemos encontrado dos distintas derivaciones, con lo cual queda demostrado que dicha
gramática es ambigua.
Simplificación de gramáticas.
Ejemplos de gramáticas mal escritas
S→A
A→B
B→C ≡ S → a|S
C→D
D → a|A
Ej
S → Aa | B | D
B→b
A → aA | bA | B
C → abd
1ª etapa
Creamos un nuevo conjunto llamado V', que en principio es vací
o.
V '={ ∅ }
Como primer paso, metemos en el conjunto todos aquellos no terminales que producen
SÓLO terminales, en alguna de sus producciones. Vemos que es el caso de de B y C,
luego,
V '={B, C}
Como segundo paso, metemos todos aquellos no terminales que en alguna de sus
producciones tengan algún terminal. Es el caso de S (S → aA) y A (A → aA | bA).
V '={B, C, S, A}
Como último paso, hay que eliminar todas aquellas producciones que no estén en el
conjunto V ', vemos que en este caso únicamente es D, que está en la producción S. Esto
ocurre ya que desde S se puede llegar a D, pero la producción D no está, luego sobra.
De momento la gramática nos queda:
55
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
S → Aa | B
B→b
A → aA | bA | B
C → abd
2ª etapa
Definimos un conjunto J que será el de variables a analizar. Inicialmente contiene el
símbolo S. Definimos el conjunto V '', que también contiene inicialmente el símbolo S.
Y sea T 'el conjunto de símbolos terminales.
J= V ''={S}
T '={ ∅ }
Paso 1:
Sacamos un no terminal de J, en este caso únicamente podemos sacar S.
Luego vamos a analizar S, S → Aa | B.
Para cada producción de S, añadimos a V ''todos los no terminales de dicha producción,
y también añadimos a J dichos no terminales, ya que los analizaremos. En este caso:
V ''={S, A, B}, J={A, B}
También añadimos a T 'los terminales que haya en dicha producción, en este caso:
T '={a}
Paso 2:
Repetir paso 1. Sacamos de J un no terminal, A por ejemplo. A → aA | bA | B
Vemos que todos los no terminales de A, ya están en V '', luego no hacemos cambios. Y
también están o estuvieron en J, pero vemos que para el conjunto T ', aparece el
terminal "b", que no estaba. Lo añadimos.
V ''={S, A, B}; J={B}; T '={a, b}
Paso 3:
Sacamos de J otro no terminal, el único que nos queda, B. B → b
Evidentemente, como no tiene producciones de no terminales, J se queda vacío, y V ''
no sufre cambios. Y tampoco T ', ya que la "b" ya estaba.
S → Aa | B
B→b
A → aA | bA | B
Otro ejemplo
S → AB|a
A→a
56
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
1ª etapa
V '={ ∅ }
Metemos las variables que generen algún terminal.
V '={S, A}
Vemos que B no está, eliminamos toda la producción donde se encuentra esa variable.
La gramática queda:
S→a
A→a
2ª etapa
J= V ''={S}
T '={ ∅ }
Paso 1:
Analizando S. S → a
J={ ∅ }
V ''={S}
T '={a}
S→a
*
Def: Un símbolo no terminal es anulable si A ⇒
Luego para cada elemento de H, deberemos quitar ε , esto se hace del siguiente modo:
Otro ejemplo
S → Abb | ABC
A → aA |
B → bB |
C → abC | AB
57
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
H={A, B, C, S}
S → ABb | Ab | Bb | b
S → ABC | AB | AC | BC | A | B | C
A → aA | a
B → bB | b
C → abC | ab
C → AB | A | B
S→
(ya que S es anulable)
A→B
B → w|c
Ejemplo:
S → A|Aa
A→B
B → C|b
C → D|ab
D→b
Llamaremos a H al conjunto de las parejas que están compuestas por un no terminal que
produce y otro producido, es decir, si por ejemplo A → B, en el conjunto deberíamos
añadir el par (A, B). Por esta regla, tenemos:
Ahora tenemos que tener en cuenta todos los pares de la forma (A, B) y (B, C), entonces
debemos añadir el par (A, C), y así sucesivamente. Luego,
H={(S, A), (A, B), (B, C), (C, D), (S, B), (S, C), (S, D), (A, C), (A, D), (B, D)}
S → Aa
B→b
C → ab
D→b
58
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Y ahora, con cada uno de los pares de H, formamos la gramática final. Lo hacemos
mirando los dos símbolos del par, es decir, si tenemos (S, B), deberemos añadir una
producción S → B, mirando antes en la anterior gramática qué es lo que produce B, y
vemos que en este caso, B → b, luego la producción sería S → b. Al final, la gramática
queda:
S → Aa | b | ab
B → b | ab
C → ab | b
D→b
A → b (no sufre modificación)
Teor: Cuando haya que limpiar una gramática, el orden a seguir será siempre
éste:
1) Eliminar producciones inútiles
2) Eliminar producciones vacías
3) Eliminar producciones unitarias
4) Eliminar producciones inútiles
En este caso habría que sustituír la producción A → Sd de tal manera que se elimine la
recursividad y a la vez no se modifique el lenguaje que genera dicha gramática. En
principio dejamos la producción S igual, y convertimos la producción Sd a lo siguiente:
Si S → Aa | b,
Sd = Aad | bd (se sustituye la S por todas las producciones de S, concatenadas con la d
que ya estaba).
59
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Sabiendo que:
A→ β T |β
T → α T |α
S → Aa | b
A → bdT | T | bd |
T → cT | adT | c | ad
A → BB | a
B → AA | b
Se convierte en:
A1 →A 2 A 2 | a
A 2 →A1A1 | b
A1 →A 2 A 2 | a
A 2 → A 2 A 2 A 1 | aA 1 | b
A1 →A 2 A 2 | a
A 2 → aA 1 A 3 | bA 3 | aA 1 | b
A 3 → A 2 A1A 3 | A 2 A1
A1 →A 2 A 2 | a
A 2 → aA 1 A 3 | bA 3 | aA 1 | b
A 3 → aA 1 A 3 A 1 A 3 |bA 3 A 1 A 3 |aA 1 A 1 A 3 |bA 1 A 3 |aA 1 A 3 A 1 |bA 3 A 1 |aA 1 A 1 |bA 1
A 1 → a | aA 2 A 3 A 2 | bA 3 A 2 | aA 2 A 2 | bA 2
60
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
A 2 → aA 1 A 3 | bA 3 | aA 1 | b
A 3 → aA 1 A 3 A 1 A 3 |bA 3 A 1 A 3 |aA 1 A 1 A 3 |bA 1 A 3 |aA 1 A 3 A 1 |bA 3 A 1 |aA 1 A 1 |bA 1
S → CA | DB
A → CE | DS | a
B → DF | CS | b
C→b
D→a
E → AA
F → BB
B, C∈V, a∈ ∑
61
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Sea L CFL | å∉ L
∃ k∈Ν | si z∈L, |z|>k:
1) z = uvwxy
2) |vwx| ≤ k
3) uv i wx i y∈L, ∀ i ≥ 0
4) |vx| ≥ 1 (es decir, v y x no pueden ser ε a la vez)
Dem:
L={a i b j | j = i²}
Sea k la constante del lema del bombeo.
2
Sea z = a k b k ∈L
Si |z| > k ⇒
1) z = uvwxy 3) |vx| ≥ 1
2) |vwx| ≤ k 4) uv i wx i y∈L, ∀ i ≥ 0
2
Si z = a k b k = uvwxy
Supongamos v = a r b s ⇒ v i = (a r b s ) i ⇒ uv i wx i y∉L, porque habría símbolos b
antes que a, por ejemplo:
v² = a r b s a r b s .
b) v = b r x = b s
|vx| ≥ 1 ⇒ r + s ≥ 1 (3)
2
+r +s
z i = uv i wx i y = a k b k ∉L, ya que k² + r + s ≠ k²
c) v = a r x = b s
|vx| ≥ 1 ⇒ r + s ≥ 1 (3)
2 2
z i = uv i wx i y = a k −r + ri b k − s + si
= a k +(i −1) r b k + ( i −1) s
∉L, ya que (k+(i-1)r)² ≠ k²+(i-1)s
Luego, vemos que el lenguaje no cumple el lema del bombeo, con lo cual no es CFL.
62
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Otro ejemplo
si z = a n b n c n = xyrst
Como ocurre en 2), |yrs| ≤ n, las cadenas |ys| no pueden contener simultáneamente
símbolos a y c, porque entre la última a y la primera c tiene que haber al menos una b.
a) y = a p s = aq
(3) |ys| ≥ 1 ⇒ p + q ≥ 1
z² = xy²rs²t = a n + 2 p + 2 q b n c n ∉L, ya que el número de "a" es mayor que el número
de "b" o "c"
b) y = b p s = bq
Lo mismo
c) y = c p s = cq
Lo mismo
d) y = a p s = bq
z² = xy²rs²t = a n+ p b n+ q c n ∉L, salvo que p+q = 0, pero p+q ≥ 1
e)y = b p s = cq
sea z 0 = xy 0 rs 0 t = a n b n− p c n−q ∉L
Teor: Existen algoritmos para determinar si una CFG es finita, infinita o vacía.
Teor: Una CFG es vacía si en la eliminación de símbolos inútiles resulta
eliminada S
Teor: Una CFG es finita si no tiene ciclos dirigidos
Teor: Una CFG es infinita si tiene ciclos dirigidos.
S
Ejemplos
S → AB
A → BC | a A B
B → CC | b
C→a
C
63
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
B C
S → AB | BC
b a a b a
A → BA | a
1 B A, C A, C B A, C
B → CC | b
2 A, S B S, C A, S
C → AB | a
3 ∅ B B
4 ∅ S, C, A
Sea por ej, w = baaba
5 S...
64
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Supongamos que queremos hallar la casilla marcada con "x". El sentido de los punteros
entonces es el siguiente:
b a a b a
1
2
3
4 x
5
Supongamos que tenemos la misma gramática que antes, pero la cadena es ahora
w = bbab
S → AB | BC
b b a b
A → BA | a
1 B B A, C B
B → CC | b
2 ∅ A, S S, C
C → AB | a
3 A S, C
4 S, C
w = bbab
Vemos que S está en la última casilla de la primera columna, luego w∈L(G) también.
65
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
M ≡ (∑, Q, δ , q 0 , F , Γ, Z )
Γ es el denominado Alfabeto de Pila (es decir, los símbolos que se pueden usar en la
pila).
δ : Q× ( ∑ ∪ ε ) × Γ →℘(Q × Γ*)
(p, a, b) α {(q, w)}
Puede ocurrir:
· δ (p, a, b)={(q, )} (el autómata quita el símbolo b y no inserta nada
También se llama desapilar)
· δ (q, , a)={((p|q), aa)} (el autómata apila el símbolo a)
Ejemplo
Sea M un autómata definido así:
Q={q 0 ,q 1 ,q 2 ,q 3 } F={q 3 } ∑ ={a, b} Γ ={Z, A} q0 = q0
Q /δ (a, Z) (b, Z) ( , Z)
(a, A) (b, A) ( , A)
q0 {q 1 , AZ)(q 3 , )}
{(q 3 , )}
q2 {(q 3 , )}
{(q 2 , )}
q3
L={a i b i | i ≥ 0} ∪ {a}
66
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
D.I.= (p, u, w) ∈Q × ∑ * × Γ *
p es el estado actual
u es la cadena que queda por leer
w es el contenido de la pila (se lee en este sentido: )
p, q ∈ Q
a∈ ∑ Símbolo para representar una transición
x∈ ∑ *
b∈ Γ
α, β ∈ Γ *
*
Nota: | − significa que en cierto número de pasos llega a otra D.I.
Sea M ≡ (∑, Q, δ , q 0 , F , Γ, Z )
*
· L(M)={w∈ ∑ * | (q 0 , w, z) | − (p, ε , α ) para algún p∈F, α ∈ Γ *}
67
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
P.ej.:
NFA ≡ ( ∑ , Q, F, q 0 , δ )
PDA ≡ (∑, Q, δ , q 0 , F , Γ, Z ) .
a
A B
Q={A, B}
∑ ={a} Q/ δ (a, Z)
q 0 =A A {(B, Z)}
F={B} B {(B, Z)}
Sea
, Q, δ , q 0 , F , Γ, Z ) tal que L(M) = L(G)
G ≡ (V, ∑ , S, P), y M ≡ (∑'
Q={A, B, C}
F={C}
q 0 =A
∑ = ∑'
Γ ={Z} ∪ V ∪ ∑
Z=Z
δ (B, , Z) = {(C, )}
L(M) = L(G)
Ejemplo:
Buscar un autómata tal que:
L={w∈{a, b}* | n a (w)=n b (w)} (el número de "a" sea igual al de "b")
Q/ δ ( ,Z)
(a,Z) (b,Z) (a,A) (b,A) (
,A) (a,B) (b,B) (
,B)
Q={q 0 , q 1 }, F={q 1 } q0 {(q 1 , )} {(q 0 ,AZ)} {(q 0 ,BZ)} {(q 0 ,AA)} {(q 0 ,
)} {∅} {(q 0 ,
)} {(q 0 ,BB)} {∅ }
Γ ={Z, A, B} q1
68
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo:
S → aSa | bSb |
δ (q 0 , )={(q 1 , SZ)}
δ (q 1 , a, a)= δ (q 1 , b, b)={(q 1 , )}
δ (q 1 , , Z)={(q 2 , )}
Nota: M nunca quitaría Z' de la pila y por lo tanto no podría aceptar por
pila vacía.
69
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tipos de producciones:
a) (S → <q 0 Z p>)∈P, ∀p ∈ Q
b) Si (p, ε ) ∈ δ (q, a, A) ⇒ (<q A p> → a) ∈P
c) Si (p 0 , α ) ∈ δ (q, a, A), α = B1 B2 ...Bm ,
<p 0 α p m >=<p 0 B 1 p 1 >=<p 1 B 2 p 2 >=<p m −1 B m p m >, ∀pi ∈ Q
Ejemplo:
δ (q 2 ,b, A)={(q 2 , )}
δ (q 2 , , A)={(q 2 , )}
δ (q 2 , , Z)={(q 3 , )}
6) <q 2 Z q 3 > →
Aplicando c)
→ 1) <q 1 Z q 1 > → a <q 1 A q 1 ><q 1 Z q 1 > | a<q 1 A q 2 ><q 2 Z q 1 >
| a<q 1 A q 3 ><q 3 Z q 1 >
70
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Otro ejercicio
Sea el PDA: Q ={q 1 , q 2 }, Γ ={A, Z}, ∑ ={a, b}, F={q 2 }
Hallar la gramática.
1) δ (q 1 , a, Z) = {(q 1 , AZ)}
2) δ (q 1 , b, A) = {(q 1 , AA)}
3) δ (q 1 , a, A) = {(q 2 , )}
71
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tema 5
Máquinas de Turing.
Una máquina de Turing se caracteriza porque tiene memoria infinita. La
máquina puede escribir en la cinta, y luego moverse.
Dibujo ilustrativo
q0
q5 q1
q4 q2
q3
δ : Q× Γ → Q × Γ × {L, R}
(q, a) α (p, b, x)
p, q∈Q
a, b∈ Γ
x∈{L, R}
{L, R} es el conjunto que define el movimiento del autómata por la cinta. L indica que
después de realizar la operación, dicha máquina se mueve hacia la izquierda (Left), y R,
que se mueve a la derecha (Right). Hay también otra opción que es S, y significa
quedarse parado (Stop), que equivale a moverse primero a la izquierda y luego a la
derecha, o primero a la derecha y luego a la izquierda.
L = {a n b n c n | n ≥ 0} es Turing-Computable.
72
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo
a b c d
q5
δ (q 5 , b) = (q 90 , o, R)
a o c d
q 90
Ejemplo
a a b b a a b b
q1 q1
a a a b a a a a
q1 q1
a) (q i , w 1 aw 2 ), q i ∈Q, w 1 , w 2 ∈ Γ *, a∈ Γ
b) a 1 a 2 ...a k q i a k +1 a k + 2 a n ≡ (q i , a 1 a 2 ...a k a k +1 a k + 2 a n )
73
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Usando la forma b)
Ejemplo
Ejemplo
L(M)=L(a*)
Q = {q 0 , q 1 }, Γ ={a, b, }, q 0 =q 0 , F = {q 1 }, ∑ ={a}
δ (q 0 , a)=(q 0 , a, R)
δ (q 0 , )=(q 1 , , L)
Veamos ahora otro ejemplo para el mismo lenguaje pero con una TM distinta.
Q = {q 1 , q 2 ,q 3 }, Γ = {a, b, }, q 0 =q 1 , F = {q 3 }, ∑ ={a, b}
74
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
δ (q 1 , a)=(q 1 , a, R)
δ (q 1 , b)=(q 2 , b, R)
δ (q 1 , )=(q 3 , , S)
Ejercicio
Hacer una TM que reconozca el siguiente lenguaje.
L={a n b n | n ≥ 1}
δ (q 3 , d)=(q 3 , d, R)
δ (q 3 , )=(q 4 , , S} Aceptará si estando en q 3 lee un blanco en la cinta,
porque habrá igual número de "c" que de "d"
75
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
δ 0 1
q0 ---------------- (q 1 , 0, R)
q1 (q 2 , 1, R) (q 1 , 1, R)
q2 (q 3 , 0, L) ----------------
q3 (q 0 , 0, R) (q 3 , 1, L)
1/1
q0
1/0
L R q1
0/0 0/1
0/0
q3 L R q2
1/1
Como vemos, cada transición tiene asociada un i/j. La i corresponde al símbolo que lee
en la cinta actualmente, y la j al símbolo con el que reemplazará antes de moverse dicho
símbolo i. Por ejemplo, 0/1 implica que leyendo un 0 en la cinta, lo sustituirá por un 1.
Simplificaremos aún más el diagrama anterior, cuando tengamos transiciones del tipo
0/0, escribiremos simplemente un 0, e igualmente con 1/1, escribiremos un 1. Es decir:
a/a ⇒ a, ∀ a ∈ Γ
Por otro lado, si tenemos una transición i/j, donde i = j, hacia un mismo estado, esa
transición se puede obviar y no dibujarla, ya que en realidad nos estamos quedando en
el mismo estado.
Por último resaltar que aquellas transiciones que no estén definidas, como por ejemplo
en este caso, δ (q 0 , 0), se debe dibujar una transición saliente del estado, pero que no
incide en ningún otro estado, sino se queda "en el aire". Entonces, el anterior diagrama
nos quedaría del siguiente modo
76
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
0
1/0
R R
0 0/1
0 1
L R
0
q3 L R q2
1/1
Ejercicio
Hacer el diagrama de transiciones para el autómata L={a n b n | n ≥ 1}
bcb cb
a/c
R R
d c b/d
abc R L
bb
abcdb
L
77
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Ejemplo de suma
F(m, n)=n + m
q/a a
q1 (q 1 , a, R) ----------------
q2 (q 2 ,a, R) (q 3 , ,L)
q3 (q 4 , b, L) ----------------
q4 (q 4 , a, L) (q 5 , , R)
b/a b a/b b
R R L L R
b b b,b b b , b, a
M 1 ≡ (∑, Q1 , q 01 , δ 1 , Γ, F1 , )
M 2 ≡ (∑, Q2 , q 02 , δ 2 , Γ, F2 , )
Se supone que Q 1 ∩ Q 2 = ∅ .
78
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
M 1 · M 2 ≡ (Q, ∑, δ , q 0 , F , Γ, )
Q= Q 1 ∪ Q 2
q 0 =q 01
F=F 2
δ ( q, a )
· δ 2 (q, a) si q∈Q 2
M. T. Multicinta → δ :Q× Γ n
→ Q× Γ n × {L, R, S} n
Tiene n cintas con las que se puede operar simultáneamente.
M. T. no determinista → δ : Q × Γ
→ ℘ (Q × Γ × {L, R} )
M. T. universal (Mu)
Toma como entrada una cadena y una codificación de una T. M. y simula el
comportamiento de la T. M. ante la entrada. Mu(M, w)
79
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
δ (q 1 , a 1 ) = (q 1 , a 1 , R) → 010101010110
δ (q 1 , a 2 ) = (q 3 , a 1 , L) → 01011011101010
w no
M no
?
sí
no
no
sí
M sí
80
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
__
Teor: Si L es recursivo, entonces L es recursivo, es decir, para siempre. Esto
no ocurre en los recursivamente enumerables.
__
Teor: ∃ L. R. E. | L no es L. R. E.
__
Teor: Si un lenguaje L y su complementario L son recursivamente
__
enumerables, entonces L y L son recursivos.
__
Dados L, L ⊆ ∑ *
__
a) L y L son recursivos
__
b) Ni L ni L son recursivamente enumerables.
c) Uno de los dos es recursivamente enumerable pero no recursivo y el otro no
es recursivamente enumerable.
3) M puede ser realizada por un humano usando lápiz y papel sin ayuda
externa.
81
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Recursivamente Enumerables
Recursivos
Regulares
82
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Tema 6
Resolubilidad.
Dado ∑ , sea L ⊆ ∑ *
Problemas
Sí
π AMB (G)
No ⇒ π FIND = No
No ⇒ π AMB = No
π FIND
Sí (w) ⇒ π AMB = Sí
83
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
π DFA (M, w)
Instancia ( π HP (M, w))
π AMB (G)
Dado π , D π ={ instancias de π }
D π =S π ∪ N π
Sπ ∩ Nπ =∅
Def: Dado π y π ', se dice que π se reduce a π 'si un algoritmo que resuelva
π 'pueda usarse para resolver π .
Problema de la parada
π HP
∑ * ={w 1 , w 2 ,w 3 ..............}
TM( ∑ )={M 1 , M 2 , M 3 ...........}
84
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES NICOLÁS KOVAC NEUMANN (Revisado Julio/2005)
Supongamos M HP (M, w)
→ sí o no.
Sea w∈ ∑ * ,
Para ⇒ Paso 4)
M HP (M k , w k )
Conclusión: ∃ M HP
85