Instruction manuals">
Tutorial Lenguajes Formales y Automatas
Tutorial Lenguajes Formales y Automatas
Tutorial Lenguajes Formales y Automatas
1
Notas de Lenguajes Formales y Autómatas
Autómata finito
1. Alfabetos y lenguajes
Los lenguajes se forman de palabras y las palabras se forman de sı́mbolos de un
alfabeto.
Definición 1. Un alfabeto Σ es un conjunto no vacı́o y finito de sı́mbolos.
Ejemplo 1. El conjunto Σ = {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z}
es un alfabeto llamado alfabeto inglés.
Ejemplo 2. El conjunto Σ = {α, β, δ} es un alfabeto.
Ejemplo 3. El conjunto Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} es un alfabeto.
Definición 2. Una palabra ó cadena sobre el alfabeto Σ es una sucesión
finita de sı́mbolos de Σ.
Ejemplo 4. La secuencia program es una palabra sobre el alfabeto inglés.
También digit, hda y quetzal son palabras sobre el alfabeto inglés, ası́ como bxweh.
En las sucesiones el orden es importante. Esto es, las palabras aba y aab se forman
de los mismos sı́mbolos: dos a y una b, pero su orden de aparición es diferente, por lo
que
aba 6= aab.
Este es un hecho general.
Ası́ como en la teorı́a de conjuntos hay que aceptar a la colección vacı́a como un
conjunto (el conjunto vacı́o ), en la teorı́a de lenguajes formales hay que aceptar a la
palabra vacı́a como una palabra genuina.
Definición 3. Si Σ es un alfabeto, la cadena vacı́a es una palabra sobre
Σ.
Enseguida definimos nuestro principal objeto de estudio.
Definición 4. Un lenguaje A sobre un alfabeto Σ es un conjunto de palabras
sobre Σ.
Ejemplo 5. Sea A = {1, 12, 123, 1234, 123456, 0}. El conjunto A es un lenguaje
sobre el alfabeto Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto B = {1, 11, 111, 1111, . . .}
es también un lenguaje (infinito) sobre Σ. Resulta que también es un lenguaje
sobre Σ.
5
6 1. AUTÓMATA FINITO
2. Operaciones
Definición 6. Si w es una cadena sobre el alfabeto Σ, su longitud se denota
con |w|.
Ejemplo 8. Sea Σ = {0, 1, . . . , 9} y w = 121. Entonces |w| = 3. Además
|| = 0.
Definición 7. La concatenación de palabras es una operación “·”:
· : Σ∗ × Σ ∗ → Σ ∗
(w, z) 7→ w · z = wz
Ejemplo 9. Si w = aba y z = bad entonces w · z = ababad.
Es común omitir el sı́mbolo de la operación de concatenación. Por ejemplo, en el
anterior,
wz = ababad
Notemos las siguientes propiedades generales
(1) Si w, z son palabras entonces |wz| = |w| + |z|.
(2) Si w ∈ Σ∗ , entonces
(a) w = w
(b) w = w
(3) En general wz 6= zw.
2. OPERACIONES 7
w0 =
w1 = ww0 = 122 = 122
w2 = ww1 = 122122
w3 = ww2 = 122122122
Definición 9. Sean w, x ∈ Σ∗ .
(1) Se dice que x es prefijo de w si ∃y ∈ Σ∗ tal que
w = xy
Ejemplo 12.
(1) Si w ∈ Σ∗ entonces w es subpalabra de la misma w, pues
w = w
Esto es, el lenguaje A · B está formado por todas las posibles concatenaciones de
las cadenas de A con las de B. También, como en la concatenación de cadenas, el
sı́mbolo de concatenación “·” se acostumbra omitir y se pone AB = A · B.
Ejemplo 14. Si A = {casa}, B = {pajaro, perro}, entonces
AB = {casapajaro, casaperro}
Entre los lenguajes, el lenguje {} se comporta como 1 con respecto a la operación
de concatenación.
Propiedad 2. Si A es un lenguaje arbitrario, entonces
A{} = A = {}A.
Proof.
A{} = {w | w ∈ A}, por definición de concatenación,
= {w | w ∈ A}
= A;
similarmente se prueba {}A = A.
También se puede hablar de potencia de un lenguaje:
Definición 13. (potencia) Sea n ∈ :
(
n {}, si n = 0
A =
A · An−1 , si n ≥ 1
Ejemplo 15.
(1) 0 = {}
(2) Sea A = {ab} lenguaje formado por sólo una palabra. Entonces
A0 = {}
A1 = A · A0 = A{} = A = ab
A2 = A · A1 = A{ab} = abab
A3 = A · A2 = A{abab} = ababab
etcétera.
Definición 14. Sean A, B lenguajes. Entonces
(1) El lenguaje unión es:
A ∪ B = {x | x ∈ A ∨ x ∈ B}
(2) El lenguaje intersección es
A ∩ B = {x | x ∈ A ∧ x ∈ B}
(3) El lenguaje diferencia es
A − B = {x | x ∈ A ∧ x 6∈ B}
10 1. AUTÓMATA FINITO
Ejemplo 16. Sea Σ = {0, 1} y lenguajes A = {, 0, 10, 11}, B = {, 1, 0110, 11010}.
Luego,
A ∪ B = {, 0, 1, 10, 11, 0110, 11010}
A ∩ B = {, 1}
A − B = {0, 10, 11}
B − A = {0110, 11010}
En general, como los lenguajes son conjuntos, los lenguajes heredan todas las
propiedades y terminologı́a de los conjuntos.
Definición 15. Sean A, B lenguajes sobre un alfabeto Σ. Si A ⊆ B, entonces
se dice que A es sublenguaje de B.
Ejemplo 17. Sea A = {a, aa, aaa, aaaa, aaaaa} y B = {a n | n ∈ }, entonces
A es sublenguaje de B.
En general, si L es un lenguaje sobre un alfabeto Σ entonces L es un sublenguaje
de Σ∗ .
También, recordemos que de la definición de la igualdad de conjuntos podemos
obtener que dos lenguajes A, B son iguales: A = B si y sólo si
(1) A ⊆ B
(2) B ⊆ A
Esta observación nos ayudará a demostrar el siguiente teorema.
Teorema 1. Sean A, B, C lenguajes sobre un alfabeto Σ. Se cumple que
(1) A · (B ∪ C) = (A · B) ∪ (A · C)
(2) (B ∪ C) · A = (B · A) ∪ (C · A)
Proof.
(1) Por contenciones, esto probaremos que
(a) A · (B ∪ C) ⊂ (A · B) ∪ (A · C)
(b) (A · B) ∪ (A · C) ⊂ A · (B ∪ C)
(a): Si x ∈ A · (B ∪ C) entonces x = w · y con w ∈ A y y ∈ B ∪ C; luego
y ∈ B ó y ∈ C. Si y ∈ B entonces x = wy ∈ A · B; y si y ∈ C,
entonces x = w · y ∈ A · C, ası́,
x ∈ (A · B) ∪ (A · C)
(b): Si x ∈ (A · B) ∪ (A · C) entonces x ∈ A · B ó x ∈ A · C. Si x ∈ A · B
entonces x = wy con w ∈ A y y ∈ B ⊆ B ∪ C, luego x = wy con
w ∈ A y y ∈ B ∪ C.
Si x ∈ A · C entonces x = wy con w ∈ A y y ∈ C ⊆ B ∪ C, entonces
x = wy con w ∈ A y y ∈ B ∪ C, luego x ∈ A · (B ∪ C).
En cualquier caso
x ∈ A · (B ∪ C).
(2) Tarea.
Notemos que en general, no es cierto que
A · (B ∩ C) = (A · B) ∩ (A · C)
3. OPERACIONES CON LENGUAJES 11
por la culpa del contrajemeplo siguiente: A = {a, }, B = {}, C = {a}, entonces
B ∩ C = y ası́
A · (B ∩ C) =
mientras que A · B = A = a, y A · C = {aa, a}, por lo que
(A · B) ∩ (A · C) = {a} 6= A · (B ∩ C)
Uno de los concepto fundamentales de la teorı́a es el de cerradura.
Definición 16. Sea A lenguaje sobre el alfabeto Σ.
(1) La cerradura de Kleene o cerradura estrella de A es
A∗ = ∪ ∞
n=0 A
n
que es junto con todas las concatenaciones de palabras sobre Σ que es precisamente
el lenguaje universal Σ∗ . Este razonamiento muestra que nuestra notación para el
lenguaje universal es consistente con la notación de la cerradura de Kleene:
Σ∗
|{z} = Σ∗
|{z}
lenguaje universal cerradura de Kleene
]
(2) f orallk ≥ 1, Ak ⊆ ∪n=0 ∞An = A∗ , entonces
A+ = ∪ ∞
k=1 ⊆ A
∗
12 1. AUTÓMATA FINITO
Proof.
(1) Por demostrar
(a) A · ∪∞ ∞
n=0 An ⊆ ∪n=0 A · An
(b) ∪n=0 A · An ⊆ A · ∪∞
∞
n=1 An
(a): Si x ∈ A · ∪∞ ∞
n=0 An , entoces x = w · y con w ∈ A y y ∈ ∪n=0 An , luego
existe k0 tal que y ∈ Ak0 , ası́ x = wy ∈ A · Ak0 , lo que implica que
x ∈ ∪∞
n=0 A · An .
(b): Si x ∈ ∪∞
n=0 A · An entonces existe k0 tal que x ∈ A · Ak0 , por lo que
x = wy con w ∈ A y y ∈ Ak0 , es decir y ∈ ∪∞n=0 An . Ası́
x ∈ A · ∪∞
n=0 An
3. OPERACIONES CON LENGUAJES 13
Por lo tanto
A · ∪∞ ∞
n=0 An = ∪n=0 A · An .
(2) Tarea.
Teorema 2.
A+ = A · A ∗ = A ∗ · A
Proof.
A · A∗ = A · ∪ ∞
n=0 A
n
= ∪∞
n=0 A · A
n
= ∪∞
n=0 A
n+1
= ∪∞
k=1 A
k
= A+ .
y similarmente A∗ · A = A+ .
Ejemplo 22. Sea {A} = {ab} lenguaje sobre el alfabeto inglés. Tenemos que
A+ = {ab, abab, ababab, . . .} = {(ab)i | i ≥ 1}
el cual es a su vez un lenguaje. Podemos considerar sus potencias
(A+ )2 = A+ · A+
= {ab · ab, ab · abab, ab · ababab, . . . , abab · ab, abab · abab, abab·, ababab, . . . , }
el cual es un sublenguaje de A+ : (A+ )2 ⊆ A+ . De forma similar (A+ )3 ⊆ A+ ,
(A+ )4 ⊆ A+ , . . .. Este es un hecho general.
Lema 2. Sea A un lenguaje. Entonces
(A+ )k ⊆ A+ , ∀k ≥ 1
Proof. Por inducción sobre k. Si k = 1:
(A+ )k = (A+ )1 = A+ ⊆ A+ .
También el resultado es cierto para k = 2:
(A+ )2 = A+ · A+
= A + · ∪∞
n=1 A
n
= ∪∞ +
n=1 A · A
n
n
= ∪∞ ∞
n=1 ∪j=1 A
j
·A
∪∞ ∞ j
n=1 ∪j=1 A · A
n
= ∪∞ ∞
n=1 ∪j=1 A
j+n
⊆ ∪∞
m=1 A
m
= A+
Supongamos cierto que
(A+ )k ⊆ A+ .
14 1. AUTÓMATA FINITO
4. Numerabilidad
Nos proponemos estudiar lo siguientes problemas:
(1) Dado un lenguaje A y x ∈ Σ∗ , ¿x ∈ A∗
(2) Dado un lenguaje A, especificar qué palabras lo componen.
Ejemplo 23. Sea Σ = {a, b}.
(1) ¿Cuántas palabras de longitud 0 hay?: . Sólo una.
(2) ¿Cuántas palabras de longitud 1 hay?: a, b. Dos.
(3) ¿Cuántas palabras de longitud 2 hay?: aa, ab, ba, bb. 4
(4) ¿Cuántas palabras de longitud 3 hay?: 8
(5) ¿Cuántas palabras de longitud n hay?: 2n .
Podemos numerar las palabras de Σ∗ según el siguiente orden
a < ab, aa < ab, a ≤ baaaa
4. NUMERABILIDAD 15
Proof. Sea
L = {A | A es lenguaje sobre Σ} .
L = {A0 , A1 , A2 , . . .} .
Σ∗ = {w0 , w1 , w2 , . . .}
D = {wi ∈ Σ∗ | wi 6∈ Ai } ⊆ Σ∗
A ∪ B, A · B, A∗
Esto es, el conjunto de los lenguajes regulares sobre Σ está formado por el lenguajes
vacı́o, los lenguajes unitarios incluidos {} y todos aquellos obtenidos de estos por
concatenación, unión y la cerradura de Kleene de éstos.
5. LENGUAJES REGULARES Y EXPRESIONES REGULARES 17
{a | i ≥ 0} = {a}∗ es regular
i
Probar que
(a)
A = {w ∈ Σ∗ | w tiene el mismo número de aes que de bes}
(b) Si b y están en A ¿qué más palabras hay en A?
(c) Dar una definición recursiva para que A ⊆ {a, b}∗ contenga todas las
palabras que tienen el doble de aes que bes
(2) Un palı́ndromo es una cadena que se lee igual hacia adelante que hacia
atrás. Por ejemplo, la palabra “a” es un paı́ndromo, al igual que la cadena
“radar”. Dar una definición recursiva de un palı́ndromo (obsérvese que
es un palı́ndromo).
(3) Probar que para los lenguajes A y B, (A ∪ B)∗ = (A∗ B ∗ )∗ .
Tarea 5.
(1) Verificar, aplicando la definición de lenguaje regular, que los siguientes
son lenguajes regulares sobre Σ = {a, b}:
(a) {ai | i > 0}.
(b) {ai | i > n} para n ≥ 0 fijo.
(c) {w ∈ Σ∗ | w termina con a}.
(2) Verificar que el lenguaje de todas las cadenas de ceros y unos que tienen
al menos dos ceros consecutivos, es un lenguaje regular.
(3) Los identificadores de Pascal son cadenas de longitud arbitraria compues-
tas por caracteres alfabéticos y por dı́gitos. Los identificadores de Pascal
deben empezar con un carácter alfabético. ¿Es este un lenguaje regular?
(4) Obtener una expresión regular que represente el lenguaje de los identifi-
cadores de Pascal.
(5) (a) Probar que (r ∪ )∗ = r∗ .
(b) Probar que (b ∪ aa∗ b) ∪ (b ∪ aa∗ b)(a ∪ ba∗ b)∗ (a ∪ ba∗ b) y a∗ b(a ∪ ba∗ b)∗
son equivalentes.
(c) Sobre Σ = {a, b, c} ¿son equivalentes las parejas de expresiones regu-
lares de cada apartado?
(d) (a ∪ b)∗ a∗ y ((a ∪ b)a)∗ .
(e) ∗∗ y .
(f) ((a ∪ b)c)∗ y (ac ∪ bc)∗ .
(g) b(ab ∪ ac) y (ba ∪ ba)(b ∪ c).
(6) Simplificar:
(a) ∗ ∪ a∗ ∪ b∗ ∪ (a ∪ b)∗ .
(b) ((a∗ b∗ )∗ · (b∗ a∗ )∗ )∗ .
(c) (a∗ b)∗ ∪ (b∗ a)∗ .
(d) (a ∪ b)∗ a(a ∪ b)∗ .
(7) Probar que (aa)∗ a = a(aa)∗ .
(8) Simplificar las siguientes expresiones regulares:
(a) ( ∪ aa)∗ .
(b) ( ∪ aa)( ∪ aa)∗ .
(c) a( ∪ aa)∗ a ∪ .
(d) a( ∪ aa)∗ ( ∪ aa) ∪ a.
(e) (a ∪ )a∗ b.
(f) ( ∪ aa)∗ ( ∪ aa)a ∪ a.
(g) ( ∪ aa)( ∪ aa)∗ ( ∪ aa) ∪ ( ∪ aa).
6. AUTÓMATAS FINITOS DETERMINISTAS 23
como se puede notar, tal palabra nos hace llegar al estado de aceptación, por lo
que la palabra a3 b es aceptada.
De donde es claro que el autómata finito determinista de la figura 6 acepta las
palabras del lenguaje de a∗ b.
Ejemplo 30. Sea Σ = {a, b}. Consideremos el lenguaje
A = {(ab)i | i ≥ 1} .
Construir un AFD que acepte únicamente a las palabras de A.
Sol. Recordemos que
A = {ab, abab, ababab, . . .}
de donde al menos la palabra ab debe, en el autómata que construyamos, conducir
a un estado de aceptación. Lo que sugiere que consideremos el diagrama
éste aún no es un AFD, puesto que se requiere que el autómata, en cada estado,
sepa a qué estado nuevo se transita ante la aparición de cualquier letra del alfabeto,
en nuestro caso a y b. Notemos que en nuetro primer diagrama el autómata, en
el estado inicial no sabrá que hacer si aparece una b. Ninguna palabra de A tiene
prefijo b, luego las palabras que comiencen con b, sin importar lo que siga, deben
de ser rechazadas. Esto sugiere:
Otras palabras a rechazar son aquellas que después de a, en lugar de continuar con
b, continuen con a, lo que sugiere
6. AUTÓMATAS FINITOS DETERMINISTAS 25
Otras palabras que deben de ser aceptadas son por ejemplo abab, ababab. La manera
de crear repeticiones es introducir ciclos en el grafo:
con lo cual aceptamos las palabras del tipo (ab)+ . Pero aún debemos rechazar las
palabras que al tener prefijo ab continuen con b:
lo que completa nuestro autómata finito determinista que acepta solamente las
palabras del lenguaje de (ab)+ .
En general cuando en un AFD se hace del estado inicial un estado final, no sólo se
va ha aceptar a la palabra vacı́a, puede que se acepten otras indeseables. Por ejemplo,
en el AFD,
26 1. AUTÓMATA FINITO
que acepta no sólo a la palabra vacı́a , sino que se ”cuela” todo el lenguaje (ab) ∗ . Es
decir, el nuevo autómata acepta a (ab)∗ ∪ a(ba)∗ .
Ejemplo 32. A veces, el útil etiquetar los estados. Por ejemplo
δ a b
q0 q1 q2
q1 q2 q0
q2 q2 q2
Table 1. Tabla de transiciones
6. AUTÓMATAS FINITOS DETERMINISTAS 27
Ejemplo 34. Para el autómata M = (Q, Σ, s, F, δ) con Q = {a, b}, Σ = {a, b},
s = q0 , F = {q0 } y δ definida por
δ a b
q0 q0 q1
q1 q1 q0
le corresponde diagrama de transición
δ a b
q0 q0 q1
q1 q0 q2
q2 q0 q3
q3 q3 q3
luego el diagrama de transición es:
esto es
L(M ) = {w ∈ Σ∗ | w no tiene a b3 como subpalabra}
Si σ1 , σ2 , σ3 ∈ Σ y q0 es estado inicial, el estado resultante de analizar la cadena
es, formalmente,
δ(δ(δ(q0 , σ1 ), σ2 ), σ3 )
esta aplicación se abreviará como
δ(q0 , σ1 σ2 σ3 )
más generalmente:
Definición 25. Sea qi un estado. Se definen
(1) δ(qi , ) = qi
(2) Si w ∈ Σ∗ y w = aw0 con a ∈ Σ y w0 ∈ Σ∗ , entonces
δ(q, aw0 ) = δ(δ(qi , a), w0 )
6. AUTÓMATAS FINITOS DETERMINISTAS 29
y M2 el dado por
Es fácil ver que L(M1 ) = a∗ . También L(M2 ) = a∗ . Luego L(M1 ) = L(M2 ) y ası́
M1 es equivalente a M2
Q = {q0 , q1 , q2 , q3 }
Σ = {0, 1}
F = {q0 }
s = q0
tabién las palabras que después de a le siguen alguna ponecia de b deben de ser
aceptadas. Por lo que añadimos
También las palabras del tipo an b con n ≥ 2 deben de ser aceptadas; se añade
7. AUTOMATAS FINITOS NO DETERMINISTAS 31
Cualesquiera otras palabras diferentes a los modelos anteriores deben de ser rec-
hazadas
Nótese que no es claro que el lenguaje a∗ b ∪ ab∗ sea exactamente el aceptado por
éste autómata. Serı́a más fácil si se permitiera:
Lo anterior significa que ∆ no es una función, pero casi lo es; queremos decir, que
si q ∈ Q y σ ∈ Σ, entonces ∆(q, σ) no es un sólo elemento, sino todo un conjunto:
∆(q, σ) ⊆ Q .
de donde se puede ver que M acepta a (ab)∗ y también a (aba)∗ . Aún más, acepta
a ((ab)∗ (aba)∗ )∗ = (ab ∪ aba)∗ . Se puede mostrar que
L(M ) = ((ab)∗ (aba)∗ )∗
Después, basados en el lema de Arden, daremos un algoritmo para comprobar
igualdades de este tipo.
La definición formal de las palabras aceptadas es:
Definición 28. w ∈ Σ∗ es aceptada si ∆(s, w) contiene al menos un estado
de aceptación, i.e., si
∆(s, w) ∩ F 6= .
Definición 29. Sea M un AFN. El lenguaje aceptado por M es
L(M ) = {w ∈ Σ∗ | w es aceptada por M}
Las transiciones de estados pueden describirse de forma similar a los AFD con δ.
Definición 30. Sea M = (Q, Σ, s, F, ∆) un AFN.
(1) Si X ⊆ Q y σ ∈ Q se define
(
, si X =
∆(X, σ) = S
q∈X ∆(q, σ), si X 6=
(2) Si w ∈ Σ∗ con w = σw0 con σ ∈ Σ y |w0 | > 0 entonces
∆(q, w) = ∆(∆(q, σ), w 0 )
Ejemplo 41. Si Σ = {a, b};
∆(q0 , abaab) = ∆(∆(q0 , a), baab)
= ∆(∆(∆(∆(∆(q0 , a), b), a), a), b)
Ejemplo 42. Consideremos M el AFN con alfabeto Σ = {a, b} y diagrama de
transición
entonces
∆ a b
q0 {q2 }
q1 {q2 } {q2 }
q2 {q4 }
q3 {q4 } {q4 }
34 1. AUTÓMATA FINITO
y ası́,
que son los posibles estados que se obtienen a partir de q0 con transición ab.
Examinemos la palabra abaab:
lo que nos lleva a un estado de aceptación. De aquı́ que abaab se acepta, i.e.,
abaab ∈ L(M )
8. EQUIVALENCIA ENTRE AFD Y AFN 35
esto es, ∆ induce una función, no de estados a estados, sino de conjuntos de estados
a conjuntos de estados:
∆0 : E × Σ → E, E ⊆ 2Q
Ejemplo 44. Sea M el AFN
donde hay nuevos estados marcados por {q0 }, {q1 , q2 } y . Necesitamos calcular
las transiciones de estos nuevos estados. Las del estado {q1 , q2 } son
∆({q1 , q2 }, a) = ∆(q1 , a) ∪ ∆(q2 , b)
= ∪ =
{q1 , q2 } {q3 }
{q3 } {q2 }
{q2 } {q3 }
Donde M 0 es equivalente a M .
Teorema 6. Sea M = (Q, Σ, s, F, ∆) un AFN. Entonces existe M 0 = (Q0 , Σ0 , s0 , F 0 , δ 0 )
un AFD equivalente a M .
Proof. Sea 2Q el conjunto potencia de Q, esto es 2Q es la colección de todos
los subconjuntos de Q. Se define M 0 como sigue:
Q0 = 2 Q
Σ0 = Σ
s0 = {s}
F 0 = {S ⊆ Q | S ∩ F 6= }
0 0 0
δ : Q × Σ → Σ, δ (S, σ) = ∆(S, σ)
Por demostrar que L(M 0 ) = L(M ). Probaremos que
w ∈ Σ∗ es aceptada por M 0 ⇔ w es aceptada por M
Una cadena w ∈ Σ∗ es aceptada por M 0 ⇔ δ 0 (s0 , w) es un estado de aceptación de
M 0 ⇔ δ(s0 , w) ∩ F 6= ⇔ ∆(s, w) ∩ F 6= ⇔ w ∈ L(M ).
Tarea 7. El las siguientes tablas, los estados iniciales están marcados con una
flecha y los estados finales con un asterisco:
(1) Convertir el siguiente AFN a AFD: Σ = {0, 1}
∆ 0 1
→ p {p, q} {p}
q {r} {r}
r {s}
∗s {s} {s}
(2) Convertir el siguiente AFN a AFD: Σ = {0, 1}
∆ 0 1
→ p {q, s} {q}
∗q {r} {q, r}
r {s} {p}
∗s {p}
(3) Convertir el siguiente AFN a AFD y describir informalmente el lenguaje
que acepta: Σ = {0, 1}:
9. -TRANSICIONES 39
∆ 0 1
→ p {p, q} {p}
q {r, s} {t}
r {p, r} {t}
∗s
∗t
Tarea 8. (1) Calcule todas las transiciones (desde el estado inicial) dadas
por las cadenas babba y aabaaaba para determinar si son aceptadas por el
autómata
a, b
a, b
a
- q - q a - qf
q0 q3 q4
b
?
qq1
b
?
qfq2
I
a, b
(2) Sea M el AFN dado por Q = {q0 , q1 }, Σ = {a, b}, s = q0 , F = {q1 } y ∆
dada por
∆ a b
q0 {q0 , q1 } {q1 }
q1 {q0 , q1 }
determinar si a2 b, ba y b2 a están en L(M ). Dibujar el diagrama de tran-
sición para M .
(3) Construir el AFD correspondiente al AFN dado por
a
a, b b
- r - re
6 b
¿qué lenguaje acepta dicho autómata?
(4) Supongamos que M es un AFN que ya es determinista. ¿Qué se obtendrá
si tratamos de convertirlo en un AFD, según el algoritmo expuesto?
9. -transiciones
Se puede extender la definición de los AFN para incluir transiciones que no depen-
dan de ninguna entrada y sin consumir ningún sı́mbolo. Tales se llaman -transiciones.
Ejemplo 45. Sea M el autómata
40 1. AUTÓMATA FINITO
∆ a b
q0 {q1 }
q1 {q2 }
q2 {q2 } {q0 }
Para obtener los estados siguientes a un estado dado se deben de tener en cuenta
a los estados siguientes de las -transiciones. Por ejemplo
Por definición, todo estado es accesible desde sı́ mismo sin consumir ningún sı́mbolo
de entrada. Esto es,
∀q ∈ Q, q ∈ ( − c)(q)
Ejemplo 47. En el autómata
entonces
( − c)(q3 ) = {q3 }
( − c)(q0 ) = {q, q1 , q2 }, ( − c)(q4 ) = {q4 , q1 , q2 }
Definición 34. Sea q un estado y σ ∈ Σ. Se definen los estados que siguen
directamente a q pasando por σ como el conjunto
d(q, σ) = {p ∈ Q | ∃ una transciión de q a p etiquetada por σ}
y si qi1 , . . . , qik son varios estados, se define
k
[
d({qi1 , . . . , qik }, σ) = d(qij , σ)
j=1
∆0 (q1 , a) = {q4 , q5 }
• ∆0 (q1 , b):
( − c)(q1 ) = {q1 }
d(q1 , b) = {q2 }
( − c){q2 } = {q2 }
∆0 (q1 , b) = {q2 }
44 1. AUTÓMATA FINITO
• ∆0 (q2 , a):
( − c)(q2 ) = {q2 }
d(q2 , a) =
( − c) =
0
∆ (q2 , a) = .
0
• ∆ (q2 , b) = .
• ∆0 (q3 , a):
( − c)(q3 ) = {q3 , q1 }
d({q3 , q1 }, a) = d(q3 , a) ∪ d(q1 , a) = ∪ {q4 } = {q4 }
( − c)(q4 ) = {q4 , q5 }
∆0 (q3 , a) = {q4 , q5 }
• ∆0 (q3 , b):
( − c)(q3 ) = {q3 , q1 }
d({q3 , q1 }, b) = d(q3 , b) ∪ d(q1 , b) = {q4 } ∪ {q2 } = {q4 , q2 }
( − c){q4 , q2 } = ( − c)(q4 ) ∪ ( − c)(q2 ) = {q4 , q5 }
| {z }
∆0 (q3 , b) = {q4 , q5 }
• ∆0 (q4 , a):
( − c)(q4 ) = {q4 , q5 }
d(q4 , a) ∪ d(q5 , a) =
∆0 (q4 , a) = .
0
• ∆ (q4 , b):
( − c)(q4 ) = {q4 , q5 }
d(q4 , b) ∪ d(q5 , b) =
∆0 (q4 , b) =
• ∆0 (q5 , b) = ∆0 (q5 , a) = .
Obtenemos que M 0 es
9. -TRANSICIONES 45
Nótese que
L(M ) = {b, ab} = L(M 0 ).
Teorema 7. Sea
M = (Q, Σ, s, F, ∆)
un AFN con -transiciones. Entonces existe
M 0 = (Q0 , Σ0 , s0 , F 0 , ∆0 )
un AFN sin -transiciones tal que
L(M 0 ) = L(M ).
Proof. Se definen
Q0 = Q, Σ0 = Σ, s0 = s
F 0 = {q ∈ Q | ( − c)(q) ∩ F 6= }
y si q ∈ Q y σ ∈ Σ entonces
∆0 (q, σ) = ( − c) d(( − c)(q), σ)
Tenemos que demostrar que
w ∈ L(M 0 ) ⇔ w ∈ L(M ).
Si w ∈ L(M 0 ) entonces ∆0 (s0 , w) ∩ F 0 6= , esto es
∆0 (s, w) ∩ {q | ( − c)(q) ∩ F 6= } 6=
por lo que existe qi ∈ Q tal que
qi ∈ ∆0 (s, w) y ( − c)(qi ) ∩ F 6=
lo segundo indica que qi ∈ F o a qi le sigue un estado final después de una o más
-transiciones:
• ∆0 (q0 , a):
( − c)(q) = {q0 , q1 , q2 }
d({q0 , q1 , q2 }, a) = d(q0 , a) ∪ d(q1 , a) ∪ d(q2 , a) = {q3 } ∪
= {q3 }
( − c)(q3 ) = {q3 }
∆0 (q0 , a) = {q3 }
9. -TRANSICIONES 47
• ∆0 (q0 , b):
( − c)(q0 ) = {q0 , q1 , q2 }
d({q0 , q1 , q2 }, b) = ∪
= ,
∆0 (q0 , b) = .
0
• ∆ (q1 , a):
( − c)(q1 ) = {q1 , q2 }
d({q1 , q2 }, a) = d(q1 , a) ∪ d(q2 , a) = ∪ = ,
∆0 (q1 , a) = .
0
• ∆ (q1 , b) = .
• ∆0 (q2 , a) = .
• ∆0 (q2 , b) = .
• ∆0 (q3 , a) :
( − c)(q3 ) = {q3 }
d(q3 , a) =
∆0 (q3 , a) = .
• ∆0 (q3 , b):
d(q3 , b) = {q4 }
( − c)(q4 ) = {q4 , q1 , q2 }
∆0 (q3 , b) = {q4 , q1 , q2 }.
0
• ∆ (q4 , a):
( − c)(q4 ) = {q4 , q1 , q2 }
d({q4 , q1 , q2 }, a) = d(q4 , a) ∪ d(q1 , a) ∪ d(q2 , a) = ∪
∆0 (q4 , a) = .
0
• ∆ (q4 , b):
d({q4 , q1 , q2 }, b) = d(q4 , b) ∪ d(q1 , b) ∪ d(q2 , b) = {q0 }
( − c)(q0 ) = {q0 , q1 , q2 }
∆0 (q4 , b) = {q0 , q1 , q2 }.
Hemos obtenido M 0 :
48 1. AUTÓMATA FINITO
Tarea 9. (1) Calcular ∆(q0 , abb) y ∆(q0 , aba2 b) para el AFN siguiente
q0 q1 q2
- er a- r b- r a - rq3
6o
S
a Sb b
S ?
r S r/
q5 b q4
(2) Obtener ( − c)({q1 , q4 }) y ( − c)(d(q3 , b)) para el AFN siguiente
(2)
(3)
(4)
es decir
w ∈ L(M1 ) ∪ L(M2 ).
6= ∆1 (s1 , w) ∩ F1
= ∆(s1 , w) ∩ F1
= ∆(∆(s, ), w) ∩ F1
= ∆(s, w) ∩ F1
= ∆(s, w) ∩ F1
⊆ ∆(s, w) ∩ F
tenemos que L(M1 ) = {a} y L(M2 ) = {b}. Encontrar M un AFN tal que L(M ) =
L(M1 )L(M2 ).
Sol.
Figure 2. M
(2)
54 1. AUTÓMATA FINITO
Sol.
(1) Tenemos que L(M ) = {a}. Por lo que tenemos que construir M1 tal que
L(M1 ) = a∗ . Tal M1 es:
(2) Tenemos que L(M ) = {ab, ac}. Queremos M1 un AFN tal que L(M1 ) =
(ab ∪ ac)∗ . Tal es
(2) Además tales elnguajes son cerrados con respecto a la unión, concate-
nación y cerradura de Kleene.
Corolario 1. Si r es una expresión regular entonces existe M un autómata
finito tal que r = L(M ).
Proof. Las expresiones regulares se contruyen a partir de , {} y los lengua-
jes unitarios {σ}, σ ∈ Σ con cerrauras uniones y concatenaciones; y para tales
construcciones existen autómatas que las aceptan.
Tarea 10.
(1) Obtener un AFN que acepte .
(2) Obtener un AFN que acepte {a}. Obtener otro AFN que acepte {b}. Usar
las técnicas vistas para unir éstos AFN en uno que acepte el lenguaje
{a, b}.
(3) Obtener un AFN que acepte (a ∪ b)∗ ∪ (aba)+ .
(4) Obtener un AFN que acepte todas las cadenas de la forma bow, bowwowwow,
bowwowwowwowwow, . . .. Conseguir un AFN que acepte todas las cade-
nas de la forma ohmy, ohmyohmy, ohmyohmyohmy, . . .. Unir los dos
AFN para que se acepte la uninión de los dos lenguajes. Téngase en
cuenta que los sı́mbolos de un alfabeto no tiene por qué ser caracteres de
longitud uno.
(5) Sea M1 dado por
b
- r ? - re
q1 a q2
b
? a - rfq
r
d 4
q3
6
b
y M2 dado por
a
- ?
r - r - rf
p1 a p2 b p3
Obtener un AFN que acepte L(M1 )L(M2 ). Obtener un AFN que acepte
L(M2 )L(M1 ).
(6) Sean M1 = {q1 , q2 , q3 }, a, b, q1 , {q1 }, ∆1 y M2 = {p1 , p2 , p3 , p4 }, {0, 1}, p1, {p1 , p2 }, ∆2 ,
donde ∆1 y ∆2 viene dados por las tablas siguientes:
∆2 0 1
∆1 a b
p1 {p2 } {p3 , p4 }
q1 {q2 , q3 }
p2 {p3 , p4 }
q2 {q1 }
p3 {p2 }
q3 {q3 } {q3 }
p4 {p3 }
Obtener un AFN que acepte L(M1 )L(M2 ). Obtener un AFN que acepte
L(M2 )L(M1 )L(M1 ). Obtener finalmente, un AFN que acepte L(M1 )2 ∪
L(M1 ).
(7) Obtener una AFN para (ab)∗ a partir de los AFN que aceptan {a} y {b}.
56 1. AUTÓMATA FINITO
(8) Obtener un AFN para (aa ∪ b)∗ (bb ∪ a)∗ a partir de los AFN que aceptan
{a} y {b}.
(9) Obtener un AFN para
((a ∪ b)(a ∪ b))∗ ∪ ((a ∪ b)(a ∪ b)(a ∪ b))∗
a partir de los AFN para {a} y {b}.
(10) Si M = (Q, Σ, s, F, δ) es un autómata finito determinista, entonces el
complemento de L(M ) [es decir Σ∗ − L(M )] es aceptado por el autómata
M 0 = (Q, Σ, s, Q − F, δ). ¿Es M 0 un AFD o un AFN? Obtener un AFD
que acepte ab∗ ab. Obtener un autómata finito que acepte {a, b}∗ − ab∗ ab.
tenemos que
A5 = , A4 = {}, A3 = {a}
A2 = { }, A1 = {b}, A0 = {ba, ab}.
Si qj ∈ ∆(qi , σ) entonces σAj ⊂ Ai , pues, si w ∈ σAj entonces w = σx para
algún x ∈ Aj , esto es ∆(qj , x) ∩ F 6= . Luego
Por lo que
[
(5) Ai = {σAj | qj ∈ ∆(qi , σ)}
σ
Ejemplo 57. En el AFN del ejemplo anterior 47, usando la ecuación (5)
A0 = aA1 ∪ bA3 , A1 = bA2 ∪ aA5 , A3 = aA4 ∪ bA5
A2 = aA5 ∪ bA5 ∪ , A4 = ∪ aA5 ∪ bA5
A5 =
este es un sistema de cuaciones que se puede resolver por sustitución regresiva:
A4 = , A3 = a, A2 = , A1 = b
L(M ) = A0 = ab ∪ ba
es decir, hemos calculado L(M ) = ab ∪ ba.
A veces, resultan ecuaciones autorecursivas. Por ejemplo, en
(2) Ahora supongamos que hay otra solución a (6) y llamémosla Y . Esto es
Y = AY ∪ B
∗
con X = A B 6= Y . Entonces
X ∪ Y = AX ∪ B ∪ AY ∪ B
= A(X ∪ Y ) ∪ B
esto es S = X ∪ Y es también solución y es más grande que X, pues
X ⊂ S. Podemos escribir
S = A∗ B ∪ C
donde C = S − A∗ B 6= y A∗ B ∩ C = .
entonces
A0 = aA0 ∪ bA1
A1 =
A0 = aA0 ∪ b
∗
y como 6∈ {a}, entonces A0 = a b. Es decir
L(M ) = a∗ b.
Ejemplo 59. En M el AFN siguiente, calcule L(M ).
Proof.
A0 = aA1 ∪
A1 = cA2 ∪ bA3
A2 = A0
A3 = A0
A1 = cA0 ∪ bA0
= cA0 ∪ bA0
= (c ∪ b)A0
y
A0 = a(c ∪ b)A0 ∪
y como 6∈ L(a(c ∪ b)) entonces podemos usar el lema de Arden y obtener
A0 = (a(c ∪ b))∗ = (ac ∪ bc)∗
Ejemplo 60. Calcule el lenguaje aceptado por el siguiente autómata.
60 1. AUTÓMATA FINITO
A3 = aA3 ∪ ( ∪ bb∗ )
= aA3 ∪ b∗
lo que implica,
A3 = a ∗ b∗
y
A2 = = aa∗ b∗ ∪ bb∗
= a + b∗ ∪ b +
- r a - r a - r a - r a - rf
Qb Qb Q b 6
Q Q Q
sQ s
Q b sQ
r b - r - r
Q Q a 6
Qa Q a
sQ r a sQ r
-
Q
bQ b
Q ?
s rg
b@
R
@ r b
I
a, b
(6) Obtener una expresión regular para los lenguajes aceptados por cada uno
de los autómatas siguientes:
(a)
a, b q a
-q1 r - r2f - rq3
I 6
b a, b
(b)
a
/
- si
q1
a >
Z
Zb b
Z
~
Z
q2 s b - s q3
6
a
(c)
- r
q1
b a
> @ a
b
@
?
rg a -R@
g
r
q2 q3
I
b
(d)
b
- r?
q 1 q
- r2 - rq3 a- qr4 a rf a, b
-
a b q5
I I 6
b a b
(e)
62 1. AUTÓMATA FINITO
- qr1 a - q2r b - re a, b
q3
b a
?
q4 r b
K
A
a
12. Propiedades de los lenguajes regulares
12.1. Lema del bombeo. El lema del bombeo permite mostrar que no todos
los lenguajes son regulares.
Lema 5 (del bombeo). Sea L un lenguaje regular. Entonces existe n constante
tal que ∀w ∈ L con |w| ≥ n se obtiene que
w = uvx con |v| ≥ 1 y |uv| ≤ n
y además
∀i, uv i x ∈ L.
Proof. Si L es finito entonces existe m la mayor de las longitudes de las
palabras de L. Se pone n = m + 1 y el lema se cumple por vacuidad (no hay
palabras, en L, de longitud ≥ n).
Si L es infinito, entonces, por el teorema de Kleene, existe M un AFD tal que
L = L(M ). Sea
M = (Q, Σ, s, F, δ).
Definimos n = |Q| el número de estados de M . Si w ∈ L con |w| ≥ n entonces
w = a1 · · · a|w|−1 a|w|
con cada ai ∈ Σ. Definimos además q1 , q2 , . . . , q|w| como los estados que resultan
de las transiciones indicadas por w, esto es:
q1 = δ(s, a1 ), q2 = δ(q1 , a2 ), . . . , q|w| = δ(q|w|−1 , a|w| ).
Puesto que w ∈ L(M ) entonces q|w| ∈ F :
Como sólo hay n estados, los estados s, q1 , . . . , qn , . . . , q|w| no pueden ser todos
diferentes, pues en tal caso tendrı́amos |w| + 1 > n: más estados que n!. Por lo que
algunos de éstos se repiten: existen j, k tales que 1 ≤ j < k ≤ n ≤ |w| tales que
qj = qk . Lo que obliga la aparición de un ciclo:
Definimos
12. PROPIEDADES DE LOS LENGUAJES REGULARES 63
• u = a 1 · · · aj
• v = aj+1 · · · ak
• x = ak+1 · · · a| w|
Entonces
w = uvx
Como v corresponde al ciclo, y este existe entonces |v| > 1. Además
|uv| = k ≤ n.
Finalmente notemos que u lleva el estado inicial sl estado que se repite qj , luego x
continua con este estado hasta lllevarlo al estdoo de aceptación q|w| ;
δ(s, ux) = δ(δ(s, u), x)
= δ(qj , u)
= δ(qk , x)
= q|w| ∈ F
por lo que ux ∈ L. Similarmente, como v 2 lleva el estado qj al estado
qk
entonces uv 2 x también se acepta. En general, si i ≥ 0 entonce
δ(s, uv i x) = δ(δ(δ(s, u), v i ), x)
= δ(δ(qj , v i ), x)
= δ(qk , x))
= q|w| ∈ F,
por lo que uv i x ∈ F .
Ejemplo 61. Sea Σ = {0, 1} y L el lenguaje de todas las cadenas con el mismo
númoer de 0’s que de 1’s. Demostrar que L no es regular.
Proof. Por contradicción: si L fuera regular entonces existe n tal que se
cumple el lema del bombeo. Esto es las palabras de longitud más grande o igual
a n se descomponen en tres partes con ciertas caracterı́sticas. En particular q =
0n 1n ∈ L es una palabra de longitud |w| = 2n > n, luego tal se puede descomponer
en tres partes u, v, x tales que
w = 0n 1n = uvx
con |uv| ≤ n, |v| > 1 y uv i x ∈ L, ∀i ≥ 0. Como uv es la parte al principio de 0n 1n
y |uv| ≤ n entonces uv está formada sólo por ceros, por lo que x, que ess la parte
final de w, debe de tener todos los unos:
w=0
| ·{z
· · 0} |0 · · · 01
{z · · · 1}
uv x
1. Gramáticas regulares
Un autómata finito puede considerarse como un generador de lenguajes: si M es
un AF entonces genera a L(M ). Por ejemplo, consideremos
es tal que
L(M ) = a(a∗ ∪ b∗ )b
S → aE
E→A
ó
E→B
A → aA
ó
A→b
65
66 2. LENGUAJES INDEPENDIENTES DEL CONTEXTO
B → bB
ó
B→b
En resumen, tenemos
S → aE
E→A
E→B
A → aA
A→b
B → bB
B→b
aA
∗
Definición 36. Si w ∈ Σ∗ , se usa S ⇒ w para indicar que w se generó a
partir de S en cero o más etapas.
∗ ∗
Ejemplo 63. S ⇒ a2 b, S ⇒ a3 b.
En las producciones hay sı́mbolos de un alfabeto Σ. Tales se llaman terminales
para indicar que no son suceptibles a ser susbstituidos. Los sı́mbolos que sı́ pueden
serlo se llaman no terminales. El sı́mbolo inicial S es siempre no terminal.
La generación de cadenas se hace de izuierda a derecha, por lo que en las produc-
ciones, los sı́mbolos no terminales deben de aparecer a la derecha.
Definición 37. En la producción
A→γ
A se llama cabeza de la producción y γ se llama cuerpo de la producción.
Definición 38. Una gramática regular es una 4-tupla,
G = (Σ, N, S, P )
donde
• Σ es un alfabeto
• N un conjunto finito de sı́mbolos no terminales
• S ∈ N llamado sı́mbolo inicial
• P es una colleción de reglas de substitución llamadas poducciones que
son de la forma
A→γ
con A ∈ N y γ ∈ (Σ ∪ N )∗ tal que
(1) u tiene un no terminal como máximo
(2) si γ contiene un no terminal, este está en el exremo derecho.
Se pude decir que en la producción A → γ, γ ∈ Σ∗ (N ∪ )∗ con terminal.
Definición 39. El lenguaje generado por G se denota por L(G) y este es
∗
L(G) = {w ∈ Σ∗ | S ⇒ w}
Ejemplo 64. Sea G = (Σ, N, S, P ) gramática regular donde
Σ = {a, b}, N = {S, A}
68 2. LENGUAJES INDEPENDIENTES DEL CONTEXTO
δ(q0 , σ1 ) = q1
δ(q1 , σ2 ) = q2
..
.
δ(qn−2 , σn−1 ) = qn−1
δ(qn−1 , σn ) = qn = p
eso es:
0) q0 → σ1 q1
1) q1 → σ2 q2
..
.
n − 2) qn−2 → σn−1 qn−1
n − 1) qn−1 → σn qn
n) p = qn →
luego
(0)
s ⇒ σ1 q1
(1)
⇒ σ 1 σ2 q 2
(2)
⇒ σ 1 σ2 σ3 q 3
..
.
(n−1
⇒ σ 1 σ2 · · · σ n q n
(n)
⇒ σ 1 σ2 · · · σ n = σ 1 σ2 · · · σ n
L(M ) ⊆ L(G).
2. GRAMÁTICAS REGULARES Y LENGUAJES REGULARES 71
Ası́ L(M ) = L(G) pues si w ∈ L(G) entones w debe ser generada por derivaciones:
S ⇒ α 1 A1 con α1 ∈ Σ∗ y A1 no terminal
⇒ α 1 α2 A 2 con α2 ∈ Σ∗ y A→ α2 A2 en G
..
.
⇒ α1 · · · αn−1 An−1 con an ∈ Σ∗ y αn ∈ Σ∗
∗
s ⇒ w, por lo que w ∈ L(G).
Recı́procamente, si w ∈ L(M ), entonces siguiendo el razonamiento anterior
Tenemos
Tarea 13. (1) Supongamos que tenemos las reglas S → aS|bT y T → aa.
Dar una derivación para abaa, aabaa, aaabaa. Probar que se pueden
derivar ak ba2 para k ≥ 1. ¿Es posible derivar las cadenas baa, b o aa?
(2) Obtener una gramática regular que genere los siguientes lenguajes
(a) a∗ b ∪ a
(b) a∗ b ∪ b∗ a
(c) (a∗ b ∪ b∗ a)∗
2. GRAMÁTICAS REGULARES Y LENGUAJES REGULARES 73
S → bA|aB|
A → abaS
B → babS
genera un lenguaje regular. Obtener una expresión regular para este lenguaje.
(4) En nuestra definición de gramáticas regulares de dijo que si en el extremo
derecho de una producción hay un no terminal, éste debe de estar situado
en el extremo derecho. Esto corresponde a la generación de cadenas de
izquierda a derecha. Por esta razón, una gramática regular también puede
llamarse gramática regular por la derecha. Una gramática regular por la
izquierda es aquella cuyas cadenas son generadas por la derecha, es decir
sus porducciones son pares de N × (N ∪ Σ)Σ∗ .
(1) Obtener una gramática regular por la izquierda para el lenguaje {a n baa | n ≥
0}.
(2) Obtener las gramáticas regulares por la derecha y la izquierda para
(3) Para toda gramática G = (N, σ, S, P ) que sea regular (por la izquierda o
por la derecha), se puede definir la inversa de G como GI = (N, Σ, S, P 0 )
donde
P 0 = {(A, xI ) | (A, x) ∈ P }.
(1)
S ⇒ AB
(3)
⇒ AbB
(3)
⇒ AbbB
(3)
⇒ Abbb
(2)
aAbbb
(2)
aaabbb
(1)
S ⇒ AB
(2)
⇒ aAB
(2)
⇒ aaB
(3)
⇒ aabB
(3)
⇒ aabbB
⇒ aabbb
S ⇒ AB
⇒ aAB
⇒ aAbB
⇒ aAbbB
⇒ aAbbb
⇒ aabbb
cuyo árbol de derivación es de nuevo, el mismo que antes. Resulta que todos los árboles
de derivación de a2 b3 tienen el mismo árbol. Este no es siempre el caso. Por ejemplo,
en la gramática,
S → SbS | ScS | a
S ⇒ SbS
⇒ SbScS
⇒ SbSca
⇒ Sbaca
⇒ abaca
(2)
S ⇒ ScS
⇒ SbScS
⇒ abScS
⇒ abacS
⇒ abaca
(a)
(b)
que son diferentes.
Las cadenas derivadas corresponden a las hojas de los árboles de derivación y se
llaman producto del árbol de derivación .
A → I := E
I → a |b | c
E → E + E |E ∗ E | (E) | I
(las mayúsculas son no terminales; los demás sı́mbolos, ”:=”, ”*”, ”(”,”(” son
terminales). La cadena
a := b + c ∗ a
ó
(2)
S→A
A→B
B→C
C →D
D → a|A
Ejemplo 69.
G: S → Aa | B | D
B→b
A → aA | bA | B
C → abd
Obérvese que C nunca forma parte de una derivación de una palabra generada:
S ⇒ · · · ⇒ αCβ ⇒ · · · ⇒ w ∈ Σ∗
G: S → Aa | B | D
B→b
A → aA | bA |B
C → abd
P0 : B→b
C → abd
G0 : S → aA |
A → aA |
En el ejemplo 70, el algoritmo 3.5.1 no eliminó la última producción C → abc
que no es productiva pues C no es alcanzable. El siguiente algoritmo elimina los
inalcanzables
entrada: G = (N, Σ, S, P ) una GIC.
salida: G0 = (N 0 , Σ0 , S, P 0 ) una GIC tal que L(G0 ) = L(G) y todos los sı́mbolos de
N 0 son alcanzables.
Algoritmo 3.5.2: (1) Inicializar N 0 = {S}, P 0 = , Σ0 =
84 2. LENGUAJES INDEPENDIENTES DEL CONTEXTO
G0 : S → Aa | B
A → aA | bA
B→b
con alfabeto Σ = {a, b}.
Nótese que se han eliminado C y d.
5. SIMPLIFICACIÓN DE LAS GIC 85
Finalmente, para quitar los sı́mbolos inútiles e improductivos se aplican los algo-
ritmos 3.5.1 y a la gramática de ésta salida se le aplica el algoritmo 3.5.2 y en este
orden. Los algoritmos 3.5.1 y 3.5.2 no conmutan, i.e., el orden de su aplicación cambia
las salidas. Por ejemplo, para la gramática
G: S → AB | a
A→a
siendo ésta última la gramática esperada. Pero si aplicamos los algoritmos en el otro
orden
( (
3.5.2 S → AB | a 3.5.1 S → a
G −→ −→
A→a A→a
que no es la respuesta esperada.
S → aAb|cEB|CE
A → dBE|eeC
B → f f |D
C → gF B|ae
D→h
(b)
S → aB
A → bcCCC|dA
B→e
C → fA
D → Dgh
(c)
S → a|aA|B|C
A → aB|
B → Aa
C → bCD
D → ccc
(a)
S → aAb
A → ccC
B → dd|D
C → ae
D→f
U → gW
W →h
(b)
S → a|aA|B
A → aB|
B → Aa
D → ddd
(3) Eliminar los sı́mbolos inútiles de la siguiente gramática por medio de los
algoritmos 3.5.1 y 3.5.2:
S → A|AA|AAA
A → ABa|ACa|a
B → ABa|Ab|a
C → Cab|CC
D → CD|Cd|CEa
E→b
pero no (∀i, Yi = ). Es decir, se añaden producciones donde los anulables X i aparecen
ó no, pero sin incluir a las producciones .
Ejemplo 72. Sea
G: S → aA
A → aA |
Queremos encontrar G0 una GIC tal que L(G0 ) = L(G) pero G0 sin producciones .
Primero calculamos el conjunto de anulables:
inicio: η = {A}
ciclo: fin
Cambiamos ahora las producciones (donde A esté presente ó ausente)
G0 S → a | aA
A → a | aA
Comoe 6∈ L(G), entonces L(G0 ) = L(G).
Ejemplo 73.
G: S → AB
A → aAA |
B → bBB |
Encontraremos una gramática G0 sin producciones tal que L(G0 ) = L(G) − {}
(nótese que ∈ L(G)).
Primero calculamos los anulables:
Inicio: η = {A, B}
ciclo: como S → AB con AB ∈ η ∗ entonces S ∈ η. Fin.
Resulta η = {A, B, S} (todos los sı́mbolos no terminales son anulables). Ahora
reeemplazamos las producciones de G por ausencia o no de los anulables:
de S → AB se obtienen
S → A | B | AB
de A → aAA se obtienen
A → aAA | aA | a
y de B → bBB se obtienen
B → bBB | bB | b
Resulta entonces
G0 : S → A | B | AB
A → aAA | aA | a
B → bBB | bB |b
tal que L(G0 ) = L(G) − {}.
Tarea 17. (1) Obtener la colección de no terminales anulables que pertenecen
a la siguiente gramática:
S → aA|bA|a
A → aA|bAb|
88 2. LENGUAJES INDEPENDIENTES DEL CONTEXTO
S → ABaC
A → AB
B → b|
C → D|
D→d
S → aA|bA|a
A → aA|bAb|
(b)
S → AB
A → aA|abB|aCa
B → bA|BB|
C→
D → dB|BCB
(c)
S → a|aA|B
A → aB|
B → Aa
(4) El lenguaje asociado con la siguiente GIC contiene . Eliminar las pro-
ducciones exepto S → .
S → AB|aB|
A → BBB|aB|a|
B → a|aA|
S → CBa|D
A → bbC
B → Sc|ddd
C → eA|f |C
D → E|SABC
E → gh
7. ELIMINACIÓN DE PRODUCCIONES UNITARIAS 89
(b)
S → Aa|Ba|B
A → Aa|
B → aA|BB|
A veces son útiles las producciones unitarias, pero otras veces son indesables pues
complican los árboles de derivación. Nos proponemos eliminar tales producciones uni-
tarias.
Definición 46.
(1) A ⇒ A usando cero producciones.
(2) Si A es no terminal
∗
U (A) = {B ∈ N | A ⇒ B usando solamente producciones unitarias ó cero producciones}
A ∈ U (A).
Tarea 18.
(1) Convertir las siguientes GIC a forma normal de Chomsky:
(a)
S → AB|CA
A→a
B → BC|AB
C → aB|b
90 2. LENGUAJES INDEPENDIENTES DEL CONTEXTO
(b)
S → aAb|cHB|CH
A → dBH|eeC
B → f f |D
C → gF B|ah
D→i
E → jF
F → dcGGG|cF
G → kF
H → Hlm
Tarea 19. (1) Probar que cada uno de los siguientes lenguajes no son
lenguajes independientes del contexto.
(a) {ai bi ci | i ≥ 1}
(b) {ai bi cj | j ≥ i}
(c) {ai bj cj | i ≤ j ≤ k}
(d) {ai | i es primo}
(e) {w ∈ {a, b, c}∗ | n ≤ m ≤ 2n}
(f) {ww | w ∈ {a, b}∗ }
(2) Obtener un autómata a pila que acepte {an bn | n ≥ 0}.
(3) Describir los cambios de configuraciones sobre las cadenas abaababb y abaa
realizados por el autómata a pila siguiente (con sı́mbolo inicial de pila Z):
a, B/
b, A/
a, Z/AZ R
- r , Z/Z- rj
b, Z/BZ q1
q2
a, A/AA
b, B/BB
¿son aceptadas?.
(4) Los mismo que el anterior para las cadenas c, abcba, abcab y babbcbbab y
el autómata a pila
7. ELIMINACIÓN DE PRODUCCIONES UNITARIAS 91
b, b/
a, a/
, Z/Z R
- r - r - rg
q1 I
@ q2 q3
@
, Z/Z
a, Z/aZ
a, a/aa
a, b/ab
b, Z/bZ
b, a/ba
b, b/bb
c, Z/Z
c, a/a
c, b/b
CHAPTER 3
Máquinas de Turing
1. Definición y termininologı́a
Definición 47. Una máquina de Turing es una 7-tupla:
M = (Q, Σ, Γ, s, B, F, δ)
donde
• Q es un conjunto finito de estados.
• Σ es un alfabeto de entrada.
• Γ es un alfabeto llamado de entrada.
• s ∈ Q estado inicial.
• Γ es alfabeto llamado de cinta, con Γ ⊇ Σ.
• B ∈ Γ pero B 6∈ Σ llamado sı́mbolo blanco.
• F ⊆ Q estados finales. δ : Q × Γ → Q × Γ × {L, R} es una función parcial
llamada función de transición
Tal cinta está casi llena de sı́mbolos blancos. Sólo una porción finita entre sı́mbolos
blancos contiene la información que interesa.
93
94 3. MÁQUINAS DE TURING
Las MT cambian sus configuraciones celda por celda, senalando la celda a modificar
con una cabeza de cinta. Por ejemplo;
δ(q1 , a) = (q5 , b, R)
indica que si
a b b
6 estado q0
entonces
b b b
6
estado q1
6 estado q0
a b b a a b b a a a b a
6 estado q0 6 estado q0 6
estado q0
a a a a B a a a a B
6 estado q0 6 estado q0
a a a a B
6 estado q1
1. DEFINICIÓN Y TERMININOLOGÍA 95
entonces
aabq1 abb ` aaq1 babb
` aq1 ababb
` q1 aababb
` q1 Baababb
` Bq2 aababb = q2 aababb
` q3 Baababb
y entonces la máquina se detiene.
Ejemplo 78. Consideremos la máquina de Turing
96 3. MÁQUINAS DE TURING
2. Aceptación
Definición 48. Sea M = (Q, Σ, Γ, s, B, F, δ) una MT. El lenguaje aceptado
por M es
L(M ) = {w ∈ Σ∗ | sw ` w1 pw2 , con w1 , w2 ∈ Γ∗ , p ∈ F }
Tarea 20.
(1) Construir una máquina de Turing que analice una cadena de {a, b} + de-
splazándose por la cinta de izuqierda a derecha y que reeemplace cada b’s
por c. La máquina de Turing deberı́a comenzar con la cabeza sobrte el
primer sı́mbolo (el que está más a la izquierda) de la cadena y terminar
su cabeza sobre el blanco final (el blanco que sigue a la a o a la c que esté
más a la derecha en la cadena transformada).
(2) Construir una máquina de Turing que enumere todos los enteros binarios,
en orden numérico sobre su cinta cuando comience con (q1 , 0B). Es decir,
la máquina de Turing debe ejecutarse de esta forma:
∗ ∗ ∗ ∗
(q1 , 0B) ` (q1 , 1B) ` (q1 , 10B) ` (q1 , 11B) ` · · ·