Teoria de La Computacion Automatas
Teoria de La Computacion Automatas
Teoria de La Computacion Automatas
Capı́tulo 1
Lenguajes formales
Σ∗ = { λ,a,b,c,aa,ab,ac,ba,bb,bc,ca,cb,cc,aaa,aab,abc,baa,...}.
Observaciones:
1
2. Hay que distinguir entre los siguientes objetos, que son todos diferentes
entre sı́:
∅ λ {∅} {λ}
u · v = a 1 a2 · · · an b1 b2 · · · bm.
1. u · λ = λ · u = u.
2. u · (va) = (u · v)a.
u0 = λ,
un = uu · · · u
n veces
Ejercicio Dar una definición recursiva de u n .
|wn+m | = | wn | + |wm |
Solución:
Caso n, m ≥ 1. | wn+m | = | ww · · · w | = (n + m)|w|. Por otro lado,
n+m veces
−1
λ, si u = λ,
u =
an · · · a2 a1 , si u = a1 a2 · · · an .
Ejemplo Sea Σ = { a,b,c,d}, u = bcbaadb.
Prefijos de u : Sufijos de u :
λ λ
b b
bc db
bcb adb
bcba aadb
bcbaa baadb
bcbaad cbaadb
bcbaadb bcbaadb
1.7. Lenguajes
Un lenguaje L sobre un alfabeto Σ es un subconjunto de Σ∗ , es decir L ⊆ Σ∗ .
Casos extremos:
L = ∅, (Lenguaje vacı́o)
L = Σ∗ , (Lenguaje de todas las palabras sobre Σ)
Ejercicio Definir el conjunto de los enteros Z = { . . . , −2, −1, 0, 1, 2, . . .} como
un lenguaje sobre un alfabeto adecuado.
A∪B Unión
A∩B Intersección
A−B Diferencia
∗
A = Σ − A Complemento
Ejercicio Dé un ejemplo de un alfabeto Σ y dos lenguajes A, B sobre Σ tales
que AB = BA
1. A · ∅ = ∅ · A = ∅.
2. A · {λ} = { λ} · A = A.
3. Propiedad Asociativa.
A · (B · C ) = (A · B) · C.
A · (B ∪ C ) = A · B ∪ A · C.
(B ∪ C ) · A = B · A ∪ C · A.
A·
Bi = (A · Bi )
i∈I i∈I
Bi · A = (Bi · A).
i∈I i∈I
on :
Demostraci´
1. A · ∅ = {uv : u ∈ A, v ∈ ∅} = ∅.
5. Demostración de la igualdad A ·
Bi = (A · Bi ):
i∈I i∈I
x ∈ A ·
i∈I Bi ⇐⇒ x = u · v, con u ∈ A & v ∈ i∈I Bi
⇐⇒ x = u · v, con u ∈ A & v ∈ B j , para algún j ∈ I
⇐⇒ x ∈ A · B j , para algún j ∈ I
⇐⇒ x ∈ i∈I (A · Bi).
La igualdad
Bi · A =
(Bi · A) se demuestra de forma similar.
i∈I i∈I
Observaciones:
Ejercicio Una de las dos contenencias siguientes es verdadera y la otra es
falsa. Demostrar o refutar, según sea el caso:
1. A · (B ∩ C ) ⊆ A · B ∩ A · C .
2. A · B ∩ A · C ⊆ A · (B ∩ C ).
A∗ =
Ai = A 0 ∪ A1 ∪ A2 ∪ · · · ∪ An · · · (Descripción 1)
i≥0
A+ =
Ai = A 1 ∪ A2 ∪ · · · ∪ An · · ·
i≥1
1. A+ = A∗ · A = A · A∗
2. A∗ · A∗ = A∗
3.
A∗
n
= A∗ , para todo n ≥ 1.
4.
A∗
∗
= A ∗ .
5. A+ · A+ ⊆ A+ .
6.
A∗
+
= A ∗ .
7.
A+
∗
= A ∗ .
8.
A+
+
= A+ .
on :
Demostraci´
1.
A · A∗ = A · (A0 ∪ A1 ∪ A2 ∪ · · · )
= A1 ∪ A2 ∪ A3 ∪ · · ·
= A+ .
Similarmente se demuestra que A ∗ · A = A + .
2. Si x ∈ A ∗ · A∗ , entonces x = u · v, con u ∈ A∗ , v ∈ A ∗ . Entonces, x = u · v,
con u = u 1 u2 · · · un , ui ∈ A, n ≥ 0 y v = v 1 v2 · · · vm , vi ∈ A, m ≥ 0.
De donde
x = u · v = u 1 · u2 · · · un · v1 · v2 · · · vm .
4.
0 1 2
∗
A∗ = A∗ ∪ A∗ ∪ A∗ ∪ · · ·
= {λ} ∪ A∗ ∪ A∗ ∪ A∗ ∪ · · ·
= A∗ .
6.
+ 1 2 3
A∗ = A∗ ∪ (A∗ ∪ (A∗ ∪···
= A∗ ∪ A∗ ∪ A∗ ∪ · · ·
= A∗ .
7.
0 1 2
∗
A+ = A+ ∪ A+ ∪ A+ ∪ · · ·
= {λ} ∪ A+ ∪ A+ A+ ∪ · · ·
= A∗ ∪ (conjuntos contenidos en A+ )
= A∗
8.
+ 1 2 3
A+ = A+ ∪ A+ ∪ A+ ∪ · · · ,
= A+ ∪ (conjuntos contenidos en A + )
= A+
Contraejemplo de A+ · A+ = A + .
Sea Σ = {a, b}, A = {a}. Se tiene
2. (A ∪ B)−1 = A −1 ∪ B −1 .
3. (A ∩ B)−1 = A −1 ∩ B −1 .
−1
4. (A−1 ) = A.
∗
5. (A∗ )−1 = (A−1 ) .
1 +
6. (A+ )− = (A−1 ) .
on :
Demostraci´
1.
x ∈ (A · B)−1 ⇐⇒ x = u −1 , donde u ∈ A · B.
⇐⇒ x = u −1 , donde u = vw, v ∈ A, w ∈ B.
⇐⇒ x = (vw)−1 , donde v ∈ A, w ∈ B.
⇐⇒ x = w −1 v −1 , donde v ∈ A, w ∈ B.
⇐⇒ x ∈ B −1 · A−1
2. Ejercicio
3. Ejercicio
4. Ejercicio
5.
x ∈ (A∗ )−1 ⇐⇒ x = u −1 , donde u ∈ A ∗ .
⇐⇒ x = (u1 · u2 · · · un )−1 , donde los u i ∈ A, n ≥ 0.
1 −1 −1
⇐⇒ x = u −n · u2 · · · u1 , donde los u i ∈ A, n ≥ 0.
−1 ∗
⇐⇒ x ∈ (A ) .
6. Ejercicio
Ejercicio ¿Se pueden generalizar las propiedades 2 y 3 anteriores para uniones
e intersecciones arbitrarias, respectivamente?
1. ∅, { λ} y {a},
para cada a ∈ Σ, son lenguajes regulares sobre Σ. Estos son
los denominados lenguajes regulares básicos.
2. Si A y B son lenguajes regulares sobre Σ, también lo son
A ∪ B (unión)
A · B (concatenación)
A∗ (estrella de Kleene)
Ejemplo Dado el alfabeto Σ = { a,b,c},
(a ∪ b∗ )a∗ (bc)∗
Ejemplo Dado el alfabeto Σ = { a, b},
Ejemplos Los tres primeros lenguajes de la sección 1.13 podemos representar-
los con expresiones regulares:
A = b∗ ab∗ .
B = b(a ∪ b)∗ .
3. Lenguaje de todas las palabras que tienen un número par de sı́mbolos (pa-
labras de longitud par).
Solución: (aa ∪ ab ∪ ba ∪ bb)∗ .
Ejemplo Encontrar una expresión regular que represente el lenguaje de todas
las palabras que no contienen la cadena bc, definido sobre el alfabeto
Σ = { a,b,c}.
Solución: c∗ (b ∪ ac∗)∗ .
Ejercicio Encontrar expresiones regulares para los siguientes lenguajes:
2. Σ = {a, b}. Lenguaje de todas las palabras que tienen un número impar de
a’s.
3. Σ = {a, b}. Lenguaje de todas las palabras que tienen un número par de
a’s o un número impar de b’s.
Observaci´
on:
No todos los lenguajes sobre un alfabeto dado Σ son regulares. Más adelante se
mostrará que el lenguaje
Capı́tulo 2
Autómatas finitos
El autómata actúa leyendo los sı́mbolos escritos sobre una cinta semi-infinita,
dividida en casillas, sobre la cual se escribe una palabra de entrada u, un sı́mbo-
lo por casilla. El autómata posee una cabeza lectora o control finito, que
inicialmente “escanea” o lee la casilla del extremo izquierdo de la cinta.
a saber:
δ a b
δ (q 0 , a) = q 0 δ (q 0 , b) = q 1
q 0 q 0 q 1
δ (q 1 , a) = q 1 δ (q 1 , b) = q 2
q 1 q 1 q 2
δ (q 2 , a) = q 1 δ (q 2 , b) = q 1
q 2 q 1 q 1
1. u = aabab.
2. v = aababa.
Puesto que q 2 es un estado de aceptación, la palabra de entrada u es aceptada.
δ a b
δ (q 0 , a) = q 0 δ (q 0 , b) = q 1
q 0 q 0 q 1
δ (q 1 , a) = q 1 δ (q 1 , b) = q 2
q 1 q 1 q 2
δ (q 2 , a) = q 1 δ (q 2 , b) = q 1
q 2 q 1 q 1
Versión simplificada:
Ejemplo Σ = { a, b}. L = a + = { a, a2 , a3, . . .}.
Versión simplificada:
Ejemplo Σ = {a, b}. L = lenguaje de las palabras sobre Σ que contienen
exactamente dos a’s. L = b ab ab .
∗ ∗ ∗
Ejemplo Σ = {a, b}. L = lenguaje de las palabras sobre Σ que tienen un
número par de sı́mbolos (palabras de longitud par).
Ejemplo Σ = {a, b}. L = lenguaje de las palabras sobre Σ que contienen un
número par de a’s.
Ejemplo Σ = { a, b}. L = lenguaje de las palabras sobre Σ que terminan en b.
Ejercicios Diseñar autómatas finitos deterministas que acepten los siguientes
lenguajes:
M = (Σ , Q , q0 , F, ∆)
donde
1. Σ es el alfabeto de cinta.
Sobre el diagrama de estados del autómata, esto significa que pueden existir varias
trayectorias etiquetadas con los sı́mbolos de u.
La siguiente es la noción de aceptación para autómatas no deterministas:
Es decir, para que una palabra u sea aceptada, debe existir por lo menos un
cómputo en el que u sea procesada completamente y que finalice estando M en
un estado de aceptación.
Ejemplo Sea M el siguiente AFN:
∆ a b
q 0 {q 0 , q 1 , q 3 } ∅
Ejemplo En un ejemplo de la sección 2.3 se diseño el siguiente AFD que acepta
el lenguaje de las palabras sobre Σ = { a, b} que terminan en b:
Un AFN que acepta el mismo lenguaje y que es, tal vez, más fácil de concebir, es
el siguiente:
+
Ejemplo Considérese el lengua je L = ab ∪ a sobre el alfabeto Σ = { a, b}. El
∗
Ejemplo Σ = { a, b}, L = (ab ∪ aba) . El siguiente AFN acepta a L.
∗
Otro AFN que acepta el mismo lenguaje y que tiene sólo tres estados es el sigui-
ente:
Ejercicios Diseñar AFD’s o AFN’s que acepten los siguientes lenguajes:
4. Σ = {a,b,c}, L = a b c .
∗ ∗ ∗
2.5.1 Teorema. Dado un AFN M = (Σ , Q , q0 , F, ∆) se puede construir un AFD
M equivalente a M , es decir, tal que L(M ) = L (M ).
Este teorema, cuya demostración se dará en detalle más adelante, establece que
el no-determinismo se puede eliminar. Dicho de otra manera, los autómatas de-
terministas y los no deterministas aceptan los mismos lenguajes. La idea de la
demostración consiste en considerar cada conjunto de estados { p1 , . . . , p j } del
autómata no-determinista como un ´ unico estado del nuevo autómata determinis-
ta. El siguiente ejemplo ilustra el procedimiento.
Ejemplo Consideremos el AFN M presentado en la sección 2.4, tal que
L(M ) = ab ∗ ∪ a+ sobre Σ = { a, b}:
∆ a b
q 0 {q 1 , q 2 } ∅
q 1 ∅ {q 1 }
q 2 {q 2 } ∅
El nuevo AFD M construido a partir de M y equivalente a M tiene (por lo
menos) un estado más: {q 1 , q 2 } y su función de transición δ tiene el siguiente
aspecto:
δ a b
q 0 {q 1 , q 2 } ∅
q 1 ∅ {q 1 }
q 2 {q 2 } ∅
Para mayor simplicidad, podemos cambiar los nombres de los estados de este
autómata:
Ejercicios Diseñar AFD’s equivalentes a los ejemplos de AFN’s construidos
en la sección 2.4.
Para la demostración del teorema, conviene extender la definición de la función
de transición, tanto de los autómatas deterministas como de los no-deterministas.
2.5.2 Definición. Sea M = (Σ, Q , q0 , F , δ ) un AFD. La función de transición
δ : Q × Σ −→ Q se extiende a una función δ : Q × Σ∗ −→ Q por medio de la
siguiente definición recursiva:
Según esta definición, para una palabra de entrada w ∈ Σ , δ (q , w) es el estado
∗
0
en el que el autómata termina el procesamiento de w. Por lo tanto, podemos
describir el lenguaje aceptado por M de la siguiente forma:
L(M ) = { w ∈ Σ ∗ : δ (q 0 , w) ∈ F }.
Notación. Sin peligro de ambigüedad, la función extendida δ (q, w) se notará sim-
plemente δ (q, w).
Podemos extender ∆ a una función ∆ : Q × Σ∗ −→ ℘ (Q), de manera similar a
como se hizo para AFD’s. Recursivamente,
Según esta definición, para una palabra de entrada w ∈ Σ∗ , δ (q 0 , w) es el conjunto
de los posibles estados en los que terminan los cómputos completos de w. Si el
cómputo se aborta durante el procesamiento de w, se tendrı́a ∆(q 0 , w) = ∅.
Podemos describir el lenguaje aceptado por M de la siguiente forma:
L(M ) = { w ∈ Σ ∗ : ∆(q 0 , w) ∩ F
= ∅}.
Notación. Sin peligro de ambigüedad, la función extendida ∆(q, w) se notará sim-
plemente ∆(q, w).
donde
δ : ℘ (Q) × Σ → ℘(Q)
(S, a) → δ (S, a) := ∆(S, a).
F = { S ⊆ ℘ (Q) : S ∩ F
= ∅}.
Se demostrará que L(M ) = L (M ) probando que, para toda palabra w ∈ Σ ∗ ,
Supóngase (hipótesis de inducción) que δ ({q 0 }, w) = ∆(q 0 , w), y que a ∈ Σ.
M = (Σ , Q , q0 , F, ∆)
∆ : Q × (Σ ∪ {λ}) → ℘(Q).
sin mover la cabeza lectora. Dicho de otra manera, las transiciones λ permiten al
autómata cambiar internamente de estado “sin consumir el sı́mbolo leı́do sobre
la cinta”.
En el diagrama de estados, las transiciones λ dan lugar a aristas con etiquetas λ .
Una palabra de entrada w es aceptada por un AFN-λ si existe por lo menos una
trayectoria cuyas etiquetas son exactamente los sı́mbolos de w, intercalados con
cero, uno o más λ’s.
El modelo AFN-λ, al igual que el AFN, permite múltiples cómputos para una
misma palabra de entrada, ası́ como cómputos abortados. Pero, a diferencia de
los AFD y los AFN, en los AFN-λ pueden existir “cómputos infinitos”, es decir
cómputos que nunca terminan.
Ejemplo M :
u = aab
v = abaa
w = abbaa
Ejemplo Σ = { a,b,c}. L =lenguaje de todas las palabras sobre Σ que tienen
un número par de a’s o un número par de b’s.
AFD que acepta el lenguaje de las palabras con un número par de a’s:
AFD que acepta el lenguaje de las palabras con un número par de b´s:
AFN-λ que acepta el lenguaje de las palabras con un número par de a’s o un
número par de b’s:
Ejercicios Diseñar AFN-λ que acepten los siguientes lenguajes:
2.7.1 Teorema. Dado un AFN- λ M = (Σ, Q , q0 , F, ∆), se puede construir un
AFN M equivalente a M , es decir, tal que L(M ) = L (M )
M = (Σ , Q , q0 , F , ∆ )
donde
∆ : Q × Σ −→ ℘(Q)
(q, a) −→ ∆ (q, a) := λ ∆(λ[q ], a) .
y
F = { q ∈ Q : λ [q ] ∩ F
= }.
∅
Es decir, los estados finales de M incluyen los estados finales de M y aquellos
estados desde los cuales se puede llegar a un estado final por medio de una o más
transiciones λ.
Como se puede apreciar, la construcción de M a partir de M es puramente
algorı́t mica.
Ejemplo Vamos a ilustrar el anterior algoritmo con el AFN-λ M , presentado
en el segundo ejemplo de la sección 2.6.
∆ (q 0, a)
= λ [∆(λ[q 0 ], a)] = λ [∆({q 0 , q 1, q 2 }, a)] = λ [{q 0 }] = { q 0, q 1 , q 2 }.
∆ (q 0 , b)
= λ [∆(λ[q 0 ], b)] = λ [∆({q 0 , q 1 , q 2 }, b)] = λ [{q 1 }] = { q 1 , q 2 }.
∆ (q 0 , c)
= λ [∆(λ[q 0 ], c)] = λ [∆({q 0 , q 1 , q 2 }, c)] = λ [{q 2 }] = { q 2 }.
∆ (q 1, a)
= λ [∆(λ[q 1 ], a)] = λ [∆({q 1 , q 2}, a)] = λ [∅] = ∅.
∆ (q 1 , b)
= λ [∆(λ[q 1 ], b)] = λ [∆({q 1 , q 2 }, b)] = λ [{q 1 }] = { q 1, q 2 }.
∆ (q 1 , c)
= λ [∆(λ[q 1 ], c)] = λ [∆({q 1 , q 2 }, c)] = λ [{q 2 }] = { q 2}.
∆ (q 2, a)
= λ [∆(λ[q 2 ], a)] = λ [∆({q 2 }, a)] = λ [∅] = ∅.
∆ (q 2 , b)
= λ [∆(λ[q 2 ], b)] = λ [∆({q 2 }, b)] = λ [∅] = ∅.
∆ (q 2 , c)
= λ [∆(λ[q 2 ], c)] = λ [∆({q 2 }, c)] = λ [{q 2}] = { q 2 }.
Ejercicios Construir AFN’s equivalentes a los siguientes AFN-λ’s.
1.
2.
AFD ≡ AFN ≡ AFN-λ
Esto quiere decir que para cada autómata de uno de estos tres modelos se pueden
construir autómatas equivalentes en los otros modelos. Por lo tanto, los modelos
AFD, AFN y AFN- λ aceptan exactamente los mismos lenguajes. El teorema de
Kleene establece que tales lenguajes son precisamente los lenguajes regulares.
2.8.1. Teorema de Kleene. Unlenguaje es regular si y solo si es aceptado por
un aut´
omata finito (AFD o AFN o AFN- λ).
Para demostrar el teorema, consideraremos las dos direcciones por separado. Pri-
mero demostraremos que dado un lenguaje regular L, existe un AFN-λ tal que
L(M ) = L. En la sección 2.11, demostraremos que a partir de un AFD M se pue-
de encontrar una expresión regular R tal que L(M ) = R. En ambas direcciones,
las demostraciones son constructivas, lo que permite presentar las construcciones
de este capı́tulo en la siguiente forma:
Demostraci´
on : Puesto que la definición de las expresiones regulares se hace re-
cursivamente, la demostración se lleva a cabo razonando por inducción sobre R.
Para las expresiones regulares básicas, podemos construir fácilmente autómatas
que acepten los lenguajes representados.
El autómata
Autómata que acepta R · S . Los autómatas M 1 y M 2 se conectan en serie
y los estados finales del nuevo autómata son únicamente los estados finales
de M 2 :
Autómata que acepta R . Los estados finales del nuevo autómata son los
∗
Ejemplo Vamos a utilizar el procedimiento del teorema para construir un
AFN-λ que acepte el lenguaje a (ab ∪ ba)
∗ ∗
∪ a(b ∪ a ) sobre el
∗
alfabeto { a, b}.
Autómata que acepta ab:
Ejercicios Diseñar autómatas AFN-λ que acepte los siguientes lenguajes so-
bre Σ = { a,b,c}:
2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto Σ y λ
∈ A,
on X = AX ∪ B tiene una unica
entonces la ecuaci´ ´ on dada por X = A∗ B .
soluci´
A B ⊆ A X ⊆ X
n n
∗
A B = A B = A B ⊆ X.
n n
n≥0 ≥0
n
Esto muestra que toda solución de X = AX ∪ B contiene a A ∗B , y es fácil verificar
que, de hecho, A∗ B es una solución:
∗
A(A B ) ∪ B = A B ∪ B = (A
+ +
∪ λ)B = A∗ B.
2 +
Ejemplo La ecuación X = a X ∪ b X ∪ ab se puede escribir en la forma
X = (a2 ∪ b+ )X ∪ ab. Por el lema de Arden tiene solución única
2 + ∗
X = (a ∪b ) ab.
2 ∗ ∗
Ejemplo La ecuación X = ab X ∪ aX ∪ a b ∪ b a se puede escribir como
X = ( ab2 ∪ a)X ∪ (a∗ b ∪ b∗ a). Por lema de Arden tiene solución única
X = (ab2 ∪ a)∗ (a∗b ∪ b∗ a).
Ejercicios En los ejercicios 1. y 2. encontrar las soluciones (únicas) de las
siguientes ecuaciones.
En esta sección demostraremos que para todo AFN M = (Σ, Q , q0 , F, ∆) existe
una expresión regular R tal que L(M ) = R .
El autómata M tiene un único estado inicial y cambiando dicho estado surgen
nuevos autómatas. Para cada q i ∈ Q, sea M i el autómata que coincide con M
pero con estado inicial q i . Más precisamente, M i = (Σ, Q , qi , F, ∆). Al lenguaje
aceptado por M i lo denotaremos Ai ; es decir, L(M i ) = Ai . En particular, A0 =
L(M ). Puesto que los estados de aceptación no se han alterado, se tiene que
Ai = { w ∈ Σ ∗ : ∆(q i , w) ∩ F
= ∅}.
Veremos que cada Ai se puede representar con una expresión regular y por lo
tanto lo podemos escribir como
{aA : q ∈ ∆(q , a)}, si q ∈ F,
a∈Σ
j j i i
A =
i (2.1)
{aA : q ∈ ∆(q , a)} ∪ λ. si q ∈ F.
j j i i
a∈Σ
Si Q = {q 0 , q 1 , . . . , qn }, las igualdades de la forma (2.1) dan lugar a un sistema
de n + 1 ecuaciones con n + 1 incógnitas (los Ai ):
AA == C C AA ∪ ∪ C C AA ∪∪ ·· ·· ··
0
1
01
11
0
0
02
12
1
1
∪ C 0n An (∪λ)
∪ C 1n An (∪λ)
.. ..
. .
A = C A ∪ C A ∪ · · ·
n n1 0 n2 1 ∪ C nn An (∪λ)
donde cada coeficiente C ij o es ∅ o es un sı́mbolo de Σ. El término λ se añade a
una ecuación solamente si el estado correspondiente es un estado de aceptación.
Utilizando sucesivas veces el lema de Arden, se puede mostrar que este sistema
de ecuaciones siempre se puede solucionar y su solución es única. En efecto,
comenzando con la última ecuación, se escribe An en términos de los demás
Ai , para lo cual se usa el lema de Arden si es necesario. Este valor de An se
reemplaza en las demás ecuaciones y el sistema se reduce a n ecuaciones con n
incógnitas. Similarmente, A n−1 se escribe en términos de los demás Ai , usando el
lema de Arden si es necesario, y tal valor se reemplaza en las ecuaciones restantes.
Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuación
cuya incógnita es precisamente A0. Esta ecuación se soluciona recurriendo una
vez más al lema de Arden. Puesto que los coeficientes C ij diferentes de ∅ son
sı́mbolos de Σ, se obtiene una expresión regular R tal que L(M ) = A 0 = R .
Ejercicio ¿Porque la anterior demostración no es valida para autómatas con
transiciones λ?.
(2) A
(3) A
1
2
= aA2
= aA2 ∪ bA2 ∪ λ
(3) se puede escribir como
(4) A2 = (a ∪ b)A2 ∪ λ
Lema de Arden en (4):
(5) A2 = (a ∪ b) λ = (a ∪ b)
∗ ∗
(5) en (2):
(6) A1 = a (a ∪ b) ∗
(6) en (1):
(7) A0 = (a ∪ b)A0 ∪ a2 (a ∪ b) ∗
A0 = (a ∪ b) a2 (a ∪ b)
∗ ∗
Ejemplo Encontrar una expresión regular para el lenguaje aceptado por el
siguiente AFN M :
4
=
=
aA2 ∪ aA3 ∪ λ
(5) en (4):
A3 = aA3 ∪ baA2 ∪ baA3 ∪ b
(6)
= (a ∪ ba)A3 ∪ baA2 ∪ b
Lema de Arden en (6):
A3 = (a ∪ ba) (baA2 ∪ b)
∗
(7)
= (a ∪ ba) baA2 ∪ (a ∪ ba) b
∗ ∗
(7) en (3):
(8) A2 = bA2 ∪ b(a ∪ ba) baA2 ∪ b(a ∪ ba) b ∪ λ
∗ ∗
Ejemplo Encontrar una expresión regular para el lenguaje L de todas las
palabras sobre Σ = {a, b} que tienen un número par de a’s y un
(4) en (3):
(5) A2 = a2 A2 ∪ abA1 ∪ bA0
(4) en (2):
(6) A1 = aA0 ∪ baA2 ∪ b2 A1
El sistema original de cuatro ecuaciones y cuatro incógnitas se reduce a un sistema
de tres ecuaciones y tres incógnitas, a saber:
(1) A 0 = aA1 ∪ bA2 ∪ λ
= aA0 ∪ baA2 ∪ b2 A1
(6) A 1
(7)
= (a2 ) abA1 ∪ (a2 ) bA0
∗ ∗
(7) en (6):
(8) A1 = aA0 ∪ ba(a2) abA1 ∪ ba(a2 ) bA0 ∪ b2 A1
∗ ∗
(7) en (1):
(9) A0 = aA1 ∪ b(a2 ) abA1 ∪ b(a2 ) bA0 ∪ λ
∗ ∗
=
ba(a ) ab ∪ b A ∪ aA ∪ ba(a ) bA
2 ∗ 2 2 ∗
1 0 0
∗
2 2
Haciendo R = ba(a ) ab ∪ b , (10) se puede escribir como
∗
∗
2
Haciendo S = b(a ) b , (12) se puede escribir como:
∗
(a) El lenguaje L de todas las palabras que tienen un número par de a’s y un
número impar de b’s.
(b) El lenguaje L de todas las palabras que tienen un número par de a’s o un
número impar de b’s.
Ejercicios En los siguientes ejercicios utilizar el Lema de Arden para en-
contrar una expresión regular del lenguaje aceptado por el AFN
respectivo.
1. AFN:
2. AFN:
3. AFN:
Capı́tulo 3
3.1.1. Lema de bombeo. Para todo lenguaje regular L (sobre un alfabeto dado
Σ) existe una constante n ∈ N, llamada constante de bombeo para L, tal que toda
palabra w ∈ L, con |w| ≥ n, satisface la siguiente propiedad:
w se puede descomponer como w = uvx, con | uv | ≤ n, v
= λ,
(B )
y para todo i ≥ 0 se tiene uvi x ∈ L.
Demostraci´
on : Por el Teorema de Kleene y por los teoremas de equivalencia de
los modelos AFD, AFN y AFN-λ, existe un AFD M tal que L(M ) = L . Sea
n = # de estados de M.
Nótese que tanto u como x pueden ser la palabra vacı́a λ, pero v
= λ. Además,
la palabra v se puede “bombear”, en el sentido de que uvi x es aceptada por M
para todo i ≥ 0. En el diagrama de estados, se puede visualizar esta propiedad
de bombeo de v :
Uso del lema de bombeo. El lema de bombeo se puede usar para concluir
que un cierto lenguaje dado L no es regular, recurriendo a un razonamiento
por contradicción (o reducción al absurdo). El razonamiento empleado tiene la
siguiente forma:
w = uvx, v
= λ, |uv | ≤ n.
Ejemplo Usar el lema de bombeo para demostrar que el lenguaje
L = {ai bi : i ≥ 0} no es un lenguaje regular.
tal que w = w −1 .
Solución: Si L fuera regular, existirı́a una constante de bombeo n para L. Sea
w = an ban ∈ L. Entonces w se puede descomponer como w = uvx, con |v | ≥ 1,
|uv | ≤ n, y para todo i ≥ 0, uv i x ∈ L. Por lo tanto, u y v constan únicamente de
a’s:
u = a r , para algún r ≥ 0,
v = a s , para algún s ≥ 1.
Entonces,
x = a n−(r+s) ban = a n−r−s ban .
De donde,
Por el lema de bombeo, la palabra uv2 x ∈ L, pero como s ≥ 1, an+s bn no es un
palı́ndrome. En conclusión, L no puede ser regular.
2
Ejemplo Demostrar que el lenguaje L = ai : i ≥ 0 no es regular.
Solución: Si L fuera
regular, existirı́a una constante de bombeo n para L. Sea
n2
w = a ∈ L. Entonces w se puede descomponer como w = uvx, con |v | ≥ 1,
|uv | ≤ n. Por el lema de bombeo, uv2 x ∈ L, pero por otro lado,
Esto quiere decir que el número de sı́mbolos de la palabra uv 2 x no es un cuadrado
3.3.3 Teorema. Sean M , M 1 y M 2 aut´ omatas finitos (ya sean AFD o AFN o
AFN-λ) y L(M ) = L , L(M 1 ) = L 1 , L(M 2 ) = L 2 . Se pueden construir aut´
omatas
finitos que acepten los siguientes lenguajes:
(1) L1 ∪ L2 (5) L = Σ∗ \ L
(2) L1 L2 (6) L1 ∩ L2
(3) L∗ (7) L1 \ L2
(4) L+ (8) L1 L2
Demostraci´ on : La construcción de autómatas para L1 ∪ L2 , L1 L2 , L∗ y L+ se
presento en la demostración de la parte I del Teorema de Kleene. En el numeral
(5) del teorema 3.3.1 se vió cómo se puede construir un AFD M que acepte L a
partir de un AFD M que acepte L.
Los procedimientos de construcción de (1), (2), (3), (4) y (5) se pueden combinar
para obtener autómatas que acepten los lenguajes L1 ∩ L2 , L1 \ L2 y L1 L2 .
Para diseñar un autómata que acepte L1 ∩ L2 , según el argumento anterior, hay
que usar la igualdad L1 ∩ L2 = L1 ∪ L2 y los procedimientos para unión, com-
plemento, eliminación de transiciones λ y eliminación del no-determinismo. El
siguiente teorema muestra que existe una construcción más sencilla para L 1 ∩ L2 .
3.3.4 Teorema. Sean M = (Σ, Q1 , q 1 , F 1 , δ 1 ) y M = (Σ , Q2 , q 2 , F 2 , δ 2 ) dos AFD.
Entonces el AFD
donde
δ : (Q1 × Q2 ) × Σ −→ Q1 × Q2
δ ((q i , q j ), a) = (δ 1 (q i , a), δ 2 (q j , a))
satisface L(M ) = L (M 1 ) ∩ L(M 2 ).
Ejemplo Utilizar el procedimiento del teorema 3.3.4 para construir un AFD
que acepte el lenguaje L de todas las palabras sobre Σ = {a, b} que
AFD M 2 que acepta las palabras con un número par de b’s:
Entonces L = L (M 1 ) ∩ L(M 2 ). El nuevo autómata tiene 4 estados: (q 1 , q 2 ), ( q 1 , q 4 ),
(q 3 , q 2 ) y (q 3 , q 4 ); el único estado de aceptación es (q 1 , q 2 ). Su función de transición
δ es
δ ((q 1 , q 2 ), a) = (δ 1 (q 1 , a), δ 2 (q 2 , a)) = ( q 3 , q 2 )
δ ((q 1 , q 2 ), b) = ( δ 1 (q 1 , b), δ 2 (q 2 , b)) = ( q 1 , q 4 )
δ ((q 1 , q 4 ), a) = (δ 1 (q 1 , a), δ 2 (q 4 , a)) = ( q 3 , q 4 )
δ ((q 1 , q 4 ), b) = ( δ 1 (q 1 , b), δ 2 (q 4 , b)) = ( q 1 , q 2 )
δ ((q 3 , q 2 ), a) = (δ 1 (q 3 , a), δ 2 (q 2 , a)) = ( q 1 , q 2 )
δ ((q 3 , q 2 ), b) = ( δ 1 (q 3 , b), δ 2 (q 2 , b)) = ( q 3 , q 4 )
δ ((q 3 , q 4 ), a) = (δ 1 (q 3 , a), δ 2 (q 4 , a)) = ( q 1 , q 4 )
δ ((q 3 , q 4 ), b) = ( δ 1 (q 3 , b), δ 2 (q 4 , b)) = ( q 3 , q 2 )
El diagrama de estados del autómata ası́ obtenido es un viejo conocido nuestro:
Ejercicio Utilizar el procedimiento del teorema 3.3.3 para construir un
autómata que acepte el lenguaje L de todas las palabras sobre
Σ = {a, b} que tienen un número par de a’s y un número par de b’s. Compárese
con el AFD construido en el ejemplo inmediatamente anterior.
Ejercicios Diseñar autómatas finitos que acepten los siguientes los siguientes
lenguajes sobre el alfabeto { a,b,c}:
1. El lenguaje L de todas las palabras que tienen longitud par y terminan en
a.
2. El lenguaje L de todas las palabras de longitud par que tengan un número
impar de b’s.
3. El lenguaje L de todas las palabras de longitud impar que tengan un número
par de c’s.
4. El lenguaje L de todas las palabras de longitud impar que tengan exacta-
mente dos a’s.
1. L
= ∅ si y solo si M acepta una palabra w tal que |w| < n.
2. L es infinito si y solo si M acepta una palabra w tal que n ≤ |w| < 2 n.
on :
Demostraci´
Demostraci´
on :
L1 = L 2 ⇐⇒ L1 L2 = ∅
2. Dado un autómata finito M , ¿Es L(M ) cofinito? (Recuérdese que un con-
junto es cofinito si su complemento es finito).
2. Una unión finita de lenguajes regulares es regular, pero una unión infinita de
lenguajes regulares no es necesariamente regular. Considérese, por ejemplo,
L = {an bn : n ≥ 1} =
{ ai bi }.
i≥1
∗ ∗
Ejercicio Demostrar que a b es la unión de dos lenguajes disyuntos no-
regulares.
Ejercicio Sea L un lenguaje no-regular y N un subconjunto finito de L. De-
mostrar que L \ N tampoco es regular.
Capı́tulo 4
Como lo hemos visto, los autómatas son mecanismos que procesan palabras de en-
trada. En capı́tulos posteriores consideraremos modelos de autómatas con mayor
poder computacional que el de los modelos AFD-λ, AFN y AFD. En el presente
capı́tulo iniciaremos el estudio de las gramáticas generativas , que son meca-
nismos para generar palabras a partir de un sı́mbolo inicial.
G = (V, Σ, S , P )
formada por:
escritura.
uAv ⇒ uwv.
uAv ⇒ G uwv.
directas
u1 ⇒ G u2 , u2 ⇒ G u3 , . . . , un 1 ⇒ G un
−
∗
se dice que un se deriva de u1 y se escribe u1 ⇒ un . La anterior sucesión de
derivaciones directas se representa como
u1 ⇒ u 2 ⇒ u 3 ⇒ · · · ⇒ u n − 1 ⇒ u n
V = { S }
Σ = {a, b}
P = { S → aS, S → λ }
Se tiene S ⇒ λ y
∗
S ⇒ aS ⇒ a · · · aS ⇒ a · · · a.
Por consiguiente, L(G) = a . ∗
De manera más simple, podemos presentar una gramática GIC listando sus pro-
ducciones y separando con el sı́mbolo | las producciones de una misma variable.
Se asume siempre que las letras mayúsculas representan variables y las letras
minúsculas representan sı́mbolos terminales.
Ejemplo La gramática G = (V, Σ, S , P ) dada por:
V = { S, A}
Σ = {a, b}
P = { S → aS, S → bA, S → λ, A → bA, A → b, A → λ }
se puede presentar como S → aS | bA | λ
A → bA | b | λ
Se tiene S ⇒ λ. Todas las demás derivaciones en G comienzan ya sea con la
producción S → aS o con S → bA . Por lo tanto, tenemos
∗
S ⇒ aS ⇒ a · · · aS ⇒ a · · · a.
∗
S ⇒ bA ⇒ b · · · bA ⇒ b · · · b.
∗ ∗
S ⇒ aS ⇒ a · · · aS ⇒ a · · · abA ⇒ a · · · ab · · · bA ⇒ a · · · ab · · · b.
equivalentes a G:
S → AB
S → AB | λ S → aS | A
A → aA | λ A → aA | a | λ
A → bA | λ
B → bB | λ B → bB | b | λ
Ejemplo La gramática G dada por:
S → aS | aA
A → bA | b
genera el lenguaje a+ b+ .
Ejemplo Encontrar una GIC que genere el lenguaje a ba ba sobre Σ = { a, b},
∗ ∗ ∗
es decir, el lenguaje de todas las palabras con exactamente dos b’s.
i i
Ejemplo Encontrar una GIC que genere el lenguaje L = { a b : i ≥ 0 } sobre
Σ = { a, b}, el cual no es un lenguaje regular.
Solución: G :
S → aS b | λ.
Ejemplo Encontrar una GIC que genere el lenguaje de todos los palı́ndromes
sobre Σ = { a, b}, el cual no es lenguaje regular.
Solución: G :
S → aS a | bS b | a | b | λ.
Ejemplo Encontrar una GIC que genere el lenguaje de todas las palabras sobre
Σ = { a, b} que tienen un número par de sı́mbolos.
Solución: G :
S → aS a | bS b | aS b | bS a | λ.
Una gramática equivalente es
Ejemplo Encontrar una GIC que genere el lenguaje (ab ∪ ba) sobre
∗
Σ = { a, b}.
Solución: G :
S → abS | baS | λ.
Ejercicios Encontrar GIC’s que acepten los siguientes lenguajes sobre
Σ = { a, b}:
2. El lenguaje de todas las palabras que comienzan con b y terminan con ba.
3. a b ∪ a.
∗
4. a b ∪ b a.
∗ ∗
5. (ab ∪ b a) .
∗ ∗ ∗
i j i+ j
Ejercicio Encontrar una GIC que acepte el lenguaje { a b c : i ≥ 0 , j ≥ 1 },
sobre { a,b,c}. ¿Es este un lenguaje regular?
Ejercicios Sea Σ = { a, b}. Para w ∈ Σ , se definen
∗
1. L1 = { w ∈ Σ : N a (w) = N b (w)} (lenguaje de las palabras que tienen igual
∗
2. L2 = {w ∈ Σ : N a (w) = 2N b (w)} (lenguaje de las palabras que tienen el
∗
¿Cuál de los lenguajes L1 , L2 , L3 es regular y cuál no?
Demostraci´
on : Sea V = Q y S = q 0 . Las producciones de G están dadas por
q → ap si y solo si δ (q, a) = p
q → λ si y solo si q ∈ F
tiene
∗
(1) Si δ (q, w) = p entonces q ⇒ wp.
La demostración de (1) se hace por inducción sobre w. Si w = a y δ (q, a) = p,
entonces q → ap es una producción de G y obviamente se concluye q ⇒ ap . Para
el paso inductivo, sea δ (q,wa) = p . Entonces
p = δ (q,wa) = δ (δ (q, w), a) = δ ( p, a)
∗
donde δ (q, w) = p. Por hipótesis de inducción q ⇒ wp y como δ ( p, a) = p ,
∗
q ⇒ wp ⇒ wap
∗
q ⇒ w p ⇒ w ap = wp
δ (q, w) = δ (q, w a) = δ (δ (q, w ), a) = δ ( p , a) = p,
Demostraci´
on : Se construye M = (Q, Σ, q 0 , F, ∆) haciendo Q = V , q 0 = S y
B ∈ ∆( A, a) para cada producción A → aB
A ∈ F si A → λ
para todo w ∈ Σ , w
∗
= λ, de donde L(M ) = L(G). Los detalles se dejan como
ejercicio.
4.2.4 Corolario. Un lenguaje es regular si y solamente si es generado por una
gram´
atica regular.
Demostraci´
on : Se sigue del teorema 4.2.2, teorema 4.2.3 y del teorema de Kleene.
4.2.5 Corolario. Todo lenguaje regular es un LIC (pero no viceversa).
Demostraci´ on : Se sigue del corolario 4.2.4 Por otro lado, {ai bi : i ≥ 0} es LIC
pero no es regular.
4.2.6 Definición. Una GIC se llama regular por la derecha si sus produccio-
nes son de la forma A → wB, w ∈ Σ , B ∈ V
∗
A → λ
Demostraci´
on : Una gramática regular es obviamente regular por la derecha. Re-
cı́procamente, en una gramática regular por la derecha G = (V, Σ, S , P ) , una
producción de la forma
A → a 1 a2 · · · an B
donde los ai ∈ Σ, n ≥ 2, B ∈ V , se puede simular con producciones de la forma
A → aB y A → λ . En efecto, se introducen n − 1 variables nuevas A1 , . . . , An 1
−
A → a 1 A1
A1 → a 2 A2
..
.
An −1 → an B
1. ab a
∗
2. (ab ∪ ba) ∗
3. a+ b ∪ b+ a b ∗
Ejercicio Una GIC se llama regular por la izquierda si sus producciones
son de la forma:
A → Bw, w ∈ Σ , B ∈ V
∗
A → λ
Demostrar que las gramáticas regulares y las gramáticas regulares por la izquierda
generan los mismos lenguajes.
Existen algoritmos para detectar todas las variables inútiles de una GIC. Usando
tales algoritmos podemos construir una gramática G equivalente a una gramática
G dada, de tal manera que G no tiene variables inútiles.
El siguiente algoritmo sirve para encontrar todas las variables terminables de una
GIC.
TERM1 := A ∈ V : Existe una producción de la forma A → w, w ∈ Σ ∗
TERMi+1 :=TERMi ∪ A ∈ V : ∃ producción A → w, w ∈ (Σ ∪ TERMi )∗
Obtenemos una sucesión creciente de conjuntos de variables:
TERM :=
TERMi
i≥1
INICIALIZAR:
TERM
:= A ∈ V : ∃ producción A → w, w ∈ Σ ∗
REPETIR:
:= TERM ∪ A ∈ V : ∃ producción A → w, w ∈ (Σ ∪ TERMi )∗
TERM
HASTA:
No se añaden nuevas variables a TERM
Ejemplo Encontrar las variables terminables de la siguiente gramática G.
S → AC D | bBd | ab
A → aB | aA | C
B → aDS | aB
C → aC S | C B | C C
D → bD | ba
E → AB | aDb
TERM1 = { S, D}
TERM2 = { S, D} ∪ {B, E } = { S,D,B,E }
TERM3 = { S,D,B,E } ∪ {A} = { S , D , B , E , A}
TERM4 = { S , D , B , E , A} ∪ { } = { }
El siguiente algoritmo sirve para encontrar todas las variables alcanzables de una
GIC.
ALC1 :={S}
ALCi+1 :=ALCi ∪ {A ∈ V :∃ prod. B → uAv , B ∈ ALCi u, v ∈ ( V ∪ Σ)∗ }
Obtenemos una sucesión creciente de conjuntos de variables:
ALC =
ALCi
i≥1
INICIALIZAR:
ALC := { S }
REPETIR:
:= ALC ∪ A ∈ V : ∃ producción B → uAv , B ∈ ALC y u, v ∈ (V ∪ Σ)∗
ALC
HASTA:
No se añaden nuevas variables a ALC
Ejemplo Encontrar las variables alcanzables de la siguiente gramática G.
S → aS | AaB | AC S
A → aS | AaB | AC
A → aA | λ
B → bB | DB | B B
C → aDa | ABD | ab
D → aD | DD | ab
E → F F | aa
F → aE | E F
ALC1 = { S }
ALC2 = { S } ∪ {A,B,C } = { S,A,B,C }
ALC3 = { S,A,B,C } ∪ {D} = { S,A,B,C,D}
ALC4 = { S,A,B,C,D} ∪ { } = { S,A,B,C,D}
Dada una GIC G, los dos algoritmos anteriores (algoritmo 4.3.2 y algoritmo 4.3.3)
se pueden llevar a cabo en dos órdenes diferentes:
INICIALIZAR:
ANUL := {A ∈ V : A → λ es una producción}
REPETIR:
ANUL := ANUL ∪ A ∈ V : ∃ prod. A → w, w ∈ (ANUL)∗
HASTA:
No se añaden nuevas variables a ANUL
4.4.3 Teorema. Dada una GIC G, se puede construir una GIC G equivalente
a G sin producciones λ, excepto (posiblemente) S → λ .
Demostraci´ on : Una vez que haya sido determinado el conjunto ANUL de varia-
bles anulables, por medio del algoritmo 4.4.2, las producciones de λ se pueden
eliminar (excepto S → λ ) añadiendo nuevas producciones que simulen el efecto de
las producciones λ eliminadas. Más concretamente, por cada producción A → u
de G se añaden las producciones de la forma A → v obtenidas suprimiendo de
la cadena u una, dos o más variables anulables presentes, de todas las formas
posibles. La gramática G ası́ obtenida es equivalente a la gramática original G.
Ejemplo Eliminar las producciones λ de la siguiente gramática G.
S → AB | AC A | ab
A → aAa | B | C D
G :
BC → bB | bA
→ cC | λ
D → aDc | C C | ABb
Primero encontramos las variables anulables de G por medio del algoritmo 4.4.2:
ANUL1 = { C }
ANUL2 = { C } ∪ {D} = {C, D}
ANUL3 = { C, D} ∪ {A} = {C,D,A}
ANUL4 = { C,D,A} ∪ {S } = {C,D,A,S }
ANUL5 = { C,D,A,S } ∪ { } = { C,D,A,S }
Ejercicio Eliminar las producciones λ de la siguiente gramática G.
S → E A | SaBb | aE b
A → DaD | bD | BEB
G :
BD → bB | Ab | λ
→ aE b | ab
E → aA | bB | λ
(ii) El conjunto unitario de una variable A (ó conjunto cadena de A) se
define de la siguiente manera:
∗
UNIT(A) :={X ∈ V : ∃ una derivación A ⇒ X que usa solo producciones
unitarias}.
INICIALIZAR:
UNIT(A):={A}
REPETIR:
UNIT(A):= UNIT(A) ∪ X ∈ V : ∃ una producción Y → X con
Y ∈ UNIT(A)
HASTA:
No se añaden nuevas variables UNIT(A)
4.5.3 Teorema. Dada una GIC G, se puede construir una GIC G equivalente
a G sin producciones unitarias.
Ejemplo Eliminar las producciones unitarias de la siguiente gramática G.
S → AC A | C A | AA | A | C | λ
A → aAa | aa | B | C
G :
BC → cC | D | C
→ bC
D → aA | λ
UNIT(S ) = { S,A,C,B,D}
UNIT(A) = { A,B,C,D}
UNIT(B ) = { B , C , D}
UNIT(C ) = { C }
UNIT(D) = { D}
→ a
T T →
a
b b
Ahora introducimos nuevas variables T 1 , T 2 , T 3 y las producciones binarias nece-
sarias. Las únicas producciones de estas nuevas variables son las mostradas:
A → T T
a 1
T → T T
1 b 2
T → BT
2 3
T → T C
3 a
T → a
a
T b → b
Ejemplo Simular la producción A → BAaCbb con producciones simples y
binarias.
→ a
T T →
a
b b
Ahora introducimos nuevas variables T 1, T 2 , T 3 , T 4 y las producciones binarias
necesarias. Las únicas producciones de estas nuevas variables son las mostradas:
A → BT
1
T → AT
1 2
T → T T
2 a 3
T T →
3
4
C T
→ T T
b
4
b
T → a
a
T → b
b
Luego introducimos las variables nuevas T a , T b y T c , y las producciones T a → a ,
T b → b y T c → c con el propósito de que todas las producciones sean unitarias o
de la forma A → w , donde | w| ≥ 2.
S → AB | T BC | S BS | T B | T T B | b
a a b b
A → T A | a | T C | c
a c
B → T T B | b
b b
G3 :
C T →
→ T C | c
c
T → b a
a
b
T → c
c
T → T B
3 b
T → a
a
T → b
b
T c → c
Ejemplo Encontrar una GIC en FNC equivalente a la siguiente a la gramática:
S → aS | aA | D
A → aAa | aAD | λ
G :
C B → aB | BC
→ aB b | C C | λ
D → aB | bA | aa | A
TERM={A,C,D,S}. Eliminando la variable no-terminable B obtenemos:
S → aS | aA | D
A → aAa | aAD | λ
G1 :
C → C C | λ
D → bA | aa | A
Las variables alcanzables de G 1 son ALC={S,A,D }. Eliminando la variable no-
alcanzable C obtenemos:
S → aS | aA | D
G2 : A → aAa | aAD | λ
D → bA | aa | A
El conjunto de variables anulables de G2 es ANUL={A,D,S }. Eliminando las
producciones λ obtenemos:
S → aS | aA | D | a | λ
G3 :
AD → aAa | aAD | aa | aA | aD | a
→ bA | aa | A | b
A continuación encontramos los conjuntos unitarios de todas las variables:
UNIT(S)={S,D,A}
UNIT(A)={A}
UNIT(D)={D, A}
Al eliminar las producciones unitarias obtenemos la gramática equivalente G4 :
S → aS | aA | a | λ | aAa | aAD | aa | aD | a | bA | b
G4 :
AD → aAa | aAD | aa | aA | aD | a
→ bA | aa | b | aAa | aAD | aa | aA | aD | a
Finalmente, simulamos las producciones de G4 con producciones unitarias y bi-
narias:
S → T a S | T a A | a | λ | T a T 1 | T a T 2 | T a T a | T a D | a | T b A | b
A → T a T 1 | T a T 2 | T a T a | T a A | T a D | a
D → T b A | T a T a | b | T a T 1 | T a T 2 | T a T a | T a A | T a D | a
G5 : T 1 → AT a
T 2 → AD
T a → a
T b → b
Ejercicios Encontrar una GIC en FNC equivalente a cada una de las sigui-
entes gramáticas:
∗
El árbol de una derivación S ⇒ w, w ∈ Σ , en una GIC se forma de la siguiente
∗
es
Esto muestra que dos derivaciones diferentes pueden tener el mismo árbol de
derivación ya que en el árbol aparecen las producciones utilizadas pero no el
orden en que han sido aplicadas.
Ejemplo Sea G la gramática:
S → BAa
A → bBC | a
B → bB | b
C → aB | aa
El árbol de la derivación
S ⇒ B Aa ⇒ bAa ⇒ bbBCa ⇒ bbbCa ⇒ bbbaBa ⇒ bbbaba
es
Ejercicio Sea G la gramática:
S → ABC | BaC | aB
A → Aa | a
G :
B → B AB | bab
C → cC | c
∗
longitud de la trayectoria m´
as larga en un ´ on de S ⇒ w tiene k
arbol de derivaci´
k 2
(o menos) nodos, entonces |w| ≤ 2 . Aquı́ k ≥ 2.
−
Demostraci´
on : La siguiente tabla muestra las relaciones obtenidas entre k =
∗
número de nodos de la trayectoria más larga de S ⇒ w y la longitud de w, en los
casos k = 2, k = 3, k = 4 y k = 5.
Se observa que | w| ≤ 2 k 2 . Para hacer una demostración rigurosa del caso general
−
∗
longitud de la trayectoria m´
as larga en un ´ on de S ⇒ w tiene
arbol de derivaci´
k
k + 2 (o menos) nodos, entonces |w| ≤ 2 . Aquı́ k ≥ 0.
Demostraci´
on : Inmediata.
atica en FNC y w ∈ Σ , |w| > 2 k
4.8.3 Corolario. Sea G = (V, Σ, S , P ) una gram´ ∗
Demostraci´
on : Es la afirmación contra-recı́proca del Corolario 4.8.2.
4.8.4. Lema de bombeo para LIC. Sea L un LIC que no contiene a λ. Existe
una constante m (llamada constante de bombeo de L) tal que toda z ∈ L con
|z | > m se puede descomponer en la forma z = uvwxy donde:
Demostraci´ on : Sea G = (V, Σ, S , P ) una gramática en FNC tal que L(G) = L. Tal
gramática existe por el Teorema 4.6.1. Sea k = | V | = número de variables de G
y m = 2k . Sea z ∈ L con | z | > m = 2k . Por el Corolario 4.8.3, la trayectoria más
∗
larga en el árbol de una derivación S ⇒ w tiene más de k +2 nodos. Consideremos
los últimos k +2 de tal trayectoria (siguiendo el orden que va desde la raı́z S hasta
las hojas del árbol). El último nodo de esa trayectoria es un terminal a ∈ Σ y los
restantes k + 1 nodos son variables. Como hay solo k variables en la gramática,
entonces hay por lo menos una variable A repetida en la trayectoria. Por lo tanto,
existen cadenas u, v,w,x, y ∈ Σ tales que ∗
∗ ∗ ∗
S ⇒ uAy, A ⇒ vAx, A ⇒ w.
Ası́ que
∗ ∗ ∗
S ⇒ uAy ⇒ uvAxy ⇒ uvwxy = z.
∗ ∗
Puesto que la trayectoria más larga en el árbol de derivación de A ⇒ vAx ⇒
vwx tiene menos de k + 2 nodos, por el Corolario 4.8.2, podemos concluir que
|vwx | ≤ 2 k = m. Además:
∗ ∗ ∗ ∗
S ⇒ uAy ⇒ uvAxy ⇒ uv i Axi y ⇒ uv i wxi y, para todo i ≥ 0.
∗
Finalmente, la derivación A ⇒ vAx se puede escribir como
∗
A ⇒ BC ⇒ vAx
|uvi wxi y| = k + |v i | + |xi | = k + i|v| + i|x| = k + i(|v | + |x|) = k + i(n − k).
Luego de (i), (ii) y (iii) | uvk wxk y| no es un número primo, lo cual contradice que
uvk wxk y ∈ L, según el lema de bombeo. Esta contradicción muestra que L no es
un LIC.
Ejercicios Demostrar que los siguientes lenguajes no son LIC.
1. A → a .
2. A → aB 1 B2 . . . Bk , donde las Bi son variables.
donde αi ∈ {V ∪ Σ} , β i ∈ {V ∪ Σ} y el primer sı́mbolo de β i es diferente de A.
∗ ∗
Demostraci´ on : Se puede observar que, tanto con las producciones originales como
las nuevas, A genera el lenguaje
{β 1 , β 2 , . . . , βm } · {α1 , α2 , . . . , αn } ∗
4.9.3 Lema. En una GIC cualquiera, una producci´ on A → uB v se puede reem-
plazar (simular) por
A → uw 1 v | uw 2 v | · · · | uw n v
siendo B → w 1 | w 2 | · · · | w n todas las producciones de B .
Paso 4:
S → aAA | bA | aAZA | bZ A | a
A → aA | b | aAZ | bZ
Z → aAA | bA | aAZA | bZ A | aAAZ | bAZ | aAZAZ | bZAZ
Ejemplo Encontrar una gramática en FNG equivalente a la siguiente gramáti-
ca (que esta en FNC):
S → AB | BC
A → AB | a
B → AA | C B | a
C → a | b
Paso 3: S → aB | aZ 1 B | aAC | aZ 1 AC | aBC | bBC | aC
A → a | aZ 1
B → aA | aZ 1 A | aB | bB | a
C → a | b
Z 1 → B | BZ 1
Paso 4:
S → aB | aZ 1 B | aAC | aZ 1 AC | aBC | bBC | aC
B → aA | aZ 1 A | aB | bB | a
A → a | aZ 1
C → a | b
Z 1 → aA | aZ 1 A | aB | bB | a | aAZ 1 | aZ 1 AZ 1 | aBZ 1 | bBZ 1 | aZ 1
Ejemplo Encontrar una gramática en FNG equivalente a la siguiente gramáti-
ca (que esta en FNC):
S → AB
A → AB | C B | a
B → AB | b
C → AC | c
2. S → S B | B C | b
A → AC | C A | a
G :
B → BB | a
C → BC | C A | a
Hay oraciones para las cuales se pueden construir (por lo menos) dos árboles
de derivación diferentes, o lo que es lo mismo, oraciones para las cuales hay dos
derivaciones que (ignorando el orden de las producciones) difieren por lo menos
en una producción. Tales oraciones tienen un significado ambiguo. Los lenguajes
naturales son casi siempre ambiguos porque existen muchas reglas de producción,
lo que da lugar a múltiples árboles de derivación para ciertas oraciones.
Ejemplo La oración
Juan mira a un hombre con un telescopio
4.10.2 Definición. Una GIC G es ambigua si existe una palabra w ∈ Σ para la
∗
cual hay dos derivaciones a izquierda diferentes. Equivalentemente, una GIC G es
ambigua si existe una palabra w ∈ Σ con dos árboles de derivación diferentes.
∗
Ejemplo La siguiente gramática G es ambigua
S → aS A | λ
G :
A → bA | λ
G es ambigua porque para la palabra aab hay dos derivaciones a izquierda dife-
rentes.
S ⇒ aS A ⇒ aaSAA ⇒ aaAA ⇒ aaA ⇒ aabA ⇒ aab
S ⇒ aS A ⇒ aaSAA ⇒ aaAA ⇒ aabAA ⇒ aabA ⇒ aab
S ⇒ S + S ⇒ 3 + S ⇒ 3 + S ∗ S ⇒ 3 + 1 ∗ S ⇒ 3 + 1 ∗ 5
S ⇒ S ∗ S ⇒ S + S ∗ S ⇒ 3 + S ∗ S ⇒ 3 + 1 ∗ S ⇒ 3 + 1 ∗ 5
La ambigüedad se elimina introduciendo paréntesis:
Con esta gramática, las cadenas (3+1)∗5 y 3+(1∗5) tienen árboles de derivación
diferentes.
Observaci´ on: Existen lenguajes independientes del contexto para los cuales to-
da gramática es ambigua. Tales lenguajes se llaman inherentemente ambiguos.
Ejercicios En cada caso, mostrar que la gramática G es ambigua. Encontrar
el lenguaje generado por G y construir luego una gramática no-
1. S → AaSbB | λ
G : A → aA | a
B → bB | λ
2. S → AS B | AB
G : A → aA | a
B → bB | λ
Ejercicios Utilizando la gramática presentada al inicio de la presente sección
mostrar
que las siguientes oraciones del idioma español son ambi-
guas. ¿Cómo se puede eliminar la ambigüedad?
Capı́tulo 5
Autómatas de Pila
1. Σ es el alfabeto de cinta.
Como en los modelos anteriores, el AFPD procesa palabras sobre una cinta de en-
trada, pero hay una cinta adicional, llamada pila, que es utilizada por el autómata
como lugar de almacenamiento. En un momento determinado, la cabeza lectora
del autómata está escaneando un sı́mbolo a sobre la cinta de entrada y el sı́mbolo
s en el tope o cima de la pila, como lo muestra la siguiente gráfica:
La transición
∆(q,a,s) = (q , γ )
representa un paso computacional: la cabeza lectora pasa al estado q y se
paso computacional:
3. ∆(q,λ,s) = (q , γ ). Ésta es una transición λ: el sı́mbolo sobre la cinta de
Lenguaje aceptado por un AFPD. El lenguaje aceptado por un AFPD M se
define como
∗
∗
L(M ) := { w ∈ Σ : (q 0 , w , s0) ( p, λ, β ), p ∈ F }
Observaciones:
4. No hay diagramas de estado (que sean útiles) para los AFPD ya que el
procesamiento de una palabra de entrada depende del contenido de la pila,
el cual puede cambiar en cada paso computacional.
i i
Ejemplo Diseñar un AFPD que acepte el lenguaje {a b : i ≥ 1}, sobre el
alfabeto Σ = { a, b}.
IDEA: Copiar las a es en la pila y borrar una a por cada b que sea leı́da sobre la
Σ = { a, b}
Γ = {s0 , A , B }
Q = { q 0 , q 1, q 2 }
F = { q 2 }
(q 0 , aaabbb, s0 ) (q 0 , aabbb, As0 ) ( q 0 , abbb, AAs0 ) (q 0 , bbb, AAAs0 )
(q 1 ,bb,AAs0 ) (q 1 ,b,As0) (q 1, λ , s0 ) (q 2 , λ , s0 )
(q 0 , aaabb, s0 ) (q 0 , aabb, As0 ) ( q 0 , abb, AAs0 ) ( q 0 ,bb,AAAs0 )
(q 1 ,b,AAs0 ) (q 1 ,λ,As0 )
Σ = { a, b}
Γ = {s0 , A , B }
Q = { q 0 , q 1, q 2 }
F = { q 2 }
IDEA. Acumular los sı́mbolos en la pila hasta que aparezca la c . Luego comparar
los sı́mbolos leı́dos con los almacenados en la pila, borrando en cada paso el tope
de la pila. La palabra de entrada será aceptada si es procesada completamente y
en la pila sólo queda el sı́mbolo s 0 .
M = (Σ, Q , q0 , F, Γ, s0 , ∆), donde
Σ = { a, b}
Γ = {s0 , A , B }
Q = { q 0 , q 1, q 2 }
F = { q 2 }
Ejercicios Diseñar AFPD’s que acepten los siguientes lenguajes sobre
Σ = { a, b}
1. L = { a2i bi : i ≥ 1 }.
2. L = { ai b2i : i ≥ 1 }.
Σ = {a, b}
Γ = {s0, A , B }
Q = { q 0, q 1 }
F = { q 1 }
Σ = {a, b}
Γ = {s0, A , B }
Q = { q 0, q 1 }
F = { q 1 }
donde Σ = { a, b}.
on: No es difı́cil ver que L es el lenguaje de los palı́ndromes de lon-
Observaci´
gitud par. Se puede demostrar (aunque no es fácil) que no existe ningún AFPD
que acepte este lenguaje. Esto muestra que los AFPD y AFPN no son compu-
tacionalmente equivalentes, en contraste con los modelos AFD y AFN, que si lo
son.
IDEA. Modificar el autómata del tercer ejemplo de la sección 5.1, permitiendo,
a través del no determinismo, que el autómata “adivine” cuál es la palabra.
M = (Σ, Q , q0 , F, Γ, s0 , ∆), donde
Σ = { a, b}
Γ = {s0 , A , B }
Q = { q 0 , q 1, q 2 }
F = { q 2 }
1. L = { ai b j : i
= j }, sobre Σ = {a, b}.
El autómata M está diseñado de tal forma que si S ⇒ w es una derivación a
izquierda en la gramática G, entonces existe un procesamiento
∗
(q 0 , w , s0 ) (q 2 , λ , s0 )
que simula la derivación.
∗
∗
Recı́procamente, puede demostrarse que si ( q 0 , w , s0 ) ( q 2 , λ , s0 ) entonces S ⇒ w
en la gramática G.
Obsérvese que el autómata M tiene siempre tres estados.
Ejemplo Sea G la gramática:
S → aAbS | bBa | λ
G : A → aA | a
B → bB | b
(q 0 , aabbba, s0) (q 1, aabbba, Ss0 ) ( q 1 , aabbba, aAbSs0 ) ( q 1 , abbba, AbSs 0 )
(q 1, abbba, abSs0 ) ( q 1 , bbba, bSs0 ) ( q 1 ,bba,Ss0 )
(q 1, bba, bBas0 ) ( q 1 ,ba,Bas0 ) ( q 1 ,ba,bas0 )
(q 1,a,as0 ) ( q 1 , λ , s0 ) ( q 2 , λ , s0 )
Ejemplo La siguiente gramática G genera los palı́ndromes de longitud par
sobre Σ = {a, b}, es decir, el lenguaje L = {ww 1 : w ∈ Σ } del
− ∗
∆(q 0 , λ , s0 ) = {(q 1 , Ss 0 )}
∆(q 1 , λ , S ) = {(q 1 ,aSa), (q 1 ,bSb), (q 1 , λ)}
∆(q 1 , a , a) = {(q 1 , λ)}
∆(q 1 , b , b) = {(q 1 , λ)}
∆(q 1 , λ , s0 ) = {(q 2 , s0 )}
Ejercicio Construir un AFPN M que acepte el lenguaje generado por la si-
guiente gramática:
S → Aba | AB | λ
G : A → aAS | a
B → bBA | λ
Encontrar una derivación a izquierda en G de la palabra w = aaababa y procesar
luego la palabra w con el autómata M , simulando la derivación.
Ejercicio Construir un AFPN M que acepte el lenguaje generado por la si-
guiente gramática:
S → AS A | AaA | aa
G :
A → AbA | λ
Encontrar una derivación a izquierda en G de la palabra w = bab y procesar luego
la palabra w con el autómata M , simulando la derivación.
Capı́tulo 6
Máquinas de Turing
en una cinta que es infinita en ambas direcciones. Para procesar una palabra
de entrada w, el control finito o cabeza lectora de M está en el estado inicial
q 0 escaneando el primer sı́mbolo de w. Las demás celdas o casillas de la cinta
contienen el sı́mbolo b̄.
Descripción o configuración instantánea. Es una expresión de la forma
a1 a2 · · · ai
− 1 qa i · · · an
donde los a’s son sı́mbolos del alfabeto de cinta Γ, cada uno colocado en una casilla
individual, y q ∈ Q . Esta expresión representa el status actual del cómputo:
finito de M está en el estado q escaneando el sı́mbolo ai . Se supone que las
casillas en las que no aparecen a’s contienen el sı́mbolo blanco, b̄.
Ejemplos concretos de descripciones instantáneas son:
aabq 2 baaa
q 5 ababba
abb̄b̄aabq 0 bba
u1 qu 2 v 1 pv2
significa que M puede pasar de la descripción instantánea u 1 qu 2 a la descripción
instantánea v1 pv2 en cero, uno o más pasos computacionales.
Cómputos especiales. Durante el cómputo o procesamiento de una palabra de
entrada hay dos situaciones especiales que se pueden presentar:
u1 qu 2 ∞
Lenguaje aceptado por una MT. Una palabra de entrada w es aceptada por
una MT M si hay un cómputo que se inicia en la configuración inicial q 0 w y
termina en una configuración instantánea w1 pw2 , ( p estado de aceptación) en la
cual M se detiene completamente . El lenguaje L (M ) aceptado por una MT M se
define entonces como
L(M ) :=
∗
2. L es un lenguaje recursivo si existe una MT M tal que L(M ) = L y M se
detiene con todas las palabras de entrada
i i i
Ejemplo Construir una MT M que acepte el lenguaje L = {a b c : i ≥ 0}
sobre el alfabeto Σ = {a,b,c}. Como se demostró en el capı́tulo
anterior, L no es LIC, es decir, no puede ser aceptado por ningún autómata de
pila.
Σ = {a,b,c}
Γ = {a,b,c,X,Y,Z, b̄}
Q = { q 0 , q 1 , q 2 , q 3 , q 4 , q 5 }
F = { q 5 }
q 0 aabbcc X q 1 abbcc X aq 1 bbcc X aY q 2 bcc XaY bq 2 cc XaY bq 3 bZc
∗
q 3 XaY bZc X q 0 aY bZc X Xq 1 Y bZc XXY q 1 bZc XX Y Y q 2 Zc
∗
Ejercicios Diseñar MT’s que acepten los siguientes lenguajes sobre Σ =
{a, b}. Escribir explı́citamente la idea utilizada en el diseño de la
1. L = { a2i bi : i ≥ 1 }.
2. L = { ai b2i : i ≥ 1 }.
3. L = { ai b j ai+ j : i ≥ 0 , j ≥ 1 }.
5. L = { ww : w ∈ Σ }. ∗
δ (q, a) = ( q , b , D)
δ (q , s) = ( p, s, I ), para todo sı́mbolo s ∈ Γ .
De esta manera, se puede considerar que toda MT tiene un único estado inicial y
un único estado de aceptación. Este es un hecho importante para la codificación
binaria de máquinas de Turing (sección 6.4).
donde los ai y los bi son sı́mbolos del alfabeto de cinta Γ y T es una traslación
I o D o N. En un paso computacional, el control finito cambia simultáneamente
el contenido de las k pistas de la celda escaneada y realiza luego uno de los
desplazamientos D, I o N .
Simulación. Las Máquinas de Turing que actúan sobre una cinta dividida en
k pistas aceptan los mismos lenguajes que las MT estándares. Para concluir tal
afirmación, basta considerar el modelo multi-pistas como una MT normal en la
que el alfabeto de cinta está formado por el conjunto de k -uplas (s1 , s2 , . . . , sk ),
donde los si ∈ Γ. Es decir, el nuevo alfabeto de cinta es el producto cartesiano
Γk = Γ × Γ × · · · × Γ (k veces).
donde los ai y los bi son sı́mbolos del alfabeto de cinta Γ, y T es una de las
traslaciones I o D o N .
las pistas y la posición de los marcadores X y Y . Omitiremos los detalles más
especı́ficos de este proceso de simulación.
i i i
Ejemplo MT con 2 cintas que acepta el lenguaje L = {a b c : i ≥ 1}. La
idea
implementada para esta MT es: se copia en la segunda cinta
una X por cada a leı́da. Al aparecer las b’s se avanza hacia la derecha en la
primera cinta y hacia la izquierda en la segunda. Al aparecer las c’s se avanza
hacia la derecha en ambas cintas. Si la palabra de entrada tiene la forma ai bi ci ,
se detectará simultámeamente el sı́mbolo en blanco b̄ en ambas cintas.
La función de transición es:
Ejercicio Diseñar Máquinas de Turing multi-cintas que acepten los siguientes
lenguajes. En cada caso, escribir explı́citamente la idea utilizada en
el diseño.
donde los ai y los bi son sı́mbolos del alfabeto de cinta Γ, los pi son estados y T
es una de las traslaciones I o D o N .
La noción de aceptación de las MTN es similar a la de los modelos no determi-
nistas considerados antes: una palabra de entrada w es aceptada si existe por lo
menos un c´ omputo a partir de la configuración inicial q 0 w que termina en la con-
figuración u1 pu2, con p ∈ F . Como antes, los cómputos en los cuales la máquina
conjuntos δ (q, a), considerando todo a ∈ Γ, q ∈ Q . Para cada a ∈ Γ y q ∈ Q , las
transiciones contenidas en δ (q, a) se pueden numerar entre 1 y n . Si hay menos de
n transiciones en un δ (q, a) particular, se repite arbitrariamente una de de ellas
hasta completar n. Una vez establecida esta numeración, cada transición posible
se puede considerar como un par de la forma (δ (q, a), i) con 1 ≤ i ≤ n .
La MT M que simulará a M tendrá tres cintas. La primera cinta almacena la
simula sobre ella la computación que hace la máquina original M . Si M se detiene
Q = Q ∪ {q }, donde q es un estado nuevo.
Γ = Σ ∪ {b̄}.
F = { q }.
δ (q, s) = (δ (q, s), s , D), para q ∈ Q, s ∈ Σ .
δ (q, b̄) = (q , b̄, N ), para todo q ∈ F.
La MT M se detiene para cualquier entrada w . Puesto que los lenguajes regulares
son precisamente los aceptados por los AFD, concluimos el siguiente teorema.
6.3.1 Teorema. Un lenguaje regular es un lenguaje recursivo.
Ejercicio Simular el siguiente AFD por medio de una MT M .
primera cinta simula la cinta de entrada y la segunda simula la pila del autómata.
Se define M = (Q , q 0 , F , Σ, Γ , b̄, δ ) haciendo
Q = Q ∪ {q }, donde q es un estado nuevo.
Γ = Σ ∪ Γ ∪ {b̄}
F = { q }
Una transición de la forma ∆(q,a,s) = ( p, γ ) se simula con varias transiciones: se
trata de lograr que M sobre-escriba el sı́mbolo s en la cinta 2, que representa el
tope de la pila, por la cadena γ . Por ejemplo, la transición ∆(q,a,s) = ( p, a1 a2a3 )
se simula añadiendo un estado auxiliar q e junto con las transiciones
riamente se detiene con cada cadena de entrada w. Por consiguiente, solamente
se puede concluir —por ahora— lo que se afirma en el siguiente teorema.
Ejercicio Simular por medio de una MT M el autómata de pila (primer ejem-
de la sección 5.1) que acepta el lenguaje {ai bi : i ≥ 1 }, sobre el
plo
Γ = {s1 , s2 , . . . , sk , sk+1 , . . . , sm }
sı́mbolos de Σ
Sı́mbolo Codificación
s1 (sı́mbolo b̄) 1
s2 11
.. ..
. .
sm · · · 1
11
m veces
Los estados de la MT Q = { q 0 , q 1 , q 2 , . . . , qn } se codifican también como secuencias
de unos:
Estado Codificación
q 0 (inicial) 1
q 1 (final) 11
.. ..
. .
q n 11 · · · 1
n+1 veces
0111101101111110111010
Ejemplo Considérese la siguiente MT que acepta el lenguaje a+ b:
δ (q 0 , a) = ( q 2 , a , D )
δ (q 2 , a) = ( q 2 , a , D )
δ (q 2 , b) = (q 3 , b , D)
δ (q 3 , b̄) = (q 1 , b̄, N )
Si los sı́mbolos del alfabeto de cinta b̄, a y b se codifican con 1, 11 y 111, respec-
tivamente, la anterior MT adquiere la siguiente codificación como secuencia de
ceros y unos:
010110111011010011101101110110100111011101111011101001111010110101110
Es claro que una secuencia de ceros y unos que represente una MT se puede de-
codificar. De hecho, es fácil concebir un algoritmo que determine si una secuencia
binaria finita dada es o no una MT y que la decodifique en caso afirmativo.
Enumeración de Máquinas de Turing. Podemos diseñar un algoritmo simple
para enumerar, es decir, hacer una lista (infinita) de todas las MT que actúen
sobre un alfabeto de cinta Σ dado. Se generan de manera sistemática todas las
sucesiones binarias (primero las secuencias de longitud 1, luego las secuencias
de longitud 2, luego las de longitud 3 y ası́ sucesivamente). Para cada secuencia
binaria generada se determina si codifica o no a una MT; la primera MT detectada
se llama M 1 , la siguiente M 2 , y ası́ sucesivamente. Este algoritmo produce la lista
o enumeración M 1 , M 2 , M 3 , . . . de todas las MT sobre Σ. Por consiguiente, el
conjunto de todas las máquinas de Turing (sobre un alfabeto dado) es enumerable.
Ejercicio Sea M la MT definida por el siguiente diagrama de estados:
Ejercicio La siguiente secuencia binaria codifica una MT M , siguiendo el
esquema
de codificación presentado en esta sección. Decodificar la
máquina M y determinar L(M ).
sigue
01011011101101001110111011110111010011110111011110111010 −−→
0111101101111101101001111010110101110
MT, si esta última se presenta codificada. M es una MT con tres cintas cuyo
u
que sea aplicable. Si encuentra una transición aplicable, M simula en la cinta 2
u
lo que harı́a M . Si después de escanear la cinta 1, M no encuentra una transi-
u
ción aplicable, la máquina se detiene, como lo harı́a M . Después de realizar una
transición, el control finito regresa, en la primera cinta, al 0 inicial; en las demás
cintas el control permanece estacionario. Si al procesar una entrada w , M se de-
u
{w1 , w2 , w3 , . . .} (en la lista aparece primero la palabra vacı́a, luego las palabras
de longitud 1, luego las de longitud 2 y ası́ sucesivamente, todas codificadas
como secuencias binarias). Utilizando estas enumeraciones es posible construir
un lenguaje que no es recursivamente enumerable.
Una instancia (o caso) de este problema es una pareja (M, w) formada por una
MT M y una cadena w ∈ Σ dadas, ambas codificadas según el esquema de codi-
∗
ficación de la sección 6.4. Obsérvese que hay infinitas instancias para el problema;
el algoritmo debe ser aplicable uniformemente a todas ellas y terminar con una
de las conclusiones ‘SI’ o ‘NO’.
Si se quiere ser más precisos con respecto a la noción de algoritmo, el problema
de la parada se puede enunciar con respecto máquinas de Turing, en vez de
procedimiento de reducción.
Ejemplo Problema de la cinta en blanco.
Ejercicios Mediante la técnica de reducción de problemas, mostrar que los
siguientes problemas de decisión son irresolubles:
3. Dada una MT M = (Q, q 0 , F, Σ, Γ, b̄, δ ) cualquiera y un sı́mbolo a ∈ Γ,
¿escribirá M alguna vez el sı́mbolo a sobre la cinta si M inicia su funciona-
miento con la cinta en blanco?