Sei sulla pagina 1di 191

Captulo 1

Alfabetos, cadenas y lenguajes


1.1. Alfabetos y cadenas
Un alfabeto es un conjunto nito no vaco cuyos elementos se llaman smbolos.
Denotamos un alfabeto arbitrario con la letra .
Una cadena o palabra sobre un alfabeto es cualquier sucesion nita de ele-
mentos de . Admitimos la existencia de una unica cadena que no tiene smbolos,
la cual se denomina cadena vaca y se denota con . La cadena vaca desempe na,
en la teora de lenguajes formales, un papel similar al que desempe na el conjunto
vaco en la teora de conjuntos.

Ejemplo
Sea = {a, b} el alfabeto que consta de los dos smbolos a y b. Las
siguientes son cadenas sobre :
aba
ababaaa
aaaab.
Observese que aba = aab. El orden de los smbolos en una cadena es signicativo
ya que las cadenas se denen como sucesiones, es decir, conjuntos secuencialmente
ordenados.

Ejemplo
El alfabeto = {0, 1} se conoce como alfabeto binario. Las cadenas
sobre este alfabeto son secuencias nitas de ceros y unos, llamadas
secuencias binarias, tales como
001
1011
001000001.

Ejemplo
= {a, b, c, . . . , x, y, z}, el alfabeto del idioma castellano. Las pala-
bras ociales del castellano (las que aparecen en el diccionario DRA)
son cadenas sobre .
1
2 Teora de la Computacion Profesor: Rodrigo De Castro
Ejemplo
El alfabeto utilizado por muchos de los llamados lenguajes de progra-
macion (como Pascal o C) es el conjunto de caracteres ASCII (o un
subconjunto de el) que incluye, por lo general, las letras may usculas y min usculas,
los smbolos de puntuacion y los smbolos matematicos disponibles en los teclados
estandares.
El conjunto de todas las cadenas sobre un alfabeto , incluyendo la cadena
vaca, se denota por

.
Ejemplo Sea = {a, b, c}, entonces
= {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}.
En la siguiente tabla aparecen las convenciones de notacion corrientemente utili-
zadas en la teora de lenguajes formales. De ser necesario, se emplean subndices.
Notacion usada en la teora de lenguajes
, denotan alfabetos.
denota el conjunto de todas las cadenas que se pue-
den formar con los smbolos del alfabeto .
a, b, c, d, e,. . . denotan smbolos de un alfabeto.
u, v, w, x, y, z, . . .
, , , . . .
denotan cadenas, es decir, sucesiones nitas de
smbolos de un alfabeto.
denota la cadena vaca, es decir, la unica cadena
que no tiene smbolos.
A, B, C, . . . , L, M, N,. . . denotan lenguajes (denidos mas adelante).
Algunos autores denotan la cadena vaca con la letra griega . Preferimos
denotarla con porque tiende a confundirse con el smbolo usado
para la relacion de pertenencia.
Si bien un alfabeto es un conjunto nito,

es siempre un conjunto
innito (enumerable). En el caso mas simple, contiene solo un smbolo,
= {a}, y

= {, a, aa, aaa, aaaa, aaaaa, . . .}.


Hay que distinguir entre los siguientes cuatro objetos, que son todos di-
ferentes entre s: , , {} y {}.
La mayor parte de la teora de lenguajes se hace con referencia a un
alfabeto jo (pero arbitrario).
Captulo 1 Alfabetos, cadenas y lenguajes 3
1.2. Concatenacion de cadenas
Dado un alfabeto y dos cadenas u, v

, la concatenacion de u y v se
denota como u v o simplemente uv y se dene descriptivamente as:
1. Si v = , entonces u = u = u. Es decir, la concatenacion de cualquier
cadena u con la cadena vaca, a izquierda o a derecha, es igual a u.
2. Si u = a
1
a
2
a
n
, v = b
1
b
2
b
m
, entonces
u v = a
1
a
2
a
n
b
1
b
2
b
m
.
Es decir, u v es la cadena formada escribiendo los smbolos de u y a con-
tinuacion los smbolos de v.
La concatenacion de cadenas se puede denir inductiva o recursivamente de la
siguiente manera. Si u, v

, a , entonces
1. u = u = u.
2. u (va) = (u v)a.
Propiedad. La concatenacion de cadenas es una operacion asociativa. Es decir,
si u, v, w

, entonces
(uv)w = u(vw).
Demostracion: Se puede hacer escribiendo explcitamente las cadenas u, v, w
y usando la denicion descriptiva de concatenacion. Tambien se puede dar una
demostracion inductiva usando la denicion recursiva de concatenacion (ejercicio
opcional).
1.3. Potencias de una cadena
Dada u

y n N, se dene (descriptivamente) u
n
en la siguiente forma
u
0
= ,
u
n
= uu u
. .
n veces
.

Ejercicio Dar una denicion recursiva de u


n
.
4 Teora de la Computacion Profesor: Rodrigo De Castro
1.4. Longitud de una cadena
La longitud de una cadena u

se denota |u| y se dene como el n umero de


smbolos de u (contando los smbolos repetidos). Es decir,
|u| =
_
0, si u = ,
n, si u = a
1
a
2
a
n
Ejemplo |aba| = 3, |baaa| = 4.
Ejemplo Si w

, n, m N, demostrar que
|w
n+m
| = |w
n
| +|w
m
|
Soluci on:
Caso n, m 1. |w
n+m
| = | ww w
. .
n+m veces
| = (n + m)|w|. Por otro lado,
|w
n
| +|w
m
| = | ww w
. .
n veces
| +| ww w
. .
m veces
| = n|w| + m|w|.
Caso n = 0, m 1. |w
n+m
| = |w
0+m
| = |w
m
|. Por otro lado,
|w
n
| +|w
m
| = |w
0
| +|w
m
| = || +|w
m
| = 0 +|w
m
| = |w
m
|.
Caso m = 0, n 1. Similar al caso anterior.
Caso n = 0, m = 0. |w
n+m
| = |w
0+0
| = || = 0. Por otro lado,
|w
n
| +|w
m
| = |w
0
| +|w
0
| = || +|| = 0 + 0 = 0.
1.5. Reexion o inversa de una cadena
La reexion o inversa de una cadena u

se denota u
R
y se dene descrip-
tivamente as:
u
R
=
_
, si u = ,
a
n
a
2
a
1
, si u = a
1
a
2
a
n
.
De la denicion se observa claramente que la reexion de la reexion de una
cadena es la misma cadena, es decir,
(u
R
)
R
= u, para u

.
Ejercicio Dar una denici on recursiva de u
R
.
Ejercicio
Si u, v

, demostrar que (uv)


R
= v
R
u
R
. Generalizar esta propie-
dad a la concatenacion de n cadenas.
Algunos autores escriben u
1
en lugar de u
R
para denotar la reexion de
una cadena u.
Captulo 1 Alfabetos, cadenas y lenguajes 5
1.6. Subcadenas, prejos y sujos
Una cadena v es una subcadena o una subpalabra de u si existen cadenas x, y
tales que u = xvy. Notese que x o y pueden ser y, por lo tanto, la cadena vaca
es una subcadena de cualquier cadena.
Un prejo de u es una cadena v tal que u = vw para alguna cadena w

.
Se dice que v es un prejo propio si v = u.
Similarmente, un sujo de u es una cadena v tal que u = wv para alguna
cadena w

. Se dice que v es un sujo propio si v = u.


Observese que es un prejo y un sujo de toda cadena u ya que u = u = u.
Por la misma razon, toda cadena u es prejo y sujo de s misma.

Ejemplo Sea = {a, b, c, d}, u = bcbaadb.


Prejos de u :

b
bc
bcb
bcba
bcbaa
bcbaad
bcbaadb
Sujos de u :

b
db
adb
aadb
baadb
cbaadb
bcbaadb
1.7. Lenguajes
Un lenguaje L sobre un alfabeto es un subconjunto de

, es decir L

.
Casos extremos:
L = , lenguaje vaco.
L =

, lenguaje de todas las cadenas sobre .


Todo lenguaje L satisface L

, y puede ser nito o innito. Los lenguajes


se denotan con letras may usculas A, B, C, . . . , L, M, N, . . .. En la siguiente graca
se visualizan dos lenguajes A y B sobre .
6 Teora de la Computacion Profesor: Rodrigo De Castro
Ejemplo
Los siguientes son ejemplos de lenguajes sobre los alfabetos especi-
cados.
= {a, b, c}. L = {a, aba, aca}.
= {a, b, c}. L = {a, aa, aaa, . . .} = {a
n
: n 1}.
= {a, b, c}. L = {, aa, aba, ab
2
a, ab
3
a, . . .} = {ab
n
a : n 0} {}.
= {a, b, c, . . . , x, y, z}. L = {u

: u aparece en el diccionario espa nol DRA}.


L es un lenguaje nito.
= {a, b, c}. L = {u

: u no contiene el smbolo c}. Por ejemplo,


abbaab L pero abbcaa / L.
= {0, 1}. L = conjunto de todas las secuencias binarias que contienen un
n umero impar de unos.
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los n umeros naturales se
puede denir como un lenguaje sobre , en la siguiente forma:
N = {u

: u = 0 o 0 no es un prejo de u}.
Ejercicio
Denir el conjunto de los enteros Z = {. . . , 2, 1, 0, 1, 2, . . .} como
un lenguaje sobre un alfabeto adecuado.
Captulo 1 Alfabetos, cadenas y lenguajes 7
El concepto abstracto de lenguaje, tal como se ha denido, no es exac-
tamente la misma nocion utilizada en la expresion lenguaje de progra-
macion. Para precisar la relacion entre estos conceptos, consideremos el
alfabeto de los caracteres ASCII. Un programa en C o en Pascal, por
ejemplo, es simplemente una cadena de smbolos de y, por lo tanto, un
conjunto de programas es un lenguaje (en el sentido formal denido en
esta seccion).
1.8. Operaciones entre lenguajes
Puesto que los lenguajes sobre son subconjuntos de

, las operaciones usuales


entre conjuntos son tambien operaciones validas entre lenguajes. As, si A y B
son lenguajes sobre (es decir A, B

), entonces los siguientes tambien son


lenguajes sobre :
A B Union
A B Interseccion
A B Diferencia
A =

A Complemento
Estas operaciones entre lenguajes se llaman operaciones conjuntistas o boolea-
nas para distinguirlas de las operaciones ling usticas (concatenacion, potencia,
inverso, clausura) que son extensiones a los lenguajes de las operaciones entre
cadenas.
1.9. Concatenacion de lenguajes
La concatenacion de dos lenguajes A y B sobre , notada A B o simplemente
AB se dene como
AB = {uv : u A, v B}.
En general AB = BA.

Ejemplo Si = {a, b, c}, A = {a, ab, ac}, B = {b, b


2
}, entonces
AB = {ab, ab
2
, ab
2
, ab
3
, acb, acb
2
}.
BA = {ba, bab, bac, b
2
a, b
2
ab, b
2
ac}.

Ejemplo Si = {a, b, c}, A = {ba, bc}, B = {b


n
: n 0}, entonces
AB = {bab
n
: n 0} {bcb
n
: n 0}.
BA = {b
n
ba : n 0} {b
n
bc : n 0}
= {b
n+1
a : n 0} {b
n+1
c : n 0}
= {b
n
a : n 1} {b
n
c : n 1}.
8 Teora de la Computacion Profesor: Rodrigo De Castro
Ejercicio
De un ejemplo de un alfabeto y dos lenguajes diferentes A, B
sobre tales que AB = BA.
Propiedades de la concatenacion de lenguajes. Sean A, B, C lenguajes sobre
, es decir A, B, C

. Entonces
1. A = A = .
2. A {} = {} A = A.
3. Propiedad Asociativa.
A (B C) = (A B) C.
4. Distributividad de la concatenacion con respecto a la union.
A (B C) = A B A C.
(B C) A = B A C A.
5. Propiedad distributiva generalizada. Si {B
i
}
iI
es una familia cualquiera de
lenguajes sobre , entonces
A

iI
B
i
=

iI
(A B
i
),

iI
B
i
A =

iI
(B
i
A).
Demostracion:
1. A = {uv : u A, v } = .
2. A {} = {uv : u A, v {}} = {u : u A} = A.
3. Se sigue de la asociatividad de la concatenacion de cadenas.
4. Caso particular de la propiedad general, demostrada a continuacion.
5. Demostracion de la igualdad A

iI
B
i
=

iI
(A B
i
):
x A

iI
B
i
x = u v, con u A & v

iI
B
i
x = u v, con u A & v B
j
, para alg un j I
x A B
j
, para alg un j I
x

iI
(A B
i
).
La igualdad

iI
B
i
A =

iI
(B
i
A) se demuestra de forma similar.
Captulo 1 Alfabetos, cadenas y lenguajes 9
La propiedad asociativa permite escribir concatenaciones de tres o mas
lenguajes sin necesidad de usar parentesis.
En general, no se cumple que A(BC) = ABAC. Es decir, la conca-
tenacion no es distributiva con respecto a la interseccion. Contraejemplo:
A = {a, }, B = {}, C = {a}. Se tiene:
A (B C) = {a, } = .
Por otro lado,
A B A C = {a, } {} {a, } {a} = {a, } {a
2
, a} = {a}.

Ejercicio
Una de las dos contenencias siguientes es verdadera y la otra es
falsa. Demostrar o refutar, seg un sea el caso:
1. A (B C) A B A C.
2. A B A C A (B C).
1.10. Potencias de un lenguaje
Dado un lenguaje A sobre , (A

), y n N, se dene A
n
en la siguiente
forma
A
0
= {},
A
n
= AA A
. .
n veces
.
Esta denicion generaliza a lenguajes la denicion de potenciacion de cadenas.

Ejercicio Dar una denicion recursiva de A


n
.
1.11. La clausura de Kleene de un lenguaje
La clausura de Kleene o estrella de Kleene o simplemente la estrella de un
lenguaje A, A

, es la union de todas las potencias de A y se denota por A

.
(Descripcion 1) A

=
_
i0
A
i
= A
0
A
1
A
2
A
n

A

se puede describir de la siguiente manera


(Descripcion 2)
A

= conjunto de todas las concatenaciones


de cadenas de A, incluyendo
= {u
1
u
n
: u
i
A, n 0}
10 Teora de la Computacion Profesor: Rodrigo De Castro
De manera similar se dene la clausura positiva de un lenguaje A, A

, la
cual se denota por A
+
.
A
+
=
_
i1
A
i
= A
1
A
2
A
n

A
+
se puede describir de la siguiente manera
A
+
= conjunto de todas las concatenaciones de cadenas de A,
= {u
1
u
n
: u
i
A, n 1}
Observese que A

= A
+
{} y que A

= A
+
si y solamente si A.
Propiedades de y +. Sea A un lenguaje sobre , es decir, A

.
1. A
+
= A

A = A A

.
2. 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
+
.
Demostracion:
A A

= A (A
0
A
1
A
2
) 1.
= A
1
A
2
A
3

= A
+
.
Similarmente se demuestra que A

A = A
+
.
2. Si x A

, entonces x = u v, con u A

, v A

. Entonces, x = u v,
con u = u
1
u
2
u
n
, u
i
A, n 0 y v = v
1
v
2
v
m
, v
i
A, m 0.
De donde
x = u v = u
1
u
2
u
n
v
1
v
2
v
m
.
con u
i
A, v
i
A, n 0. Por lo tanto, x es una concatenacion de n + m
cadenas de A. As que x A

.
Captulo 1 Alfabetos, cadenas y lenguajes 11
Recprocamente, si x A

, entonces x = x A

. Esto prueba la
igualdad de los conjuntos A

y A

.
3. Se sigue de la propiedad anterior.
_
A

=
_
A

_
0

_
A

_
1

_
A

_
2
4.
= {} A


= A

.
5. La demostracion de esta propiedad es similar a la de la propiedad 2, pero con
la restriccion m, n 1. En general, no se tiene la igualdad A
+
A
+
= A
+
; mas
adelante se mostrara un contraejemplo.
_
A

_
+
=
_
A

_
1
(A

_
2
(A

_
3
6.
= A


= A

.
_
A
+
_

=
_
A
+
_
0

_
A
+
_
1

_
A
+
_
2
7.
= {} A
+
A
+
A
+

= A

(conjuntos contenidos en A
+
)
= A

.
_
A
+
_
+
=
_
A
+
_
1

_
A
+
_
2

_
A
+
_
3
, 8.
= A
+
(conjuntos contenidos en A
+
)
= A
+
.
Contraejemplo de A
+
A
+
= A
+
. Sea = {a, b}, A = {a}. Se tiene
A
+
= A
1
A
2
= {a} {aa} {aaa} = {a
n
: n 1}.
Por otro lado,
A
+
A
+
= {a, a
2
, a
3
, . . . } {a, a
2
, a
3
, . . . } = {a
2
, a
3
, a
4
, . . . }
= {a
n
: n 2}.
Seg un las deniciones dadas,

tiene dos signicados:

= conjunto de las cadenas sobre el alfabeto .

= conjunto de todas las concatenaciones de cadenas de .


No hay conicto de notaciones porque las dos deniciones anteriores de

dan lugar al mismo conjunto.


12 Teora de la Computacion Profesor: Rodrigo De Castro
Ejercicio Sean A, B

. Demostrar que
(A B)

= (A

.
Ayuda: tener en cuenta tanto la descripcion 1 como la descripcion 2 presen-
tadas arriba.
1.12. Reexion o inverso de un lenguaje
Dado A un lenguaje sobre , se dene A
R
de la siguiente forma:
A
R
= {u
R
: u A}.
A
R
se denomina la reexion o el inverso de A.
Propiedades. Sean A y B lenguajes sobre (es decir, A, B

).
1. (A B)
R
= B
R
A
R
.
2. (A B)
R
= A
R
B
R
.
3. (A B)
R
= A
R
B
R
.
4. A
R
R
= A.
5. (A

)
R
= A
R

.
6. (A
+
)
R
= A
R
+
.
Demostracion:
x (A B)
R
x = u
R
, donde u A B 1.
x = u
R
, donde u = vw, v A, w B
x = (vw)
R
, donde v A, w B
x = w
R
v
R
, donde v A, w B
x B
R
A
R
.
2.

Ejercicio
3.

Ejercicio
Captulo 1 Alfabetos, cadenas y lenguajes 13
4.

Ejercicio
x (A

)
R
x = u
R
, donde u A

5.
x = (u
1
u
2
u
n
)
R
, donde los u
i
A, n 0
x = u
R
n
u
R
2
u
R
1
, donde los u
i
A, n 0
x (A
R
)

.
6.

Ejercicio

Ejercicio
Se pueden generalizar las propiedades 2 y 3 anteriores para uniones
e intersecciones arbitrarias, respectivamente?
1.13. Lenguajes regulares
Los lenguajes regulares sobre un alfabeto dado son todos los lenguajes que
se pueden formar a partir de los lenguajes basicos , {}, {a}, a , por medio
de las operaciones de union, concatenacion y estrella de Kleene.
Podemos dar una denicion recursiva de los lenguajes regulares. Sea un
alfabeto.
1. , {} y {a}, para cada a , son lenguajes regulares sobre . Estos son
los denominados lenguajes regulares basicos.
2. Si A y B son lenguajes regulares sobre , tambien lo son
A B (union)
A B (concatenacion)
A

(estrella de Kleene).
Observese que tanto como

son lenguajes regulares sobre .

Ejemplos Sea = {a, b}. Los siguientes son lenguajes regulares sobre :
1. El lenguaje A de todas las cadenas que tienen exactamente una a:
A = {b}

{a} {b}

.
2. El lenguaje B de todas las cadenas que comienzan con b:
B = {b} {a, b}

.
14 Teora de la Computacion Profesor: Rodrigo De Castro
3. El lenguaje C de todas las cadenas que contienen la cadena ba:
C = {a, b}

{ba} {a, b}

.
4. ({a} {b}

) {a}.
5.
__
{a}

{b}

{b}

.
Es importante observar que todo lenguaje nito L = {w
1
, w
2
, . . . , w
n
} es regular
ya que L es puede obtener con uniones y concatenaciones:
L = {w
1
} {w
2
} {w
n
},
y cada w
i
es la concatenacion de un n umero nito de smbolos, w
i
= a
1
a
2
a
k
;
por lo tanto, {w
i
} = {a
1
} {a
2
} {a
k
}.
1.14. Expresiones regulares
Las expresiones regulares representan lenguajes regulares y su proposito es sim-
plicar la escritura de los lenguajes regulares.
La siguiente es la denicion recursiva de las expresiones regulares sobre un
alfabeto dado.
1. Expresiones regulares basicas:
es una expresion regular que representa al lenguaje .
es una expresion regular que representa al lenguaje {}.
a es una expresion regular que representa al lenguaje {a}, a .
2. Si R y S son expresiones regulares sobre , tambien lo son:
(R)(S)
(R S)
(R)

(R)(S) representa la concatenacion de los lenguajes representados por R y


S; (R S) representa su union, y (R)

representa la clausura de Kleene del


lenguaje representado por R. Los parentesis ( y ) son smbolos de agrupacion
y se pueden omitir si no hay peligro de ambig uedad.
Captulo 1 Alfabetos, cadenas y lenguajes 15
Para una expresion regular R cualquiera se utiliza en ocasiones la siguiente no-
tacion:
L(R) := lenguaje representado por R.
Utilizando esta notacion y la denicion de expresion regular podemos escribir,
para R y S expresiones regulares arbitrarias:
L() = .
L() = {}.
L(a) = {a}, a .
L(RS) = L(R)L(S).
L(R S) = L(R) L(S).
L(R

) = L(R)

Ejemplo Dado el alfabeto = {a, b, c},


(a b

)a

(bc)

es una expresion regular que representa al lenguaje


({a} {b}

) {a}

{bc}

Ejemplo Dado el alfabeto = {a, b},


( a)

(a b)

(ba)

es una expresion regular que representa al lenguaje


({} {a})

({a} {b})

{ba}

Ejemplos
Los tres primeros lenguajes de la seccion 1.13, podemos represen-
tarlos con expresiones regulares:
1. El lenguaje A de todas las cadenas que tienen exactamente una a:
A = b

ab

.
2. El lenguaje B de todas las cadenas que comienzan con b:
B = b(a b)

.
3. El lenguaje C de todas las cadenas que contienen la cadena ba:
C = (a b)

ba(a b)

.
16 Teora de la Computacion Profesor: Rodrigo De Castro
La representacion de lenguajes regulares por medio de expresiones regula-
res no es unica. Es posible que haya varias expresiones regulares diferentes
para el mismo lenguaje. Por ejemplo, b(a b)

y b(b a)

representan el
mismo lenguaje.
Otro ejemplo: las dos expresiones regulares (a b)

y (a

representan
el mismo lenguaje por la igualdad establecida en el ejercicio nal de la
seccion 1.11
Ejemplos
Encontrar expresiones regulares que representen los siguientes len-
guajes, denidos sobre el alfabeto = {a, b}:
1. Lenguaje de todas las cadenas que comienzan con b y terminan con a.
Solucion: b(a b)

a.
2. Lenguaje de todas las cadenas que tienen un n umero par de smbolos (ca-
denas de longitud par).
Solucion: (aa ab ba bb)

.
3. Lenguaje de todas las cadenas que tienen un n umero par de aes.
Soluciones:
b

(b

ab

ab

.
(ab

a b)

.
(b

ab

ab

.
Ejemplos
Encontrar expresiones regulares que representen los siguientes len-
guajes, denidos sobre el alfabeto = {0, 1}.
1. Lenguaje de todas las cadenas que tienen exactamente dos ceros.
Solucion: 1

01

01

.
2. Lenguaje de todas las cadenas cuyo pen ultimo smbolo, de izquierda a de-
recha, es un 0.
Solucion: (0 1)

0(0 1).
Ejemplo
Sea = {a, b, c}. Encontrar una expresion regular que represente el
lenguaje de todas las cadenas que no contienen la cadena bc.
Soluci on: Una b puede estar seguida solamente de otra b o de una a, mientras
que las aes y las ces pueden estar seguidas de cualquier smbolo. Esto se puede
visualizar por medio del siguiente diagrama:
Captulo 1 Alfabetos, cadenas y lenguajes 17
Teniendo en cuenta todas las restricciones y posibilidades, arribamos a la siguiente
expresion: (a c b
+
a)

. Una expresion regular mas sencilla para este lenguaje


es c

(b ac

Ejercicios
Encontrar expresiones regulares para los lenguajes descritos a con-
tinuacion:
1. = {0, 1, 2}. Lenguaje de todas las cadenas que comienzan con 2 y termi-
nan con 1.
2. = {a, b, c}. Lenguaje de todas las cadenas que tienen un n umero par de
smbolos.
3. = {a, b}. Lenguaje de todas las cadenas que tienen un n umero impar de
smbolos.
4. = {a, b, c}. Lenguaje de todas las cadenas que tienen un n umero impar
de smbolos.
5. = {a, b}. Lenguaje de todas las cadenas que tienen un n umero impar de
aes.
6. = {0, 1}. Lenguaje de todas las cadenas que tienen por lo menos un 0 y
por lo menos un 1.
7. = {0, 1}. Lenguaje de todas las cadenas que tienen a lo sumo dos ceros
consecutivos.
8. = {0, 1}. Lenguaje de todas las cadenas cuyo quinto smbolo, de izquierda
a derecha, es un 1.
9. = {0, 1}. Lenguaje de todas las cadenas de longitud par 2 formadas
por ceros y unos alternados.
10. = {0, 1}. Lenguaje de todas las cadenas cuya longitud es 4.
18 Teora de la Computacion Profesor: Rodrigo De Castro
11. = {0, 1}. Lenguaje de todas las cadenas de longitud impar que tienen
unos unicamente en las posiciones impares.
12. = {a, b}. Lenguaje de todas las cadenas que tienen la cadena ab un
n umero par de veces.
13. = {a, b}. Lenguaje de todas las cadenas que tienen un n umero par de aes
o un n umero impar de bes.
14. = {0, 1}. Lenguaje de todas las cadenas cuya longitud es un m ultiplo de
tres.
15. = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen dos unos
consecutivos.
No todos los lenguajes sobre un alfabeto dado son regulares. Mas
adelante se mostrara que el lenguaje
L = {, ab, aabb, aaabbb, . . . } = {a
n
b
n
: n 0}
sobre = {a, b} no se puede representar por medio de una expresion
regular, y por lo tanto, no es un lenguaje regular.
Captulo 2
Automatas nitos
2.1. Automatas nitos deterministas (AFD)
Los automatas nitos son maquinas abstractas que procesan cadenas, las cuales
son aceptadas o rechazadas:
El automata act ua leyendo los smbolos escritos sobre una cinta semi-innita,
dividida en celdas o casillas, sobre la cual se escribe una cadena de entrada u, un
smbolo por casilla. El automata posee una unidad de control que inicialmente
escanea o lee la casilla del extremo izquierdo de la cinta.
19
20 Teora de la Computacion Profesor: Rodrigo De Castro
La unidad de control (tambien llamada control nito o cabeza lectora) del
automata posee un cierto n umero (nito) de conguraciones internas, llamadas
estados del automata. Entre los estados de un automata se destacan el estado
inicial y los estados nales o estados de aceptacion.
Formalmente, un automata nito M esta denido por cinco parametros, M =
(, Q, q
0
, F, ), a saber:
1. Un alfabeto , llamado alfabeto de cinta. Todas las cadenas que procesa M
pertenecen a

.
2. Q = {q
0
, q
1
, . . . , q
n
}, conjunto de estados del automata.
3. q
0
Q, estado inicial.
4. F Q, conjunto de estados nales o de aceptacion. F = .
5. La funcion de transicion del automata
: Q Q
(q, a) (q, a)
Toda cadena de entrada es procesada completamente, hasta que la unidad de
control encuentra la primera casilla vaca.
Ejemplo
= {a, b}.
Q = {q
0
, q
1
, q
2
}.
q
0
: estado inicial.
F = {q
0
, q
2
}, estados de aceptacion.
Funcion de transicion :
a b
q
0
q
0
q
1
q
1
q
1
q
2
q
2
q
1
q
1
(q
0
, a) = q
0
(q
0
, b) = q
1
(q
1
, a) = q
1
(q
1
, b) = q
2
(q
2
, a) = q
1
(q
2
, b) = q
1
.
Ilustracion del procesamiento de dos cadenas de entrada:
1. u = aabab.
Captulo 2 Automatas nitos 21
Como q
2
es un estado de aceptacion, la cadena de entrada u es aceptada.
2. v = aababa.
Puesto que q
1
no es un estado de aceptacion, la cadena de entrada v es rechazada.
Caso especial: la cadena es la cadena de entrada.
Como q
0
es un estado de aceptacion, la cadena es aceptada.
En general se tiene lo siguiente: la cadena vaca es aceptada por un automata
M si y solamente si el estado inicial q
0
de M tambien es un estado de aceptacion.
Los automatas nitos descritos anteriormente se denominan automatas ni-
tos deterministas (AFD) ya que para cada estado q y para cada smbolo a ,
la funcion de transicion (q, a) siempre esta denida. Es decir, la funcion de tran-
sicion determina completa y unvocamente la accion que el automata realiza
cuando la unidad de control se encuentra en un estado q leyendo un smbolo a
sobre la cinta:
Dado un automata M, el lenguaje aceptado o reconocido por M se denota
L(M) y se dene por
L(M) := {u

: M termina el procesamiento de la cadena


de entrada u en un estado q F}.
22 Teora de la Computacion Profesor: Rodrigo De Castro
2.2. Diagrama de estados de un automata nito
Un automata nito se puede representar por medio de un grafo dirigido y eti-
quetado. Recuerdese que un grafo es un conjunto de vertices o nodos unidos por
arcos o conectores; si los arcos tienen tanto direccion como etiquetas, el grafo se
denomina grafo dirigido y etiquetado o digrafo etiquetado.
El grafo de un automata se obtiene siguiendo las siguientes convenciones:
Los vertices o nodos son los estados del automata.
El estado q se representa por:
El estado inicial q
0
se representa por:
Un estado nal q se representa por:
La transicion = (q, a) = p se representa en la forma
Dicho grafo se denomina el diagrama de estados del automata.
Ejemplo Diagrama de estados del automata presentado en la seccion anterior.
= {a, b}.
Q = {q
0
, q
1
, q
2
}.
q
0
: estado inicial.
F = {q
0
, q
2
}, estados de aceptacion.
Funcion de transicion :
a b
q
0
q
0
q
1
q
1
q
1
q
2
q
2
q
1
q
1
(q
0
, a) = q
0
(q
0
, b) = q
1
(q
1
, a) = q
1
(q
1
, b) = q
2
(q
2
, a) = q
1
(q
2
, b) = q
1
Captulo 2 Automatas nitos 23
2.3. Dise no de automatas
Para automatas deterministas se adopta la siguiente convencion adicional con res-
pecto a los diagramas de estados: se supone los arcos no dibujadas explcitamente
conducen a un estado limbo de no-aceptacion. Es decir, en el diagrama de esta-
dos se indican unicamente los arcos que conduzcan a trayectorias de aceptacion.
Esto permite simplicar considerablemente los diagramas.
En este captulo abordaremos dos tipos de problemas:
1. Dado un lenguaje regular L dise nar un automata nito M que
acepte o reconozca a L, es decir, tal que L(M) = L.
2. Dado un automata M determinar el lenguaje aceptado por M.
Mas adelante se demostrara, en toda su generalidad, que estos problemas siempre
tienen solucion. Consideremos inicialmente problemas del primer tipo.

Ejemplo = {a, b}. L = a

= {, a, a
2
, a
3
, . . .}. AFD M tal que L(M) = L:
Version simplicada:

Ejemplo = {a, b}. L = a


+
= {a, a
2
, a
3
, . . .}. AFD M tal que L(M) = L:
Version simplicada:
24 Teora de la Computacion Profesor: Rodrigo De Castro
Ejemplo
= {a, b}. L = lenguaje de las cadenas que contienen exactamente
dos aes = b

ab

ab

. AFD M tal que L(M) = L:


Ejemplo
= {0, 1}. L = lenguaje de las cadenas sobre que tienen un
n umero par de smbolos (cadenas de longitud par). AFD M tal que
L(M) = L:
Ejemplo
= {0, 1}. L = lenguaje de las cadenas sobre que contienen un
n umero par de ceros. AFD M tal que L(M) = L:
Ejemplo
= {a, b}. L = lenguaje de las cadenas sobre que terminan en b.
AFD M tal que L(M) = L:
Ejercicios
Dise nar automatas nitos deterministas que acepten los siguientes
lenguajes:
1. = {0, 1}. L = lenguaje de las cadenas sobre de longitud impar.
2. = {0, 1}. L = lenguaje de las cadenas sobre que contienen un n umero
impar de unos.
3. = {a, b}. L = ab
+
.
4. = {a, b}. L = ab

ab

a.
Captulo 2 Automatas nitos 25
5. = {0, 1}. L = (0 10)

.
6. = {0, 1}. L = (01 10)

.
7. = {0, 1}. Lenguaje de todas las cadenas que no contienen dos unos con-
secutivos.
8. = {a, b}. L = lenguaje de las cadenas sobre que contienen un n umero
par de aes y un n umero par de bes. Ayuda: utilizar 4 estados.
9. = {a, b}. Para cada combinacion de las condiciones par e impar y de
las conectivas o e y, dise nar un AFD que acepte el lenguaje L donde:
L = lenguaje de las cadenas con un n umero par/impar de aes
y/o un n umero par/impar de bes.
Ayuda: utilizar el automata de 4 estados dise nado en el ejercicio anterior,
modicando adecuadamente el conjunto de estados nales.

Ejercicios
Determinar los lenguajes aceptados por los siguientes AFD. Descri-
bir los lenguajes ya sea por medio de una propiedad caracterstica
o de una expresion regular.
1.
2.
3.
26 Teora de la Computacion Profesor: Rodrigo De Castro
4.
2.4. Automatas nitos no deterministas (AFN)
Los automatas nitos no-deterministas (AFN) se asemejan a los AFD, ex-
cepto por el hecho de que para cada estado q Q y cada a , la transicion
(q, a) puede consistir en mas de un estado o puede no estar denida. Concreta-
mente, un AFN esta denido por M = (, Q, q
0
, F, ) donde:
1. es el alfabeto de cinta.
2. Q es un conjunto (nito) de estados.
3. q
0
Q es el estado inicial.
4. = F Q es el conjunto de estados nales o estados de aceptacion.
5.
: Q

(Q)
(q, a) (q, a) = {q
i
1
, q
i
2
, . . . , q
i
k
}
donde

(Q) es el conjunto de subconjunto de Q.


Puede suceder que (q, a) = , lo cual signica que, si durante el procesamiento
de una cadena de entrada u, M ingresa al estado q leyendo sobre la cinta el
smbolo a, el computo se aborta.
Computo abortado:
Captulo 2 Automatas nitos 27
La nocion de diagrama de estados para un AFN se dene de manera analoga al
caso AFD, pero puede suceder que desde un mismo nodo (estado) salgan dos o
mas arcos con la misma etiqueta:
Un AFN M puede procesar una cadena de entrada u

de varias maneras.
Sobre el diagrama de estados del automata, esto signica que pueden existir varias
trayectorias etiquetadas con los smbolos de u.
La siguiente es la nocion de aceptacion para automatas no deterministas:
L(M) = lenguaje aceptado o reconocido por M
= {u

: existe por lo menos un computo completo


de u que termina en un estado q F}
Es decir, para que una cadena u sea aceptada, debe existir por lo menos un
computo en el que u sea procesada completamente y que nalice estando M en
un estado de aceptacion.

Ejemplo Sea M el siguiente AFN:


a b
q
0
{q
0
, q
1
, q
3
}
q
1
{q
1
} {q
2
}
q
2
{q
1
, q
2
}
q
3
{q
3
}
Para la cadena de entrada u = abb, existen computos que conducen al rechazo,
computos abortados y computos que terminan en estados de aceptacion. Seg un
la denicion de lenguaje aceptado, u L(M).
28 Teora de la Computacion Profesor: Rodrigo De Castro
Ejemplo
En el ultimo ejemplo de la seccion 2.3 se dise no el AFD que acepta
el lenguaje de las cadenas sobre = {a, b} que terminan en b:
Un AFN que acepta el mismo lenguaje y que es, tal vez, mas facil de concebir, es
el siguiente:
Captulo 2 Automatas nitos 29
Este automata se asemeja a la expresion regular (a b)

b.

Ejemplo
Considerese el lenguaje L = ab

a
+
sobre el alfabeto = {a, b}. El
siguiente AFN M satisface L(M) = L.

Ejemplo = {0, 1}, L = (01 010)

. El siguiente AFN acepta a L.


Otro AFN que acepta el mismo lenguaje y que tiene solo tres estados es el si-
guiente:

Ejercicios
Dise nar automatas AFD o AFN que acepten los siguientes lengua-
jes:
1. = {a, b}. L = ab
+
a

.
2. = {a, b}. L = a(a ab)

.
3. = {a, b, c}. L = a

.
30 Teora de la Computacion Profesor: Rodrigo De Castro
4. = {0, 1, 2}. L = lenguaje de las cadenas sobre que comienzan con 0 y
terminan con 2.
5. = {0, 1}. Lenguaje de las cadenas de longitud par 2 formadas por ceros
y unos alternados.
6. = {0, 1}. Lenguaje de las cadenas que tienen a lo sumo dos ceros conse-
cutivos.
7. = {0, 1}. Lenguaje de las cadenas de longitud impar que tienen unos en
todas las posiciones impares y unicamente en las posiciones impares.
8. = {a, b, c}. L = lenguaje de las cadenas sobre que contienen la cadena
bc.
9. = {a, b, c}. L = lenguaje de las cadenas sobre que no contienen la
cadena bc. En el ultimo ejemplo de la seccion 1.14 se presentaron dos ex-
presiones regulares para L. Nota: se puede construir un AFD con solo dos
estados para aceptar este lenguaje!
2.5. Equivalencia computacional entre los AFD
y los AFN
En esta seccion se mostrara que los modelos AFD y AFN son computacionalmente
equivalentes. En primer lugar, es facil ver que un AFD M = (, Q, q
0
, F, ) puede
ser considerado como un AFN M

= (, Q, q
0
, F, ) deniendo (q, a) = {(q, a)}
para cada q Q y cada a . Para la armacion recproca tenemos el siguiente
teorema.
2.5.1 Teorema. Dado un AFN M = (, Q, q
0
, F, ) se puede construir un AFD
M

equivalente a M, es decir, tal que L(M) = L(M

).
Este teorema, cuya demostracion se dara en detalle mas adelante, establece
que el no-determinismo se puede eliminar. Dicho de otra manera, los automatas
deterministas y los no deterministas aceptan los mismos lenguajes. La idea de la
demostracion consiste en considerar cada conjunto de estados {p
1
, . . . , p
j
}, que
aparezca en la tabla de la funcion del automata no-determinista, como un
unico estado del nuevo automata determinista. La tabla de se completa hasta
que no aparezcan nuevas combinaciones de estados. Los estados de aceptacion
del nuevo automata son los conjuntos de estados en los que aparece por lo menos
un estado de aceptacion del automata original. El siguiente ejemplo ilustra el
procedimiento.
Captulo 2 Automatas nitos 31

Ejemplo
Consideremos el AFN M, presentado en la seccion 2.4, que acepta
el lenguaje 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 tiene un estado mas, {q


1
, q
2
}, y su
funcion de transicion tiene el siguiente aspecto:
a b
q
0
{q
1
, q
2
}
q
1
{q
1
}
q
2
{q
2
}
{q
1
, q
2
} {q
2
} {q
1
}
El diagrama de estados de este automata es:
Los estados de aceptacion son aquellos en los que aparezcan q
1
o q
2
, que son los
estados de aceptacion del automata original.
32 Teora de la Computacion Profesor: Rodrigo De Castro
Para mayor simplicidad, podemos cambiar los nombres de los estados del nuevo
automata:
Ejemplo
El siguiente AFN M, presentado en la la seccion 2.4, acepta el len-
guaje L = (01 010)

sobre = {0, 1}.


La tabla de la funcion de transicion de M se extiende para completar la funcion
del nuevo AFN:
0 1
q
0
{q
1
}
q
1
{q
0
, q
2
}
q
2
{q
0
}
{q
0
, q
2
} {q
0
, q
1
}
{q
0
, q
1
} {q
1
} {q
0
, q
2
}
El diagrama de estados del nuevo automata es:
Captulo 2 Automatas nitos 33
Los estados de aceptacion son aquellos en los que aparezca q
0
ya que q
0
es el unico
estado de aceptacion del automata original.
Puesto que el nuevo estado {q
2
} no interviene en el lenguaje aceptado, el nuevo
automata se puede simplicar en la siguiente forma:

Ejercicios Dise nar AFD equivalentes a los siguientes AFN:


1.
34 Teora de la Computacion Profesor: Rodrigo De Castro
2.
Para la demostracion del teorema 2.5.1, conviene extender la denicion de la
funcion de transicion, tanto de los automatas deterministas como de los no-
deterministas.
2.5.2 Denicion. Sea M = (, Q, q
0
, F, ) un AFD. La funcion de transicion
: Q Q se extiende a una funcion

: Q

Q por medio de la
siguiente denicion recursiva:

(q, ) = q, q Q,

(q, a) = (q, a), q Q, a ,

(q, wa) = (

(q, w), a), q Q, a , w

.
Seg un esta denicion, para una cadena de entrada w

,

(q
0
, w) es el estado
en el que el automata 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}.
Notacion. Sin peligro de ambig uedad, la funcion extendida

(q, w) se notara sim-


plemente (q, w).
2.5.3 Denicion. Sea M = (, Q, q
0
, F, ) un AFN. La funcion de transicion
: Q

(Q) se extiende inicialmente a conjuntos de estados. Para a


y S F se dene
(S, a) :=

qS
(q, a).
Luego se extiende a una funcion

: Q

(Q), de manera similar


a como se hace para los AFD. Recursivamente,

(q, ) = {q}, q Q,

(q, a) = (q, a), q Q, a ,

(q, wa) = (

(q, w), a) =

(q,w)
(p, a), q Q, a , w

.
Captulo 2 Automatas nitos 35
Seg un esta denicion, para una cadena de entrada w

,

(q
0
, w) es el conjunto
de los posibles estados en los que terminan los computos completos de w. Si el
computo se aborta durante el procesamiento de w, se tendra

(q
0
, w) = .
Usando la funcion extendida

, el lenguaje aceptado por M se puede describir
de la siguiente forma:
L(M) = {w

:

(q
0
, w) contiene un estado de aceptacion}.
Notacion. Sin peligro de ambig uedad, la funcion extendida

(q, w) se notara sim-
plemente (q, w).
Demostracion del Teorema 2.5.1:
Dado el AFN M = (, Q, q
0
, F, ), construimos el AFD M

as:
M

= (,

(Q), {q
0
}, F

, )
donde
:

(Q)

(Q)
(S, a) (S, a) := (S, a).
F

= {S

(Q) : S contiene al menos un estado de aceptacion}.


Se demostrara que L(M) = L(M

) probando que, para toda cadena w

,
({q
0
}, w) = (q
0
, w). Esta igualdad se demostrara por induccion sobre w.
Para w = , claramente se tiene ({q
0
}, ) = (q
0
, ) = {q
0
}.
Para w = a, a , se tiene
({q
0
}, a) = ({q
0
}, a) = (q
0
, a).
Supongase (hipotesis de induccion) que ({q
0
}, w) = (q
0
, w), y que a .
({q
0
}, wa) = (({q
0
}, w), a) (denicion de la extension de )
= (({q
0
}, w), a) (hipotesis de induccion)
= (({q
0
}, w), a) (denicion de )
= ({q
0
}, wa) (denicion de la extension de )
= (q
0
, wa) (denicion de la extension de )
Esto demuestra el teorema.
36 Teora de la Computacion Profesor: Rodrigo De Castro
2.6. Automatas con transiciones (AFN-)
Un automata nito con transiciones (AFN-) es un automata no-determinista
M = (, Q, q
0
, F, ) en el que la funcion de transicion esta denida como:
: Q( {})

(Q).
La transicion (q, ) = {p
i
1
, . . . , p
in
}, llamada transicion o transicion nula,
tiene el siguiente signicado computacional: estando en el estado q, el automata
puede cambiar a uno cualquiera de los estados p
i
1
, . . . , p
in
, independientemente
del smbolo ledo y sin mover la unidad de control. Dicho de otra manera, las
transiciones permiten al automata cambiar internamente de estado sin procesar
o consumir el smbolo ledo sobre la cinta.
En el diagrama de estados, las transiciones dan lugar a arcos con etiquetas
. Una cadena de entrada w es aceptada por un AFN- si existe por lo menos
una trayectoria cuyas etiquetas son exactamente los smbolos de w, intercalados
con cero, uno o mas s.
El modelo AFN-, al igual que el AFN, permite m ultiples computos para una
misma cadena de entrada, as como computos abortados. Pero, a diferencia de
los AFD y los AFN, en los AFN- pueden existir computos innitos, es decir
computos que nunca terminan.
Ejemplo M:
Ejemplos de cadenas aceptadas por M:
u = aab
v = abaa
w = abbaa
Computos de aceptacion de u = aab y v = abaa:
Captulo 2 Automatas nitos 37
Los AFN- permiten a un mas libertad en el dise no de automatas, especialmente
cuando hay numerosas concatenaciones.

Ejemplo = {a, b, c}. L = a

. AFD que acepta a L:


AFN- que acepta a L:
Este automata se asemeja a la expresion regular a

: las concatenaciones han


sido reemplazadas por transiciones .

Ejemplo
= {a, b}. L = lenguaje de todas las cadenas sobre que tienen un
n umero par de aes o un n umero par de bes.
AFD que acepta el lenguaje de las cadenas con un n umero par de aes:
38 Teora de la Computacion Profesor: Rodrigo De Castro
AFD que acepta el lenguaje de las cadenas con un n umero par de bes:
AFN- que acepta el lenguaje de las cadenas con un n umero par de aes o un
n umero par de bes:
Ejercicios Dise nar AFN- que acepten los siguientes lenguajes:
1. (ab b)

ab

, sobre = {a, b}.


2. a(a c)

b
+
, sobre = {a, b, c}.
3. ab

ba

b(ab ba)

, sobre = {a, b}.


4. ab

ba

b(ab ba)

, sobre = {a, b}.


5. (0 010)

(01 10)

, sobre = {0, 1}.


6. 0
+
1(010)

(01 10)

1
+
, sobre = {0, 1}.
7. = {a, b}. L = lenguaje de todas las cadenas sobre que tienen un n umero
par de aes y un n umero par de bes.
Captulo 2 Automatas nitos 39
2.7. Equivalencia computacional entre los
AFN- y los AFN
En esta seccion se mostrara que el modelo AFN- es computacionalmente equi-
valente al modelo AFN. O dicho mas gracamente, las transiciones se pueden
eliminar, a nadiendo transiciones que las simulen, sin alterar el lenguaje aceptado.
En primer lugar, un AFN M = (, Q, q
0
, F, ) puede ser considerado como
un AFN- en el que, simplemente, hay cero transiciones . Para la armacion
recproca tenemos el siguiente teorema:
2.7.1 Teorema. Dado un AFN- M = (, Q, q
0
, F, ), se puede construir un
AFN M

equivalente a M, es decir, tal que L(M) = L(M

).
Bosquejo de la demostracion. Para construir M

a partir de M se requiere la
nocion de -clausura de un estado. Para un estado q Q, la -clausura de q,
notada [q], es el conjunto de estados de M a los que se puede llegar desde q por
0, 1 o mas transiciones . Notese que, en general, [q] = (q, ). Por denicion,
q [q]. La -clausura de un conjunto de estados {q
1
, . . . , q
k
} se dene por:
[{q
1
, . . . , q
k
}] := [q
1
] [q
k
].
Adem as, [] := . Sea M

= (, Q, q
0
, F

) donde

: Q

(Q)
(q, a)

(q, a) :=

([q], a)

.
M

simula as las transiciones de M teniendo en cuenta todas las posibles


trayectorias. F

se dene como:
F

= {q Q : [q] contiene al menos un estado de aceptacion}.


Es decir, los estados de aceptacion de M

incluyen los estados de aceptacion de


M y aquellos estados desde los cuales se puede llegar a un estado de aceptacion
por medio de una o mas transiciones .
Como se puede apreciar, la construccion de M

a partir de M es puramente
algortmica.

Ejemplo
Vamos a ilustrar el anterior algoritmo con el AFN- M, presentado
en el segundo ejemplo de la seccion 2.6.
40 Teora de la Computacion Profesor: Rodrigo De Castro
L(M) = a

. Las -clausuras de los estados vienen dadas por:


[q
0
] = {q
0
, q
1
, q
2
}.
[q
1
] = {q
1
, q
2
}.
[q
2
] = {q
2
}.
La funcion de transicion

: Q{a, b, c}

({q
0
, q
1
, q
2
}) es:

(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
}.
El automata M

as obtenido es el siguiente:
Ejercicios Construir AFN equivalentes a los siguientes AFN-:
1.
Captulo 2 Automatas nitos 41
2.
2.8. Teorema de Kleene. Parte I
En las secciones anteriores se ha mostrado la equivalencia computacional de los
modelos AFD, AFN y AFN-, lo cual puede ser descrito en la forma:
AFD AFN AFN-
Esto quiere decir que para cada automata de uno de estos tres modelos se pueden
construir automatas 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. Un lenguaje es regular si y solo si es aceptado por
un aut omata nito (AFD o AFN o AFN-).
Para demostrar el teorema consideraremos las dos direcciones por separado. Pri-
mero demostraremos que para un lenguaje regular L dado existe un AFN- tal
que L(M) = L. En la seccion 2.11 demostraremos que, a partir de un AFD
M, se puede encontrar una expresion regular R tal que L(M) = R. En ambas
direcciones las demostraciones son constructivas.
Las construcciones de este captulo se pueden presentar as:
42 Teora de la Computacion Profesor: Rodrigo De Castro
Parte I. Dada una expresion regular R sobre un alfabeto , se puede construir
un AFN- M tal que el lenguaje aceptado por M sea exactamente el lenguaje
representado por R.
Expresion regular R
Procedimiento

algortmico
M
AFN- tal que L(M) = R.
Demostracion: Puesto que la denicion de las expresiones regulares se hace re-
cursivamente, la demostracion se lleva a cabo razonando por induccion sobre R.
Para las expresiones regulares basicas, podemos construir facilmente automatas
que acepten los lenguajes representados. As, el automata
acepta el lenguaje , es decir, el lenguaje representado por la expresion regular
R = .
El automata
acepta el lenguaje {}, es decir, el lenguaje representado por la expresion regular
R = .
El automata
acepta el lenguaje {a}, a , es decir, el lenguaje representado por la expresion
regular R = a.
Paso inductivo: supongase que para las expresiones regulares R y S existen
AFN- M
1
y M
2
tales que L(M
1
) = R y L(M
2
) = S. Esquematicamente vamos
a presentar los automatas M
1
y M
2
en la siguiente forma:
Captulo 2 Automatas nitos 43
Los estados nales o de aceptacion se dibujan a la derecha, pero cabe advertir
que el estado inicial puede ser tambien un estado de aceptacion. Obviando ese
detalle, podemos ahora obtener AFN- que acepten los lenguajes R S, RS y
R

.
Automata que acepta R S. Los automatas M
1
y M
2
se conectan en
paralelo y los estados nales del nuevo automata son los estados nales de
M
1
junto con los de M
2
:
Automata que acepta RS. Los automatas M
1
y M
2
se conectan en serie y
los estados nales del nuevo automata son unicamente los estados nales
de M
2
:
44 Teora de la Computacion Profesor: Rodrigo De Castro
Automata que acepta R

. Los estados nales del nuevo automata son los


estados nales de M
1
junto con el estado inicial.
Esto concluye la demostracion de la parte I del teorema de Kleene. En la si-
guiente seccion se presentan ejemplos concretos del procedimiento utilizado en la
demostracion.
2.9. Ejemplos de la parte I del Teorema de
Kleene
De acuerdo con las construcciones presentadas en la demostracion de la parte I
del Teorema de Kleene, un AFN- que acepta el lenguaje a

es:
Para simplicar las proximas construcciones utilizaremos, en su lugar, el automa-
ta:
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}.
Captulo 2 Automatas nitos 45
Automata que acepta ab:
Automata que acepta ba:
Automata que acepta ab ba:
Automata que acepta (ab ba)

:
46 Teora de la Computacion Profesor: Rodrigo De Castro
Automata que acepta a

(ab ba)

:
Automata que acepta b a

:
Automata que acepta a(b a

):
Captulo 2 Automatas nitos 47
Automata que acepta a

(ab ba)

a(b a

):

Ejercicios
Dise nar automatas AFN- que acepte los siguientes lenguajes so-
bre = {a, b, c}:
1. a

(b ab

ab

a)c

(a b)(a ac)

.
2. c

a(a ba)

(abc)

(a cb

c).
3. (ac)

a(a ab

a) (abc)

(cba)

(c ab ba ca)

(ca cb)

.
2.10. Lema de Arden
Vamos a utilizar el siguiente resultado, conocido como lema de Arden, para
demostrar la segunda parte del teorema de Kleene.
2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto y A,
entonces la ecuacion X = AX B tiene una unica solucion dada por X = A

B.
48 Teora de la Computacion Profesor: Rodrigo De Castro
Demostracion: Si X es una solucion de X = AXB, entonces B AXB = X.
Tambien se tiene AX X; a partir de esta contenencia y usando induccion sobre
n, se puede demostrar que A
n
X X para todo n N. Por lo tanto
A
n
B A
n
X X
para todo n N. As que
A

B =

n0
A
n

B =

n0
A
n
B X.
Esto muestra que toda solucion de X = AXB contiene a A

B y es facil vericar
que, de hecho, A

B es una solucion:
A(A

B) B = A
+
B B = (A
+
)B = A

B.
Para la unicidad, demostraremos que si A

B C, con C A

B = , es una
solucion de la ecuacion, entonces C = .
A

B C = A(A

B C) B
= A
+
B AC B
= (A
+
)B AC
= A

B AC.
Intersectando con C ambos lados de la anterior igualdad, se tiene:
(A

B C) C = (A

B C) (AC C),
C = AC C.
Por lo tanto, C AC. Si se tuviera C = , existira una cadena u C de
longitud mnima. Entonces u = vw, con v A, w C. Como A, v = ; por
consiguiente |w| < |u|. Esta contradiccion muestra que necesariamente C = ,
tal como se quera.
Ejemplo La ecuacion X = aX b

ab tiene solucion unica X = a

ab.
Ejemplo
La ecuacion X = a
2
X b
+
X ab se puede escribir en la forma
X = (a
2
b
+
)Xab. Por el lema de Arden la ecuacion tiene solucion
unica X = (a
2
b
+
)

ab.
Ejemplo
La ecuacion X = ab
2
X aX a

b b

a se puede escribir como


X = (ab
2
a)X (a

b b

a). Por lema de Arden la ecuacion tiene


solucion unica X = (ab
2
a)

(a

b b

a).
Captulo 2 Automatas nitos 49

Ejercicios Encontrar las soluciones ( unicas) de las siguientes ecuaciones.


1. X = aX bX.
2. X = aX b

ab bX a

Ejercicio
Demostrar de si A, entonces Y es una solucion de la ecuacion
X = AX B si y solo si Y = A

(B D) para alg un D

.
2.11. Teorema de Kleene. Parte II
En esta seccion demostraremos que para todo AFN M = (, Q, q
0
, F, ) existe
una expresion regular R tal que L(M) = R.
Un automata tiene un unico estado inicial pero cambiando dicho estado surgen
nuevos automatas. Para cada q
i
Q, sea M
i
el automata que coincide con M
pero con estado inicial q
i
; mas precisamente, M
i
= (, Q, q
i
, F, ). Al lenguaje
aceptado por M
i
lo denotaremos A
i
; es decir, L(M
i
) = A
i
. En particular, A
0
=
L(M). Puesto que los estados de aceptacion no se han alterado, se tiene que
A
i
= {w

: (q
i
, w) F = }.
Cada A
i
se puede escribir como
(2.1) A
i
=

a
{aA
j
: q
j
(q
i
, a)}, si q
i
F,

a
{aA
j
: q
j
(q
i
, a)} . si q
i
F.
Si Q = {q
0
, q
1
, . . . , q
n
}, las igualdades de la forma (2.1) dan lugar a un sistema de
n + 1 ecuaciones con n + 1 incognitas (los A
i
):

A
0
= C
01
A
0
C
02
A
1
C
0n
A
n
()
A
1
= C
11
A
0
C
12
A
1
C
1n
A
n
()
.
.
.
.
.
.
.
.
.
A
n
= C
n1
A
0
C
n2
A
1
C
nn
A
n
()
donde cada coeciente C
ij
o es o es un smbolo de . El termino se a nade a
una ecuacion solamente si el estado correspondiente es un estado de aceptacion.
Utilizando sucesivas veces el lema de Arden, se puede mostrar que este sistema
de ecuaciones siempre se puede solucionar y su solucion es unica. En efecto,
50 Teora de la Computacion Profesor: Rodrigo De Castro
comenzando con la ultima ecuacion, se escribe A
n
en terminos de los demas
A
i
, para lo cual se usa el lema de Arden si es necesario. Este valor de A
n
se
reemplaza en las demas ecuaciones y el sistema se reduce a n ecuaciones con n
incognitas. Similarmente, A
n1
se escribe en terminos de los demas A
i
, 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 ecuacion
cuya incognita es precisamente A
0
. Esta ecuacion se soluciona recurriendo una
vez mas al lema de Arden. Puesto que los coecientes C
ij
diferentes de son
smbolos de , se obtiene una expresion regular R tal que L(M) = A
0
= R.
Ejercicio
Por que la anterior demostracion no es valida para automatas con
transiciones ?
2.12. Ejemplos de la parte II del Teorema de
Kleene
A continuacion ilustraremos el procedimiento de la seccion 2.11 para encontrar
L(M) a partir de un AFN M = (, Q, q
0
, F, ) dado.
Ejemplo Considerese el siguiente AFN M:
Por simple inspeccion sabemos que L(M) = (a b)

a
2
(a b)

, pero utilizaremos
el metodo descrito para encontrar explcitamente L(M).
El sistema de ecuaciones asociado con el automata M es:

(1) A
0
= aA
0
bA
0
aA
1
(2) A
1
= aA
2
(3) A
2
= aA
2
bA
2
.
La ecuacion (3) se puede escribir como
(4) A
2
= (a b)A
2
.
Aplicando el Lema de Arden en (4):
(5) A
2
= (a b)

= (a b)

.
Reemplazando (5) en (2):
Captulo 2 Automatas nitos 51
(6) A
1
= a(a b)

.
Reemplazando (6) en (1):
(7) A
0
= (a b)A
0
a
2
(a b)

.
Aplicando el Lema de Arden en (7) concluimos:
A
0
= (a b)

a
2
(a b)

Ejemplo
Encontrar una expresion regular para el lenguaje aceptado por el
siguiente AFN M:
El sistema de ecuaciones asociado con el automata M es:

(1) A
0
= aA
1
(2) A
1
= aA
2
(3) A
2
= bA
2
bA
3

(4) A
3
= aA
3
bA
4
(5) A
4
= aA
2
aA
3

Reemplazando (5) en (4):
(6) A
3
= aA
3
baA
2
baA
3
b = (a ba)A
3
baA
2
b.
Aplicando el Lema de Arden en (6):
(7) A
3
= (a ba)

(baA
2
b) = (a ba)

baA
2
(a ba)

b.
Reemplazando (7) en (3):
(8) A
2
= bA
2
b(a ba)

baA
2
b(a ba)

b .
El sistema original de cinco ecuaciones y cinco incognitas se reduce al sistema de
tres ecuaciones y tres incognitas formado por (1), (2) y (8).
La ecuacion (8) se puede escribir como
(9) A
2
=

b b(a ba)

ba

A
2
b(a ba)

.
Aplicando el Lema de Arden en (9):
52 Teora de la Computacion Profesor: Rodrigo De Castro
(10) A
2
= b b(a ba)

ba

b(a ba)

b .
Si se sustituye (10) en (2) y luego el valor de A
1
obtenido se sustituye en (1), se
obtiene nalmente:
A
0
= a
2
b b(a ba)

ba

b(a ba)

b
Ejemplo
Encontrar una expresion regular para el lenguaje L de todas las
cadenas sobre = {a, b} que tienen un n umero par de aes y un
n umero par de bes. El siguiente automata acepta el lenguaje L:
Este automata da lugar al siguiente sistema de ecuaciones:

(1) A
0
= aA
1
bA
2

(2) A
1
= aA
0
bA
3
(3) A
2
= aA
3
bA
0
(4) A
3
= aA
2
bA
1
Reemplazando (4) en (3):
(5) A
2
= a
2
A
2
abA
1
bA
0
.
Reemplazando (4) en (2):
(6) A
1
= aA
0
baA
2
b
2
A
1
.
El sistema original de cuatro ecuaciones y cuatro incognitas se reduce a un sistema
de tres ecuaciones y tres incognitas, a saber:

(1) A
0
= aA
1
bA
2

(6) A
1
= aA
0
baA
2
b
2
A
1
(5) A
2
= a
2
A
2
abA
1
bA
0
Aplicando el Lema de Arden en (5):
Captulo 2 Automatas nitos 53
(7) A
2
= (a
2
)

(abA
1
bA
0
) = (a
2
)

abA
1
(a
2
)

bA
0
.
Reemplazando (7) en (6):
(8) A
1
= aA
0
ba(a
2
)

abA
1
ba(a
2
)

bA
0
b
2
A
1
.
Reemplazando (7) en (1):
(9) A
0
= aA
1
b(a
2
)

abA
1
b(a
2
)

bA
0
.
El sistema se reduce ahora a dos ecuaciones:

(9) A
0
= aA
1
b(a
2
)

abA
1
b(a
2
)

bA
0

(8) A
1
= aA
0
ba(a
2
)

abA
1
ba(a
2
)

bA
0
b
2
A
1
=

ba(a
2
)

ab b
2

A
1
aA
0
ba(a
2
)

bA
0
.
Aplicando el Lema de Arden en (8):
A
1
=

ba(a
2
)

ab b
2

aA
0
ba(a
2
)

bA
0

ba(a
2
)

ab b
2

aA
0

ba(a
2
)ab b
2

ba(a
2
)

bA
0
.
(10)
Haciendo R =

ba(a
2
)

ab b
2

, (10) se puede escribir como


(11) A
1
= RaA
0
Rba(a
2
)

bA
0
.
Aplicando el Lema de Arden en (9):
A
0
=

b(a
2
)

aA
1
b(a
2
)

abA
1

b(a
2
)

aA
1

b(a
2
)

b(a
2
)

abA
1

b(a
2
)

.
(12)
Haciendo S =

b(a
2
)

, (12) se puede escribir como:


(13) A
0
= SaA
1
Sb(a
2
)

abA
1
S.
Al sustituir (11) en (13), el sistema original se reduce a una sola ecuacion:
(14) A
0
= Sa

RaA
0
Rba(a
2
)

bA
0

Sb(a
2
)

ab

RaA
0
Rba(a
2
)

bA
0

S.
Agrupando los terminos en los que aparece A
0
y factorizando, se obtiene
(15) A
0
=

SaRa SaRba(a
2
)

b Sb(a
2
)
a
bRa Sb(a
2
)

abRba(a
2
)

A
0
S.
Aplicando Lema de Arden en (15):
(16) A
0
=

SaRa SaRba(a
2
)

b Sb(a
2
)

abRa Sb(a
2
)

abRba(a
2
)

S.
Si sustituimos R y S en (16) obtenemos una expresion regular para L.
54 Teora de la Computacion Profesor: Rodrigo De Castro
Ejercicios
Utilizando el lema de Arden, encontrar expresiones regulares para
los siguientes lenguajes sobre = {a, b}:
1. El lenguaje L de todas las cadenas que tienen un n umero par de aes y un
n umero impar de bes.
2. El lenguaje L de todas las cadenas que tienen un n umero par de aes o un
n umero impar de bes.
Ejercicios
Utilizando el lema de Arden, encontrar expresiones regulares para
los lenguajes aceptados por los siguientes AFN:
1.
2.
Captulo 2 Automatas nitos 55
3.
Captulo 3
Otras propiedades de los
lenguajes regulares
En los dos captulos anteriores hemos presentado las propiedades basicas de los
lenguajes regulares pero no hemos visto como se puede demostrar que un lenguaje
no es regular. El llamado lema de bombeo, expuesto en este captulo, sirve
para tal proposito. Tambien veremos que la regularidad es una propiedad que
se preserva por las operaciones booleanas usuales, por homomorsmos y por las
imagenes inversas de homomorsmos. Finalmente, analizaremos ciertos problemas
de decision referentes a automatas y a lenguajes regulares.
3.1. Lema de bombeo
El llamado lema de bombeo (pumping lemma, en ingles) es una propiedad de
los lenguajes regulares que es muy util para demostrar que ciertos lenguajes no
son regulares.
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
cadena w L, con |w| n, satisface la siguiente propiedad:
(B)

w se puede descomponer como w = uvx, con |uv| n,


v = , y para todo i 0 se tiene uv
i
x L.
Demostracion: 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.
Si w L y |w| n, entonces durante el procesamiento completo de w, hay por lo
menos un estado que se repite. Sea q el primer estado que se repite. Tal como se
1
57 Teora de la Computacion Profesor: Rodrigo De Castro
muestra en la siguiente graca, w se puede descomponer como w = uvx, donde
|uv| n, v = .
Notese que tanto u como x pueden ser la cadena vaca , pero v = . Ademas,
la cadena v se puede bombear, en el sentido de que uv
i
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 contradiccion (o reduccion al absurdo). El razonamiento utilizado tiene la
siguiente forma:
1. Si L fuera regular, existira una constante de bombeo n para L.
2. Se escoge una cadena adecuada w L y se aplica la propiedad (B) del
lema de bombeo, descomponiendo w como
w = uvx, v = , |uv| n.
3. Se llega a la siguiente contradiccion:
(I) Por el lema de bombeo, uv
i
x L, para todo i 0.
(II) uv
i
x no puede estar en L, para alg un i I. Por lo general, basta
escoger valores peque nos de i como i = 0 o i = 2.
Ejemplo
Usar el lema de bombeo para demostrar que el lenguaje L = {a
i
b
i
:
i 0} no es regular.
Captulo 3 Otras propiedades de los lenguajes regulares 58
Soluci on: Si L fuera regular, existira una constante de bombeo n para L. Sea
w = a
n
b
n
L. Entonces w se puede descomponer como w = uvx, con |v| 1 y
|uv| n. Por lo tanto, u y v constan unicamente de aes:
u = a
r
, para alg un r 0,
v = a
s
, para alg un s 1.
Entonces,
x = a
n(r+s)
b
n
= a
nrs
b
n
.
Por el lema de bombeo, uv
i
x L para todo i 0. En particular, si i = 0, ux L.
Pero ux = a
r
a
nrs
b
n
= a
ns
b
n
. Como n s = n, la cadena ux / L lo cual es
una contradiccion. Se concluye entonces que L no puede ser regular.
Tomando i = 2 tambien se llega a una contradiccion: por un lado, uv
2
x L,
pero
uv
2
x = a
r
a
s
a
s
a
nrs
b
n
= a
r+2s+nrs
b
n
= a
n+s
b
n
.
Como s 1, a
n+s
b
n
no esta en L.
El argumento anterior tambien sirve para demostrar que el lenguaje L = {a
i
b
i
:
i 1} no es regular.
Ejemplo
Demostrar que el lenguaje de los palndromos sobre {a, b} no es un
lenguaje regular. Recuerdese que un palndromo es una cadena w
tal que w = w
R
.
Soluci on: Si L fuera regular, existira una constante de bombeo n para L. Sea
w = a
n
ba
n
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 unicamente de
aes:
u = a
r
, para alg un r 0,
v = a
s
, para alg un s 1.
Entonces,
x = a
n(r+s)
ba
n
= a
nrs
ba
n
.
Tomando i = 0, se concluye que ux L, pero
ux = a
r
a
nrs
ba
n
= a
ns
ba
n
.
Como s 1, a
ns
ba
n
no es un palndromo. Esta contradiccion muestra que L no
puede ser regular.
Ejemplo
Demostrar que el lenguaje L = a
i
2
: i 0 no es regular. L esta for-
mado por cadenas de aes cuya longitud es un cuadrado perfecto.
Soluci on: Si L fuera regular, existira una constante de bombeo n para L. Sea
w = a
n
2
L. Entonces w se puede descomponer como w = uvx, con |v| 1,
|uv| n. Por el lema de bombeo, uv
2
x L, pero por otro lado,
59 Teora de la Computacion Profesor: Rodrigo De Castro
n
2
< n
2
+|v| = |uvx| +|v| = |uv
2
x| n
2
+|uv| n
2
+ n < (n + 1)
2
.
Esto quiere decir que el n umero de smbolos de la cadena uv
2
x no es un cuadrado
perfecto y, por consiguiente, uv
2
x L. En conclusion, L no es regular.
Ejercicios de la seccion 3.1
1. Usar el lema de bombeo para demostrar que los siguientes lenguajes no son
regulares:
(i) L = {w {a, b}

: w tiene el mismo n umero de aes que de bes}.


(ii) L = {a
i
ba
i
: i 1}, sobre = {a, b}.
(iii) L = {a
i
b
j
a
i
: i, j 0}, sobre = {a, b}.
(iv) L = {0
i
1
2i
: i 0}, sobre = {0, 1}.
(v) L = {1
i
01
i
0 : i 1}, sobre = {0, 1}.
(vi) L = {a
i
b
j
c
i+j
: i, j 0}, sobre = {a, b, c}.
(vii) L = {a
i
b
j
: j > i 0}, sobre = {a, b}.
(viii) L = {ww : w

}, siendo = {a, b}.


(ix) L = {ww
R
: w

}, siendo = {a, b}.


(x) L = {a
i
: i es un n umero primo}, sobre = {a}.
2. Es L = {(ab)
i
: i 0} un lenguaje regular?
3. Encontrar la falacia en el siguiente argumento: Seg un la propiedad (B)
del enunciado del lema de bombeo, se tiene que uv
i
x L para todo i 0.
Por consiguiente, L posee innitas palabras y, en conclusion, todo lenguaje
regular es innito.
3.2. Propiedades de clausura
Las propiedades de clausura arman que a partir de lenguajes regulares se pueden
obtener otros lenguajes regulares por medio de ciertas operaciones entre lenguajes.
Es decir, la regularidad es preservada por ciertas operaciones entre lenguajes; en
tales casos se dice que los lenguajes regulares son cerrados bajo las operaciones.
El siguiente teorema establece que la coleccion R

(

) de los lenguajes
regulares sobre un alfabeto es cerrada bajo todas las operaciones booleanas.
3.2.1 Teorema. Si L, L
1
y L
2
son lenguajes regulares sobre un alfabeto , tam-
bien lo son:
Captulo 3 Otras propiedades de los lenguajes regulares 60
(1) L
1
L
2
(union)
(2) L
1
L
2
(concatenacion)
(3) L

(estrella de Kleene)
(4) L
+
(clausura positiva)
(5) L =

L (complemento)
(6) L
1
L
2
(interseccion)
(7) L
1
L
2
(diferencia)
(8) L
1
L
2
(diferencia simetrica)
Demostracion:
(1), (2) y (3) se siguen de la denicion de los lenguajes regulares.
(4) Por (2), (3) y L
+
= L

L.
(5) Por el Teorema de Kleene y por los teoremas de equivalencia de los modelos
AFD, AFN y AFN-, existe un AFD M = (, Q, q
0
, F, ) tal que L(M) = L.
Para construir un AFD que acepte el complemento de L basta intercambiar
los estados nales con los no nales. Si M

es el automata (, Q, q
0
, QF, ),
entonces L(M

) = L.
(6) Se sigue de (1) y (5) teniendo en cuenta que L
1
L
2
= L
1
L
2
.
(7) Se sigue de (5) y (6) teniendo en cuenta que L
1
L
2
= L
1
L
2
.
(8) Puesto que
L
1
L
2
= (L
1
L
2
) (L
1
L
2
) = (L
1
L
2
) (L
2
L
1
)
el resultado se sigue de (1), (6), (7).
Recuerdese que un algebra booleana de conjuntos es una familia A

(X) cerrada bajo las operaciones de union, interseccion y complemento, tal que
A, X A.
3.2.2 Corolario. La coleccion R

) de todos los lenguajes regulares sobre


un alfabeto es un algebra booleana de conjuntos.
Demostracion: Se sigue del teorema 3.2.1 y del hecho de que y

son lenguajes
regulares sobre .
61 Teora de la Computacion Profesor: Rodrigo De Castro
Hemos visto que un lenguaje nito es regular y que la union nita de len-
guajes regulares es regular. Pero una union innita de lenguajes regulares
no necesariamente es regular; considerese, por ejemplo,
L = {a
n
b
n
: n 1} =

i1
{a
i
b
i
}.
Cada conjunto {a
i
b
i
} es regular (porque posee solo una cadena) pero L
no lo es.
Un sublenguaje (subconjunto) de un lenguaje regular no es necesaria-
mente regular, es decir, la familia de los lenguajes regulares no es cerra-
da para subconjuntos. Dicho de otra forma, un lenguaje regular puede
contener sublenguajes no-regulares. Por ejemplo, L = {a
n
b
n
: n 1} es
un sublenguaje del lenguaje regular a

, pero L mismo no es regular.


Las propiedades de clausura permiten concluir, razonando por contradiccion, que
ciertos lenguajes no son regulares. Esto se ilustra en los siguientes ejemplos en los
que se usa el hecho de que los lenguajes L = {a
i
b
i
: i 0} y L = {a
i
b
i
: i 1}
no son regulares.
Ejemplo
L = {a
i
b
j
: i, j 0, i = j} no es regular. Si lo fuera, a

L
tambien lo sera, pero a

L = {a
i
b
i
: i 0}.
Ejemplo
El lenguaje L = {wb
n
: w

, |w| = n, n 1} sobre = {a, b}


no es regular. Si L fuera regular, tambien lo sera L a

pero
L a

= {a
n
b
n
: n 1}.
Ejercicios de la seccion 3.2
1. Demostrar que a

es la union de dos lenguajes disyuntos no-regulares.


2. Sea L un lenguaje no-regular y N un subconjunto nito de L. Demostrar
que L N tampoco es regular.
3. Demostrar o refutar las siguientes armaciones:
(i) Un lenguaje no-regular debe ser innito.
(ii) Si el lenguaje L
1
L
2
es regular, tambien lo son L
1
y L
2
.
(iii) Si los lenguajes L
1
y L
2
no son regulares, el lenguaje L
1
L
2
tampoco
puede ser regular.
(iv) Si el lenguaje L

es regular, tambien lo es L.
(v) Si L es regular y N es un subconjunto nito de L, entonces L N es
regular.
Captulo 3 Otras propiedades de los lenguajes regulares 62
(vi) Un lenguaje regular L es innito si y solo si en cualquier expresion
regular de L aparece por lo menos una .
4. Utilizar las propiedades de clausura para concluir que los siguientes lengua-
jes no son regulares:
(i) L = {1
i
01
j
0 : i, j 1, i = j}, sobre = {0, 1}. Ayuda: utilizar el
ejercicio 1(v) de la seccion 3.1.
(ii) L = {uvu
R
: u, v {a, b}
+
}, sobre = {a, b}. Ayuda: utilizar el
ejercicio 1(ii) de la seccion 3.1.
(iii) L = {u : |u| es un cuadrado perfecto}, sobre = {a, b, c}. Ayuda:
utilizar el ultimo ejemplo de la seccion 3.1.
3.3. Propiedades de clausura para automatas
Las propiedades de clausura del teorema 3.2.1 se pueden enunciar como procedi-
mientos algortmicos para la construccion de automatas nitos.
3.3.1 Teorema. Sean M, M
1
y M
2
automatas nitos (ya sean AFD o AFN o
AFN-) y L(M) = L, L(M
1
) = L
1
, L(M
2
) = L
2
. Se pueden construir automatas
nitos que acepten los siguientes lenguajes:
(1) L
1
L
2
. (5) L =

L.
(2) L
1
L
2
. (6) L
1
L
2
.
(3) L

. (7) L
1
L
2
.
(4) L
+
. (8) L
1
L
2
.
Demostracion: La construccion de automatas para L
1
L
2
, L
1
L
2
, L

y L
+
se
presento en la demostracion de la parte I del Teorema de Kleene. En el numeral
(5) del teorema 3.2.1 se vio como se puede construir un AFD M

que acepte L a
partir de un AFD M que acepte L.
Los procedimientos de construccion de (1), (2), (3), (4) y (5) se pueden combi-
nar para obtener automatas que acepten los lenguajes L
1
L
2
, L
1
L
2
y L
1
L
2
.
Para dise nar un automata que acepte L
1
L
2
, seg un el argumento del teo-
rema 3.3.1, hay que usar la igualdad L
1
L
2
= L
1
L
2
y los procedimientos
para union, complemento, eliminacion de transiciones y eliminacion del no-
determinismo. El siguiente teorema muestra que existe una construccion mas
sencilla para el caso L
1
L
2
.
63 Teora de la Computacion Profesor: Rodrigo De Castro
3.3.2 Teorema. Sean M
1
= (, Q
1
, q
1
, F
1
,
1
) y M
2
= (, Q
2
, q
2
, F
2
,
2
) dos AFD.
Entonces el AFD
M = (, Q
1
Q
2
, (q
1
, q
2
), F
1
F
2
, )
donde
: (Q
1
Q
2
) Q
1
Q
2
((q
i
, q
j
), a) = (
1
(q
i
, a),
2
(q
j
, a))
satisface L(M) = L(M
1
) L(M
2
).
Demostracion: Sea w

. La conclusion del teorema se sigue demostrando


primero por induccion sobre w que ((q
1
, q
2
), w) = (
1
(q
1
, w),
2
(q
2
, w)) para toda
cadena w

y observando que:
w L(M) ((q
1
, q
2
), w) F
1
F
2
(
1
(q
1
, w),
2
(q
2
, w)) F
1
F
2
(q
1
, w) F
1
& (q
2
, w) F
2
w L(M
1
) & w L(M
2
)
w L(M
1
) L(M
2
).
Ejemplo
Utilizar el teorema teorema 3.3.2 para construir un AFD que acepte
el lenguaje L de todas las cadenas sobre = {a, b} que tienen un
n umero par de aes y un n umero par de bes.
AFD M
1
que acepta las cadenas con un n umero par de aes:
AFD M
2
que acepta las cadenas con un n umero par de bes:
Entonces L = L(M
1
)L(M
2
). El nuevo automata tiene 4 estados: (q
1
, q
2
), (q
1
, q
4
),
(q
3
, q
2
) y (q
3
, q
4
); el unico estado de aceptacion es (q
1
, q
2
). Su funcion de transicion
Captulo 3 Otras propiedades de los lenguajes regulares 64
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 automata as obtenido es:
Ejercicios de la seccion 3.3
1. Utilizar el teorema 3.3.2 para construir AFD que acepten los siguientes
lenguajes sobre el alfabeto {a, b, c}:
(i) El lenguaje L de todas las cadenas que tienen longitud par y terminan
en a.
(ii) El lenguaje L de todas las cadenas de longitud par que tengan un
n umero impar de bes.
(iii) El lenguaje L de todas las cadenas de longitud impar que tengan un
n umero par de ces.
(iv) El lenguaje L de todas las cadenas de longitud impar que tengan
exactamente dos aes.
2. Utilizar el procedimiento del teorema 3.3.1 para construir un automata que
acepte el lenguaje L de todas las cadenas sobre = {a, b} que tienen
un n umero par de aes y un n umero par de bes. Comparese con el AFD
construido en el ultimo ejemplo de esta seccion.
65 Teora de la Computacion Profesor: Rodrigo De Castro
3.4. Homomorsmos
Un homomorsmo es una sustitucion h que reemplaza cada smbolo a de un
alfabeto de por una cadena h(a)

, donde es otro alfabeto (por supuesto,


y pueden ser el mismo alfabeto). Mas precisamente, un homomorsmo es
una funcion h :

tal que h() = y para toda cadena u = a


1
a
2
a
n
,
con a
i
, se tiene
h(a
1
a
2
a
n
) = h(a
1
)h(a
2
) h(a
n
).
Un homomorsmo h esta completamente determinado por sus imagenes en los
smbolos de , es decir, por los valores h(a), con a .
Ejemplo
Sean = {a, b, c}, = {0, 1} y h :

el homomorsmo
denido por h(a) = 0, h(b) = 1 y h(c) = 010. El homomorsmo h
convierte cadenas de

en cadenas de

siguiendo las siguientes reglas: cada a


se reemplaza por 0, cada b por 1 y cada c se reemplaza por la cadena 010. As,
h(a
2
b
2
) = h(aabb) = h(a)h(a)h(b)h(b) = 0011.
h(acb
2
c) = h(a)h(c)h(b)
2
h(b) = 001011010.
Tambien se deduce facilmente que h(a

) = 0

(010)

.
El siguiente teorema arma que los homomorsmos preservan lenguajes regu-
lares; dicho de otra manera, la imagen homomorfa de un lenguaje regular es un
lenguaje regular.
3.4.1 Teorema. Sea h :

un homomorsmo.
(1) Para cadenas u, v

y lenguajes A, B

se tiene
h(uv) = h(u)h(v),
h(A B) = h(A) h(B),
h(AB) = h(A)h(B),
h(A

) = [h(A)]

.
(2) Si L es un lenguaje regular sobre , entonces h(L) es un lenguaje regular
sobre .
Demostracion:
(1) Se sigue directamente de la denicion de homomorsmo; los detalles se dejan
al lector.
Captulo 3 Otras propiedades de los lenguajes regulares 66
(2) Por induccion sobre el n umero de operandos (uniones, concatenaciones y
estrellas) en la expresion regular que representa a L. La base de la induccion es
inmediata ya que h() = , para cada a , h(a) es una cadena determinada
en

y h() = .
La hipotesis de induccion arma que si L es regular tambien lo es h(L).
Para el paso inductivo se supone, en tres casos, que L = A B, L = AB
o L = A

. Utilizando la hipotesis de induccion y la parte (1) del presente


teorema se llega a la conclusion deseada.
La parte (2) del teorema 3.4.1 es muy util para demostrar que ciertos lenguajes no
son regulares, razonando por contradiccion. En los siguientes ejemplos ilustramos
la tecnica que se usa en estas situaciones.
Ejemplo
Sabiendo que {a
i
b
i
: i 1} no es regular (seccion 3.1), podemos
concluir que L = {0
i
1
i
: i 1} tampoco lo es. Razonamos de la
siguiente manera: si L fuera regular, lo sera tambien h(L) donde h es el homo-
morsmo h(0) = a, h(1) = b. Pero h(L) = {h(0)
i
h(1)
i
: i 1} = {a
i
b
i
: i 1}.
Por consiguiente, L no es regular.
Ejemplo
L = {0
n
21
n
: n 1} no es regular; si lo fuera, h(L) tambien lo sera,
donde h es el homomorsmo h(0) = 0, h(1) = 1, h(2) = . Pero
h(L) = {0
n
1
n
: n 1} no es regular, como se dedujo en el ejemplo anterior.
Ejercicios de la seccion 3.4
1. Llenar los detalles de la demostracion de la parte (1) del teorema 3.4.1.
2. Utilizar homomorsmos y el hecho de que {a
i
b
i
: i 1} y {0
i
1
i
: i 1}
no son regulares para concluir que los siguientes lenguajes tampoco son
regulares:
(i) L = {a
i
cb
j
: i, j 1, i = j}, sobre = {a, b, c}.
(ii) L = {a
i
b
i
c
i
: i 1}, sobre = {a, b, c}.
(iii) L = {a
i
b
j
c
i
: i, j 1}, sobre = {a, b, c}.
(iv) L = {0
i
1
j
2
k
: i, j, k 0, i + j = k}, sobre = {a, b, c}.
3.5. Imagen inversa de un homomorsmo
Dado un homomorsmo h :

y un lenguaje B

, la imagen inversa
de A por h es
h
1
(B) := {u

: h(u) B}.
67 Teora de la Computacion Profesor: Rodrigo De Castro
La regularidad es tambien preservada por imagenes inversas de homomorsmos,
tal como lo arma el siguiente teorema.
3.5.1 Teorema. Sea h :

un homomorsmo y B

un lenguaje
regular sobre . La imagen inversa h
1
(B) es un lenguaje regular sobre .
Demostracion: Comenzando con un AFD M = (, Q, q
0
, F, ) que acepte a B
podemos construir un AFD M

= (, Q, q
0
, F,

) que acepte h
1
(B). La funcion
de transicion

se dene mediante

(q, a) = (q, h(a)) (aqu se usa la funcion


extendida , seg un la denicion 2.5.2. No es difcil demostrar por induccion sobre
w que

(q
0
, w) = (q
0
, h(w)), para toda cadena w

. Como los estados de


aceptacion de M y M

coinciden, M

acepta a w si y solo si M acepta a h(w).


Por lo tanto,
w L(M

) h(w) L(M) = B w h
1
(B)
Esto quiere decir que L(M

) = h
1
(B).
Con la ayuda del teorema 3.5.1 y de las demas propiedades de clausura tambien
podemos concluir que ciertos lenguajes no son regulares.
Ejemplo
El lenguaje L = {0
n
10
n
: n 1} no es regular ya que si lo fuera,
tambien lo sera h
1
(L) donde h es el homomorsmo h(0) = h(1) =
0, h(2) = 1. Pero
h
1
(L) =

{0, 1}
n
2{0, 1}
n
: n 1

.
Entonces h
1
(L) 0

21

sera regular; este ultimo lenguaje es igual a {0


n
21
n
:
n 1}. Finalmente, por medio del homomorsmo g(0) = 0, g(1) = 1, g(2) =
se concluira que g {0
n
21
n
: n 1} = {0
n
1
n
: n 1} es regular, lo cual sabemos
que no es cierto.
Ejercicios de la seccion 3.5
Por medio de un razonamiento similar al del ejemplo de esta seccion, demostrar
que los siguientes lenguajes sobre = {0, 1} no son regulares:
1. L = {ww : w

}. Ayuda: intersectar primero L con 0

10

1.
2. L = {ww
R
: w

}. Ayuda: intersectar primero L con 0

110

.
Captulo 3 Otras propiedades de los lenguajes regulares 68
3.6. Algoritmos de decision
Dada una propiedad P, referente a automatas sobre un alfabeto , un problema
de decision para P consiste en buscar un algoritmo
1
, aplicable a un automata
arbitrario M, que responda SI o NO a la pregunta: satisface M la propiedad P?
El siguiente diagrama ilustra la situacion.
Si existe un algoritmo de decision, se dice que el problema P es decidible o
resoluble; en caso contrario, el problema P es indecidible o irresoluble.
Es importante tener presente que, para que un problema P sea decidible, no
basta responder SI o NO a la pregunta satisface M la propiedad P? para uno o
varios automatas aislados M; es necesario exhibir un algoritmo aplicable a todos
los automatas. Es posible que en algunos casos concretos se pueda decidir arma-
tiva o negativamente sobre la satisfabilidad de una propiedad P y, sin embargo,
el problema P sea indecidible.
El primer problema de decision que consideraremos es el problema de decidir
si un automata acepta o no alguna cadena.
3.6.1 Teorema. Sea un alfabeto dado. Existe un algoritmo para el siguiente
problema de decision referente a automatas sobre :
Dado un automata (AFD o AFN o AFN-) M, Es L(M) = ? (es
decir, acepta M alguna cadena?).
Demostracion: Podemos dise nar un algoritmo sencillo para encontrar los estados
que son accesibles (o alcanzables) desde el estado inicial de M, es decir, los estados
para los cuales existen trayectorias desde el estado inicial. Si alg un estado de
aceptacion es alcanzable, se tendra L(M) = ; en caso contrario L(M) = . En
el siguiente recuadro aparece el algoritmo para encontrar el conjunto ALC de
estados alcanzables:
1
La nocion de algoritmo aqu considerada es la corriente: un algoritmo es un procedimiento
claro y preciso para efectuar una determinada operacion secuencialmente, en uno o mas pasos.
69 Teora de la Computacion Profesor: Rodrigo De Castro
INICIALIZAR:
ALC := {q
0
}, donde q
0
es el estado inicial de M.
REPETIR:
Para cada q ALC buscar los arcos que salen de q y
a nadir a ALC los estados p para los cuales haya un
arco de q a p con cualquier etiqueta (puede ser ).
HASTA:
No se a naden nuevos estados a ALC.
Claramente, el automata M acepta alguna cadena (o sea, L(M) = ) si y solo si
ALC contiene alg un estado de aceptacion.
3.6.2 Corolario. Sea un alfabeto dado. Existen algoritmos para los siguientes
problemas de decision referentes a automatas sobre :
(1) Dados dos automatas M
1
y M
2
(AFD o AFN o AFN-), L(M
1
) L(M
2
)?
(2) Dados dos automatas M
1
y M
2
(AFD o AFN o AFN-), L(M
1
) = L(M
2
)?
Demostracion:
(1) Sea L
1
= L(M
1
) y L
2
= L(M
2
). Se tiene
L
1
L
2
L
1
L
2
= .
Algoritmo: construir un AFD M

que acepte el lenguaje L


1
L
2
(esto se
puede hacer en razon de la parte (7) del teorema 3.3.1). Utilizar luego el
procedimiento de la parte (1) para decidir si L
1
L
2
es o no vaco.
(2) L(M
1
) = L(M
2
) L(M
1
) L(M
2
) y L(M
2
) L(M
1
). Por lo tanto, basta
aplicar dos veces el algoritmo de la parte (1). Tambien se puede encontrar
un algoritmo de decision teniendo en cuenta que L
1
= L
2
L
1
L
2
=
junto con la parte (8) del teorema 3.3.1.
El argumento utilizado en la demostracion del lema de bombeo sirve para esta-
blecer un criterio que permite decidir si el lenguaje aceptado por un automata es
o no innito. El criterio aparece en el siguiente teorema.
3.6.3 Teorema. Sea M un AFD con n estados y sea L = L(M). L es innito
si y solo si M acepta una cadena w tal que n |w| < 2n.
Captulo 3 Otras propiedades de los lenguajes regulares 70
Demostracion: Si w M y n |w| < 2n, entonces por la demostracion del lema
de bombeo, w se puede descomponer como w = uvx, donde |uv| n, v = . M
acepta innitas cadenas: uv
i
x para todo i 0.
Recprocamente, si L es innito, existe w L con |w| n. Por la demostracion
del lema de bombeo, w = uvx donde |uv| n, v = . Si |w| < 2n la demostracion
esta terminada. Si |w| 2n, puesto que |v| |uv| n, se tendra |ux| n y
ux L. De nuevo, si |ux| < 2n, la demostracion termina; en caso contrario, se
prosigue de esta forma hasta encontrar una cadena en L cuya longitud satisfaga
n < 2n.
3.6.4 Corolario. Sea un alfabeto dado. Existe un algoritmo para el siguiente
problema de decision referente a automatas sobre :
Dado un automata M (AFD o AFN o AFN-), Es L(M) innito?
Demostracion: Algoritmo: construir un AFD M

que acepte el lenguaje L(M) y


chequear la aceptacion o rechazo de todas las cadenas w

tales que n |w| <


2n, donde n = # de estados de M

.
Hemos trabajado con problemas de decision referentes a automatas, pero tam-
bien podemos considerar problemas sobre lenguajes regulares. Dada una pro-
piedad P, referente a lenguajes regulares sobre un alfabeto , un problema de
decisi on para P consiste en buscar un algoritmo, aplicable a todo lenguaje regu-
lar L (es decir, a toda expresion regular R), que responda SI o NO a la pregunta:
satisface L la propiedad P? Puesto que conocemos algoritmos de conversion entre
la representacion por expresiones regulares y la representacion por automatas, los
problemas decidibles sobre automatas corresponden a problemas decidibles sobre
lenguajes regulares y viceversa. As por ejemplo, en razon del Corolario 3.6.4, el
siguiente problema es decidible: Dada una expresion regular R, es L(R) inni-
to?
Ejercicios de la seccion 3.6
1. Sea un alfabeto dado. Encontrar algoritmos para los siguientes problemas
de decision referentes a automatas sobre :
(i) Dado un automata M (AFD o AFN o AFN-), es L(M) =

?
(ii) Dado un automata M (AFD o AFN o AFN-), acepta M alguna
cadena de longitud 1250?
(iii) Dado un automata M (AFD o AFN o AFN-), acepta M alguna
cadena de longitud mayor que 1250?
(iv) Dado un automata M (AFD o AFN o AFN-), acepta M todas las
cadenas de longitud impar?
71 Teora de la Computacion Profesor: Rodrigo De Castro
(v) Dados dos automatas M
1
y M
2
(AFD o AFN o AFN-), existe alguna
cadena que no sea aceptada por ninguno de los automatas M
1
y M
2
?
(vi) Dado un automata M (AFD o AFN o AFN-), Es L(M) conito?
(Un conjunto es conito si su complemento es nito).
2. Encontrar algoritmos de decision, que no utilicen automatas, para resolver
los siguientes problemas:
(i) Dada una expresion regular R, es L(R) = ? Ayuda: puesto que las
expresiones regulares se denen recursivamente, el algoritmo requiere
descomponer la expresion R y utilizar criterios de vacuidad para la
union, la concatenacion y la estrella de Kleene.
(ii) Dada una expresion regular R, contiene L(R) por lo menos 150 ca-
denas?
Al considerar problemas de decision lo importante es la existencia o no
de algoritmos de decision, no la eciencia de los mismos.
En el Captulo 6 se mostrara que existen problemas indecidibles, es decir,
problemas para los cuales no hay algoritmos de decision.
Captulo 4
Lenguajes y gramaticas
independientes del contexto
Como se ha visto, los automatas son dispositivos que procesan cadenas de entrada. En
captulos posteriores consideraremos modelos de automatas con mayor poder computa-
cional que el de los modelos AFD-, AFN y AFD. En el presente captulo iniciaremos
el estudio de las gramaticas generativas, que son mecanismos para generar cadenas
a partir de un smbolo inicial (el estudio de gramaticas continuara en el Captulo 8).
Los automatas procesan cadenas
Las gramaticas generan cadenas
Las gramaticas generativas y, en particular, las gramaticas independientes del contex-
to (GIC), fueron introducidas por Noam Chomsky en 1956 como un modelo para la
descripcion de los lenguajes naturales (como el espa nol, el ingles, etc). En la decada
de los sesenta se comenzaron a usar GIC para presentar la sintaxis de lenguajes de
programacion y para el dise no de analizadores sintacticos en compiladores.
4.1. Gramaticas independientes del contexto
Una gramatica independiente del contexto (GIC), tambien llamada gramatica
contextual, es una cuadrupla, G = (V, , S, P) formada por:
1. Un alfabeto V cuyos elementos se llaman variables o smbolos no-terminales.
2. Un alfabeto cuyos elementos se llaman smbolos terminales. Se exige que
los alfabetos y V sean disyuntos.
3. Una variable especial S V , llamada smbolo inicial de la gramatica.
1
2 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4. Un conjunto nito P V (V )

de producciones o reglas de re-escritura.


Una produccion (A, w) P de G se denota por A w y se lee A produce w;
su signicado es: la variable A se puede reemplazar (sobre-escribir) por la cadena
w. En la produccion A w, A se denomina la cabeza y w el cuerpo de la
produccion.
Notacion y deniciones. Las variables se denotan con las letras may usculas A, B,
C, . . . Los elementos de o smbolos terminales se denotan con letras min usculas
a, b, c, . . .. Si u, v (V )

y A w es una produccion, se dice que uwv se deriva


directamente de uAv, lo cual se denota por
uAv uwv.
Si se quiere hacer referencia a la gramatica G, se escribe
uAv
G
= uwv o uAv =
G
uwv.
Si u
1
, u
2
, . . . , u
n
son cadenas en (V )

y hay una sucesion de derivaciones directas


u
1
G
= u
2
, u
2
G
= u
3
, . . . , u
n1
G
= u
n
se dice que u
n
se deriva de u
1
y se escribe u
1

= u
n
. La anterior sucesion de derivaciones
directas se representa como
u
1
u
2
u
3
u
n1
u
n
y se dice que es una derivacion o una generacion de u
n
a partir de u
1
. Para toda
cadena w se asume que w

= w; por lo tanto, u

= v signica que v se obtiene de
u utilizando cero, una o mas producciones de la gramatica. Analogamente, u
+
= v
signica que v se obtiene de u utilizando una o mas producciones.
El lenguaje generado por una gramatica G se denota por L(G) y se dene
como
L(G) := {w

: S
+
= w}.
Un lenguaje L sobre un alfabeto se dice que es un lenguaje independiente del
contexto (LIC) si existe una GIC G tal que L(G) = L. Dos GIC G
1
y G
2
son equi-
valentes si L(G
1
) = L(G
2
).
La denominacion independiente del contexto proviene del hecho de cada produc-
cion o regla de re-escritura A w se aplica a la variable A independientemente de los
caracteres que la rodean, es decir, independientemente del contexto en el que aparece
A.
Captulo 2 Lenguajes LIC y gramaticas GIC 3

Ejemplo Sea G una gramatica (V, , S, P) dada por:


V = {S}
= {a}
P = {S aS, S }
Se tiene S y
S aS

= a aS a a.
Por consiguiente, L(G) = a

.
De manera mas simple, podemos presentar una gramatica GIC listando sus pro-
ducciones y separando con el smbolo | las producciones de una misma variable. Se
supone siempre que las letras may usculas representan variables y las letras min uscu-
las representan smbolos terminales. As la gramatica del ejemplo anterior se presenta
simplemente como:
S aS | .

Ejemplo La gramatica 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 demas derivaciones en G comienzan ya sea con la produccion
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.
Por consiguiente L(G) = a

.
Las siguientes gramaticas tambien generan el lenguaje a

y son, por lo tanto,


equivalentes a G:

S AB
A aA |
B bB |

S AB |
A aA | a |
B bB | b |

S aS | A
A bA |
4 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro

Ejemplo La gramatica

S aS | aA
A bA | b
genera el lenguaje a
+
b
+
. Otra gramatica equivalente es:

S AB
A aA | a
B bB | b

Ejemplo La gramatica

S 1A | 0
A 0A | 1A |
genera el lenguaje de los n umeros naturales en numeracion binaria. Notese que la unica
cadena que comienza con 0, generable con esta gramatica, es la cadena 0.

Ejemplo
Encontrar una GIC que genere el lenguaje 0

10

10

sobre = {0, 1}, es


decir, el lenguaje de todas las cadenas con exactamente dos unos.
Soluci on:
G :

S A1A1A
A 0A |
Una gramatica equivalente es

S 0S | 1A
A 0A | 1B
B 0B |

Ejemplo
Encontrar una GIC que genere el lenguaje L = {a
i
b
i
: i 0} sobre
= {a, b}, el cual no es un lenguaje regular.
Soluci on:
S aSb | .

Ejemplo
Encontrar una GIC que genere el lenguaje de todos los palndromos sobre
= {a, b}, el cual no es lenguaje regular.
Soluci on:
S aSa | bSb | a | b | .

Ejemplo
Encontrar una GIC que genere el lenguaje de todas las cadenas sobre
= {a, b} que tienen un n umero par de smbolos.
Soluci on:
S aSa | bSb | aSb | bSa |
Captulo 2 Lenguajes LIC y gramaticas GIC 5
Dos gramaticas equivalentes son:

S aaS | bbS | abS | baS |

S AAS |
A a | b

Ejemplo
Encontrar una GIC que genere el lenguaje (ab ba)

sobre
= {a, b}.
Soluci on:
S abS | baS | .

Ejemplo Demostrar que la gramatica G dada por:


S (S)S |
genera el lenguaje de todas las cadenas de parentesis anidados y equilibrados; es decir,
cadenas como (()), ()()(), (())((())).
Soluci on: Es facil ver que G genera cadenas de parentesis anidados y equilibrados
ya que cada aplicacion de la produccion S (S)S da lugar a un par de parentesis
equilibrados.
Para establecer la direccion recproca demostraremos por induccion sobre n la si-
guiente armacion: Toda cadena con 2n parentesis anidados y equilibrados se puede
generar en G.
n = 1: () se genera con S (S)S
2
= ().
n = 2: ()() se genera con S (S)S (S)(S)S
3
= ()().
(()) se genera con S (S)S ((S)S)S
3
= (()).
Paso inductivo: una cadena con 2n parentesis anidados y equilibrados es de la forma
(u) o (u)v donde u y v tienen estrictamente menos de 2n parentesis anidados y
equilibrados. Por hipotesis de induccion S
+
= u y S
+
= v. Por lo tanto,
S (S)S
+
= (u)S (u).
S (S)S
+
= (u)S
+
= (u)v.

Ejercicios de la seccion 4.1


1. Encontrar GIC que generen los siguientes lenguajes sobre = {a, b}:
(i) El lenguaje de las cadenas que tienen un n umero par de bes.
(ii) El lenguaje de las cadenas que comienzan con b y terminan con ba.
(iii) a

b a.
6 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
(iv) a

b b

a.
(v) (ab

a)

.
(vi) {a
i
b
2i
: i 0}.
(vii) {ab
i
ab
i
: i 1}.
2. Encontrar GIC que generen los siguientes lenguajes sobre el alfabeto
{a, b, c, d}:
(i) {a
i
b
j
c
j
d
i
: i, j 1}.
(ii) {a
i
b
i
c
j
d
j
: i, j 1}.
(iii) {a
i
b
j
c
j
d
i
: i, j 1} {a
i
b
i
c
j
d
j
: i, j 1}.
3. Encontrar una GIC que genere el lenguaje {a
i
b
j
c
i+j
: i 0, j 1}, sobre {a, b, c}.
4. Sea = {0, 1}. Encontrar una GIC que genere el lenguaje de las cadenas que
tienen igual n umero de ceros que de unos.
5. Demostrar que la gramatica S SS | (S) | tambien genera el lenguaje de
todas las cadenas de parentesis anidados y equilibrados.
6. Encontrar una gramatica que genere el lenguaje de todas las cadenas de parentesis
circulares y/o angulares, anidados y equilibrados. Es decir cadenas como ([()]),
([])[()], [()([[()()]])], etc. Cadenas como ([)] o [([)]] tienen parentesis
equilibrados pero no anidados y, por lo tanto, no pertenecen a este lenguaje.
4.2.

Arbol de una derivacion
Un arbol con raz es un tipo muy particular de grafo no-dirigido; esta formado por
un conjunto de vertices o nodos conectados entre s por arcos o aristas, con la siguiente
propiedad: existe un nodo especial, llamado la raz del arbol, tal que hay una unica
trayectoria entre cualquier nodo y la raz. De esta manera, la raz se ramica en nodos,
llamados descendientes inmediatos, cada uno de los cuales puede tener, a su vez,
descendientes inmediatos, y as sucesivamente.
La propiedad que caracteriza a un arbol garantiza que un nodo puede tener 0, 1, o
mas descendientes inmediatos pero un unico antecesor inmediato. El unico nodo que
no tiene antecesores es la raz. Los nodos que tienen descendientes, excepto la raz,
se denominan nodos interiores. Los nodos que no tienen descendientes se llaman
hojas del arbol. En la terminologa usualmente utilizada, los descendientes de un nodo
tambien se denominan hijos y los antecesores padres o ancestros. El n umero de
vertices (y por lo tanto, el n umero de arcos) de un arbol puede ser innito.
Captulo 2 Lenguajes LIC y gramaticas GIC 7

Ejemplo Algunos arboles con raz:


El arbol de una derivacion S

= w, w

, en una GIC es un arbol con raz


que se forma de la siguiente manera:
1. La raz esta etiquetada con el smbolo inicial S.
2. Cada nodo interior esta etiquetado con un no terminal.
3. Cada hoja esta etiquetada con terminal o con .
4. Si en la derivacion se utiliza la produccion A s
1
s
2
s
k
, donde s
i
(V )

,
el nodo A tiene k descendientes inmediatos: s
1
, s
2
,. . . , s
k
, escritos de izquierda a
derecha.
De esta forma, las hojas del arbol de derivacion de S

= w son precisamente los
smbolos de la cadena w, ledos de izquierda a derecha y, posiblemente, algunos .
La b usqueda de un arbol de derivacion para una cadena w

se denomina analisis
sintactico de w. Los arboles de derivacion tambien se suelen llamar arboles sintacticos
o arboles de analisis sintactico.
8 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro

Ejemplo Sea G la gramatica:

S AB | AaB
A aA | a
B bBa | b
El arbol de la derivacion
S AB AbBa abBa abba
es
El anterior es tambien el arbol de la derivacion
S AB aB abBa abba.
Esto muestra que dos derivaciones diferentes pueden tener el mismo arbol de derivacion
ya que en el arbol aparecen las producciones utilizadas pero no el orden en que han
sido aplicadas.

Ejemplo Sea G la gramatica:

S BAa
A bBC | a
B bB | b |
C aB | aa
Captulo 2 Lenguajes LIC y gramaticas GIC 9
El arbol de la derivacion
S BAa bAa bbBCa bbbCa bbbaBa bbbaa
es

Ejercicios de la seccion 4.2


1. Sea G siguiente gramatica:
G :

S aS | AaB
A aA | a
B bBbB | b
Encontrar una derivacion de la cadena aaaabbbb y hallar el arbol de tal derivacion.
2. Sea G la siguiente gramatica:
G :

S ABC | BaC | aB
A Aa | a
B BAB | bab
C cC |
Encontrar derivaciones de las cadenas w
1
= abab, w
2
= babacc, w
3
= ababababc y
hallar los arboles de tales derivaciones.
10 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.3. Gramaticas ambiguas
La nocion de ambig uedad se puede presentar en terminos de arboles sintacticos o en
terminos de ciertas derivaciones estandares: las llamadas derivaciones a izquierda.
4.3.1 Denicion. Una derivacion se llama derivacion a izquierda (o derivacion mas
a la izquierda) si en cada paso se aplica una produccion a la variable que esta mas a la
izquierda.
Una derivacion cualquiera se puede transformar siempre en una unica derivacion
a izquierda aplicando, en cada paso, producciones a la variable que este mas a la
izquierda.
4.3.2 Denicion. Una GIC G es ambigua si existe una cadena w

para la cual
hay dos derivaciones a izquierda diferentes. Equivalentemente, una GIC G es ambigua
si existe una cadena w

con dos arboles de derivacion diferentes.

Ejemplo
Considerese el alfabeto =

0, 1, +, , (, )

. La siguiente gramatica G
sp
para generar n umeros naturales, sumas y productos, en numeracion bina-
ria, es ambigua:
S S +S | S S | (S) | 0S | 1S | 0 | 1
La cadena 1 + 1 0 tiene dos derivaciones a izquierda diferentes:
S S +S 1 +S 1 +S S 1 + 1 S 1 + 1 0.
S S S S +S S 1 +S S 1 + 1 S 1 + 1 0.
Los arboles de derivacion correspondientes a las anteriores derivaciones son:
En la gramatica G
sp
la ambig uedad se puede eliminar introduciendo parentesis:
S (S +S) | (S S) | (S) | 0S | 1S | 0 | 1
Captulo 2 Lenguajes LIC y gramaticas GIC 11
Aunque la introduccion de parentesis elimina la ambig uedad, las expresiones genera-
das tienen un excesivo n umero de parentesis lo que diculta el analisis sintactico (en
un compilador, por ejemplo). Lo mas corriente en estos casos es utilizar gramaticas
ambiguas como G
sp
siempre y cuando se establezca un orden de precedencia para los
operadores. Lo usual es establecer que tenga una mayor orden de precedencia que
+, es decir, por convencion act ua antes que +. Por ejemplo, la expresion 1 1 + 0
se interpreta como (1 1) + 0 y la expresion 10 + 11 110 + 1 se interpreta como
10 + (11 110) + 1.

Ejemplo La siguiente gramatica es ambigua:


G :

S aSA |
A bA |
G es ambigua porque para la cadena aab hay dos derivaciones a izquierda diferentes.
S aSA aaSAA aaAA aaA aabA aab.
S aSA aaSAA aaAA aabAA aabA aab.
Los arboles de derivacion para estas dos derivaciones son:
El lenguaje generado por esta gramatica es a
+
b

. Se puede construir una gramatica


no-ambigua que genere el mismo lenguaje:
G

S AB |
A aA | a
B bB |
12 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Para ver que la gramatica G

no es ambigua se puede razonar de la siguiente manera:


la cadena se puede generar de manera unica con la derivacion S . Una derivacion
de una cadena no vaca debe comenzar aplicando la produccion S AB; la variable A
genera cadenas de aes de manera unica y B genera cadenas de bes tambien de manera
unica. Por consiguiente, toda cadena tiene una unica derivacion a izquierda.
Existen lenguajes independientes del contexto para los cuales toda gramatica es
ambigua. Tales lenguajes se llaman inherentemente ambiguos. Un ejemplo
es el lenguaje
L = {a
i
b
i
c
j
d
j
: i, j 1} {a
i
b
j
c
j
d
i
: i, j 1}.
sobre el alfabeto {a, b, c, d}. En el Ejercicio 4.1.2. (iii) se pidio mostrar que L
es un LIC. La demostracion de que L es inherentemente ambiguo es bastante
intrincada y puede encontrarse en la referencia [HU].
No existe ning un algoritmo que permita determinar si una GIC dada es o
no ambigua. Con la terminologa de la seccion 3.6, esto quiere decir que el
problema de la ambig uedad para GIC es indecidible.

Este no es un resultado
trivial; para su demostracion remitimos al lector a la referencia [HMU].

Ejercicios de la seccion 4.3


1. Mostrar que las siguientes gramaticas son ambiguas:
(i) S aSbS | bSaS | .
(ii) S abS | abScS | .
2. Mostrar que las gramaticas G
1
y G
2
siguientes son ambiguas. En cada caso,
encontrar el lenguaje generado por la gramatica y construir luego una gram atica
no-ambigua que genere el mismo lenguaje.
G
1
:

S AaSbB |
A aA | a
B bB |
G
2
:

S ASB | AB
A aA | a
B bB |
3. Encontrar una GIC no-ambigua que genere el lenguaje a

b(a b)

.
Captulo 2 Lenguajes LIC y gramaticas GIC 13
4.4. Gramaticas para lenguajes de
programacion
La sintaxis de los lenguajes de programacion, o al menos una gran porcion de esta,
se presenta usualmente por medio de gramaticas GIC. En tales casos se dice que el
lenguaje esta en la forma Backus-Naur o, simplemente, en la forma BNF. Los len-
guajes que estan en BNF ofrecen ventajas signicativas para el dise no de analizadores
sintacticos en compiladores.

Ejemplo
A continuacion se exhibe una gramatica para generar los n umeros reales
sin signo, similar a la utilizada en muchos lenguajes de programacion. Las
variables aparecen encerradas entre parentesis y real es la variable inicial de la
gramatica. El alfabeto de terminales es {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ., +, -, E}. En el contexto
de los lenguajes de programacion los terminales se denominan tambien componentes
lexicos, lexemas o tokens.
real dgitosdecimalexp
dgitos dgitosdgitos | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
decimal .dgitos |
exp Edgitos | E+dgitos | E-dgitos |
Esta gramatica genera expresiones como 47.236, 321.25E+35, 0.8E9 y 0.8E+9. Las
partes decimal y exponencial son opcionales debido a las producciones decimal
y exp , pero no se generan expresiones como .325, E125, 42.5E ni 0.1E+.

Ejemplo
Gramatica para generar los identicadores en lenguajes de programa-
cion, es decir, cadenas cuyo primer smbolo es una letra que va seguida de
letras y/o dgitos. Las variables aparecen encerradas entre parentesis e identicador
es la variable inicial de la gramatica. La variable lsds representa letras o dgitos.
Los terminales en esta gramatica son las letras, min usculas o may usculas, y los dgitos.
identicador letralsds
lsds letralsds | dgitolsds |
letra a | b | c| | x | y | z | A | B | C | | Y | Z
dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Ejercicios de la seccion 4.4


1. Con la gramatica del primer ejemplo de esta seccion hacer derivaciones y arboles
de derivacion para las cadenas 235.101E+25 y 0.01E-12.
14 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
2. Encontrar una GIC, con una sola variable, para generar los identicadores, es
decir, el lenguaje del segundo ejemplo de esta seccion.
3. Una gramatica similar a la siguiente se usa en muchos lenguajes de programacion
para generar expresiones aritmeticas formadas por sumas y productos de n umeros
en binario:
expresion termino | expresion+termino
termino factor | termino*factor
factor n umero | (expresion)
n umero 1n umero | 0n umero | 0 | 1
El alfabeto de terminales de esta gramatica es {0, 1, +, *, (, )}.
(i) Hacer derivaciones y arboles de derivacion para las siguientes cadenas:
10+101*10
(101+10*10)
(10+111)*(100+10*101+1111)
(ii) Demostrar que esta gramatica no es ambigua.
4.5. Gramaticas para lenguajes naturales
Para los lenguajes naturales, como el espa nol, se pueden presentar GIC que generen
las frases u oraciones permitidas en la comunicacion hablada o escrita. Una GIC para
generar una porcion de las oraciones del idioma espa nol se presenta a continuacion; las
variables aparecen encerradas entre parentesis y Oracion es la variable inicial de
la gramatica. Los terminales son las palabras propias del idioma.
Oracion SujetoVerboCompl. Directo |
SujetoVerboCompl. DirectoCompl. Circunst. |
SujetoVerboCompl. IndirectoCompl. Circunst.
Sujeto Sustant. | Juan | Pedro | Mara |
Compl. Directo Prepos.ArtculoSustant. |
Prepos.ArtculoSustant.Prepos.ArtculoSustant. |
Prepos.ArtculoSustant.Prepos.Sustant.Adjetivo
Compl. Indirecto Prepos.ArtculoSustant. |
Prepos.ArtculoSustant.Adjetivo |
Prepos.Sustant.Prepos.Sustant.
Captulo 2 Lenguajes LIC y gramaticas GIC 15
Compl. Circunst. Prepos.ArtculoSustant. |
Prepos.ArtculoSustant.Adjetivo | Adverbio |
Prepos.ArtculoSustant.Prepos.ArtculoSustant.
Sustant. casa | perro | libro | lapiz | mesa | |
Adjetivo rojo | azul | inteligente | malvado | util | |
Prepos. a | ante | bajo | con | contra | de | desde | en | entre | hacia |
hasta | para | por | seg un | sin | so | sobre | tras | |
Artculo el | la | lo | las | los | un | uno | una | unas | unos |
Adverbio muy | bastante | poco | demasiado | lento | lentamente |
rapido | rapidamente | |
Verbo escribir | escribo | escribe | escribes | escriben | escrib |
escribiste | escribieron |
Los lenguajes naturales son casi siempre ambiguos porque existen muchas reglas de
produccion, lo que da lugar a m ultiples arboles de derivacion para ciertas oraciones.

Ejemplo La oracion
Juan mira a una persona con un telescopio
es ambigua. La ambig uedad surge porque las producciones permiten dos arboles de
derivacion:
16 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro

Ejercicios de la seccion 4.5


Usando la gramatica exhibida en la presente seccion, mostrar que las siguientes oracio-
nes del idioma espa nol son ambiguas. En cada caso hacer los arboles de derivacion.
1. Mara escucha la conversacion tras la puerta.
2. Pedro ve la television en la mesa.
3. Manuel observa a la chica con vestido rojo.
4. Ana so no con un gato en pijama.
4.6. Gramaticas regulares
4.6.1 Denicion. Una GIC se llama regular si sus producciones son de la forma

A aB, a , B V.
A .
Los siguientes teoremas establecen la conexion entre los lenguajes regulares y las
gramaticas regulares.
4.6.2 Teorema. Dado un AFD M = (Q, , q
0
, F, ), existe una GIC regular G =
(V, , S, P) tal que L(M) = L(G).
Captulo 2 Lenguajes LIC y gramaticas GIC 17
Demostracion: Sea V = Q y S = q
0
. Las producciones de G estan dadas por

q ap si y solo si (q, a) = p.
q si y solo si q F.
Demostraremos primero que para toda w

, w = y para todo p, q Q se tiene


(1) Si (q, w) = p entonces q

= wp.
La demostracion de (1) se hace por induccion sobre w. Si w = a y (q, a) = p, entonces
q ap es una produccion 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 hipotesis de induccion q

= wp y como (p, a) = p

, entonces
p ap

. Por lo tanto,
q

= wp wap

que era lo que se quera demostrar.


A continuacion demostraremos el recproco de (1): para toda w

, w = y para
todo p, q Q se tiene
(2) Si q

= wp entonces (q, w) = p.
La demostracion de (2) se hace por induccion sobre la longitud de la derivacion q

=
wp, es decir, por el n umero de pasos o derivaciones directas que hay en q

= wp. Si
la derivacion tiene longitud 1, necesariamente q ap lo cual signica que (q, a) = p.
Para el paso inductivo, supongase que q

= wp tiene longitud n + 1, w = w

a y en el
ultimo paso se aplica la produccion p

ap. Entonces
q

= w

ap = wp.
Por hipotesis de induccion, (q, w

) = p

y por consiguiente
(q, w) = (q, w

a) = ((q, w

), a) = (p

, a) = p,
que era lo que se quera demostrar.
Como consecuencia de (1) y (2) se puede ahora demostrar que
(3) Para toda cadena w

, (q
0
, w) F si y solo si S

=
G
w,
lo cual arma que L(M) = L(G). En efecto, si w = , (q
0
, w) F si y solo si q
0
F.
Por lo tanto, q
0
es una produccion de G. As que S . Recprocamente, si
S

= , necesariamente S , q
0
F y (q
0
, ) F.
18 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Sea ahora w = . Si (q
0
, w) = p F, por (1) se tiene q
0

= w, o sea, S

= w.
Recprocamente, si S

=
G
w, entonces q
0

=
G
wp w donde p . Utilizando (2),
se tiene (q
0
, w) = p F.

Ejemplo
El siguiente AFD M, presentado en el ultimo ejemplo de la seccion 2.3,
acepta las cadenas que terminan en b:
M induce la gramatica regular
G :

q
0
aq
0
| bq
1
q
1
bq
1
| aq
0
|
que cumple L(M) = L(G). Las variables de G son q
0
y q
1
, siendo q
0
la variable inicial.

Ejemplo
Para el lenguaje regular 0

10

10

, sobre = {0, 1} (el lenguaje de todas las


cadenas con exactamente dos unos), vimos en la seccion 4.1 una gram atica
que lo genera:

S A1A1A
A 0A |
Esta gramatica no es regular, pero por medio del AFD
y el Teorema 4.6.2 se puede obtener una GIC regular que genere 0

10

10

S 0S | 1A
A 0A | 1B
B 0B |
4.6.3 Teorema. Dada una GIC regular G = (V, , S, P), existe un AFN M = (Q, ,
q
0
, F, ) tal que L(M) = L(G).
Captulo 2 Lenguajes LIC y gramaticas GIC 19
Demostracion: Se construye M = (Q, , q
0
, F, ) haciendo Q = V , q
0
= S y

B (A, a) para cada produccion A aB.


A F si A .
Usando razonamientos similares a los del Teorema 4.6.2, se puede demostrar que
A

=
G
wB si y solo si B (A, w), para todo w

, w = ,
de donde L(M) = L(G). Los detalles se dejan como ejercicio.
4.6.4 Corolario.
1. Un lenguaje es regular si y solamente si es generado por una gramatica regular.
2. Todo lenguaje regular es un LIC (pero no viceversa).
Demostracion:
1. Se sigue del Teorema 4.6.2, el Teorema 4.6.3 y del Teorema de Kleene.
2. Se sigue de la parte 1. Por otro lado, {a
i
b
i
: i 0} es LIC pero no es regular.
4.6.5 Denicion. Una GIC se llama regular por la derecha si sus producciones
son de la forma

A wB, w

, B V,
A
4.6.6 Teorema. Las gramaticas regulares y las gramaticas regulares por la derecha
generan los mismos lenguajes, es decir, los lenguajes regulares. Dicho de otra manera,
la denicion de gramatica regular es equivalente a la denicion de gramatica regular
por la derecha.
Demostracion: Una gramatica regular es obviamente regular por la derecha. Recpro-
camente, en una gramatica regular por la derecha G = (V, , S, P), una producci on de
la forma
A a
1
a
2
a
n
B
donde los a
i
, n 2, B V , se puede simular con producciones de la forma
A aB y A . En efecto, se introducen n 1 variables nuevas A
1
, . . . , A
n1
cuyas
unicas producciones son:
A a
1
A
1
A
1
a
2
A
2
.
.
.
A
n1
a
n
B
20 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
De esta manera se puede construir una gramatica regular equivalente a G.

Ejercicios de la seccion 4.6


1. Encontrar GIC regulares que generen los siguientes lenguajes:
(i) ab

a.
(ii) (ab ba)

.
(iii) a
+
b b
+
a

b.
(iv) 0

(10

01

).
2. Una GIC se llama regular por la izquierda si sus producciones son de la forma:

A Bw, w

, B V
A
Demostrar que las gramaticas regulares y las gramaticas regulares por la izquierda
generan los mismos lenguajes.
3. Completar los detalles de la demostracion del Teorema 4.6.3.
4.7. Eliminacion de las variables in utiles
En una GIC puede haber dos tipos de variables in utiles: aquellas que nunca aparecen
en el curso de una derivacion y aquellas que no se pueden convertir en cadenas de
terminales. A continuacion se precisan estos conceptos.
4.7.1. Deniciones.
(i) Una variable A es alcanzable o accesible si existen u, v (V )

tales que
S

= uAv. La variable inicial S es alcanzable por denicion.
(ii) Una variable A es terminable si existe w

tal que A

= w. En particular,
si A es una produccion entonces A es terminable.
(iii) A es una variable in util si no es alcanzable o no es terminable.
Existen algoritmos para detectar todas las variables in utiles de una GIC que permiten
construir una gramatica G

equivalente a una gramatica G dada, de tal manera que G

no tenga variables in utiles.


Captulo 2 Lenguajes LIC y gramaticas GIC 21
4.7.2. Algoritmo para encontrar las variables terminables.
El siguiente algoritmo sirve para encontrar todas las variables terminables de una GIC.
TERM
1
:=

A V : Existe una produccion de la forma A w, w

.
TERM
i+1
:= TERM
i

A V : produccion A w, w ( TERM
i
)

.
Obtenemos una sucesion creciente de conjuntos de variables:
TERM
1
TERM
2
TERM
3

Como el conjunto de variables es nito, existe k tal que
TERM
k
= TERM
k+1
= TERM
k+2
=
El conjunto TERM de variables terminables es entonces
TERM :=

i1
TERM
i
El anterior algoritmo se puede presentar de la siguiente forma:
INICIALIZAR:
TERM:=

A V : produccion A w, w

REPETIR:
TERM:= TERM

A V : produccion A w, w ( TERM)

HASTA:
No se a naden nuevas variables a TERM

Ejemplo Encontrar las variables terminables de la siguiente gramatica.


G :

S ACD | bBd | ab
A aB | aA | C
B aDS | aB
C aCS | CB | CC
D bD | ba
E AB | aDb
Soluci on:
TERM
1
= {S, D}.
TERM
2
= {S, D} {B, E} = {S, D, B, E}.
TERM
3
= {S, D, B, E} {A} = {S, D, B, E, A}.
TERM
4
= {S, D, B, E, A} { } = {S, D, B, E, A}.
TERM = {S, A, B, D, E}.
Conjunto de variables no terminables: {C}.
22 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.7.3. Algoritmo para encontrar las variables alcanzables.
El siguiente algoritmo sirve para encontrar todas las variables alcanzables de una GIC.
ALC
1
:= {S}.
ALC
i+1
:= ALC
i
{A V : produc. B uAv, B ALC
i
u, v (V )

}.
Obtenemos una sucesion creciente de conjuntos de variables:
ALC
1
ALC
2
ALC
3

Como el conjunto de variables es nito, existe k tal que
ALC
k
= ALC
k+1
= ALC
k+2
=
El conjunto ALC de variables alcanzables es entonces
ALC =

i1
ALC
i
El anterior algoritmo se puede presentar de la siguiente forma:
INICIALIZAR:
ALC := {S}
REPETIR:
ALC := ALC

A V : produc. B uAv, B ALC y u, v (V )

HASTA:
No se a naden nuevas variables a ALC

Ejemplo Encontrar las variables alcanzables de la siguiente gramatica.


G :

S aS | AaB | ACS
A aS | AaB | AC
B bB | DB | BB
C aDa | ABD | ab
D aD | DD | ab
E FF | aa
F aE | EF
Soluci on:
ALC
1
= {S}.
ALC
2
= {S} {A, B, C} = {S, A, B, C}.
ALC
3
= {S, A, B, C} {D} = {S, A, B, C, D}.
ALC
4
= {S, A, B, C, D} { } = {S, A, B, C, D}
ALC = {S, A, B, C, D}.
Captulo 2 Lenguajes LIC y gramaticas GIC 23
Conjunto de variables no alcanzables: {E, F}.
Dada una GIC G, los dos algoritmos anteriores (algoritmo 4.7.2 y algoritmo algo-
ritmo 4.7.3) se pueden llevar a cabo en dos ordenes diferentes:
(I) G
Algoritmo

Eliminar variables
no-terminables
G
1
Algoritmo

Eliminar variables
no-alcanzables
G
2
(II) G
Algoritmo

Eliminar variables
no-alcanzables
G
3
Algoritmo

Eliminar variables
no-terminables
G
4
Esto da lugar a las siguientes preguntas:
(1) Es G
2
= G
4
?
(2) G
2
tiene variables in utiles?
(3) G
4
tiene variables in utiles?
El siguiente ejemplo muestra que la respuesta a la pregunta (1) es no y que al realizar
los algoritmos en el orden (II) pueden permanecer en G
4
algunas variables in utiles.

Ejemplo Considerese la siguiente gramatica G.


G :

S a | AB
A aA |
Aplicacion de los algoritmos en el orden (I):
Variables terminables de G: TERM= {S, A}.
G
1
:

S a
A aA |
Variables alcanzables de G
1
: ALC= {S}.
G
2
:

S a
Se tiene que L(G
2
) = {a}.
Aplicacion de los algoritmos en el orden (II):
Variables alcanzables de G: ALC={S, A, B}.
G
3
:

S a | AB
A aA |
Variables terminables de G
3
: TERM={S, A}.
24 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
G
4
:

S a
A aA |
Se observa que en G
4
, A no es alcanzable. Ademas, G
2
= G
4
.
No obstante, si los algoritmos se llevan a cabo en el orden (I) la gramatica G
2
ya
no tiene variables in utiles. Nos podemos convencer de eso observando que las variables
alcanzables obtenidas al nalizar el procedimiento siguen siendo terminables. Mas pre-
cisamente, si una variable A permanece al nalizar el procedimiento completo, sera es
alcanzable, y si la derivacion A

= w, con w

, se poda hacer antes de eliminar las


variables no alcanzables, tambien se podra realizar en la gramatica nal ya que todas
las variables que aparezcan en esa derivacion seran alcanzables.

Ejemplo Eliminar las variables in utiles de la siguiente gramatica G.


G :

S SBS | BC | Bb
A AA | aA
B aBCa | b
C aC | ACC | abb
D aAB | ab
E aS | bAA
F aDb | aF
Soluci on: Ejecutamos los algoritmos en el orden (I):
TERM
1
= {B, C, D}.
TERM
2
= {B, C, D} {S, F}.
TERM
3
= {B, C, D, S, F} {E} = {B, C, D, S, F, E}.
TERM
4
= {B, C, D, S, F, E} { }.
La unica variable no-terminable de G es A. Por lo tanto, G es equivalente a la siguiente
gramatica G
1
:
G
1
:

S SBS | BC | Bb
B aBCa | b
C aC | abb
D ab
E aS
F aDb | aF
Variables alcanzables de G
1
:
ALC
1
= {S}.
ALC
2
= {S} {B, C}.
ALC
3
= {S, B, C} { }.
Captulo 2 Lenguajes LIC y gramaticas GIC 25
Las variables D, E, F son no alcanzables. Por lo tanto, G es equivalente a la siguiente
gramatica G
2
, que no tiene variables in utiles.
G
2
:

S SBS | BC | Bb
B aBCa | b
C aC | abb

Ejercicios de la seccion 4.7


1. Eliminar las variables in utiles de la siguiente gramatica:
G :

S SS | SBB | CCE
A aE | bE
B bB | Db
C aC | bB
D aDb | ab |
E aA | bB
2. Eliminar las variables in utiles de la siguiente gramatica:
G :

S EA | SaBb | aEb
A DaD | bD
B bB | Ab |
C aC | bBC
D aEb | ab
E aA | bB |
F Fb | Fa | a
4.8. Eliminacion de las producciones
4.8.1. Deniciones.
(i) Una produccion de la forma A se llama produccion .
(ii) Una variable A se llama anulable si A

= .
26 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.8.2. Algoritmo para encontrar las variables anulables.
ANUL
1
:= {A V : A es una produccion}.
ANUL
i+1
:= ANUL
i

A V : produccion A w, w (ANUL
i
)

.
Obtenemos una sucesion creciente de conjuntos de variables:
ANUL
1
ANUL
2
ANUL
3

Como el conjunto de variables es nito, existe k N tal que
ANUL
k
= ANUL
k+1
= ANUL
k+2
=
El conjunto ANUL de variables anulables es entonces
ANUL :=

i1
ANUL
i
El anterior algoritmo se puede presentar de la siguiente forma:
INICIALIZAR:
ANUL := {A V : A es una produccion}
REPETIR:
ANUL := ANUL

A V : prod. A w, w (ANUL)

HASTA:
No se a naden nuevas variables a ANUL
4.8.3 Teorema. Dada una GIC G, se puede construir una GIC G

equivalente a G
sin producciones , excepto (posiblemente) S .
Demostracion: Una vez que haya sido determinado el conjunto ANUL de variables
anulables, por medio del algoritmo 4.8.2, las producciones de se pueden eliminar
(excepto S ) a nadiendo nuevas producciones que simulen el efecto de las produc-
ciones eliminadas. Mas concretamente, por cada produccion A u de G se a naden
las producciones de la forma A v obtenidas suprimiendo de la cadena u una, dos
o mas variables anulables presentes, de todas las formas posibles. La gramatica G

as obtenida es equivalente a la gramatica original G.

Ejemplo Eliminar las producciones de la siguiente gramatica G.


G :

S AB | ACA | ab
A aAa | B | CD
B bB | bA
C cC |
D aDc | CC | ABb
Captulo 2 Lenguajes LIC y gramaticas GIC 27
Soluci on: Primero encontramos las variables anulables de G por medio del algoritmo
4.8.2:
ANUL
1
= {C}.
ANUL
2
= {C} {D} = {C, D}.
ANUL
3
= {C, D} {A} = {C, D, A}.
ANUL
4
= {C, D, A} {S} = {C, D, A, S}.
ANUL
5
= {C, D, A, S} { } = {C, D, A, S}.
Al eliminar de G la producciones (la unica es C ) se obtiene la siguiente gramatica
equivalente a G:
G

S AB | ACA | ab | B | CA | AA | AC | A | C |
A aAa | B | CD | aa | C | D
B bB | bA | b
C cC | c
D aDc | CC | ABb | ac | C | Bb

Ejercicios de la seccion 4.8


1. Eliminar las producciones de la siguiente gramatica:
G :

S BCB
A aA | ab
B bBa | A | DC
C aCb | D | b
D aB |
2. Eliminar las producciones de la siguiente gramatica:
G :

S EA | SaBb | aEb
A DaD | bD | BEB
B bB | Ab |
D aEb | ab
E aA | bB |
28 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.9. Eliminacion de las producciones unitarias
4.9.1. Deniciones.
(i) Una produccion de la forma A B donde A y B son variables, se llama pro-
duccion unitaria.
(ii) El conjunto unitario de una variable A (tambien llamado conjunto cadena
de A) se dene de la siguiente manera:
UNIT(A) := {X V : una derivacion A

= X
que usa unicamente producciones unitarias}.
Por denicion, A UNIT(A).
4.9.2. Algoritmo para encontrar las producciones unitarias.
El siguiente algoritmo sirve para encontrar el conjunto unitario UNIT(A) de una
variable A.
UNIT
1
(A) := {A}.
UNIT
i+1
(A) := UNIT
i
(A) {X V : produccion Y X, Y UNIT
i
(A)}.
Para el conjunto de producciones unitarias se tiene que:
UNIT
1
(A) UNIT
2
(A) UNIT
3
(A)
Puesto que el conjunto de variables es nito, la anterior es una sucesion nita y se tiene
UNIT(A) =

i1
UNIT
i
(A)
El anterior algoritmo se puede representar de la siguiente forma:
INICIALIZAR:
UNIT(A):={A}
REPETIR:
UNIT(A):= UNIT(A)

X V : una produc. Y X con Y UNIT(A)

HASTA:
No se a naden nuevas variables UNIT(A)
4.9.3 Teorema. Dada una GIC G, se puede construir una GIC G

equivalente a G
sin producciones unitarias.
Captulo 2 Lenguajes LIC y gramaticas GIC 29
Demostracion: Las producciones unitarias de G se pueden eliminar a nadiendo para
cada variable A de G las producciones (no unitarias) de las variables contenidas en el
conjunto unitario UNIT(A). La gramatica G

as obtenida es equivalente a la gram atica


original G.

Ejemplo Eliminar las producciones unitarias de la siguiente gramatica.


G :

S AS | AA | BA |
A aA | a
B bB | bC | C
C aA | bA | B | ab
Soluci on: Aplicando el algoritmo para cada una de las variables de G, se tiene que:
UNIT
1
(S) = {S}.
UNIT
2
(S) = {S} { } = {S}.
UNIT
1
(A) = {A}.
UNIT
2
(A) = {A} { } = {A}.
UNIT
1
(B) = {B}.
UNIT
2
(B) = {B} {C} = {B, C}.
UNIT
3
(B) = {B, C} {B} = {B, C}.
UNIT
1
(C) = {C}.
UNIT
2
(C) = {C} {B} = {C, B}.
UNIT
3
(C) = {C, B} {C} = {C, B}.
Eliminando las producciones unitarias se obtiene una gramatica G

equivalente:
G

S AS | AA | BA |
A aA | a
B bB | bC | aA | bA | ab
C aA | bA | ab | bB | bC

Ejemplo Eliminar las producciones unitarias de la siguiente gramatica.


G :

S ACA | CA | AA | A | C |
A aAa | aa | B | C
B cC | D | C
C bC
D aA |
30 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Soluci on: Realizando el algoritmo para cada una de las variables de G se obtiene:
UNIT(S) = {S, A, C, B, D}.
UNIT(A) = {A, B, C, D}.
UNIT(B) = {B, C, D}.
UNIT(C) = {C}.
UNIT(D) = {D}.
Eliminando las producciones unitarias se obtiene una gramatica G

equivalente:
G

S ACA | CA | AA | | aAa | aa | bC | cC | aA
A aAa | aa | cC | bC | aA |
B cC | bC | aA |
C bC
D aA |

Ejercicios de la seccion 4.9


1. Eliminar las producciones unitarias de la siguiente gramatica:
G :

S Ba | A |
A Aa | a
B bB | S
2. Eliminar las producciones unitarias de la siguiente gramatica:
G :

S BBa | A | B | ab |
A Aa | B | D | aC
B bB | aA | b
C ABb | A | aB
D cC | c
3. Eliminar las producciones unitarias de la siguiente gramatica:
G :

S ACA | ab | B | CA | A | C |
A aAa | B | CD | aa | D
B bB | bA | b
C cC | c
D ABb | ac | C | Bb
Captulo 2 Lenguajes LIC y gramaticas GIC 31
4.10. Forma Normal de Chomsky (FNC)
Una GIC G esta en Forma Normal de Chomsky (FNC) si satisface:
1. G no tiene variables in utiles.
2. G no tiene producciones (excepto posiblemente S ).
3. Todas las producciones son de la forma: A a (producciones simples) o A BC
(producciones binarias).
En particular, una gramatica en FNC no tiene producciones unitarias.
4.10.1 Teorema (Procedimiento de conversion a FNC). Toda GIC G es equi-
valente a una gramatica en Forma Normal de Chomsky.
Demostracion: Podemos transformar G en una gramatica en FNC, equivalente a G,
ejecutando los algoritmos de las secciones anteriores en el siguiente orden:
1. Eliminar las variables no terminales.
2. Eliminar las variables no alcanzables.
3. Eliminar las producciones (excepto, posiblemente, S ).
4. Eliminar las producciones unitarias.
5. Las producciones resultantes (diferentes de S ) son de la forma: A a
o A w, donde |w| 2. Estas ultimas se pueden simular con producciones de
la forma A BC o A a. Se introduce primero, para cada a , una variable
nueva T
a
cuya unica produccion es T
a
a. A continuacion, se introducen nuevas
variables, con producciones binarias, para simular las producciones deseadas.
La parte 5 del procedimiento anterior se ilustra en los dos siguientes ejemplos.

Ejemplo Simular la produccion A abBaC con producciones simples y binarias.


Soluci on: Introducimos las variables T
a
y T
b
, y las producciones T
a
a y T
b
b.
Entonces A abBaC se simula con:

A T
a
T
b
BT
a
C
T
a
a
T
b
b
32 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Ahora introducimos nuevas variables T
1
, T
2
, T
3
y las producciones binarias necesarias.
Las unicas producciones de estas nuevas variables son las mostradas:

A T
a
T
1
T
1
T
b
T
2
T
2
BT
3
T
3
T
a
C
T
a
a
T
b
b

Ejemplo Simular la produccion A BAaCbb con producciones simples y binarias.


Soluci on: Introducimos las variables T
a
y T
b
, y las producciones T
a
a y T
a
b.
Entonces A BAaCbb se simula con:

A BAT
a
CT
b
T
b
T
a
a
T
b
b
Ahora introducimos nuevas variables T
1
, T
2
, T
3
, T
4
y las producciones binarias necesa-
rias. Las unicas producciones de estas nuevas variables son las mostradas:

A BT
1
T
1
AT
2
T
2
T
a
T
3
T
3
CT
4
T
4
T
b
T
b
T
a
a
T
b
b
En los siguientes ejemplos se ilustra el procedimiento completo para convertir una
gramatica dada a la Forma Normal de Chomsky (FNC).

Ejemplo Encontrar una GIC en FNC equivalente a la siguiente a la gramatica:


G :

S AB | aBC | SBS
A aA | C
B bbB | b
C cC |
Captulo 2 Lenguajes LIC y gramaticas GIC 33
Soluci on: El conjunto de variables terminables es
TERM = {B, C, S, A},
y el conjunto de variables alcanzables es
ALC = {S, A, B, C}.
Es decir, la gramatica no tiene variables in utiles. El conjunto de variables anulables es
ANUL = {C, A}.
Al eliminar las producciones de G (la unica es C ) se obtiene la gramatica
equivalente G
1
:
G
1
:

S AB | aBC | SBS | B | aB
A aA | C | a
B bbB | b
C cC | c
A continuacion encontramos los conjuntos unitarios de todas las variables:
UNIT(S) = {S, B}.
UNIT(A) = {A, C}.
UNIT(B) = {B}.
UNIT(C) = {C}.
Al eliminar las producciones unitarias obtenemos la gramatica equivalente G
2
:
G
2
:

S AB | aBC | SBS | aB | bbB | b


A aA | a | cC | c
B bbB | b
C cC | c
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 proposito de que todas las producciones sean unitarias o de la forma
A w, donde |w| 2.
G
3
:

S AB | T
a
BC | SBS | T
a
B | T
b
T
b
B | b
A T
a
A | a | T
c
C | c
B T
b
T
b
B | b
C T
c
C | c
T
a
a
T
b
b
T
c
c
34 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Finalmente, se introducen nuevas variables, con producciones binarias, para simular
las producciones de la forma A w, donde |w| 2:
G
4
:

S AB | T
a
T
1
| ST
2
| T
a
B | T
b
T
3
| b
A T
a
A | T
C
C | a | c
B T
b
T
3
| b
C T
c
C | c
T
1
BC
T
2
BS
T
3
T
b
B
T
a
a
T
b
b
T
c
c

Ejemplo Encontrar una GIC en FNC equivalente a la siguiente a la gramatica:


G :

S aS | aA | D
A aAa | aAD |
B aB | BC
C aBb | CC |
D aB | bA | aa | A
Soluci on: TERM = {A, C, D, S}. Eliminando la variable no-terminable B obtenemos:
G
1
:

S aS | aA | D
A aAa | aAD |
C CC |
D bA | aa | A
El conjunto de las variables alcanzables de G
1
es ALC = {S, A, D}. Eliminando la
variable no-alcanzable C obtenemos:
G
2
:

S aS | aA | D
A aAa | aAD |
D bA | aa | A
El conjunto de variables anulables de G
2
es ANUL = {A, D, S}. Eliminando las pro-
ducciones obtenemos:
G
3
:

S aS | aA | D | a |
A aAa | aAD | aa | aA | aD | a
D bA | aa | A | b
Captulo 2 Lenguajes LIC y gramaticas GIC 35
A continuacion 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 gramatica equivalente G
4
:
G
4
:

S aS | aA | a | | aAa | aAD | aa | aD | bA | b
A aAa | aAD | aa | aA | aD | a
D bA | aa | b | aAa | aAD | aa | aA | aD | a
Finalmente, simulamos las producciones de G
4
con producciones unitarias y binarias:
G
5
:

S T
a
S | T
a
A | T
a
T
1
| T
a
T
2
| T
a
T
a
| T
a
D | T
b
A | 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
T
1
AT
a
T
2
AD
T
a
a
T
b
b
En algunas aplicaciones de la FNC es necesario exigir que la variable inicial S no
aparezca en el cuerpo de ninguna produccion. Si S aparece en el lado derecho de
alguna produccion se dice que S es recursiva ya que esto da lugar a derivaciones de
la forma S
+
= uSv, con u, v (V )

. El siguiente teorema es un resultado muy


sencillo; establece que cualquier GIC se puede transformar en una GIC equivalente en
la cual la variable inicial no es recursiva.
4.10.2 Teorema. Dada una GIC G = (V, , S, P) se puede construir una GIC G

=
(V

, , S

, P

) equivalente a G de tal manera que el smbolo inicial S

de G

no aparezca
en lado derecho de las producciones de G

.
Demostracion: La nueva gramatica G

tiene una variable mas que G, la variable S

,
que act ua como la nueva variable inicial. Es decir, V

= V {S

}. El conjunto de
producciones P

esta dado por P

= P {S

S}. Es claro que L(G) = L(G

) y el
smbolo inicial S

no aparece en el cuerpo de las producciones.


Seg un este resultado, el papel de la variable inicial de la nueva gramatica G

es
unicamente iniciar las derivaciones.
36 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro

Ejemplo
Encontrar una GIC G

equivalente a la siguiente gramatica Gde tal manera


que la variable inicial de G

no sea recursiva.
G :

S ASB | BB
A aA | a
B bBS |
Soluci on: Seg un se indico en la demostracion del Teorema 4.10.2, la gramatica pedida
G

es
G

S
S ASB | BB
A aA | a
B bBS |
Notese que S sigue siendo recursiva pero ya no es la variable inicial de la gramatica.

Ejemplo
Encontrar una GIC en FNC equivalente a la gramatica G del ejemplo
anterior, de tal manera que su variable inicial no sea recursiva.
Soluci on: Comenzamos transformando G en G

, como se hizo en el ejemplo anterior.


En G

todas las variable son utiles y ANUL = {B, S, S

}. Eliminando las producciones


obtenemos:
G
1
:

S |
S ASB | BB | AB | AS | A
A aA | a
B bBS | bS | bB | b
Los conjuntos unitarios son:
UNIT(S

) = {S

, S}, UNIT(S) = {S, A}, UNIT(A) = {A}, UNIT(B) = {B}.


Eliminando las producciones unitarias se obtiene la gramatica:
G
2
:

ASB | BB | AB | AS | aA | a |
S ASB | BB | AB | AS | aA | a
A aA | a
B bBS | bS | bB | b
Simulando las producciones de G
2
con producciones unitarias y binarias se obtiene:
Captulo 2 Lenguajes LIC y gramaticas GIC 37
G
3
:

AT
1
| BB | AB | AS | T
a
A | a |
S AT
1
| BB | AB | AS | T
a
A | a
A T
a
A | a
B T
b
T
2
| T
b
S | T
b
B | b
T
a
a
T
b
b
T
1
SB
T
2
BS

Ejercicios de la seccion 4.10


1. Encontrar una gramatica en FNC equivalente a la siguiente GIC:
G :

S ABC | BaC | aB
A Aa | a
B BAB | bab
C cC | c
2. Encontrar una gramatica en FNC equivalente a la siguiente GIC:
G :

S aASb | BAb
A Aa | a |
B BAB | bAb
C cCS |
3. Para la gramatica del ejercicio 2 anterior encontrar una GIC equivalente en FNC,
de tal manera que su variable inicial no sea recursiva.
4.11. Forma Normal de Greibach (FNG)
Una GIC esta en Forma Normal de Greibach (FNG) si
1. La variable inicial no es recursiva.
2. G no tiene variables in utiles.
3. G no tiene producciones (excepto posiblemente S ).
38 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4. Todas las producciones son de la forma: A a (producciones simples) o A
aB
1
B
2
. . . B
k
, donde las B
i
son variables.
Las derivaciones en una gramatica que este en FNG tienen dos caractersticas notables:
en cada paso aparece un unico terminal y, en segundo lugar, la derivacion de una cadena
de longitud n (n 1) tiene exactamente n pasos.
Existe un procedimiento algortmico para transformar una GIC dada en una gra-
matica equivalente en FNG. Para presentar el procedimiento necesitamos algunos re-
sultados preliminares.
4.11.1 Denicion. Una variable se llama recursiva a la izquierda si tiene una
produccion de la forma:
A Aw, w (V )

.
La recursividad a izquierda se puede eliminar, como se muestra en el siguiente teorema.
4.11.2 Teorema (Eliminacion de la recursividad a la izquierda). Las produc-
ciones de una variable A cualquiera se pueden dividir en dos clases:

A A
1
| A
2
| | A
n
A
1
|
2
| |
m
donde
i
,
i
(V )

y el primer smbolo de
i
es diferente de A. Sin alterar el
lenguaje generado, las anteriores producciones se pueden simular, reemplazandolas por
las siguientes:

A
1
|
2
| |
m
|
1
Z |
2
Z | |
m
Z
Z
1
|
2
| |
n
|
1
Z |
2
Z | |
n
Z
donde Z es una variable completamente nueva.
Demostracion: Se puede observar que, tanto con las producciones originales como
las nuevas, A genera el lenguaje
{
1
,
2
, . . . ,
m
} {
1
,
2
, . . . ,
n
}


4.11.3 Lema. En una GIC cualquiera, una produccion A uBv se puede reemplazar
(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.
Captulo 2 Lenguajes LIC y gramaticas GIC 39
Demostracion: Inmediato.
4.11.4 Teorema (Procedimiento de conversion a FNG). Toda GIC G es equi-
valente a una gramatica en Forma Normal de Greibach.
Demostracion: Suponemos que la gramatica dada esta en FNC. Esto simplica el pro-
cedimiento, aunque este es valido (con modicaciones menores) para una gramatica
arbitraria si se eliminan primero las variables in utiles, las producciones y las produc-
ciones unitarias. La conversion a FNG se realiza ejecutando los siguientes pasos:
1. Enumerar las variables en un orden arbitrario pero jo durante el procedimiento.
S debe ser la variable con orden 1.
2. Para cada variable A de la gramatica original, siguiendo el orden elegido, modi-
car sus producciones de tal manera que el primer smbolo del cuerpo de cada
produccion (primer smbolo a la derecha de la echa) sea un terminal o una varia-
ble con orden mayor que el de A. Para lograrlo se usa el teorema de eliminacion
de la recursividad a la izquierda, Teorema 4.11.2, y el Lema 4.11.3, todas las
veces que sea necesario.
3. Utilizar el Lema 4.11.3 para modicar las producciones de las variables origina-
les de tal manera que el primer smbolo del cuerpo de cada produccion sea un
terminal. Esto se hace siguiendo el orden inverso de enumeracion de las variables:
ultima, pen ultima, etc.
4. Utilizar de nuevo el Lema 4.11.3, para modicar las producciones de las variables
nuevas de tal manera que el primer smbolo del cuerpo de cada produccion sea
un terminal.

Ejemplo
Encontrar una gramatica en FNG equivalente a la siguiente gramatica
(que esta en FNC):
G :

S AA | a
A AA | b
Paso 1: Aqu solamente hay un orden posible para variables: S, A.
Paso 2: En este paso solo hay que eliminar la recursividad a izquierda de la variable
A. Al hacerlo se obtiene la gramatica:

S AA | a
A b | bZ
Z A | AZ
40 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Paso 3:

S bA | bZA | a
A b | bZ
Z A | AZ
Paso 4:

S bA | bZA | a
A b | bZ
Z b | bZ | bZZ

Ejemplo
Encontrar una gramatica en FNG equivalente a la siguiente gramatica
(que esta en FNC):

S AB | BC
A AB | a
B AA | CB | a
C a | b
Paso 1: Orden de las variables: S, B, A, C. Este orden es muy adecuado porque el
cuerpo de las producciones de B comienza con A o C, que son variables de orden
mayor.

S AB | BC
B AA | CB | a
A AB | a
C a | b
Paso 2:

S AB | BC
B AA | CB | a
A a | aZ
C a | b
Z B | BZ
Paso 3:

S aB | aZB | aAC | aZAC | aBC | bBC | aC


B aA | aZA | aB | bB | a
A a | aZ
C a | b
Z B | BZ
Captulo 2 Lenguajes LIC y gramaticas GIC 41
Paso 4:

S aB | aZB | aAC | aZAC | aBC | bBC | aC


B aA | aZA | aB | bB | a
A a | aZ
C a | b
Z aA | aZA | aB | bB | a | aAZ | aZAZ | aBZ | bBZ | aZ
El siguiente ejemplo ilustra que el procedimiento de conversion a la forma FNG puede
dar lugar a docenas de producciones, incluso a partir de una gramatica relativamente
sencilla.

Ejemplo Encontrar una gramatica en FNG equivalente a la siguiente gramatica:

S AB
A AB | CB | a
B AB | b
C AC | c
Paso 1: Orden de las variables: S, A, B, C.
Paso 2:

S AB
A CB | a | CBZ
1
| aZ
1
B CBB | aB | CBZ
1
B | aZ
1
B | b
C CBC | aC | CBZ
1
C | aZ
1
C | c
Z
1
B | BZ
1
Prosiguiendo con el paso 2, se elimina la recursividad a izquierda de la variable
C:

S AB
A CB | a | CBZ
1
| aZ
1
B CBB | aB | CBZ
1
B | aZ
1
B | b
C aC | aZ
1
C | c | aCZ
2
| aZ
1
CZ
2
| cZ
2
Z
1
B | BZ
1
Z
2
BC | BZ
1
C | BCZ
2
| BZ
1
CZ
2
42 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Paso 3:

S 14 producciones
A a | aZ
1
| 6 producciones | 6 producciones
B aB | aZ
1
B | b | 6 producciones | 6 producciones
C aC | aZ
1
C | c | aCZ
2
| aZ
1
CZ
2
| cZ
2
Z
1
B | BZ
1
Z
2
BC | BZ
1
C | BCZ
2
| BZ
1
CZ
2
Paso 4: El n umero de producciones de la nueva gramatica se incrementa drasticamen-
te:

S 14 producciones
A a | aZ
1
| 6 producciones | 6 producciones
B aB | aZ
1
B | b | 6 producciones | 6 producciones
C aC | aZ
1
C | c | aCZ
2
| aZ
1
CZ
2
| cZ
2
Z
1
15 producciones | 15 producciones
Z
2
15 producciones | 15 producciones | 15 producciones |
15 producciones
La gramatica original tena 8 producciones; la nueva gramatica en FNG tiene un
total de 139 producciones.

Ejercicios de la seccion 4.11


1. Encontrar una gramatica en FNG equivalente a la siguiente GIC:

S CA | AC | a
A BA | AB | b
B AA | a | b
C AC | CC | a
2. Encontrar una gramatica en FNG equivalente a la siguiente GIC:

S BB | BC | b
A AC | CA | a
B BB | a
C BC | CA | a
Captulo 2 Lenguajes LIC y gramaticas GIC 43
3. Encontrar una gramatica en FNG equivalente a la siguiente GIC:

S SC | AA | a
A CA | AB | a
B AC | b
C CA | AS | b
Nota: hay que eliminar primero la recursividad de la variable S.
4.12. Lema de bombeo para LIC
Una de las consecuencias mas importantes de la Forma Normal de Chomsky es el lema
de bombeo para lenguajes independientes del contexto, el cual es util, entre muchas
aplicaciones, para demostrar que ciertos lenguajes no son LIC.
Nos referiremos a gramaticas en FNC con variable inicial no recursiva. Puesto que las
producciones son unitarias (A a) o binarias (A BC), en cada nodo el arbol de una
derivacion se ramica en dos nodos, a lo sumo. Tales arboles se denominan binarios.
Si la produccion S esta presente, su unico proposito es generar la cadena .
4.12.1 Teorema. Sea G = (V, , S, P) una gramatica en FNC y w

. Si la longitud
de la trayectoria mas larga en un arbol de derivacion de S

= w tiene k (o menos)
nodos, entonces |w| 2
k2
. Aqu k 2.
Demostracion: La siguiente tabla muestra las relaciones obtenidas entre k = n umero
de nodos de la trayectoria mas larga de S

= w y la longitud de w, en los casos k = 2,
k = 3, k = 4 y k = 5. En la tabla se muestran los casos extremos, es decir, los arboles
con el mayor n umero posible de nodos. Se observa que |w| 2
k2
. Una demostracion
rigurosa del caso general se hace por induccion sobre k.
44 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.12.2 Corolario. Sea G = (V, , S, P) una gramatica en FNC y w

.
(1) Si la longitud de la trayectoria mas larga en un arbol de derivacion de S

= w
tiene k + 2 (o menos) nodos, entonces |w| 2
k
. Aqu k 0.
(2) Si |w| > 2
k
(con k 0) entonces la longitud de la trayectoria mas larga en un
arbol de derivacion de S

= w tiene mas de k + 2 nodos.
Demostracion:
(1) Se sigue inmediatamente del Teorema 4.12.1.
(2) Es la armacion contra-recproca de la parte (1).
Captulo 2 Lenguajes LIC y gramaticas GIC 45
4.12.3. Lema de bombeo para LIC. Dado un LIC L, existe una constante n (lla-
mada constante de bombeo de L) tal que toda z L con |z| > n se puede descomponer
en la forma z = uvwxy donde:
(1) |vwx| n.
(2) uv
i
wx
i
y L para todo i 0.
(3) v = o x = .
Demostracion: Sea G = (V, , S, P) una gramatica en FNC, con variable inicial no
recursiva, tal que L(G) = L. Tal gramatica existe por el Teorema 4.10.1 y el Teorema
4.10.2. Sea k = |V | = n umero de variables de G y n = 2
k
. Sea z L con |z| >
n = 2
k
. Por la parte (2) del Corolario 4.12.2, la trayectoria mas larga en el arbol de
una derivacion S

= z tiene mas de k + 2 nodos. Consideremos los ultimos k + 2
nodos de tal trayectoria (siguiendo el orden que va desde la raz S hasta las hojas del
arbol). El ultimo nodo de esa trayectoria es un terminal a y los restantes k + 1
nodos son variables. Como hay solo k variables en la gramatica, entonces hay por lo
menos una variable A = S 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.
La siguiente graca ilustra la situacion:
46 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Puesto que la trayectoria mas larga en el arbol de derivacion de A

= vAx

= vwx
tiene k + 2 nodos o menos, por la parte (1) del Corolario Corolario 4.12.2, podemos
concluir que |vwx| 2
k
= n. Ademas:
S

= uAy

= uvAxy

= uv
i
Ax
i
y

= uv
i
wx
i
y, para todo i 0.
Observese que el caso i = 0 corresponde a la derivacion S

= uAy

= uwy.
Finalmente, la derivacion A

= vAx se puede escribir como
A BC

= vAx
utilizando una produccion de la forma A BC como primer paso. Se deduce que
u y x no pueden ser ambas porque se tendra BC

= A, lo cual es imposible en
una gramatica en FNC (recuerdese que la unica produccion en la gramatica es,
posiblemente, S ; pero S no aparece en el cuerpo de ninguna produccion de G ya
que S no es recursiva). Se deduce entonces que v = o x = . Esto demuestra las
propiedades (1), (2) y (3) del lema de bombeo.

Ejemplo
Demostrar que el lenguaje L = {a
i
b
i
c
i
: i 0} sobre = {a, b, c} no es
un LIC.
Soluci on: Argumento por contradiccion. Si L fuera LIC, por el lema de bombeo, existira
una constante de bombeo n. Sea z = a
n
b
n
c
n
; se tiene que z L y |z| > n. Por lo tanto,
z se puede descomponer como z = a
n
b
n
c
n
= uvwxy con las propiedades (1), (2) y (3)
del lema de bombeo. Puesto que |vwx| n, en la cadena vwx no pueden aparecer
los tres terminales a, b y c simultaneamente (para que aparezcan los tres terminales
simultaneamente, una subcadena de a
n
b
n
c
n
debe tener longitud n +2). Como v =
o x = , se distinguen dos casos:
Caso 1. Alguna de las cadenas v o x contiene dos tipos de terminales. Entonces
en uv
2
wx
2
y aparecen algunas bes seguidas de aes o algunas ces seguidas de bes.
En cualquier caso, uv
2
wx
2
y / L.
Caso 2. Las cadenas v y x contienen un solo tipo de terminal cada una (o solo
aes o solo bes o solo ces). Como en vwx no aparecen los tres terminales a, b y c
simultaneamente, en la cadena bombeada uv
2
wx
2
y se altera el n umero de dos de
los terminales a, b, c, a lo sumo, pero no de los tres. Por lo tanto, uv
2
wx
2
y / L.
Pero el lema de bombeo arma que uv
2
wx
2
y L. Esta contradiccion muestra que L
no es un LIC.

Ejemplo
Demostrar que el lenguaje L = {a
i
: i es primo} sobre = {a} no es un
LIC.
Soluci on: Argumento por contradiccion. Si L fuera LIC, por el lema de bombeo, existira
una constante de bombeo n. Sea z = a
m
con m primo m > n y m > 2 (m existe porque
Captulo 2 Lenguajes LIC y gramaticas GIC 47
el conjunto de los n umeros primos es innito). Entonces z L y |z| > n. Por lo tanto,
z se puede descomponer como z = a
m
= uvwxy con las propiedades (1), (2) y (3) del
lema de bombeo.
Sea |u| + |w| + |y| = k; entonces |v| + |x| = m k 1. Por el lema de bombeo,
uv
i
wx
i
y L para todo i 0; es decir, |uv
i
wx
i
y| es primo para todo i 0. Pero
|uv
i
wx
i
y| = k +|v
i
| +|x
i
| = k +i|v| +i|x| = k +i(|v| +|x|) = k +i(mk).
(i) Si k = 0, tomando i = m se obtiene que k +i(mk) = 0 +i(m0) = im = mm
que no es primo, pues m > 2.
(ii) Si k = 1, tomando i = 0 se obtiene que k+i(mk) = 1+i(m1) = 1+0(m1) =
1 que no es un n umero primo.
(iii) Si k > 1, tomando i = k se obtiene que
|uv
k
wx
k
y| = k +k(mk) = k(1 +mk),
el cual no es un n umero primo pues k > 1 y como mk 1, entonces 1+mk
2.
Por (i), (ii) y (iii) se puede escoger i de tal manera que |uv
i
wx
i
y| no sea un n umero
primo, lo cual contradice que uv
i
wx
i
y L para todo i 0. Esta contradiccion muestra
que L no es un LIC.

Ejercicios de la seccion 4.12


Utilizar el lema de bombeo para demostrar que los siguientes lenguajes no son LIC:
1. L = {a
i
b
i
c
j
: j i}, sobre = {a, b, c}.
2. L = {a
i
b
j
c
k
: 1 i j k}, sobre = {a, b, c}.
3. L = {a
i
b
2i
a
i
: i 1}, sobre = {a, b}.
4. L = {a
i
b
i
c
i
d
i
: i 0}, sobre = {a, b, c, d}.
5. L = {a
i
b
j
c
i
d
j
: i, j 0}, sobre = {a, b, c, d}.
6. L = {ww : w {a, b}

}.
7. L = {a
i
: i es un cuadrado perfecto}, sobre = {a}.
48 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.13. Propiedades de clausura de los LIC
En la seccion 3.2 se vio que los lenguajes regulares son cerrados bajo la concatenacion,
la estrella de Kleene y todas las operaciones booleanas. Los LIC poseen propiedades
de clausura mucho mas restringidas: son cerrados para las operaciones de union, con-
catenacion y estrella de Kleene Teorema 4.13.1 pero, en general, no son cerrados para
interseccion, complementos ni diferencias (Teorema 4.13.2).
4.13.1 Teorema. La coleccion de los lenguajes independientes del contexto es cerrada
para las operaciones de union, concatenacion y estrella de Kleene. Es decir, dadas GIC
G
1
= (V
1
, , S
1
, P
1
) y G = (V
2
, , S
2
, P
2
) tales que L(G
1
) = L
1
y L(G
1
) = L
2
, se
pueden construir GIC que generen los lenguajes L
1
L
2
, L
1
L
2
y L

1
, respectivamente.
Demostracion: Para construir una GIC G que genere L
1
L
2
introducimos una
variable nueva S, la variable inicial de G, junto con las producciones S S
1
y S S
2
.
Las producciones de G
1
y G
2
se mantienen. Concretamente,
G = (V
1
V
2
{S}, , S, P
1
P
2
{S S
1
, S S
2
})
Esquematicamente, G tiene el siguiente aspecto:
S S
1
| S
2
S
1

.
.
.
.
.
.

producciones de G
1
S
2

.
.
.
.
.
.

producciones de G
2
Claramente, L(G) = L
1
L
2
.
Una GIC G que genere L
1
L
2
se construye similarmente, a nadiendo la produccion
S S
1
S
2
. Es decir,
G = (V
1
V
2
{S}, , S, P
1
P
2
{S S
1
S
2
})
Esquematicamente, G es la gramatica:
S S
1
S
2
S
1

.
.
.
.
.
.

producciones de G
1
S
2

.
.
.
.
.
.

producciones de G
2
Captulo 2 Lenguajes LIC y gramaticas GIC 49
Claramente, L(G) = L
1
L
2
.
Para generar L

1
basta denir G como
G = (V
1
, , S
1
, P
1
{S
1
S
1
S
1
, S
1
})
Esquematicamente, G es la gramatica:
S
1
S
1
S
1
| |
.
.
.
.
.
.

donde los puntos suspensivos representan las producciones originales de G


1
. De esta
forma, L(G) = L

1
.

Ejemplo
Utilizar las construcciones del Teorema 4.13.1 para encontrar una GIC que
genere el lenguaje L
1
L

2
donde L
1
= (ab ba)

y L
2
= {a
i
b
i
: i 0}.
Soluci on: El lenguaje L
1
se puede generar con la gramatica
S
1
S
1
S
1
| ab | ba |
y el lenguaje L

2
se puede generar con
S
2
S
2
S
2
| aS
2
b | .
Finalmente, el lenguaje L
1
L

2
se puede generar con

S
3
S
1
S
2
S
1
S
1
S
1
| ab | ba |
S
2
S
2
S
2
| aS
2
b | .
4.13.2 Teorema. La coleccion de los lenguajes independientes del contexto no es cerra-
da (en general) para las siguientes operaciones:
(1) Interseccion.
(2) Complemento.
(3) Diferencia.
Demostracion:
(1) La interseccion de dos LIC puede ser un lenguaje que no es LIC. Considerense,
como ejemplo, los lenguajes
L
1
= {a
i
b
i
c
j
: i, j 1},
L
2
= {a
i
b
j
c
j
: i, j 1}.
50 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Tanto L
1
como L
2
son LIC porque son generados por las gramaticas G
1
y G
2
,
respectivamente:
G
1
:

S AB
A aAb | ab
B cC | c
G
2
:

S AB
A aA | a
B bBc | bc
Pero L
1
L
2
= {a
i
b
i
c
i
: i 1} no es un LIC, seg un se mostro, usando el lema de
bombeo, en la seccion 4.12.
(2) Razonamos por contradiccion: si el complemento de todo LIC fuera un LIC se
podra concluir que la interseccion de dos LIC L
1
y L
2
sera un LIC ya que L
1
L
2
=
L
1
L
2
. Esto estara en contradiccion con la parte (1) del presente teorema.
(3) Razonamos por contradiccion: si la diferencia de dos LIC cualesquiera fuera un
LIC se podra concluir que el complemento de un LIC L sera tambien un LIC
ya que L =

L. Esto estara en contradiccion con la parte (2) del presente


teorema.
El siguiente teorema arma que los LIC tambien son cerrados bajo homomorsmos.
4.13.3 Teorema. Sea h :

un homomorsmo. Si L es un LIC sobre ,


entonces h(L) es un LIC sobre .
Demostracion: La demostracion consiste en transformar una gramatica G que genere
el lenguaje L en una gramatica G

que genere h(L). Para ello basta mantener las mismas


variables de G y denir las producciones de G

, a partir de las de G, cambiando cada


terminal a por h(a). Es facil ver que una derivacion S
+
= w en G, con w

, se
puede transformar en una derivacion S
+
= h(w) en G

; esto muestra h(L) L(G

).
Para establecer la otra contenencia, es decir, L(G

) h(L), hay que demostrar que


si S
+
=
G
z, con z

, entonces z es de la forma z = h(w) para alg un w L.


Esto puede hacerse considerando el arbol de la derivacion S
+
=
G
z. Dicho arbol se
puede transformar en un arbol de una derivacion en G, modicando adecuadamente
las hojas: las hojas del nuevo arbol forman una cadena w

y las hojas del arbol


inicial forman la cadena h(w).

Ejemplo
Utilizar homomorsmos para concluir que el lenguaje L = {0
i
1
i
2
i
3
i
: i
0}, sobre el alfabeto {0, 1, 2, 3} no es LIC.
Soluci on: La idea es convertir L en el lenguaje {a
i
b
i
c
i
: i 0}, que no es LIC, seg un
se mostro en el primer ejemplo de la seccion 4.12. Razonamos de la siguiente manera: si
L fuera un LIC, lo sera tambien h(L), donde h es el homomorsmo h : {0, 1, 2, 3}


{a, b, c}

denido por h(0) = a, h(1) = b, h(2) = c y h(3) = . Pero


h(L) = {h(0)
i
h(1)
i
h(2)
i
h(3)
i
: i 0} = {a
i
b
i
c
i
: i 0}.
Captulo 2 Lenguajes LIC y gramaticas GIC 51
Por consiguiente, L no es un LIC.

Ejercicios de la seccion 4.13


1. Utilizar las construcciones del Teorema 4.13.1 para encontrar GIC que generen
los siguientes lenguajes:
(i) a
+
(a bab)

(b

b).
(ii) (L
1
L
2
)L

3
, donde L
1
= ab

a, L
2
= a b
+
y L
3
= aa bb aba.
(iii) L
1
L
2
L

3
, donde L
1
= ab

a, L
2
= b
+
y L
3
= {a
i
ba
i
: i 0}.
2. (i) Mostrar que los dos lenguajes siguientes, sobre = {a, b, c, d}, son LIC:
L
1
= {a
i
b
i
c
j
d
j
: i, j 1},
L
2
= {a
i
b
j
c
j
d
k
: i, j, k 1}.
(ii) Demostrar que L
1
L
2
no es un LIC.
3. Utilizar homomorsmos para concluir que los siguientes lenguajes sobre el alfa-
beto {0, 1} no son LIC:
(i) L = {u : |u| es un n umero primo}.
(ii) L = {u : |u| es un cuadrado perfecto}.
4. Demostrar que los LIC son cerrados para la operacion de reexion. Concretamen-
te, demostrar que si L es un LIC, tambien lo es el lenguaje L
R
= {w
R
: w L}.
4.14. Algoritmos de decision para GIC
En esta seccion consideraremos problemas de decision para GIC, similares a los pro-
blemas para automatas presentados en la seccion 3.6. Dada una propiedad P, referente
a gramaticas independientes del contexto, un problema de decision para P consiste en
buscar un algoritmo, aplicable a una GIC arbitraria G, que responda SI o NO a la
pregunta: satisface G la propiedad P? Los algoritmos vistos en el presente captu-
lo (para encontrar las variables terminables, las alcanzables, las anulables, etc) son
frecuentemente utiles en el dise no de algoritmos de decision mas complejos.
Problema 1 (Problema de la vacuidad). Dada una gramatica G = (V, , S, P),
es L(G) = ?
Algoritmo de decision: ejecutar el algoritmo para determinar el conjunto TERM de
variables terminables. L(G) = si y solo si S TERM.
52 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Problema 2 (Problema de la pertenencia). Dada una gramatica G = (V, , S, P)
y una cadena w

, se tiene w L(G)?
Para resolver este problema primero convertimos G a la forma FNC, con variable inicial
no recursiva, siguiendo el procedimiento de la seccion 4.10.
A partir de una GIC G en FNC podemos dise nar un algoritmo bastante ineciente
para decidir si w L(G): se encuentran todas las posibles derivaciones a izquierda (o los
arboles de derivacion) que generen cadenas de longitud n = |w|. Mas especcamente,
las cadenas de longitud 1 se pueden derivar unicamente con producciones de la forma
S a. Las cadenas de longitud 2 solo tienen arboles de derivacion de la forma:
en los que aparecen exactamente 3 variables. Para derivar cadenas de longitud 3 solo
se puede proceder de dos formas:
S A
1
A
2
B
1
B
1
A
2
3
= a
1
a
2
a
3
,
o
S A
1
A
2
a
1
A
2
a
1
B
1
B
2
2
= a
1
a
2
a
3
.
Los arboles de estas derivaciones son:
Cada uno de estos arboles tiene exactamente 5 nodos etiquetados con variables. La
situaci on general es la siguiente: un arbol de derivacion de una cadena de longitud n
tiene exactamente 2n 1 nodos etiquetados con variables. Puesto que la raz del arbol
es S y S no es recursiva, en un arbol de derivacion de una cadena de longitud n hay
Captulo 2 Lenguajes LIC y gramaticas GIC 53
exactamente 2n2 nodos interiores etiquetados con variables. La demostracion general
puede hacerse por induccion sobre n y la dejamos como ejercicio para el lector.
Por consiguiente, para determinar si una cadena dada de longitud n es o no genera-
da por G, consideramos todos los posibles arboles de derivacion con 2n 2 variables
interiores. Este algoritmo es ineciente porque si G tiene k variables, hay que chequear
no menos de k
2n2
arboles (esto sin contar las posibilidades para las hojas). Por consi-
guiente, el procedimiento tiene complejidad exponencial con respecto al tama no de la
entrada.
Para resolver el problema de la pertenencia hay un algoritmo muy eciente (su com-
plejidad es polinomial) en el que se usa la llamada programacion dinamica o tabulacion
dinamica, tecnica para llenar tablas progresivamente, re-utilizando informacion previa-
mente obtenida. El algoritmo que presentaremos se denomina algoritmo CYK (nombre
que corresponde a las iniciales de los investigadores Cocke, Younger y Kasami). El al-
goritmo (exhibido en la pagina siguiente) tiene como entrada una GIC G en FNC y
una cadena de n terminales w = a
1
a
2
a
n
; se aplica llenando una tabla de n las (una
por cada terminal de la entrada w) y n columnas. X
ij
es el conjunto de variables de
las que se puede derivar la subcadena de w cuyo primer smbolo esta en la posicion i
y cuya longitud es j. O sea,
X
ij
= conjunto de variables A tales que A
+
= a
i
a
i+1
a
i+j1
.
Al determinar los conjuntos X
ij
se obtienen las posibles maneras de derivar subcadenas
de w que permitan construir una derivacion de la cadena completa w. La tabla se llena
por columnas, de arriba hacia abajo; la primera columna (j = 1) corresponde a las
subcadenas de longitud 1, la segunda columna (j = 2) corresponde a las subcadenas
de longitud 2, y as sucesivamente. La ultima columna (j = n) corresponde a la unica
subcadena de longitud n que tiene w, que es la propia cadena w. Se tendra que w L(G)
si y solo si S X
1n
.

Ejemplo Vamos a aplicar el algoritmo CYK a la gramatica:


G :

S BA | AC
A CC | b
B AB | a
C BA | a
y a la cadena w = bbab. Se trata de determinar si w L(G) o no. La tabla obtenida al
hallar los X
ij
, 1 i, j 4, es la siguiente:
54 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Algoritmo CYK
Entrada:
Gramatica G en FNC y cadena de n terminales w = a
1
a
2
a
n
.
Inicializar:
j = 1. Para cada i, 1 i n,
X
ij
= X
i1
:= conjunto de variables A tales que A a
i
es una produccion de G.
Repetir:
j := j + 1. Para cada i, 1 i n j + 1,
X
ij
:= conjunto de variables A tales que A BC es
una produccion de G, con B X
ik
y C X
i+k,jk
,
considerando todos los k tales que 1 k < j 1.
Hasta: j = n.
Salida: w L(G) si y solo si S X
1n
.
j = 1 j = 2 j = 3 j = 4
b i = 1 {A} {B} {S, C}
b i = 2 {A} {B, S} {S, C}
a i = 3 {B, C} {S, C}
b i = 1 {A}
A continuacion se indica de manera detallada como se obtuvo la tabla anterior, columna
por columna:
j = 1. Se obtiene directamente de las producciones de G.
j = 2. Para X
12
se buscan cuerpos de producciones en X
11
X
21
=
{A}{A} = {A}. As que X
12
= { }.
Para X
22
se buscan cuerpos de producciones en X
21
X
31
=
{A}{B, C} = {AB, AC}. As que X
22
= {B, S}.
Para X
23
se buscan cuerpos de producciones en X
31
X
41
=
{B, C}{A} = {BA, CA}. As que X
23
= {S, C}.
Captulo 2 Lenguajes LIC y gramaticas GIC 55
j = 3. Para X
13
se buscan cuerpos de producciones en X
11
X
22

X
12
X
31
= {A}{B, S} { } = {AB, AS}. As que X
13
=
{B}.
Para X
23
se buscan cuerpos de producciones en X
21
X
32

X
22
X
41
= {A}{S, C} {B, S}{A} = {AS, AC}
{BA, SA}. As que X
23
= {S, C}.
j = 4. Para X
14
se buscan cuerpos de producciones en X
11
X
23

X
12
X
32
X
13
X
41
= {A}{S, C} { } {B}{A} =
{AS, AC} {BA}. As que X
14
= {S, C}.
Puesto que la variable S pertenece al conjunto X
14
, se concluye que la cadena w = bbab
es generada por G.
Consideremos ahora la entrada w = baaba, de longitud 5. Al hallar los X
ij
, 1
i, j 5, se obtiene la tabla siguiente. Como S X
15
, se concluye que w L(G).
j = 1 j = 2 j = 3 j = 4 j = 5
b i = 1 {A} {B, S} {S, B, C}
a i = 2 {B, C} {A} {A} {S, B, C}
a i = 3 {B, C} {S, C} {A}
b i = 4 {A} {B, S}
a i = 5 {B, C}
Al procesar la entrada w = aaba se obtiene la tabla siguiente. Como S no pertenece al
conjunto X
14
, se deduce que w no es generada por G.
j = 1 j = 2 j = 3 j = 4
a i = 1 {B, C} {A} {B}
a i = 2 {B, C}
b i = 3 {B}
a i = 4 {B, C}
Problema 3 (Problema de la innitud). Dada una gramatica G = (V, , S, P),
es L(G) innito?
El lema de bombeo sirve para establecer un criterio que permite resolver este pro-
blema (de manera analoga a lo que sucede en el caso de los lenguajes regulares). El
criterio aparece en el siguiente teorema.
56 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.14.1 Teorema. Sea G = (V, , S, P) una gramatica en FNC, con variable inicial no
recursiva, tal que L(G) = L, y sea k = |V | = n umero de variables de G. El lenguaje L
es innito si y solo si contiene una cadena z tal que 2
k
< |z| 2
k+1
.
Demostracion: Si z L y 2
k
< |z| 2
k+1
, entonces por la demostracion del lema de
bombeo, z se puede descomponer como z = uvwxy, donde |vwx| 2
k
, v = . L posee
innitas cadenas: uv
i
wx
i
y para todo i 0.
Recprocamente, si L es innito, existe z L con |z| 2
k
. Por la demostracion del
lema de bombeo, w = uvwxy donde |vwx| 2
k
; ademas, v = o x = . Si |z| 2
k+1
,
la demostracion termina. Si |z| > 2
k+1
= 2
k
+ 2
k
, puesto que |z| = |uy| + |vwx|, se
tendra
|uwy| |uy| = |z| |vwx| |z| 2
k
> 2
k
.
De nuevo, si |uwy| < 2
k+1
, la demostracion termina; en caso contrario, se prosigue de
esta forma hasta encontrar una cadena en L cuya longitud satisfaga 2
k
< 2
k+1
.
Utilizando el Teorema 4.14.1 podemos ahora presentar un algoritmo de decision para
el problema de la innitud:
1. Convertir la gramatica G dada a una gramatica equivalente G

en Forma Normal
de Chomsky.
2. Aplicar el algoritmo CYK a G

, con cada una de las cadenas |z| cuya longitud


satisfaga 2
k
< 2
k+1
, siendo k el n umero de variables de G

. L es innito si y
solo si alguna de las cadenas examinadas esta en L(G

).
Observese que este algoritmo tiene de complejidad exponencial ya que el n umero de
cadenas z tales que 2
k
< |z| 2
k+1
es m
2
k
, donde m es el n umero de terminales en la
gramatica dada.
Hay muchos problemas referentes a gramaticas que son indecidibles; para
estos problemas no existen algoritmos de decision. Entre ellos menciona-
mos:
1. Dada una gramatica G, es G ambigua?
2. Dada una gramatica G, genera G todas las cadenas de terminales?,
es decir, L(G) =

?
3. Dadas dos gramaticas G
1
y G
2
, generan G
1
y G
2
el mismo lengua-
je?, es decir, L(G
1
) = L(G
2
)?
Captulo 2 Lenguajes LIC y gramaticas GIC 57

Ejercicios de la seccion 4.14


1. Sea G = (V, , S, P) una gramatica dada. Encontrar algoritmos para los siguien-
tes problemas de decision:
(i) Hay en L(G) alguna cadena de longitud 1250?
(ii) Hay en L(G) alguna cadena de longitud mayor que 1250?
(iii) Hay en L(G) por lo menos 1250 cadenas?
2. Encontrar un algoritmo para el siguiente problema de decision: dada una gramati-
ca G = (V, , S, P) y una variable A V , es A recursiva?, es decir, existe una
derivacion de la forma A
+
= uAv, con u, v (V )

?
3. Encontrar un algoritmo para el siguiente problema de decision: dado un lenguaje
nito L y una GIC G, se tiene L L(G)?
4. Sea G la gramatica
G :

S BA | AB
A CA | a
B BB | b
C BA | c
Ejecutar el algoritmo CYK para determinar si las siguientes cadenas w son o no
generadas por G:
(i) w = bca. (iii) w = cabb.
(ii) w = acbc. (iv) w = bbbaa.
Captulo 5
Automatas con Pila
En el presente captulo presentamos el modelo de automata requerido para aceptar los
lenguajes independientes del contexto: el automata con pila no-determinista. Existe
tambien la version determinista pero, a diferencia de lo que sucede con los modelos
AFD y AFN, los modelos de automata con pila determinista y no-determinista no
resultan ser computacionalmente equivalentes.
5.1. Automatas con Pila Deterministas (AFPD)
Un Automata Finito con Pila Determinista (AFPD) es una 7-upla,
M = (Q, q
0
, F, , , s
0
, ), con los siguientes componentes:
1. Q es el conjunto (nito) de estados.
2. q
0
Q es el estado inicial.
3. F es el conjunto de estados nales o de aceptacion, = F Q.
4. es el alfabeto de cinta.
5. es el alfabeto de pila.
6. s
0
es el smbolo inicial de pila.
7. es la funcion de transicion del automata:
: Q( ) (Q

).
Como en los modelos ya considerados (AFD, AFN y AFN-), un AFPD procesa
cadenas sobre una cinta de entrada semi-innita, pero hay una cinta adicional, llamada
pila, que es utilizada por el automata como lugar de almacenamiento. En un momento
1
2 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
determinado, la unidad de control del automata escanea un smbolo a sobre la cinta
de entrada y el smbolo s en el tope o cima de la pila, como lo muestra la siguiente
graca:
La transicion
(q, a, s) = (q

, )
representa un paso computacional: la unidad de control pasa al estado q

y se mueve
a la derecha; ademas, borra el smbolo s que esta en el tope de la pila, escribe la cadena
(cadena que pertenece a

) y pasa a escanear el nuevo tope de la pila. La graca


que aparece en la parte superior de la pagina siguiente ilustra un paso computacional.
Recalcamos que en un paso computacional, el automata solo tiene acceso al smbolo
que esta en el tope de la pila; ademas, el contenido de la pila siempre se lee desde arriba
(el tope) hacia abajo. Por estas dos razones la pila se dibuja verticalmente.
Captulo 2 Automatas con Pila 3
Casos especiales de transiciones:
1. (q, a, s) = (q

, s). En este caso, el contenido de la pila no se altera.


2. (q, a, s) = (q

, ). El smbolo s en el tope de la pila se borra y el control nito pa-


sa a escanear el nuevo tope de la pila, que es el smbolo colocado inmediatamente
debajo de s.
3. (q, , s) = (q

, ).

Esta es una transicion o transicion espontanea: el smbolo
sobre la cinta de entrada no se procesa y la unidad de control no se mueve
a la derecha, pero el tope s de la pila es reemplazado por la cadena . Para
garantizar el determinismo, (q, a, s) y (q, , s), con a , no pueden estar
simultaneamente denidos (de lo contrario el automata tendra una opcion no-
determinista). Las transiciones en un AFPD permiten que el automata cambie
el contenido de la pila, sin procesar (o consumir) smbolos sobre la cinta de
entrada.
Conguracion o descripcion instantanea. Es una tripla (q, au, s) que representa
lo siguiente: el automata esta en el estado q, au es la parte no procesada de la cadena
de entrada, y la unidad de control esta escaneando el smbolo a. La cadena s es el
contenido total de la pila; siendo s el smbolo colocado en el tope.
La notacion (q, au, s) para conguraciones instantaneas es muy comoda: para re-
presentar el paso computacional de la gura que aparece arriba escribimos simplemente
(q, au, s) (p, u, ).
Aqu el automata utilizo la transicion (q, a, s) = (p, ).
La notacion
(q, u, )

(p, v, )
signica que el automata pasa de la conguracion instantanea (q, u, ) a la conguracion
instantanea (p, v, ) en cero, uno o mas pasos computacionales.
Conguracion inicial. Para una cadena de entrada w

, la conguracion inicial
es (q
0
, w, s
0
). Al comenzar el procesamiento de toda cadena de entrada, el contenido de
la pila es s
0
, que sirve como marcador de fondo.
Conguracion de aceptacion. La conguracion (p, , ), siendo p un estado nal
o de aceptacion, se llama conguracion de aceptacion. Esto signica que, para ser
aceptada, una cadena de entrada debe ser procesada completamente, con el control
nito en un estado de aceptacion. La cadena que queda en la pila puede ser cualquier
cadena de smbolos en

.
4 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Lenguaje aceptado por un AFPD. El lenguaje aceptado por un AFPD M se dene
como
L(M) := {w

: (q
0
, w, s
0
)

(p, , ), p F}.
O sea, una cadena es aceptada si se puede ir desde la conguracion inicial hasta una
conguracion de aceptacion, en cero, uno o mas pasos.
En el modelo AFPD se permite que la transicion (q, a, s) no este denida, pa-
ra algunos valores q Q, a , s . Esto implica que el computo de algunas
cadenas de entrada puede abortarse sin que se procesen completamente.
No se debe confundir la tripla que aparece en la funcion de transicion (q, a, s)
con la tripla (q, u, ) que representa una conguracion instantanea.
La denicion de la funcion de transicion requiere que haya por lo menos un
smbolo en la pila. No hay computos con pila vaca.
Para los automatas con pila se pueden hacer diagramas de estados, similares
a los ya conocidos, pero resultan de poca utilidad practica ya que el procesa-
miento completo de una cadena de entrada depende del contenido de la pila,
el cual puede cambiar en cada paso computacional.
Los analizadores sintacticos en compiladores se comportan generalmente como
automatas con pila deterministas.
Un AFPD puede simular un AFD simplemente ignorando la pila; de esto se deduce
que los lenguajes regulares son aceptados por automatas AFPD. El siguiente teorema
establece formalmente este resultado.
5.1.1 Teorema. Todo lenguaje regular L es aceptado por alg un AFPD.
Demostracion: Sea M = (Q, q
0
, F, , ) un AFD que acepta a L. El AFPD M

=
(Q, q
0
, F, , , s
0
, ) denido haciendo = {s
0
} y
(q, a, s
0
) = ((q, a), s
0
), para todo a , q Q,
satisface claramente L(M

) = L(M) = L.
Sin usar la pila un AFPD no puede hacer nada mas que un AFD, pero utilizando la
pila como lugar de almacenamiento, un AFPD puede aceptar lenguajes no regulares,
como se muestra en el siguiente ejemplo.
Captulo 2 Automatas con Pila 5

Ejemplo
Dise nar un AFPD que acepte el lenguaje L = {a
i
b
i
: i 1}, sobre el
alfabeto = {a, b}. Recordemos que L no es regular y no puede ser
aceptado por ning un automata normal (sin pila).
Soluci on: La idea es copiar las aes en la pila y borrar una a por cada b que sea leda
sobre la cinta. Una cadena sera aceptada si es procesada completamente y en la pila
solo queda el marcador de fondo s
0
. Concretamente, M = (Q, q
0
, F, , , s
0
, ), donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = (q
0
, As
0
),
(q
0
, a, A) = (q
0
, AA),
(q
0
, b, A) = (q
1
, ),
(q
1
, b, A) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).
Podemos ilustrar el procesamiento de varias cadenas de entrada. Sea, inicialmente,
u = aaabbb.
(q
0
, aaabbb, s
0
) (q
0
, aabbb, As
0
) (q
0
, abbb, AAs
0
) (q
0
, bbb, AAAs
0
)
(q
1
, bb, AAs
0
) (q
1
, b, As
0
) (q
1
, , s
0
) (q
2
, , s
0
).
La ultima es una conguracion de aceptacion; por lo tanto la cadena u = aaabbb es
aceptada.
Para la cadena de entrada v = aabbb, se obtiene el siguiente procesamiento:
(q
0
, aabbb, s
0
) (q
0
, abbb, As
0
) (q
0
, bbb, AAs
0
) (q
1
, bb, As
0
)
(q
1
, b, s
0
) (q
2
, b, s
0
). [computo abortado]
Observese que el automata ha ingresado al estado de aceptacion q
2
pero la cadena de
entrada no es aceptada debido a que no se ha procesado completamente; (q
2
, b, s
0
) no
es una conguracion de aceptacion.
Para la cadena de entrada w = aaabb, se tiene:
(q
0
, aaabb, s
0
) (q
0
, aabb, As
0
) (q
0
, abb, AAs
0
) (q
0
, bb, AAAs
0
)
(q
1
, b, AAs
0
) (q
1
, , As
0
).
6 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
A pesar de que se ha procesado completamente la cadena de entrada w, la conguracion
(q
0
, , As
0
) no es de aceptacion. Por lo tanto, w = aaabb no es aceptada.

Ejemplo
Dise nar un AFPD que acepte el lenguaje de todas las cadenas sobre el
alfabeto = {a, b} (diferentes de ) que tienen igual n umero de aes que
de bes.
Soluci on: La idea es acumular las aes o bes consecutivas en la pila. Si en el tope de
la pila hay una A y el automata lee una b, se borra la A; similarmente, si en el tope
de la pila hay una B y el automata lee una a, se borra la B. La cadena de entrada
sera aceptada si es procesada completamente y en la pila solo queda el marcador de
fondo s
0
. Concretamente, M = (Q, q
0
, F, , , s
0
, ), donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = (q
1
, As
0
),
(q
0
, b, s
0
) = (q
1
, Bs
0
),
(q
1
, a, s
0
) = (q
1
, As
0
),
(q
1
, b, s
0
) = (q
1
, Bs
0
),
(q
1
, a, A) = (q
1
, AA),
(q
1
, b, B) = (q
1
, BB),
(q
1
, a, B) = (q
1
, ),
(q
1
, b, A) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).
A continuacion procesamos algunas cadenas de entrada.
Cadena de entrada: aabababb (aceptada).
(q
0
, aabababb, s
0
) (q
1
, abababb, As
0
) (q
1
, bababb, AAs
0
)
(q
1
, ababb, As
0
) (q
1
, babb, AAs
0
) (q
1
, abb, As
0
)
(q
1
, bb, AAs
0
) (q
1
, b, As
0
) (q
1
, , s
0
) (q
2
, , s
0
).
Cadena de entrada: bbbaba (rechazada).
(q
0
, bbbaba, s
0
) (q
1
, bbaba, Bs
0
) (q
1
, baba, BBs
0
) (q
1
, aba, BBBs
0
)
(q
1
, ba, BBs
0
) (q
1
, a, BBBs
0
) (q
1
, , BBs
0
).
Captulo 2 Automatas con Pila 7
En este ultimo caso, la cadena de entrada bbbaba es procesada completamente pero la
conguracion nal no es de aceptacion.

Ejemplo Dise nar un AFPD que acepte el lenguaje


L =

wcw
R
: w {a, b}

.
sobre = {a, b, c}. Notese que las cadenas w y w
R
solo poseen aes y/o bes.
Soluci on: La idea es acumular los smbolos en la pila hasta que aparezca la c. Luego
comparar los smbolos ledos con los almacenados en la pila, borrando en cada paso el
tope de la pila. La cadena de entrada sera aceptada si es procesada completamente y en
la pila solo queda el marcador de fondo s
0
. Concretamente, M = (Q, q
0
, F, , , s
0
, ),
donde
= {a, b, c},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = (q
0
, As
0
),
(q
0
, b, s
0
) = (q
0
, Bs
0
),
(q
0
, c, s
0
) = (q
2
, s
0
) (para aceptar la cadena c),
(q
0
, a, A) = (q
0
, AA),
(q
0
, a, B) = (q
0
, AB),
(q
0
, b, A) = (q
0
, BA),
(q
0
, b, B) = (q
0
, BB),
(q
0
, c, A) = (q
1
, A),
(q
0
, c, B) = (q
1
, B),
(q
1
, a, A) = (q
1
, ),
(q
1
, b, B) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).

Ejercicios
1. Dise nar AFPD que acepten los siguientes lenguajes sobre = {a, b}:
(i) L = {a
i
b
2i
: i 1}.
(ii) L = {a
2i
b
i
: i 1}.
8 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
(iii) L = {a
i
b
j
: i j 1}.
2. Dise nar AFPD que acepten los siguientes lenguajes sobre = {0, 1}:
(i) L = {0
i
1
j
0
i
: i, j 1}.
(ii) El lenguaje de las cadenas que tienen el doble n umero de ceros que de unos.
5.2. Automatas con pila no-deterministas (AFPN)
Un Automata Finito con Pila No-Determinista (AFPN) consta de los mismos
siete parametros de un AFPD, M = (Q, q
0
, F, , , s
0
, ), pero la funcion de transicion
es de la forma:
: Q( )

f
(Q

).
donde

f
(Q

) es el conjunto de subconjuntos nitos de Q

. Para q Q,
a {} y s , (q, a, s) es de la forma
(q, a, s) = {(p
1
,
1
), (p
2
,
2
), . . . , (p
k
,
k
)}.
El signicado de esta transicion es: al leer el smbolo a sobre la cinta de entrada, la
unidad de control puede pasar (aleatoriamente) a uno de los estados p
i
y se mueve a la
derecha. Sobre la pila hace lo siguiente: borra el smbolo s que esta en el tope y escribe
la cadena
i
(cadena que pertenece a

).
A diferencia de lo que sucede con los AFPD, en el modelo AFPN las transiciones
, (q, , s), no tienen restriccion alguna.
El lenguaje aceptado por un AFPN M se dene como:
L(M) := {w

: existe un computo (q
0
, w, s
0
)

(p, , ), p F,

}.
O sea, una cadena w es aceptada si existe por lo menos un procesamiento de w desde
la conguracion inicial hasta una conguracion de aceptacion.

Ejemplo
Dise nar un AFPN que acepte el lenguaje {a
i
b
i
: i 0}, sobre el alfabeto
= {a, b}.
Soluci on: El lenguaje {a
i
b
i
: i 0} diere del lenguaje {a
i
b
i
: i 1}, utilizado en el
primer ejemplo de la seccion 5.1, por la presencia de la cadena vaca . Para aceptar
la cadena a nadimos una transicion mas al AFDP dise nado en dicho ejemplo, lo que
hace que el automata sea no-determinista. Concretamente, se dene el automata M
como M = (Q, q
0
, F, , , s
0
, ) donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
Captulo 2 Automatas con Pila 9
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, , s
0
) = {(q
2
, s
0
)} (para aceptar ),
(q
0
, a, A) = {(q
0
, AA)},
(q
0
, b, A) = {(q
1
, )},
(q
1
, b, A) = {(q
1
, )},
(q
1
, , s
0
) = {(q
2
, s
0
)}.
En este automata el no-determinismo surge por la presencia simultanea de (q
0
, a, s
0
)
y (q
0
, , s
0
).

Ejemplo
Dise nar un AFPN que acepte el lenguaje de todas las cadenas sobre el
alfabeto = {a, b} que tienen igual n umero de aes que de bes.
Soluci on: Simplicamos el automata del segundo ejemplo de la seccion 5.1; solo se
requieren dos estados. Especcamente, M = (Q, q
0
, F, , , s
0
, ), donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
},
F = {q
1
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, b, s
0
) = {(q
0
, Bs
0
)},
(q
0
, a, A) = {(q
0
, AA)},
(q
0
, b, B) = {(q
0
, BB)},
(q
0
, a, B) = {(q
0
, )},
(q
0
, b, A) = {(q
0
, )},
(q
0
, , s
0
) = {(q
1
, s
0
)}.
El no-determinismo se presenta unicamente por la presencia simultanea de (q
0
, a, s
0
)
y (q
0
, , s
0
).
En contraste con lo que sucede con los modelos AFD y AFN, los modelos de aut oma-
ta con pila determinista (AFPD) y no-determinista (AFPN) no resultan ser compu-
tacionalmente equivalentes: existen lenguajes aceptados por AFPD que no pueden ser
aceptados por ning un AFPD. Un ejemplo concreto es el lenguaje L = {ww
R
: w

}. Como se mostrara a continuacion, se puede construir un automata con pila no-


determinista para aceptar a L, pero no es posible dise nar ning un AFPD que lo haga. La
10 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
demostracion de esta imposibilidad es bastante complicada y no la podemos presentar
en el presente libro.

Ejemplo
Dise nar un AFPN que acepte el lenguaje L = {ww
R
: w

}, donde
= {a, b}. No es difcil ver que L es el lenguaje de los palndromos de
longitud par.
Soluci on: En el ultimo ejemplo de la seccion 5.1 se construyo un AFPD que acepta el
lenguaje {wcw
R
: w {a, b}

}. El lenguaje L del presente ejemplo es similar, excepto


que ya no aparece el separador c entre w y w
R
. El no-determinismo se puede usar
para permitirle al automata la opcion de adivinar cual es la mitad de la cadena
de entrada. Si acierta, procedera a comparar el resto de la cadena de entrada con los
smbolos acumulados en la pila. Si no acierta, el automata continuara acumulando
smbolos en la pila y no habra aceptacion. Si la cadena de entrada tiene la forma
deseada, entre todos los computos posibles estara aquel en el que el automata adivina
correctamente cuando ha llegado a la mitad de la cadena.
M se dene como M = (Q, q
0
, F, , , s
0
, ) donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, b, s
0
) = {(q
0
, Bs
0
)},
(q
0
, , s
0
) = {(q
2
, s
0
)} (para aceptar ),
(q
0
, a, A) = {(q
0
, AA), (q
1
, )},
(q
0
, a, B) = {(q
0
, AB)},
(q
0
, b, A) = {(q
0
, BA)},
(q
0
, b, B) = {(q
0
, BB), (q
1
, )},
(q
1
, a, A) = {(q
1
, )},
(q
1
, b, B) = {(q
1
, )},
(q
1
, , s
0
) = {(q
2
, s
0
)}.
Las dos transiciones
(q
0
, a, A) = {(q
0
, AA), (q
1
, )},
(q
0
, b, B) = {(q
0
, BB), (q
1
, )}
Captulo 2 Automatas con Pila 11
le permiten al automata una opcion no-determinista: o seguir acumulando smbolos en
la pila, en el estado q
0
, o suponer que se ha llegado a la mitad de la cadena de entrada.
En este ultimo caso, la unidad de control pasa al estado q
1
y comienza a borrar los
smbolos ya almacenados en la pila.

Ejercicios
Dise nar APFN que acepten los siguientes lenguajes:
1. L = {a
i
b
j
c
i+j
: i, j 0}, sobre = {a, b, c}.
2. L = {a
2i
b
3i
: i, j 0}, sobre = {a, b}.
3. L = {0
i
1
j
: 0 i j 2i}, sobre = {0, 1}.
4. L = {0
i
1
j
: i, j 0, i = j}, sobre = {0, 1}.
5.3. Aceptacion por pila vaca
En todos los modelos de automatas que hemos considerado en este curso, la aceptacion
de cadenas esta determinada por los estados nales o de aceptacion. Para los aut oma-
tas con pila existe otra nocion de aceptacion: la aceptacion por pila vaca, denida a
continuacion. Cuando se usa esta nocion, los automatas no requieren un conjunto F
de estados nales, solamente los seis restantes componentes: (Q, q
0
, , , s
0
, ).
5.3.1 Denicion. Dado un automata con pila M = (Q, q
0
, , , s
0
, ), ya sea AFPD
o AFPN, el lenguaje aceptado por M por pila vaca se dene como
N(M) := {w

: existe un computo (q
0
, w, s
0
)

(p, , )}.
O sea, una cadena es aceptada por pila vaca si se puede ir, en cero, uno o mas pasos,
desde la conguracion inicial hasta una conguracion en la que la pila este completa-
mente desocupada
1
. Notese que, para ser aceptada, la cadena de entrada w debe ser
procesada completamente.
Para AFPN las nociones de aceptacion por pila vaca y por estados nales resul-
tan ser equivalentes, como se establece en los dos siguientes teoremas. Es importante
anotar que para automatas deterministas AFPD los dos tipos de aceptacion no son
equivalentes.
5.3.2 Teorema. Si L = L(M) para alg un automata con pila AFPN M, entonces
L = N(M

) para alg un AFPN M

. Es decir, M

acepta por pila vaca lo que M acepta


por estado nal.
1
La N en la notacion N(M) proviene de la expresion pila nula, sinonimo de pila vaca.
12 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Demostracion: Sea M = (Q, q
0
, F, , , s
0
, ). M

se dise na modicando M de tal ma-


nera que vace su pila cuando M haya aceptado una cadena de entrada. Concretamente,
se dene M

como
M

= (Q {p
0
, p}, p
0
, , {r
0
}, r
0
,

)
donde p
0
(estado inicial) y p son estados nuevos, y r
0
es el nuevo smbolo inicial de pila.
La funcion de transicion

se dene as:
1.

(p
0
, , r
0
) = {(q
0
, s
0
r
0
)}. Transicion mediante la cual el nuevo smbolo inicial
de pila se coloca en el fondo. Esto impedira que una cadena sea accidentalmente
aceptada si el automata original M vaca la pila.
2. (q, a, s)

(q, a, s) para todo q Q, a o a = y s . Esto quiere


decir que M

simula a M: todas las transiciones del automata original tambien


se pueden realizar en el nuevo automata.
3. (p, s)

(q, , s) para todo q F, s {r


0
}. Mediante esta transicion , M

pasa al nuevo estado p siempre que q sea un estado de aceptacion.


4.

(p, , s) = {(p, )}. Mediante esta transicion , M

borra todo el contenido de


la pila.
Observese que las transiciones de los numerales 3 y 4 no consumen ning un smbolo
en la cadena de entrada. Ademas, la unica manera de que M

vace completamente
la pila es ingresando al estado p, lo cual puede hacer unicamente desde un estado de
aceptacion de M.
Si w es aceptada por M, o sea si w L(M), M realiza un computo de la forma
(q
0
, w, s
0
)

(q, , )
donde q F y

. Entonces en M

se puede efectuar el siguiente computo:


(p
0
, w, r
0
) (q
0
, w, s
0
r
0
)

(q, , r
0
) (p, , r
0
)

(p, , ).
Por lo tanto, w N(M

).
Un razonamiento similar muestra que w N(M

) implica w L(M). En conclusion,


L(M) = N(M

).
5.3.3 Teorema. Si L = N(M) para alg un automata con pila AFPN M, entonces
L = L(M

) para alg un AFPN M

. Es decir, M

acepta por estado nal lo que M


acepta por pila vaca.
Captulo 2 Automatas con Pila 13
Demostracion: Sea M = (Q, q
0
, , , s
0
, ) un AFPN que acepta por pila vaca. M

se
dise na a nadiendo un nuevo estado q
f
a M de tal manera que M

ingrese a tal estado


( unico estado de aceptacion) solamente cuando M haya vaciado su pila. Concretamente,
se dene M

como
M

= (Q {p
0
, p
f
}, p
0
, {p
f
}, , {r
0
}, r
0
,

)
donde p
0
(estado inicial) y p
f
( unico estado de aceptacion) son estados nuevos, y r
0
es
el nuevo smbolo inicial de pila. La funcion de transicion

se dene as:
1.

(p
0
, , r
0
) = {(q
0
, s
0
r
0
)}. Transicion mediante la cual el nuevo smbolo inicial
de pila se coloca en el fondo. Cuando M

encuentre el marcador de fondo r


0
,
sabra que M ha vaciado su pila.
2. (q, a, s)

(q, a, s) para todo q Q, a o a = y s . Esto quiere


decir que M

simula a M: todas las transiciones del automata original tambien


se pueden realizar en el nuevo automata.
3. (p
f
, s)

(q, , r
0
) para todo q Q. Mediante esta transicion , M

pasa al
estado de aceptacion p
f
cuando detecte el marcador de fondo r
0
. O sea, M

acepta cuando M vaca su pila.


Si w es aceptada por M, o sea si w N(M), M realiza un computo de la forma
(q
0
, w, s
0
)

(q, , )
donde q Q. Entonces en M

se puede efectuar el siguiente computo:


(p
0
, w, r
0
) (q
0
, w, s
0
r
0
)

(q, , r
0
) (p
f
, , r
0
).
Por lo tanto, w L(M

).
Un razonamiento similar muestra que w L(M

) implica w N(M). En conclusion,


N(M) = L(M

).

Ejercicios
1. Modicar los automatas de los tres ejemplos de la seccion 5.2 para que acepten
por pila vaca y no por estado nal.
2. Dise nar AFPN que acepten los siguientes lenguajes por pila vaca:
(i) L = {a
i
b
2i
: i 1}, sobre = {a, b}.
(ii) L = {a
2i
b
i
: i 1}, sobre = {a, b}.
14 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
(iii) L = {0
i
1
j
: 0 i j 2i}, sobre = {0, 1}.
(iv) L = {0
i
1
j
: i, j 0, i = j}, sobre = {0, 1}.
3. Completar los detalles faltantes en las demostraciones del Teorema 5.3.2 y el
Teorema 5.3.3. Por que estas demostraciones no son validas para automatas
deterministas?
5.4. Automatas con pila y LIC (Parte I)
Los lenguajes aceptados por los AFPN son exactamente los lenguajes independientes
del contexto.

Este es un resultado analogo al Teorema de Kleene para lenguajes re-
gulares, aunque en el caso de los automatas con pila, los modelos deterministas no
son computacionalmente equivalentes a los no-deterministas. En la presente seccion
consideraremos la primera parte de la correspondencia entre AFPN y LIC.
5.4.1 Teorema. Dada una GIC G, existe un AFPN M tal que L(G) = L(M).
Bosquejo de la demostracion. Para una gramatica G = (, V, S, P) dada, se construye
un AFPN que utiliza la pila para simular la derivacion de cadenas realizada por G. M
requiere solamente tres estados, independientemente del n umero de variables y produc-
ciones de G. Especcamente, el automata M se dene como M = (Q, q
0
, F, , , s
0
, ),
donde Q = {q
0
, q
1
, q
2
}, F = {q
2
} y = V {s
0
}. La funcion de transicion se
dene de la siguiente manera:
1. (q
0
, , s
0
) = {(q
1
, Ss
0
)}. Transicion mediante la cual M coloca el smbolo S
en el tope de la pila al iniciar el procesamiento de una cadena de entrada.
2. Para cada variable A V ,
(q
1
, , A) = {(q
1
, u) : A u es una produccion de la gramatica G}.
Mediante estas transiciones, M utiliza la pila para simular las derivaciones: si el
tope de la pila es A y en la derivacion se usa la produccion A u, el tope de la
pila A es substituido por u.
3. Para cada smbolo terminal a , (q
1
, a, a) = {(q
1
, )}. Mediante estas tran-
siciones, M borra los terminales del tope de la pila al consumirlos sobre la cinta
de entrada.
4. (q
1
, , s
0
) = {(q
2
, s
0
)}. M ingresa al estado de aceptacion q
2
cuando detecta el
marcador de fondo s
0
.
Captulo 2 Automatas con Pila 15
El aut omata M esta dise nado de tal forma que si S

= w es una derivacion a izquierda
en la gramatica G, entonces existe un procesamiento
(q
0
, w, s
0
) (q
0
, w, Ss
0
)

(q
2
, , s
0
)
que simula la derivacion.
Recprocamente, puede demostrarse que si (q
0
, w, s
0
)

(q
2
, , s
0
) entonces S

= w
en la gramatica G.

Ejemplo Sea G la gramatica:


G :

S aAbS | bBa |
A aA | a
B bB | b
Seg un la construccion del Teorema 5.4.1, el automata M esta dado por M = (Q, q
0
, F, , , s
0
, )
donde
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
= {a, b, S, A, B, s
0
}.
La funcion de transicion esta dada por:
(q
0
, , s
0
) = {(q
1
, Ss
0
)},
(q
1
, , S) = {(q
1
, aAbS), (q
1
, bBa), (q
1
, )},
(q
1
, , A) = {(q
1
, aA), (q
1
, a)},
(q
1
, , B) = {(q
1
, bB), (q
1
, b)},
(q
1
, a, a) = {(q
1
, )},
(q
1
, b, b) = {(q
1
, )},
(q
1
, , s
0
) = {(q
2
, s
0
)}.
Podemos ilustrar la correspondencia entre derivaciones en G y procesamientos en M
con la cadena aabbba, la cual tiene la siguiente derivacion a izquierda:
S = aAbS = aabS = aabbBa = aabbba.
El aut omata M simula esta derivacion de la cadena aabbba as:
(q
0
, aabbba, s
0
) (q
1
, aabbba, Ss
0
) (q
1
, aabbba, aAbSs
0
)
(q
1
, abbba, AbSs
0
) (q
1
, abbba, abSs
0
)
(q
1
, bbba, bSs
0
) (q
1
, bba, Ss
0
) (q
1
, bba, bBas
0
)
(q
1
, ba, Bas
0
) (q
1
, ba, bas
0
) (q
1
, a, as
0
)
(q
1
, , s
0
) (q
2
, , s
0
).
16 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro

Ejemplo
La siguiente gramatica genera los palndromos de longitud par, sobre =
{a, b}, es decir, el lenguaje L = {ww
R
: w

}:
S aSa | bSb | .
Siguiendo el procedimiento del Teorema 5.4.1 podemos construir un AFPN que acepta
a L; este automata es diferente del exhibido en el tercer ejemplo de la seccion 5.2.
M = (Q, q
0
, F, , , s
0
, ) donde
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
= {a, b, S, s
0
}.
La funcion de transicion esta dada por:
(q
0
, , s
0
) = {(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
, , s
0
) = {(q
2
, s
0
)}.

Ejercicios
1. Construir un AFPN M que acepte el lenguaje generado por la siguiente gramati-
ca:
G :

S Aba | AB |
A aAS | a
B bBA | .
Encontrar una derivacion a izquierda en G de la cadena w = aaababa y procesar
luego la cadena w con el automata M, simulando la derivacion.
2. Construir un AFPN M que acepte el lenguaje generado por la siguiente gramati-
ca:
G :

S ASA | AaA | aa
A AbA | .
Encontrar una derivacion a izquierda en G de la cadena w = bbaaa y procesar
luego la cadena w con el automata M, simulando la derivacion.
Captulo 2 Automatas con Pila 17
5.5. Automatas con pila y LIC (Parte II)
En la presente seccion consideraremos la segunda parte de la correspondencia entre
AFPN y LIC. Demostraremos que para todo AFPN que acepta por pila vaca existe
una GIC que genera el lenguaje aceptado por el automata. Las gramaticas obtenidas
son, en general, bastante complejas, con un gran n umero de variables y de producciones.
Hay que advertir tambien que el procedimiento puede dar lugar a variables in utiles (no-
terminables o no alcanzables).
5.5.1 Teorema. Dado un AFPN M = (Q, q
0
, , , s
0
, ) que acepta por pila vaca,
existe una GIC G = (, V, S, P) tal que L(G) = N(M).
Demostracion: En la gramatica G las variables (aparte de la variable inicial S) seran
tripletas de la forma [qXp] donde q, p Q y X . Las producciones de G se denen
de la siguiente manera:
1. Si (p, ) (q, a, X), se a nade la produccion [qXp] a.
2. Si (p, ) (q, , X), se a nade la produccion [qXp] .
3. Si (r, Y
1
Y
2
Y
k
) (q, a, X), donde a puede ser un smbolo del alfabeto
o a = y k 1, se a naden todas las producciones de la forma
[qXr
k
] a[rY
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
para todas las secuencias posibles r
1
, r
2
, . . . , r
k1
de estados de Q.
4. Para todo p Q se a nade la produccion S [q
0
s
0
p].
La gramatica G as denida pretende simular con derivaciones a izquierda los computos
de M; el signicado intuitivo de la variable [qXp] es: al extraer X del tope de la pila,
se pasa del estado q al estado p. La produccion
[qXr
k
] a[rY
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
del numeral 3 indica las posibles maneras en las que M puede extraer la cadena
Y
1
Y
2
Y
k
de la pila, una vez se haya sustituido el tope de la pila X por dicha ca-
dena, pasando del estado q al estado r y consumiendo el smbolo a.
Demostraremos primero la inclusion N(M) L(G). Para todo q, p Q, X y
w

, se demostrara la implicacion
(5.1) si (q, w, X)
+
(p, , ) entonces [qXp]
+
= w,
por induccion sobre el n umero de pasos del computo (q, w, X)
+
(p, , ). Cuan-
do hay un solo paso, el computo es de la forma (q, a, X) (p, , ) o de la for-
ma (q, , X) (p, , ). Si (q, a, X) (p, , ), entonces (p, ) (q, a, X); as que
18 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
[qXp] a es una produccion de G, y se obtendra la derivacion [qXp] = a. Si
(q, , X) (p, , ), entonces (p, ) (q, , X); as que [qXp] es una produccion
de G y se obtendra [qXp] = .
Para el razonamiento inductivo, supongase que (q, w, X)
n
(p, , ) donde n > 1.
Considerando el primer paso de este computo de n pasos, podemos escribir:
(5.2) (q, ax, X) (r
0
, x, Y
1
Y
2
Y
k
)

(p, , ),
donde a o a = . Cuando a , w = ax para alguna cadena x

; cuando a = ,
x = w. En el primer paso de 5.2 se ha aplicado la transicion (r
0
, Y
1
Y
2
Y
k
) (q, a, X)
de M. Por la denicion de la gramatica G,
[qXr
k
] a[r
0
Y
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
es una produccion, para todas las secuencias posibles r
1
, r
2
, . . . , r
k1
de estados de Q.
Seg un 5.2, desde la conguracion instantanea (r
0
, x, Y
1
Y
2
Y
k
) el automata llega
hasta la conguracion (p, , ), consumiendo completamente la cadena x y vaciando
la pila. La cadena x se puede escribir entonces como x = w
1
w
2
w
k
, siendo w
i
la
cadena consumida por el automata para extraer el smbolo Y
i
del tope de la pila. En
consecuencia, existe una secuencia de estados r
1
, r
2
,. . . , r
k1
, r
k
= p tales que
(r
0
, x, Y
1
Y
2
Y
k
) = (r
0
, w
1
w
2
w
k
, Y
1
Y
2
Y
k
)
+
(r
1
, w
2
w
k
, Y
2
Y
k
)
+
(r
2
, w
3
w
k
, Y
3
Y
k
)
+
(r
k1
, w
k
, Y
k
)
+
(r
k
, , ).
Para i = 1, 2, . . . , k se tiene as una secuencia de computos parciales
(r
i1
, w
i
, Y
i
)
+
(r
i
, , ),
donde r
k
= p. Por la hipotesis de induccion, [r
i1
Y
i
r
i
]
+
= w
i
para i = 1, 2, . . . , k. Por
consiguiente,
[qXp] = [qXr
k
] = a[r
0
Y
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
+
= aw
1
w
2
w
k
= w.
Esto demuestra la implicacion 5.1. Por lo tanto, si w es aceptada por M, siendo w = ,
se tendra (q
0
, w, s
0
)
+
(p, , ), y usando 5.1 se concluira que S = [q
0
s
0
p]
+
= w. Si
w = es aceptada por M, necesariamente (q
0
, , s
0
) (p, , ) para alg un estado p.
Esto signica que (q
0
, , s
0
) (p, , ), y se tendra S = [q
0
s
0
p] = . Esto demuestra
que N(M) L(G).
Para establecer la contenencia L(G) N(M) se demuestra la implicacion
(5.3) si [qXp]
+
= w, entonces (q, w, X)
+
(p, , ),
Captulo 2 Automatas con Pila 19
por induccion sobre el n umero de pasos en la derivacion [qXp]
+
= w. Este razona-
miento inductivo es similar al usado para probar la implicacion recproca 5.1, y se deja
como ejercicio para el lector interesado. Si en G se puede derivar la cadena w, es decir,
si S

= w, la primera produccion aplicada sera de la forma S [q
0
s
0
p]. De donde,
S = [q
0
s
0
p]
+
= w. Usando 5.3 se concluye (q
0
, w, s
0
)
+
(p, , ), o sea w N(M).

Ejemplo
Vamos a aplicar la construccion del Teorema 5.5.1 para encontrar una
gramatica G que genere el lenguaje de las cadenas sobre el alfabe-
to = {a, b} que tienen igual n umero de aes que de bes, a partir del AFPN
M = (Q, q
0
, F, , , s
0
, ) con los siguientes componentes. = {a, b}, = {s
0
, A, B},
Q = {q
0
, q
1
}, F = {q
1
} y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, b, s
0
) = {(q
0
, Bs
0
)},
(q
0
, a, A) = {(q
0
, AA)},
(q
0
, b, B) = {(q
0
, BB)},
(q
0
, a, B) = {(q
0
, )},
(q
0
, b, A) = {(q
0
, )},
(q
0
, , s
0
) = {(q
1
, )}.
M es una modicacion del automata presentado en el segundo ejemplo de la seccion 5.2
(en ese ejemplo M aceptaba por estado nal; aqu M acepta por pila vaca).
Las variables de G son S y todas las tripletas de la forma [qXp] donde q, p Q y
X . Hay, por lo tanto, 13 variables, a saber:
S, [q
0
s
0
q
0
], [q
0
Aq
0
], [q
0
Bq
0
], [q
0
s
0
q
1
], [q
0
Aq
1
], [q
0
Bq
1
],
[q
1
s
0
q
0
], [q
1
Aq
0
], [q
1
Bq
0
], [q
1
s
0
q
1
], [q
1
Aq
1
], [q
1
Bq
1
].
A continuacion se presentan las producciones de G.
Produccion obtenida de (q
0
, , s
0
) = {(q
1
, )}:
[q
0
s
0
q
1
] .
Produccion obtenida de (q
0
, a, B) = {(q
0
, )}:
[q
0
Bq
0
] a.
Produccion obtenida de (q
0
, b, A) = {(q
0
, )}:
[q
0
Aq
0
] b.
20 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Producciones obtenidas de (q
0
, a, s
0
) = {(q
0
, As
0
)}:
[q
0
s
0
q
0
] a[q
0
Aq
0
][q
0
s
0
q
0
] | a[q
0
Aq
1
][q
1
s
0
q
0
]
[q
0
s
0
q
1
] a[q
0
Aq
0
][q
0
s
0
q
1
] | a[q
0
Aq
1
][q
1
s
0
q
1
].
Producciones obtenidas de (q
0
, b, s
0
) = {(q
0
, Bs
0
)}:
[q
0
s
0
q
0
] b[q
0
Bq
0
][q
0
s
0
q
0
] | b[q
0
Bq
1
][q
1
s
0
q
0
]
[q
0
s
0
q
1
] b[q
0
Bq
0
][q
0
s
0
q
1
] | b[q
0
Bq
1
][q
1
s
0
q
1
].
Producciones obtenidas de (q
0
, a, A) = {(q
0
, AA)}:
[q
0
Aq
0
] a[q
0
Aq
0
][q
0
Aq
0
] | a[q
0
Aq
1
][q
1
Aq
0
]
[q
0
Aq
1
] a[q
0
Aq
0
][q
0
Aq
1
] | a[q
0
Aq
1
][q
1
Aq
1
].
Producciones obtenidas de (q
0
, b, B) = {(q
0
, BB)}:
[q
0
Bq
0
] b[q
0
Bq
0
][q
0
Bq
0
] | b[q
0
Bq
1
][q
1
Bq
0
]
[q
0
Bq
1
] b[q
0
Bq
0
][q
0
Bq
1
] | b[q
0
Bq
1
][q
1
Bq
1
].
Finalmente, las producciones de la variable inicial S son:
S [q
0
s
0
q
0
] | [q
0
s
0
q
1
].
Al examinar las producciones se puede observar que todas las variables de la forma
[q
1
Xq], con X y q Q, son in utiles ya que no tienen producciones. Con la
terminologa ya conocida, dichas variables son no-terminables y, por consiguiente, las
producciones en las que aparecen se pueden eliminar. Otra variable no terminable
es [q
0
s
0
q
0
]. Ademas, las variables [q
0
Aq
1
] y [q
0
Bq
1
] son inalcanzables, as que se pueden
eliminar, junto con todas sus producciones. Realizando estas simplicaciones se obtiene
la siguiente gramatica:
S [q
0
s
0
q
1
]
[q
0
s
0
q
1
] a[q
0
Aq
0
][q
0
s
0
q
1
] | b[q
0
Bq
0
][q
0
s
0
q
1
] |
[q
0
Aq
0
] a[q
0
Aq
0
][q
0
Aq
0
] | b
[q
0
Bq
0
] b[q
0
Bq
0
][q
0
Bq
0
] | a.
Como se indico en la demostracion, en las gramaticas construidas seg un el metodo del
Teorema 5.5.1, las derivaciones a izquierda corresponden a los computos en el automata
Captulo 2 Automatas con Pila 21
dado. Podemos ilustrar este punto, en el presente ejemplo, con la cadena de entrada
w = bbabaa. El siguiente es un computo de aceptacion de w en M:
(q
0
, bbabaa, s
0
) (q
0
, babaa, Bs
0
) (q
0
, abaa, BBs
0
) (q
0
, baa, Bs
0
)
(q
0
, aa, BBs
0
) (q
0
, a, Bs
0
) (q
0
, , s
0
) (q
1
, , ).
La derivacion a izquierda en G que corresponde a este computo es:
S = [q
0
s
0
q
1
] = b[q
0
Bq
0
][q
0
s
0
q
1
] = bb[q
0
Bq
0
][q
0
Bq
0
][q
0
s
0
q
1
]
= bba[q
0
Bq
0
][q
0
s
0
q
1
] = bbab[q
0
Bq
0
][q
0
Bq
0
][q
0
s
0
q
1
]
= bbaba[q
0
Bq
0
][q
0
s
0
q
1
] = bbabaa[q
0
s
0
q
1
] = bbabaa.
Observese que, en cada paso de la derivacion, el contenido actual de la pila se puede
leer examinando las segundas componentes de las tripletas.
Para hacer mas legibles las producciones de la gramatica G obtenida en este ejemplo,
cambiamos los nombres de las variables as: C = [q
0
s
0
q
1
], D = [q
0
Aq
0
] y E = [q
0
Bq
0
].
Con esta nomenclatura, la gramatica se puede escribir como:
G :

S C
C aDC | bEC |
D aDD | b
E bEE | a.
Puesto que la unica produccion de S es S C, las variables S y C se pueden identicar,
dando lugar a la siguiente gramatica simplicada equivalente:

S aDS | bES |
D aDD | b
E bEE | a.

Ejercicios
1. Con respecto al ejemplo de esta seccion, procesar con M la cadena de entrada w =
baabbbaa y luego derivar w en la gramatica G, simulando dicho procesamiento.
2. Modicar el AFPN presentado en el ultimo ejemplo de la seccion 5.2 para que
acepte por pila vaca el lenguaje L = {ww
R
: w {a, b}

}. Aplicar luego la cons-


truccion del Teorema 5.5.1 para encontrar una gramatica cuyo lenguaje generado
sea L.
Captulo 6
Maquinas de Turing
En este captulo se presenta la Maquina de Turing (MT) que es el modelo
de automata con maxima capacidad computacional: la unidad de control
puede desplazarse a izquierda o a derecha y sobre-escribir smbolos en la
cinta de entrada.
6.1. Maquinas de Turing como aceptadoras de
lenguajes
Una maquina de Turing (MT), M = (Q, q
0
, F, , , b, ), consta de siete
componentes:
1. Q es el conjunto (nito) de estados.
2. q
0
Q es el estado inicial.
3. F es el conjunto de estados nales o de aceptacion, = F Q.
4. es el alfabeto de entrada.
5. es el alfabeto de cinta, que incluye a , es decir, .
6. b es el smbolo blanco (el smbolo b no puede hacer parte del
alfabeto de entrada ).
7. es la funcion de transicion de la maquina:
: Q Q {, }
1
2 CAP

ITULO 6. M

AQUINAS DE TURING
es una funcion parcial, es decir, puede no estar denida en algunos
elementos del dominio. La echa denota desplazamiento a izquierda
mientras que denota desplazamiento a la derecha. La transicion
(q, a) = (p, b, D)
signica: estando en el estado q, escaneando el smbolo a, la unidad
de control borra a, escribe b y se mueve en el estado p, ya sea a la
izquierda (si el desplazamiento D es ) o a la derecha (si D es ).
Una maquina de Turing M procesa cadenas de entrada w

colocadas
sobre una cinta innita en ambas direcciones. Para procesar una cadena de
entrada w, la unidad de control de M esta en el estado inicial q
0
escaneando
el primer smbolo de w. Las demas celdas o casillas de la cinta contienen el
smbolo blanco b.
Descripcion o conguracion instantanea. Es una expresion de la forma
a
1
a
2
a
i1
qa
i
a
n
donde los smbolos a
1
, . . . , a
n
pertenecen al alfabeto de cinta y q Q.
Esta expresion representa el estatus actual del computo:
a
1
a
2
a
i1
a
i
a
n
q
Es decir, la descripcion instantanea a
1
a
2
a
i1
qa
i
a
n
indica que la uni-
dad de control de M esta en el estado q escaneando el smbolo a
i
. Se supone
que las casillas en las que no aparecen aes contienen el smbolo blanco, b.
Ejemplos concretos de descripciones instantaneas son:
aabq
2
baaa
q
5
ababba
abbbaabq
0
bba
La conguracion o descripcion instantanea inicial, o simplemente congu-
raci on inicial, es
q
0
w
6.1. M

AQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES 3


siendo w la cadena de entrada, la cual se coloca en cualquier parte de la
cinta de entrada.
Paso computacional. El paso de una descripcion instantanea a otra, por
medio de una transicion denida por , se denomina un paso computacional
y se denota por
u
1
qu
2
v
1
pv
2
.
Aqu u
1
, u
2
, v
1
, v
2

y p, q Q. Un ejemplo concreto es
abbaq
2
ba abbq
1
aca
en la cual la maquina utilizo la transicion (q
2
, b) = (q
1
, c, ).
La notacion
u
1
qu
2

v
1
pv
2
signica que M puede pasar de la descripcion instantanea u
1
qu
2
a la des-
cripcion instantanea v
1
pv
2
en cero, uno o mas pasos computacionales.
Computos especiales. Durante el computo o procesamiento de una ca-
dena de entrada hay dos situaciones especiales que se pueden presentar:
1. El computo termina porque en determinado momento no hay transi-
cion denida.
2. El computo no termina; esto es lo que se denomina un bucle innito.
Esta situacion se representa con la notacion
u
1
qu
2


la cual indica que el computo que se inicia en la descripcion ins-
tantanea u
1
qu
2
no se detiene nunca.
Un detalle para tener en cuenta es que las transiciones con smbolo b,
(q, b) = (p, s, D), no son las mismas transiciones usadas para automa-
tas en captulos anteriores. Una transicion en un automata tiene lugar
independientemente del smbolo ledo y la unidad de control permanece
estacionaria, mientras que una transicion (q, b) = (p, s, D) en una MT re-
quiere que el smbolo blanco b este escrito en la casilla escaneada; ademas,
la unidad de control sobre-escribe el blanco y realiza un desplazamiento D.
Lenguaje aceptado por una MT. Una cadena de entrada w es aceptada
por una MT M si el computo que se inicia en la conguracion inicial q
0
w
4 CAP

ITULO 6. M

AQUINAS DE TURING
termina en una conguracion instantanea w
1
pw
2
, p estado de aceptacion,
en la cual M se detiene completamente. El lenguaje L(M) aceptado por
una MT M se dene entonces como
L(M) := {w

: q
0
w

w
1
pw
2
, p F, w
1
, w
2

, M se detiene
en la congiguracion w
1
pw
2
}.
La nocion de aceptacion para maquinas de Turing es mas exible que para
automatas: una cadena de entrada no tiene que ser leda en su totalidad
para que sea aceptada; solo se requiere que la maquina se detenga comple-
tamente, en un momento determinado, en un estado de aceptacion.
Para simplicar los argumentos sobre maquinas de Turing, en el modelo
estandar se supone que la unidad de control siempre se detiene al ingresar
a en un estado de aceptaci on. Es decir, no se permiten transiciones (q, a)
cuando q F.
Las maquinas de Turing originan las siguientes clases de lenguajes:
1. L es un lenguaje recursivamente enumerable (RE) si existe una MT
M tal que L(M) = L.
2. L es un lenguaje recursivo si existe una MT M tal que L(M) = L y
M se detiene con todas las cadenas de entrada.
Las denominaciones lenguaje recursivamente enumerable y lenguaje re-
cursivo pueden parecer un tanto extra nas; esta terminologa es anterior a
la aparicion de las maquinas de Turing y se ha mantenido vigente hasta el
presente. En el Teorema 6.6.3 se justicara la denominacion recursivamen-
te enumerable (RE) al establecerse que para todo lenguaje RE se puede
construir una MT que enumere secuencialmente sus cadenas.
Obviamente, todo lenguaje recursivo es recursivamente enumerable, pero
la armacion recproca no es (en general) valida, como se demostrara en la
seccion 7.5.
Diagrama de estados o diagrama de ujo de una MT. La funcion de
transicion de una MT se puede presentar como un diagrama de estados
o diagrama de ujo. As, la transicion (q, a) = (p, b, ) se representa por
q p
a|b
6.1. M

AQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES 5


Unidad de control estacionaria. Para simplicar la descripcion del mo-
delo estandar, se ha exigido que la unidad de control se desplace hacia
la izquierda o hacia la derecha en cada transicion. No obstante, se puede
permitir que la unidad de control no se mueva en un determinado paso
computacional, es decir, que no realice ning un desplazamiento. Este tipo
de transicion lo escribimos en la forma:
(q, a) = (p, b, )
donde a, b ; p, q Q y signica que la unidad de control no se
mueve. Tal transicion se puede simular por medio de un movimiento a la
derecha seguido de un retorno a la izquierda. As, para simular la transicion
(q, a) = (p, b, ) utilizamos un estado auxiliar nuevo q

y las transiciones:
(q, a) = (q

, b, ),
(q

, s) = (p, s, ), para todo smbolo s .


La directriz de no-desplazamiento tambien se puede simular con un movi-
miento a la izquierda seguido de un retorno a la derecha. En cualquier
caso, concluimos que las MT en las que hay transiciones estacionarias,
(q, a) = (p, b, ), aparte de las transiciones normales, aceptan los mismos
lenguajes que las MT estandares. Notese que las transiciones estacionarias
se asemejan a las transiciones en automatas, excepto por el hecho de que
las maquinas de Turing tienen la capacidad de sobre-escribir los smbolos
escaneados.

Ejemplo
La siguiente MT acepta el lenguaje de las cadenas con un
n umero par de ceros sobre el alfabeto {0, 1}.
>
q
0
q
1
q
2
0|0
0|0
b|b
1|1
1|1

Ejemplo
En este ejemplo se construye una MT M que acepta el lenguaje
L = {a
i
b
i
c
i
: i 0} y que se detiene al procesar todas las
entradas. Por consiguiente, L es un lenguaje recursivo aunque no es LIC,
6 CAP

ITULO 6. M

AQUINAS DE TURING
como se demostro en la seccion 4.11; es decir, L no puede ser aceptado por
ning un automata con pila.
Sea M la MT con parametros
= {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
},
y cuya funcion de transicion esta representada por el siguiente diagrama:
>
q
0
q
1
q
2
q
3
q
5
q
4
a|X
b|Y c|Z
X|X
b
|
b

b|b
Y |Y
Y |Y
Z|Z
b|b
Z|Z
a|a
Y |Y
a|a
b|b
Y |Y
Z|Z
La idea utilizada para el dise no de esta MT se puede describir as: la uni-
dad de control cambia la primera a por X y se mueve a la derecha hasta
encontrar la primera b, la cual se sobre-escribe por una Y . Luego se mueve
hacia la derecha hasta encontrar la primera c, la cual se cambia por Z. El
control retrocede entonces hacia la izquierda en busca de la primera X que
encuentre en su camino; este retorno se hace en el estado q
3
. La maquina
avanza luego hacia la derecha, hasta la primera a que quede en la cinta, y
todo el proceso anterior se repite. Si la cadena de entrada tiene la forma
requerida, todas las aes seran reemplazadas por Xs, las bes por Y s y las
ces por Zs. Una vez terminada la transformacion, el control se mueve hacia
la derecha, en el estado q
4
, hasta encontrar la primera celda marcada con
el smbolo blanco b. La MT esta dise nada de tal forma que si la cadena
6.1. M

AQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES 7


de entrada no tiene la forma requerida, el procesamiento terminara en un
estado diferente del estado de aceptacion q
5
.
A continuacion procesamos la cadena de entrada w = aabbcc L.
q
0
aabbcc Xq
1
abbcc Xaq
1
bbcc XaY q
2
bcc XaY bq
2
cc XaY bq
3
bZc

q
3
XaY bZc Xq
0
aY bZc XXq
1
Y bZc XXY q
1
bZc
XXY Y q
2
Zc XXY Zq
2
c XXY q
3
ZZ

Xq
3
XY ZZ
XXq
0
Y Y ZZ XXY q
4
Y ZZ

XXY Y ZZq
4
b
XXY Y ZZbq
5
b.
La cadena de entrada w = aaabbcc, que no esta en L, se procesa as:
q
0
aaabbcc Xq
1
aabbcc Xaaq
1
bbcc XaaY q
2
bcc XaaY bq
2
cc
XaaY bq
3
bZc

q
3
XaaY bZc Xq
0
aaY bZc XXaq
1
Y bZc
XXaY q
1
bZc XXaY Y q
2
Zc XXaY Zq
2
c XXaY q
3
ZZ

Xq
3
XaY ZZ XXq
0
aY Y ZZ XXXq
1
Y Y ZZ

XXXY Y q
1
ZZ (computo abortado).
Por otro lado, la cadena abbbcc, que tampoco esta en L, se procesara as:
q
0
abbcc Xq
1
bbcc XY q
2
bcc XY bq
2
cc XY q
3
bZc

q
3
XY bZc
Xq
0
Y bZc XY q
4
bZc (computo abortado).

Ejercicios de la seccion 6.1


Dise nar MT que acepten los siguientes lenguajes sobre el alfabeto dado.
Escribir explcitamente la idea utilizada en el dise no de la maquina y hacer
su diagrama de estados.
1. L = {a
2i
b
i
: i 1}. Alfabeto: = {a, b}.
2. L = {a
i
b
2i
: i 1}. Alfabeto: = {a, b}.
3. L = {a
i
b
j
a
i+j
: i 0, j 1}. Alfabeto: = {a, b}.
4. L = {w

: w tiene el mismo n umero de ceros que de unos}. Al-


fabeto: = {0, 1}.
5. L = {w

: w = w
R
}. Alfabeto: = {0, 1}.
6. L = {ww
R
: w

}. Alfabeto: = {0, 1}.


8 CAP

ITULO 6. M

AQUINAS DE TURING
6.2. Subrutinas o macros
Hay procedimientos intermedios, como copiar o trasladar cadenas, que se
repiten frecuentemente en el dise no de maquinas de Turing. Es util identi-
car algunos de estos procedimientos, llamados subrutinas o macros, para
simplicar el dise no de maquinas mas complejas. Los macros se pueden
considerar como maquinas de Turing con estado inicial pero sin estados de
aceptacion.

Ejemplo
Macro TI, traslacion a la izquierda. Este macro toma una cadena
de entrada y la traslada una casilla hacia la izquierda. Si la
entrada es la cadena a
1
a
2
a
k
, la accion de TI se puede representar en la
forma
Entrada: b a
1
a
k1
a
k
b

Salida: a
1
a
2
a
k
b b
La echa indica que las casillas se naladas sobre la cinta coinciden. Los
smbolos subrayados en las dos cintas representan los smbolos ledos por
la unidad de control al iniciar y al terminar el macro, respectivamente.
La MT que aparece a continuacion sirve para implementar el macro TI
cuando el alfabeto de entrada es {a, b, c}:
>
q
0
q
1
q
a
q
b
q
c
b|b b|b
a|b b|a
c|b b|c
b|b
A continuacion denimos algunos otros macros utiles; se solicita al lector
dise nar MT que los implementen.
6.2. SUBRUTINAS O MACROS 9
Macro TD, traslacion a la derecha. Traslada la cadena de entrada una casilla
a la derecha:
Entrada: ba
1
a
2
a
k
b

Salida: b b a
1
a
k1
a
k
Macro BI, primer blanco a la izquierda. Busca el primer smbolo b a la iz-
quierda de una cadena w que no posee blancos:
Entrada: bwb

Salida: bwb
Macro BD, primer blanco a la derecha. Busca el primer smbolo b a la derecha
de una cadena w que no posee blancos:
Entrada: bwb

Salida: bwb
Macro NBI, primer smbolo no-blanco a la izquierda. Busca el primer smbolo
diferente de b a la izquierda de una cadena de blancos:
Entrada: abb bb

Salida: abb bb
Macro NBD, primer smbolo no-blanco a la derecha. Busca el primer smbolo
diferente de b a la derecha de una cadena de blancos:
Entrada: bb bba

Salida: bb bba
Macro COPD, copia a la derecha. Copia la cadena w a la derecha de si misma,
separando las dos w por un blanco b. La cadena w no posee blancos:
Entrada: bwb b

Salida: bwb w b
Macro COPI, copia a la izquierda. Copia la cadena w a la izquierda de si
misma, separando las dos w por un blanco b. La cadena w que no posee
10 CAP

ITULO 6. M

AQUINAS DE TURING
blancos:
Entrada: b bwb

Salida: b w bwb
Macro INT, intercambio. Intercambia las cadenas u y v (estas cadenas no
poseen blancos y no necesariamente son de la misma longitud):
Entrada: bubvb

Salida: bvbub

Ejercicios de la seccion 6.2


1. Dise nar MT que implementen los macros TD, BI, BD, NBI, NBD,
COPD, COPI e INT cuando el alfabeto de entrada es {a, b}.
2. Dise nar MT que implementen los macros TD, BI, BD, NBI, NBD,
COPD, COPI e INT cuando el alfabeto de entrada es {0, 1, 2}.
3. Sea = {a, b}. Dise nar MT para los siguientes macros:
(i) TI
2
. Traslada la cadena de entrada 2 casillas a la izquierda.
(ii) TD
2
. Traslada la cadena de entrada 2 casillas a la derecha.
(iii) TI
k
. Traslada la cadena de entrada k casillas a la izquierda (k
es un entero jo 1).
(iv) TD
k
. Traslada la cadena de entrada k casillas a la derecha (k es
un entero jo 1).
6.3. Maquinas de Turing como generadoras de
lenguajes
Otra faceta importante de las MT es su capacidad para generar lenguajes,
tarea para la cual no son necesarios los estados de aceptacion. Concreta-
mente, una MT M = (Q, q
0
, , , b, ) genera el lenguaje L

si
1. M comienza a operar con la cinta en blanco en el estado inicial q
0
.
2. Cada vez que M retorna al estado inicial q
0
, hay una cadena u per-
teneciente al lenguaje L escrita sobre la cinta.
3. Todas las cadenas de L son, eventualmente, generadas por M.
6.3. M

AQUINAS DE TURING COMO GENERADORAS DE LENGUAJES 11

Ejemplo
La siguiente MT genera cadenas con un n umero par de aes
sobre el alfabeto = {a}, o sea, el lenguaje L = {a
2i
: i 1}.
>
q
0
q
1
b|a
b|a

Ejemplo
La siguiente MT genera todas cadenas de ceros y unos en el
orden lexicograco (las cadenas se ordenan por longitud y las
cadenas de la misma longitud se ordenan ortogracamente de izquierda a
derecha, considerando 0 < 1): 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100,
101, 110, 111, 0000, 0001, . . . .
>
q
0
q
1
q
2
q
3
0|1
b|b
b|0
b|b
b|b
0|0
1|1
0|0
1|1
0|0
1|0

Ejercicios de la seccion 6.3


1. Dise nar MT que generen los siguientes lenguajes:
(i) L = {a
i
b
i
: i 1}. (iii) L = {a
i
b
i
c
i
: i 1}.
(ii) L = {a
i
cb
i
: i 1}. (iv) L = {0
i
1
j
0
i+j
: i, j 1}.
2. Modicar la MT del ultimo ejemplo de esta seccion para dise nar una
MT que genere todas las cadenas de {a, b, c}

en orden lexicograco.
Ayuda: no se necesitan mas estados.
3. Sea un alfabeto de n smbolos, = {a
1
, a
2
, . . . , a
n
}. Modicar
la MT del ultimo ejemplo de esta seccion para dise nar una MT que
genere

en orden lexicograco. Ayuda: no se necesitan mas estados.


12 CAP

ITULO 6. M

AQUINAS DE TURING
6.4. Variaciones del modelo estandar de MT
El modelo estandar de MT es susceptible de varias modicaciones que no
alteran la clase de lenguajes aceptados. Las variaciones que estudiaremos
a naden recursos computacionales a las maquinas, individualmente consi-
deradas, pero la capacidad de computo no se incrementa en general: los
modelos son equivalentes al modelo estandar. Indicaremos como se pueden
simular los nuevos modelos por medio maquinas estandares.
Recuerdese que en el modelo estandar, una MT siempre se detiene cuan-
do la unidad de control ingresa en un estado de aceptacion. Es decir, no se
permiten transiciones (q, a) cuando q F.
6.4.1. Estado de aceptacion unico
Toda MT se puede convertir, sin alterar el lenguaje aceptado, en una maqui-
na con un unico estado de aceptacion. Esto se consigue facilmente a nadien-
do transiciones desde los estados de aceptacion originales hasta el unico
estado de aceptacion q
f
, el cual es un estado nuevo. Las transiciones nece-
sarias son de la forma:
(q, a) = (q
f
, a, ),
para todo q estado de aceptacion original y todo a . De esta manera,
se puede considerar que toda MT tiene un unico estado inicial y un unico
estado de aceptacion. Este es un hecho importante para la codicacion
binaria de maquinas de Turing (seccion 7.1).
6.4.2. Maquina de Turing con cinta dividida en pistas
En el modelo multi-pista, la cinta esta dividida en un n umero nito k de
pistas, como se muestra en la siguiente gura:
q

Pista 1

Pista 2

Pista k
a
1
a
2
a
k

.
.
.
.
.
.
.
.
.
.
.
.
La funcion de transicion adquiere la siguiente forma:
(q, (a
1
, a
2
, a
3
, . . . , a
k
)) = (p, (b
1
, b
2
, b
3
, . . . , b
k
), D)
6.4. VARIACIONES DEL MODELO EST

ANDAR DE MT 13
donde los a
i
y los b
i
son smbolos del alfabeto de cinta y D es , o .
En un paso computacional, la unidad de control cambia simultaneamente
el contenido de las k pistas de la celda escaneada y realiza luego uno de los
desplazamientos , o .
Simulacion. Las maquinas de Turing que act uan sobre una cinta dividida
en k pistas aceptan los mismos lenguajes que las MT estandares. Para
concluir tal armacion, basta considerar el modelo multi-pistas como una
MT normal en la que el alfabeto de cinta esta formado por el conjunto de
k-uplas (s
1
, s
2
, . . . , s
k
), donde los s
i
. Es decir, el nuevo alfabeto de cinta
es el producto cartesiano
k
= (k veces).

Ejemplo
Las pistas se usan por lo general para se nalar con marcas o
marcadores ciertas posiciones en la cinta. La MT dise nada
en el ejemplo de la seccion 6.1 para aceptar el lenguaje L = {a
i
b
i
c
i
: i 1}
utiliza implcitamente la idea de marcadores: reemplazar las as por Xs,
las bes por Y s y las ces por Zs no es otra cosa que colocar las marcas X,
Y y Z en las posiciones deseadas. Estas marcas se pueden colocar en una
pista diferente, sin necesidad de sobre-escribir los smbolos de la cadena de
entrada.
6.4.3. Maquina de Turing con m ultiples cintas
En el modelo multi-cintas hay k cintas diferentes, cada una dividida en
celdas o casillas, como se muestra en la gura que aparece en la parte
superior de la pagina siguiente.
Inicialmente, la cadena de entrada se coloca en la primera cinta y las
demas cintas estan llenas de blancos. En un paso computacional, la uni-
dad de control cambia el contenido de la casilla escaneada en cada cinta y
realiza luego uno de los desplazamientos , o . Esto se hace de ma-
nera independiente en cada cinta; el control tiene entonces k visores que
act uan independientemente en cada cinta. La funcion de transicion tiene la
siguiente forma:
(q, (a
1
, a
2
, a
3
, . . . , a
k
)) =
_
p, (b
1
, D
1
), (b
2
, D
2
), (b
3
, D
3
), . . . , (b
k
, D
k
)
_
,
donde los a
i
y los b
i
son smbolos del alfabeto de cinta , y cada D
i
es un
desplazamiento , o .
Simulacion. A pesar de que el modelo multi-cinta parece, a primera vista,
mas poderoso que el modelo estandar, resulta que una MT con m ultiples
cintas se puede simular con una MT multi-pista. A continuaci on bosqueja-
remos el procedimiento de simulacion.
14 CAP

ITULO 6. M

AQUINAS DE TURING

a
1

a
2

a
k
q
.
.
.

Cinta 1
Cinta 2
Cinta k
.
.
.
Una MT con k cintas se simula con una MT que act ua sobre una unica
cinta dividida en 2k + 1 pistas. Cada cinta de la maquina multi-cinta da
lugar a 2 pistas en la maquina simuladora: la pista superior simula la cinta
propiamente dicha y la inferior tiene todas sus celdas en blanco, excepto
una, marcada con un smbolo especial X, que indica la posicion actual del
visor de la maquina original en dicha cinta. La pista adicional de la maquina
simuladora se utiliza para marcar, con un smbolo especial Y , las posiciones
mas a la izquierda y mas a la derecha de la unidad de control en la maqui-
na original. Para simular un solo paso computacional, la nueva maquina
requiere hacer m ultiples recorridos a izquierda y a derecha, actualizando el
contenido de las pistas y la posicion de los marcadores X y Y .

Ejemplo
Dise nar una MT con dos cintas que acepte el lenguaje L =
{a
i
b
i
c
i
: i 0}.
Solucion: Una MT con dos cintas es mas facil de dise nar que la MT estandar
presentada en el segundo ejemplo de la seccion 6.1. La idea es copiar en la
segunda cinta una X por cada a leda y, al aparecer las bes, avanzar hacia la
derecha en la primera cinta y hacia la izquierda en la segunda. Al aparecer
las ces se avanza hacia la derecha en ambas cintas. Si la cadena de entrada
tiene la forma a
i
b
i
c
i
, se detectara simultaneamente el smbolo en blanco b
en ambas cintas.
6.4. VARIACIONES DEL MODELO EST

ANDAR DE MT 15
La funcion de transicion requerida para implementar esta idea es:
(q
0
, (a, b)) = (q
1
, (a, ), (X, )),
(q
1
, (a, b)) = (q
1
, (a, ), (X, )),
(q
1
, (b, b)) = (q
2
, (b, ), ( b, )),
(q
2
, (b, X)) = (q
2
, (b, ), (X, )),
(q
2
, (c, b)) = (q
3
, (c, ), ( b, )),
(q
3
, (c, X)) = (q
3
, (c, ), (X, )),
(q
3
, ( b, b)) = (q
4
, ( b, ), ( b, )),
(q
0
, ( b, b)) = (q
4
, ( b, ), ( b, )).
Se han utilizado cuatro estados, siendo q
4
el unico estado de aceptacion.
6.4.4. Maquinas de Turing no-deterministas (MTN)
En el modelo no-determinista se permite que, en un paso computacional, la
unidad de control escoja aleatoriamente entre varias transiciones posibles.
La funcion tiene la siguiente forma:
(q, a) = {(p
1
, b
1
, D
1
), (p
2
, b
2
, D
2
), . . . , (p
k
, b
k
, D
k
)}
donde los a
i
y los b
i
son smbolos del alfabeto de cinta , los p
i
son estados
y cada D
i
es un desplazamiento , o .
La nocion de aceptacion en una MTN es similar a la de los modelos no-
deterministas de automatas considerados antes: una cadena de entrada w
es aceptada si existe por lo menos un c omputo a partir de la conguracion
inicial q
0
w, y que termina en la conguracion u
1
pu
2
, con p F. Como
antes, los computos en los cuales la maquina se detiene en un estado de no
aceptacion, o en los cuales no se detiene, son irrelevantes para la aceptacion.
Simulacion. Una MTN no tiene mayor poder computacional que una MT
estandar, es decir, una MTN se puede simular con una MT, como lo expli-
caremos a continuacion. Sea M una MTN; se bosquejara la construccion
de una MT M

tal que L(M) = L(M

).
Sea n el n umero maximo de transiciones en los conjuntos (q, a), con-
siderando todo smbolo a y todo estado q Q. Para cada a y
q Q, las transiciones contenidas en (q, a) se pueden enumerar entre 1 y
n. Si hay menos de n transiciones en un (q, a) particular, se repite arbitra-
riamente una de de ellas hasta completar n. De esta manera, cada una de
16 CAP

ITULO 6. M

AQUINAS DE TURING
las transiciones (q, a) se puede considerar como un conjunto de n opciones
indexadas:
(q, a) =
_
(p
1
, b
1
, D
1
)
. .
1
, (p
2
, b
2
, D
2
)
. .
2
, . . . , (p
k
, b
k
, D
k
)
. .
n
_
ndice
En algunos (q, a) habra opciones repetidas, pero esta repeticion no altera
el lenguaje aceptado.
La MT M

que simulara a M tendra tres cintas. La primera cinta alma-


cena la entrada, la segunda genera de forma sistematica todas las secuencias
nitas de n umeros entre 1 y n: primero las secuencias de longitud 1, luego
las secuencias de longitud 2, luego las de longitud 3 y as sucesivamente
(para esto se puede usar una subrutina como la construida en el ejercicio 3
de la seccion 6.3).
Para cada secuencia i
1
i
2
i
k
generada en la cinta 2, M

copia la cadena
de entrada sobre la cinta 3 y simula la computacion de k pasos que hace
sobre ella la maquina original M, utilizando en el paso j la opcion con
ndice j en el (q, a) correspondiente. Si M

se detiene en un estado de
aceptacion, entonces tanto M como M

aceptan la entrada. Si el computo


simulado no termina en la aceptacion, M

borra el contenido de las cintas


2 y 3, genera otra secuencia en la cinta 2, copia de nuevo la entrada en la
cinta 3 e inicia una nueva simulacion.
Si la entrada es aceptada por la maquina original M, existira un computo
que se detiene en un estado de aceptacion y, eventualmente, M

encontrara y
simulara tal computo.

Ejercicios de la seccion 6.4


1. Dise nar maquinas de Turing multi-pistas que acepten los siguientes
lenguajes. Escribir explcitamente la idea utilizada en el dise no.
(i) L = {a
i
b
i
c
i
: i 0}.
(ii) L = {a
i
b
2i
a
i
: i 0}.
2. Dise nar maquinas de Turing multi-cintas que acepten los siguientes
lenguajes. Escribir explcitamente la idea utilizada en el dise no.
(i) L = {a
i
b
j
a
i
b
j
: i, j 0}.
(ii) L = {a
i
b
2i
c
3i
: i 0}.
6.5. SIMULACI

ON DE AUT

OMATAS POR MEDIO DE M

AQUINAS DE TURING 17
6.5. Simulacion de automatas por medio de
maquinas de Turing
En esta seccion veremos que los automatas simples (AFD, AFN o AFN-)
y los automatas con pila (AFPD o AFPN) se pueden simular con maquinas
de Turing: dado un automata M se puede construir una MT que acepte
el mismo lenguaje que M. Usando estas simulaciones se podra concluir
que tanto los lenguajes regulares como los independientes del contexto son
recursivos.
6.5.1. Simulacion de automatas
Un automata (sin pila) se puede simular con una maquina de Turing: prime-
ro se convierte en un AFDM = (Q, q
0
, F, , ) equivalente, usando las tecni-
cas del Captulo 2. Luego se construye una MT M

tal que L(M) = L(M

)
a nadiendo un nuevo estado q
f
, que sera el unico estado de aceptacion de
M

, y transiciones desde los estados de F hasta q


f
, en presencia del smbolo
blanco b. Es decir, M

= (Q

, q
0
, F

, , , b,

) donde
Q

= Q {q
f
}, q
f
es un estado nuevo,
= {b},
F

= {q
f
},

(q, s) = ((q, s), s, ), para q Q, s ,

(q, b) = (q
f
, b, ), para todo q F.
Notese que la MT M

as construida se detiene con cualquier entrada w.


Puesto que los lenguajes regulares son precisamente los aceptados por los
AFD, hemos establecido el siguiente teorema.
6.5.1 Teorema. Todo lenguaje regular es recursivo.
6.5.2. Simulacion de automatas con pila
Sea M = (Q, q
0
, F, , , s
0
, ) un automata con pila. Para simular a M se
puede construir una MT M

que act ue sobre dos cintas: la primera cinta


simula la cinta de entrada y la segunda simula la pila del aut omata. M

sera una MT determinista o no-determinista dependiendo de si el automata


dado es un AFPD o un AFPN. Se dene M

= (Q

, q
0
, F

, ,

, b, ) por
18 CAP

ITULO 6. M

AQUINAS DE TURING
medio de
Q

= Q {q
f
}, donde q
f
es un estado nuevo,

= {b},
F

= {q
f
}.
La MT M

coloca inicialmente el smbolo inicial de pila sobre la cinta 2:


(q
0
, (s, b)) = (q
0
, (s, s
0
), (, )), para cualquier s .
Una transicion de la forma (q, a, s) = (p, ) se simula con varias transi-
ciones: se trata de lograr que M sobre-escriba el smbolo s en la cinta 2,
que representa el tope de la pila, por la cadena . Por ejemplo, la transicion
(q, a, s) = (p, a
1
a
2
a
3
) se simula a nadiendo un estado auxiliar q
e
junto con
las transiciones
(q, (a, s)) = (q
e
, (a, ), (a
3
, )),
(q
e
, (a, b)) = (q
e
, (a, ), (a
2
, )),
(q
e
, (a, b)) = (p, (a, ), (a
1
, )).
Para no alterar el lenguaje aceptado, cada transicion de este tipo requiere
la adicion de un estado especial q
e
diferente. Una transicion del automata
M, (q, , s) = (p, ), se simula de manera similar: la posicion de la uni-
dad de control y el contenido de la primera cinta no cambian durante el
procedimiento.
Finalmente, se debe a nadir la transicion
(q, ( b, s)) = (q
f
, ( b, s), (, )), para todo s y todo q F.
Lo anterior muestra que el comportamiento del automata M se simula
completamente con la MT M

y se tiene que L(M) = L(M

).
Notese que la MT as construida no necesariamente se detiene con todas
las cadenas de entrada ya que el automata original M puede ingresar a un
bucle innito con transiciones que inserten y extraigan indenidamente
smbolos en la pila. Por consiguiente, para concluir que todo LIC es re-
cursivo es necesario restringir primero las transiciones del automata. En la
demostracion del siguiente teorema se indica como hacerlo.
6.5.2 Teorema. Todo LIC es un lenguaje recursivo.
6.5. SIMULACI

ON DE AUT

OMATAS POR MEDIO DE M

AQUINAS DE TURING 19
Demostraci on. Sabemos que un LIC L dado se puede generar con una
GIC G en FNC en la que la variable inicial no sea recursiva. En G no
hay transiciones , excepto posiblemente S . A partir de G podemos
construir un AFPN M tal que L(G) = L(M) = L usando el procedimiento
del Teorema 5.4.1, y luego una MT M

que simule a M, en la forma indicada


arriba. Se puede observar que M y M

siempre se detienen al procesar una


cadena de entrada cualquiera: no ingresan nunca en bucles innitos debido
al tipo restringido de las transiciones que surgen de la gramatica G.
Con ayuda de los teoremas 6.5.1 y 6.5.2, podemos establecer las rela-
ciones de contenencia entre las colecciones de lenguajes estudiadas hasta
ahora (sobre un alfabeto dado):
Regulares LIC Recursivos Recursivamente Enumerables

.
Recursivamente Enumerables
Recursivos
LIC
Regulares

Sabemos que hay lenguajes recursivos que no son LIC y lenguajes LIC que
no son regulares. En el proximo captulo se mostrara que existen lenguajes
RE que no son recursivos y lenguajes que no son RE. Por tal raz on, todas
las contenencias anteriores son estrictas.
En la siguiente tabla se muestra, a manera de resumen, la relacion entre
los lenguajes estudiados y las maquinas que los aceptan.
Lenguajes Maquinas aceptadoras
Regulares Automatas nitos (AFD AFN AFN-)
LIC Automatas con pila no-deterministas (AFPN)
RE Maquinas de Turing (MT)
Recursivos Maquinas de Turing que se detienen con toda entrada
20 CAP

ITULO 6. M

AQUINAS DE TURING

Ejercicios de la seccion 6.5


1. Simular el siguiente AFD por medio de una MT M y hacer el diagra-
ma de estados de la maquina M.
>
q
0
q
1
q
2
b b b
a a
2. Simular por medio de una MT M el automata de pila del primer
ejemplo de la seccion 5.1, el cual acepta el lenguaje {a
i
b
i
: i 1}
sobre el alfabeto = {a, b}, y cuya funcion de transicion es:
(q
0
, a, s
0
) = (q
0
, As
0
),
(q
0
, a, A) = (q
0
, AA),
(q
0
, b, A) = (q
1
, ),
(q
1
, b, A) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).
6.6. Propiedades de clausura de los lenguajes RE
y de los lenguaje recursivos
En esta seccion presentaremos algunas propiedades de clausura de los len-
guajes recursivos y de los RE; en los ejercicios del nal de la seccion apa-
recen otras propiedades similares.
6.6.1 Teorema. 1. El complemento de un lenguaje recursivo tambien
es recursivo.
2. La union de dos lenguajes recursivos es recursivo.
3. La union de dos lenguajes RE es RE.
Demostraci on.
1. Sea L un lenguaje recursivo aceptado por la MT M. La maquina M
se detiene con cualquier entrada, ya sea en un estado de aceptacion
o en uno de rechazo. Se puede construir una MT M

que acepte a
6.6. PROPIEDADES DE CLAUSURA 21
L, haciendo que los estados de aceptacion de M dejen de serlo en
M

. De esta forma, las cadenas aceptadas por M seran rechazadas


por M

. Adicionalmente, desde los estados de no-aceptacion en los


cuales M se detiene, denimos transiciones a un estado (nuevo) de
aceptacion de M

. De esta forma, las cadenas no aceptadas por M


s seran aceptadas por M

. Por consiguiente, L(M

) = L.
2. Sean L
1
y L
2
dos lenguajes recursivos aceptados por las MT M
1
y M
2
,
respectivamente. Construimos una MT M con dos cintas que simule a
M
1
en la primera cinta y a M
2
en la segunda. M procesa inicialmente
la entrada en la primera cinta; si M
1
acepta, M tambien aceptara. Si
M
1
se detiene en un estado de no-aceptacion, M procedera a procesar
la entrada en la segunda cinta, simulando a M
2
. Si M
2
acepta, M
tambien aceptara pero si M
2
se detiene en un estado de rechazo, M
tambien se detendra y no aceptara. Puesto que tanto M
1
como M
2
siempre se detienen, L(M) = L
1
L
2
.
3. El procedimiento del numeral anterior ya no sirve en este caso porque
es posible que M
1
o M
2
nunca se detengan al procesar una entrada
particular. En lugar de una simulacion consecutiva de las maquinas
dadas, se necesita que M simule simult aneamente a M
1
y a M
2
. Para
lograrlo utilizamos tambien dos cintas, la primera para simular a M
1
y la segunda para simular a M
2
. En cada paso computacional, M
simula un paso de M
1
y uno de M
2
.
Resulta muy instructivo presentar explcitamente una maquina M que
implemente la anterior idea intuitiva. Aparte de los estados especiales
q
e
y q
f
, denidos mas adelante, los estados de M son parejas de la
forma (p, q), donde p es un estado de M
1
y q un estado de M
2
. Cada
par de transiciones

1
(q
1
, s
1
) = (p
1
, r
1
, D
1
) de la MT M
1
,

2
(q
2
, s
2
) = (p
2
, r
2
, D
2
) de la MT M
2
,
da lugar a la siguiente transicion en la maquina M:

_
(q
1
, q
2
), (s
1
, s
2
)
_
=
_
(p
1
, p
2
), (r
1
, D
1
), (r
2
, D
2
)
_
.
Si alguno de los estados q
1
o q
2
es un estado de aceptacion de M
1
o M
2
, respectivamente, hacemos que M ingrese y se detenga en un
estado q
f
(estado nuevo), que sera el unico estado de aceptacion de
M. Esto se consigue con la transicion

_
(q
1
, q
2
), (s
1
, s
2
)
_
=
_
q
f
, (s
1
, ), (s
2
, )
_
.
22 CAP

ITULO 6. M

AQUINAS DE TURING
Tambien hay que permitir que M siga operando en una de las cintas
incluso si se ha detenido en la otra cinta en un estado de no aceptacion.
Por ejemplo, si
1
(q
1
, s
1
) no esta denida en M
1
, pero
2
(q
2
, s
2
) =
(p
2
, r
2
, D
2
) es una transicion de M
2
, denimos

_
(q
1
, q
2
), (s
1
, s
2
)
_
=
_
(q
e
, p
2
), (s
1
, ), (s
2
, D
2
)
_
,
donde q
e
es un estado especial (nuevo). Por medio de esta transicion,
cuando M ingrese en el estado q
e
en alguna de las cintas, se deten-
dra en dicha cinta pero contin ua la simulacion en la otra. Si M ingresa
al estado (q
e
, q
e
), se detendra sin aceptar.
El siguiente teorema establece una importantsima conexion entre las nocio-
nes de lenguaje recursivo y lenguaje RE, la cual se puede demostrar como
consecuencia del Teorema 6.6.1.
6.6.2 Teorema. Un lenguaje L es recursivo si y solo si L y su complemento
L son RE.
Demostraci on. En la direccion izquierda a derecha, la conclusion es directa:
si L es recursivo, obviamente es RE. L es tambien recursivo (parte 1 del
Teorema 6.6.1) y por lo tanto RE.
La parte esencial de este teorema es la otra direccion: si L y L son RE,
entonces L debe ser recursivo. Para verlo, partimos de dos maquinas M
1
y
M
2
que acepten a L y L, respectivamente. Construimos luego una MT M
que simule simultaneamente a M
1
y M
2
, tal como se hizo en la parte 3 del
Teorema 6.6.1. Puesto que para una entrada w solo hay dos posibilidades,
w L o w L, entonces la maquina M eventualmente se detendra en
la cinta 1 o en la cinta 2. En el primer caso, M acepta la entrada y en
el segundo caso la rechaza. Como M se detiene con toda entrada, L es
recursivo.
El siguiente teorema justica la denominacion recursivamente enume-
rable para los lenguajes aceptados por maquinas de Turing.
6.6.3 Teorema. Para todo lenguaje L aceptado por una MT M, se puede
construir una MT M

que enumere secuencialmente las cadenas de L.


Bosquejo de la demostraci on. La MT M

tendra tres cintas. Las cadenas


de L seran enumeradas secuencialmente en la cinta 1 usando el smbolo
& como separador: w
1
&w
2
&w
3
& . La cinta 2 se usa para generar todas
las cadenas de

en el orden lexicograco, utilizando la subrutina cons-


truida en el ejercicio 3 de la seccion 6.3, modicada de tal manera que
6.6. PROPIEDADES DE CLAUSURA 23
las cadenas queden separadas entre s por el separador &. En la cinta 2
tambien se escribe, a la izquierda de la lista de cadenas, un contador que
registra del n umero de cadenas generadas. La cinta 3 se usa para simular
el procesamiento de M sobre las cadenas que se generan en la cinta 2.
Para precisar, M

procede seg un las siguientes acciones:


Accion 1. M

genera sobre la cinta 2 la primera cadena de

(o sea, ) y
simula en la cinta 3 un movimiento de la accion de M sobre .
Accion 2. M

genera sobre la cinta 2 la segunda cadena de

y simula, en
la cinta 3, dos movimientos de la accion de M sobre dicha cadena,
as como un movimiento mas del procesamiento de la cadena .
Accion i, (i 1). M

genera sobre la cinta 2 la i-esima cadena de

y
simula, en la cinta 3, i movimientos de la accion de M sobre dicha
cadena, as como un movimiento mas del procesamiento de las i 1
cadenas previamente generadas en la cinta 2. Se incrementa luego,
en la cinta 2, el contador i de cadenas generadas (este es tambien
el contador del n umero de movimientos simulados para cada cadena
generada).
Al concluir la accion i se han generado en la segunda cinta las i primeras
cadenas de

y se han simulado, en la cinta 3, los i primeros movimientos


que M realiza sobre esas cadenas. Si durante la simulacion, alguna cadena
es aceptada por M, M

la copia en la cinta 1. Las casillas ocupadas en la


cinta 3 por las simulaciones de cadenas ya aceptadas se tachan (es decir,
se marcan con un smbolo especial), de tal manera que M

no tenga que
procesarlas en los pasos subsiguientes.
Para acomodar las simulaciones, cada vez mas extensas, puede ser nece-
sario usar en la cinta 3 subrutinas de desplazamiento de cadenas, a izquier-
da o a derecha. En todo caso, al terminar la accion i, M ha utilizado una
porcion nita en cada una de las tres cintas.

Ejercicios de la seccion 6.6


1. Utilizando razonamientos similares a los del teorema 6.6.1 demostrar
lo siguiente:
(i) Si L
1
y L
2
son recursivos, L
1
L
2
es recursivo.
(ii) Si L
1
y L
2
son RE, L
1
L
2
es RE.
2. Demostrar o refutar:
24 CAP

ITULO 6. M

AQUINAS DE TURING
(i) Los lenguajes recursivos son cerrados para la concatenacion, es
decir, si L
1
y L
2
son recursivos, L
1
L
2
tambien es recursivo.
(ii) Los lenguajes RE son cerrados para la concatenacion.
(iii) Los lenguajes recursivos son cerrados para la estrella de Kleene,
es decir, si L es recursivo, L

tambien es recursivo.
(iv) Los lenguajes RE son cerrados para la estrella de Kleene.
3. Sea L un lenguaje recursivo pero no RE, demostrar que para toda
MT M que acepte a L hay innitas cadenas de entrada con las cuales
M no se detiene nunca.
6.7. Maquinas de Turing como calculadoras de
funciones
Como las maquinas de Turing pueden transformar las cadenas de entrada,
se pueden utilizar como mecanismos para calcular funciones. Formalmente,
una MT M = (Q, q
0
, q
f
, , , b, ) calcula una funcion f :

(total
o parcial) si para toda entrada w se tiene
q
0
w

q
f
v, donde v = f(w).
El modelo de MT aqu utilizado coincide con el estandar, pero no hay esta-
dos de aceptacion. El estado q
f
, llamado estado nal, se usa para terminar el
procesamiento de la entrada y producir la salida. No se permiten transicio-
nes desde el estado nal q
f
. Notese que M debe terminar el procesamiento
en la conguracion q
f
v, o sea, la unidad de control debe estar escaneando
el primer smbolo de la salida v.
Una MT que calcula una funcion puede utilizar cintas auxiliares, es decir,
se puede usar el modelo multi-cintas. En tal caso, la primera cinta se usa
como la cinta entrada-salida.

Ejemplo
Dise nar una MT M que calcule la funcion suma, en el sistema
de numeracion unitario. Con entrada 1
n
01
m
, M debe producir
como salida 1
n+m
. Aqu, el 0 se usa como separador entre 1
n
y 1
m
, que
representan los n umeros naturales n y m, respectivamente.
Solucion: M va a transformar 1
n
01
m
en 1
n+m
trasladando la cadena 1
m
una casilla hacia la izquierda. El separador 0 se sobre-escribe por 1 y el
6.8. LA TESIS DE CHURCH-TURING 25
ultimo 1 de 1
m
se sobre-escribe por el smbolo b. La funcion de transicion
necesaria para implementar esta idea es:
(q
0
, 1) = (q
1
, 1, ),
(q
1
, 1) = (q
1
, 1, ),
(q
1
, 0) = (q
2
, 1, ),
(q
2
, 1) = (q
2
, 1, ),
(q
2
, b) = (q
3
, b, ),
(q
3
, 1) = (q
4
, b, ),
(q
4
, 1) = (q
4
, 1, ),
(q
4
, b) = (q
f
, b, ).

Ejercicios de la seccion 6.7


Dise nar MT que calculen las siguientes funciones. Las entradas numericas
se dan en el sistema de numeracion unitario, como en el ejemplo de esta
seccion.
1. f(n) = 2n, para todo n umero natural n.
2. La funcion de paridad de los n umeros naturales:
f(n) =
_
1, si n es par,
0, si n es impar.
3. La funcion mayor que truncada:
f(n, m) =
_
1, si n > m,
0, si n m.
Aqu la entrada (n, m) se presenta en la forma 1
n
01
m
.
6.8. La tesis de Church-Turing
Historicamente, el modelo de maquina de Turing fue presentado en 1936
como un mecanismo abstracto de computo capaz de ejecutar algoritmos
paso a paso. La maquina de Turing antecedio en varias decadas a la imple-
mentacion fsica de los computadores digitales y se ha usado desde entonces
como el modelo teorico fundamental de la nocion de computacion secuen-
cial.
26 CAP

ITULO 6. M

AQUINAS DE TURING
Hay varias razones por las cuales la maquina de Turing sigue siendo un
formalismo util y ampliamente utilizado:
1. La nocion de paso computacional esta claramente denida. Esto
permite precisar sin ambig uedades el concepto de tiempo de compu-
tacion.
2. La nocion de lugar de almacenamiento esta tambien claramente pre-
sentada, por medio de las casillas individuales en la cinta.
3. Estos dos recursos, tiempo y espacio, aparecen en la maquina de
Turing de una manera muy realista y permiten analizar los efectos
de imponer limitaciones sobre ellos, lo cual es muy adecuado en las
investigaciones sobre complejidad computacional.
Ning un modelo computacional captura de manera tan satisfactoria tales
aspectos de la computacion.
Dise nar una MT es completamente similar a escribir un programa com-
putacional, lo cual establece una conexion intuitiva directa entre maquinas
de Turing y algoritmos. Esta conexion es el fundamento de la armacion
conocida como Tesis de Church-Turing y que puede ser enunciada de la
manera mas directa como:
6.8.1. Tesis de Church-Turing. Todo algoritmo puede ser descrito por
medio de una maquina de Turing.
En su formulacion mas amplia, la Tesis de Church-Turing abarca tanto
los algoritmos que producen una salida para cada entrada como aquellos que
no terminan (ingresan en bucles innitos) para algunas entradas. Tambien
se incluyen los algoritmos deterministas y los no-deterministas.
Para apreciar su signicado y su alcance, hay que enfatizar que la Tesis
de Church-Turing no es un enunciado matematico susceptible de demostra-
cion, ya que involucra la nocion intuitiva de algoritmo. En otras palabras,
la tesis no se puede demostrar. Se podra refutar, no obstante, exhibiendo
un procedimiento efectivo, que todo el mundo acepte que es un verdadero
algoritmo y que no pueda descrito por una maquina de Turing. Pero tal
refutacion no se ha producido hasta la fecha; de hecho, la experiencia acu-
mulada durante decadas de investigacion ha corroborado una y otra vez la
Tesis de Church-Turing. Entre los hechos que contribuyen a apoyar la tesis
podemos destacar los dos siguientes:
1. La adicion de recursos computacionales a las maquinas de Turing
(m ultiples pistas o cintas, no determinismo, etc) no incrementa el
6.8. LA TESIS DE CHURCH-TURING 27
poder computacional del modelo basico. Esto es un indicativo de que
el modelo de MT es lo sucientemente poderoso como para simular
todas las acciones consideradas computacionalmente validas.
2. Todos los modelos o mecanismos computacionales propuestos para
describir formalmente la nocion de algoritmo han resultado ser equi-
valentes a la maquina de Turing, en el sentido de que lo que se puede
hacer con ellos tambien se puede hacer con una MT adecuada, y vice-
versa. Entre los modelos de computacion secuencial equivalentes a la
maquina de Turing podemos citar: las funciones parciales recursivas
(modelo de Godel y Kleene, 1936), el calculo- (modelo de Church,
1936), los sistemas de deduccion canonica (modelo de Post, 1943), los
algoritmos de Markov (modelo de Markov, 1951) y las maquinas de
registro (modelo de Shepherdson-Sturgis, 1963).
Captulo 7
Problemas indecidibles
7.1. Codicacion de maquinas de Turing
Toda MT se puede codicar como una secuencia nita de ceros y unos.
En esta seccion presentaremos una codicacion valida para todas las MT
que act uen sobre un alfabeto de entrada pre-establecido. Para simpli-
car la codicacion, suponemos que toda MT tiene un unico estado inicial,
denotado q
1
, y un unico estado nal, denotado q
2
(en la seccion 6.4.1 se mos-
tro que esta modicacion siempre se puede hacer, sin alterar los lenguajes
aceptados). El alfabeto de cinta de cada MT M es de la forma
= {s
1
, s
2
, . . . , s
m
, . . . , s
p
}
donde s
1
representa el smbolo blanco b, = {s
2
, . . . , s
m
} y s
m+1
, . . . , s
p
son los smbolos auxiliares utilizados por M (cada MT utiliza su propia
coleccion nita de smbolos auxiliares). Todos estos smbolos se codican
como secuencias de unos:
Smbolo Codicacion
s
1
(smbolo b) 1
s
2
11
s
3
111
.
.
.
.
.
.
s
m
11 1

m veces
.
.
.
.
.
.
s
p
11 1

p veces
1
2 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


Las cadenas de

se pueden codicar usando 0 como separador. Por ejem-


plo, la cadena aabbab se codica como
01101101110101101110
si los smbolos del alfabeto de cinta b, a y b se han codicado como 1, 11 y
111, respectivamente. Notese que en la codicacion de una cadena w

no aparecen nunca dos ceros consecutivos. En general, la codicacion de


una cadena s
i
1
s
i
2
s
i
k

es
01
i
1
01
i
2
0 01
i
k
0.
Los estados de una MT, q
1
, q
2
, q
3
, . . . , q
n
, se codican tambien con secuen-
cias de unos:
Estado Codicacion
q
1
(inicial) 1
q
2
(nal) 11
.
.
.
.
.
.
q
n
11 1

n veces
Las directrices de desplazamiento , y se codican con 1, 11 y 111,
respectivamente. Una transicion (q, a) = (p, b, D) se codica usando ceros
como separadores para los estados, los smbolos del alfabeto de cinta y la
directriz de desplazamiento D. As, la transicion (q
3
, s
2
) = (q
5
, s
3
, ) se
codica como
01110110111110111010
En general, la codicacion de una transicion cualquiera (q
i
, s
k
) = (q
j
, s

, D)
es
01
i
01
k
01
j
01

01
t
0
donde t = 1 o 2 o 3, seg un D sea , o . Observese que aparecen
exactamente seis ceros separados por secuencias de unos.
Una MT se codica escribiendo consecutivamente las secuencias de las
codicaciones de todas sus transiciones. Mas precisamente, la codicacion
de una MT M es de la forma
C
1
C
2
C
r
donde las C
i
son las codicaciones de las transiciones de M. Puesto que
el orden en que se presentan las transiciones de una MT no es relevante,
7.1. CODIFICACI

ON DE M

AQUINAS DE TURING 3
una misma MT tiene varias codicaciones diferentes. Esto no representa
ninguna desventaja practica o conceptual.

Ejemplo Considerese la siguiente MT M que acepta el lenguaje a


+
b:
(q
1
, a) = (q
3
, a, )
(q
3
, a) = (q
3
, a, )
(q
3
, b) = (q
4
, b, )
(q
4
, b) = (q
2
, b, )
Si los smbolos del alfabeto de cinta b, a y b se codican con 1, 11 y 111,
respectivamente, la MT M se puede codicar como la siguiente secuencia
binaria:
010110111011010011101101110110100111011101111011101001111010110101110.
la cual se puede escribir tambien como
0101
2
01
3
01
2
01001
3
01
2
01
3
01
2
01001
3
01
3
01
4
01
3
01001
4
0101
2
0101
3
0.
Cambiando el orden de las transiciones de M obtendramos en total 4! = 24
codicaciones diferentes para M.
Es claro que una secuencia de ceros y unos que represente una MT se
puede decodicar. De hecho, es facil concebir un algoritmo que determine
si una secuencia binaria nita dada es o no una MT y que la decodique
en caso armativo.

Ejercicios de la seccion 7.1


1. Sea M la MT denida por el siguiente diagrama de estados:
>
q
1
q
3
q
4
q
2
b|b
a|a b|b
a|a
b|b
Determinar el lenguaje aceptado por M y codicar la maquina M
siguiendo el esquema presentado en esta seccion (codicar los smbolos
del alfabeto de cinta b, a y b con 1, 11 y 111, respectivamente).
4 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


2. Las siguientes secuencias binarias codican MT que act uan sobre el
alfabeto de entrada = {0, 1}, siguiendo el esquema de codicacion
presentado en esta seccion. Decodicar las maquinas y determinar en
cada caso el lenguaje aceptado (los smbolos b, 0 y 1 estan codicados
como 1, 11 y 111, respectivamente).
(a) 010110111011010011101110111101110100111101110
sigue

111101110100111101101111101101001111010110101110
(b) 0101
3
0101
3
0100101
2
01
3
01
2
0100101
2
01
5
01
2
0100
sigue

1
3
01
2
01
4
01
2
01001
4
01
3
0101
3
01001
5
01
3
0101
3
0100
sigue

1
5
0101
2
0101
3
0010101
2
0101
3
Es corriente identicar las cadenas w y las MT M con sus respec-
tivas codicaciones binarias, y haremos eso en lo sucesivo.
7.2. Enumeracion de maquinas de Turing
Las cadenas binarias (cadenas de ceros y unos) se pueden ordenar lexi-
cogracamente: w
1
, w
2
, w
3
, . . . . El orden se establece por longitud y las
cadenas de la misma longitud se ordenan ortogracamente de izquierda a
derecha (considerando 0 < 1). Este orden comienza as:
0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, 0000, 0001, 0010, . . .
Seg un la codicacion presentada en la seccion anterior, no todas las se-
cuencias binarias representan una MT. Sabemos, por ejemplo, que en la
codicacion de una MT no pueden aparecer tres ceros consecutivos y tam-
poco pueden comenzar con 1. As, las secuencias 0101000110, 010001110
y 1011010110111010 no codican ninguna MT. Si una cadena binaria no
representa el codigo valido de una MT, supondremos que codica la MT
con un solo estado y sin transiciones; tal MT acepta el lenguaje .
Tenemos entonces una enumeracion w
1
, w
2
, w
3
, . . . de todas las cadenas
binarias y una enumeracion M
1
, M
2
, M
3
, . . . de las MT que act uan sobre
un alfabeto dado . Podemos entonces hablar de la i-esima cadena binaria
y de la i-esima MT, M
i
. En realidad, estas enumeraciones coinciden por-
que, seg un lo expuesto en el parrafo anterior, todas las cadenas binarias
codican maquinas de Turing. Notese tambien que en la enumeracion M
1
,
M
2
, M
3
, . . ., cada MT aparece varias veces (porque al cambiar el orden de
7.3. M

AQUINA DE TURING UNIVERSAL 5


las transiciones se obtiene una codicacion diferente). Las MT que aceptan
el lenguaje aparecen innitas veces en la enumeracion.

Ejercicios de la seccion 7.2


Escribir las codicaciones de las siguientes MT: M
7
, M
14
y M
65
. Cual es
el lenguaje aceptado por tales maquinas?
7.3. Maquina de Turing universal
La maquina de Turing universal M
u
simula el comportamiento de todas
las MT (sobre un alfabeto de entrada dado). M
u
procesa pares (M, w),
siendo M la codicacion de una MT determinada y w la codicacion de
una cadena de entrada para M (estas codicaciones se hacen en la forma
indicada en la seccion 7.1). La pareja (M, w) se puede presentar tambien
como una cadena binaria, en la forma M0w. Es decir, los codigos de M y
w se separan con un cero. Puesto que el codigo de M termina en 0 y el
de w comienza con 0, en la cadena M0w aparecen tres ceros consecutivos
unicamente en el sitio que separa los codigos de M y w.
M
u
es una MT con tres cintas cuyo alfabeto de cinta es {0, 1, b} (el
smbolo blanco b de M
u
diere del smbolo blanco b utilizado por las demas
MT). La primera cinta contiene el codigo de una MT M determinada; la
segunda cinta contiene inicialmente el codigo de una entrada w para M.
La tercera cinta se usa para almacenar el estado actual de M, tambien
codicado: q
1
se codica como 1, q
2
se codica como 2, etc.
Con entrada M0w que representa el par (M, w), la maquina M
u
procede de la siguiente manera:
1. Coloca los codigos de M y w en la primera y segunda cintas, respec-
tivamente. Como se indico arriba, para separar los codigos de M y w
se busca el unico sitio de la cadena que tiene tres ceros consecutivos.
2. La cadena 1, que representa el estado inicial q
1
, se coloca en la tercera
cinta. La unidad de control escanea inicialmente el primer smbolo de
cada cadena binaria, en cada una de las tres cintas.
3. Examina el codigo de M para determinar si representa una MT vali-
da. En caso negativo, M
u
se detiene sin aceptar (recuerdese que los
codigos no validos representan una MT que no acepta ninguna cade-
na).
6 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


4. M
u
utiliza la informacion de las cintas 2 y 3 para buscar en la cinta 1
la transicion que sea aplicable. Si encuentra una transicion aplicable,
M
u
simula en la cinta 2 lo que hara M y cambia el estado se nalado
en la cinta 3, seg un corresponda. Esto requiere re-escribir la cadena
de la cinta 2 desplazando adecuadamente los smbolos a izquierda
o a derecha; para esto se utilizan las subrutinas mencionadas en la
seccion 6.2. La simulacion contin ua de esta forma, si hay transiciones
aplicables. Despues de realizar una transicion, la unidad de control
regresa, en la primera y tercera cintas, al primer smbolo de la cadena.
Si al procesar una entrada w, M
u
se detiene en el unico estado de acep-
tacion de M, entonces la cadena w sera aceptada. Por consiguiente,
M
u
tiene tambien un unico estado de aceptacion, q
1
, que es el mismo
estado de aceptacion de cualquier otra MT.
5. Puede seceder que M
u
no encuentre una transicion aplicable o que
se detenga en un estado que no es de aceptacion. En estos casos, M
u
simplemente se detiene sin aceptar, como lo hara M.
Se tiene entonces que M
u
acepta la entrada M0w si y solamente si M
acepta w. De modo que el lenguaje aceptado por la maquina de Turing
universal M
u
se puede describir explcitamente; este lenguaje se denomina
corrientemente el lenguaje universal y se denota con L
u
:
L
u
= {M0w : la MT M acepta la cadena w

}.
El lenguaje universal L
u
es, por consiguiente, un lenguaje RE.
7.4. Lenguajes RE y lenguajes que no son RE
En esta seccion consideraremos ejemplos de lenguajes RE formados por
codigos binarios de maquinas de Turing (lenguajes similares a L
u
), y ex-
hibiremos lenguajes que no son RE, o sea, lenguajes que no pueden ser
reconocidos por ninguna MT.
Seg un la denicion, un lenguaje L es RE si existe una MT M tal que
L(M) = L. Usando la tesis de Church-Turing, se puede concluir que L
es RE exhibiendo un algoritmo de aceptaci on para L. Con entrada u, el
algoritmo debe nalizar con aceptacion si y solo si u L. Si u / L, el
algoritmo puede detenerse, sin aceptar, o puede no detenerse nunca.

Ejemplo
El argumento que se uso en la seccion anterior para concluir
que L
u
es RE se puede presentar como un algoritmo de acep-
tacion:
7.4. LENGUAJES RE Y LENGUAJES QUE NO SON RE 7
1. Entrada: M0w.
2. Ejecutar la MT M con la cadena w.
3. Aceptar si M se detiene en un estado de aceptacion.
Este algoritmo naliza con aceptacion si y solo si M acepta a w.

Ejemplo El lenguaje
L
a
= {M : L(M) = } = {M : M acepta alguna cadena}.
es RE. El siguiente es un algoritmo no-determinista para aceptar L
a
:
1. Entrada: una MT M arbitraria.
2. Conjetura: escoger de manera no-determinista una cadena w sobre el
alfabeto de cinta.
3. Simular M con entrada w.
4. Aceptar si M acepta a w.
Notese que si M acepta aunque sea una cadena, esta sera encontrada, even-
tualmente, en el paso 2. Si M no acepta ninguna cadena, el anterior algo-
ritmo nunca termina. En conclusion: el algoritmo naliza con aceptacion
de la entrada M si y solo si M acepta alguna cadena.
Por medio de un argumento diagonal de interaccion entre las enume-
raciones w
1
, w
2
, w
3
, . . ., de las cadenas binarias, y M
1
, M
2
, M
3
, . . ., de las
MT, es posible construir un lenguaje que no sea recursivamente enumerable.
7.4.1 Teorema. El lenguaje
L = {w
i
: w
i
no es aceptada por M
i
}
no es RE, es decir, no es aceptado por ninguna MT.
Demostraci on. Razonamos suponiendo que L s es RE para llegar a una
contradiccion. Si L fuera RE sera aceptado por una MT M
k
, con respecto
a la enumeracion de maquinas de Turing ya descrita. Es decir, L = L(M
k
)
para alg un k. Se tendra entonces
w
k
L =w
k
no es aceptada por M
k
=w
k
/ L(M
k
) = L.
w
k
/ L =w
k
/ L(M
k
) =w
k
es aceptada por M
k
=w
k
L.
8 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


Por lo tanto, w
k
L w
k
/ L, lo cual es una contradiccion.
El lenguaje L del Teorema 7.4.1 se denomina lenguaje de diagonali-
zacion y se denota con L
d
:
L
d
= {w
i
: w
i
no es aceptada por M
i
}.
En la seccion 7.6 se mencionaran otros lenguajes que no son RE (veanse en
particular los ejercicios 3 y 4 de esa seccion).
El argumento diagonal del Teorema 7.4.1 recuerda el argumento
utilizado por Cantor para demostrar que el conjunto de los n ume-
ros reales no es enumerable. Tal argumento consiste en suponer,
razonando por contradiccion, que el conjunto de los n umeros reales
entre 0 y 1 es enumerable: r
1
, r
2
, r
3
, . . . . Si se escriben las expan-
siones decimales de los n umeros (evitando las secuencias de nueves
nales, para eliminar representaciones m ultiples), se obtendra una
matriz innita de la forma:
r
1
= 0.a
11
a
12
a
13

r
2
= 0.a
21
a
22
a
23

r
3
= 0.a
31
a
32
a
33

.
.
.
.
.
.
r
k
= 0.a
k1
a
k2
a
k3

.
.
.
.
.
.
Se tendra entonces que un n umero real r = 0.b
1
b
2
b
3
b
k
en el
que b
i
= a
ii
y b
i
= 9 para todo i, es diferente de todos y cada uno
de los r
k
. Es decir, dada cualquier enumeracion de los n umeros
reales del intervalo [0, 1], se puede siempre construir un n umero
real que no este en la lista, y esto se puede lograr modicando los
dgitos de la diagonal principal.

Ejercicios de la seccion 7.4


Mediante razonamientos similares a los de los ejemplos de esta seccion
concluir que los siguientes lenguajes son RE:
1. L
p
= {M0w : M se detiene o para con entrada w}.
2. L
b
= {M : M se detiene al operar con la cinta en blanco}.
3. L = {M : M se detiene con al menos una entrada}.
7.5. LENGUAJES RE NO RECURSIVOS 9
4. L = {M : M acepta por lo menos dos cadenas}.
5. L = {(M
1
, M
2
) : L(M
1
) L(M
2
) = }. Nota: Las parejas de MT
(M
1
, M
2
) se pueden codicar en la forma M
1
0M
2
.
7.5. Lenguajes RE no recursivos
En esta seccion mostraremos que existen lenguajes RE que no son recursi-
vos, lo cual quiere decir que la contenencia
Lenguajes recursivos Lenguajes RE
es estricta o propia (no hay igualdad). Esto signica que existen lenguajes
que pueden ser aceptados por MT especcas pero en cualquier MT que
los acepte habra computos que nunca terminan (obviamente, los compu-
tos de las cadenas aceptadas siempre terminan). De este hecho extraemos
la siguiente importantes conclusion: los c omputos interminables, tambien
llamados bucles innitos, no se pueden eliminar de la teora de la compu-
taci on.
El primer ejemplo de un lenguaje RE no-recursivo es el lenguaje univer-
sal L
u
presentado en la seccion 7.3.
7.5.1 Teorema. El lenguaje universal,
L
u
= {M0w : M acepta a w},
es RE pero no es recursivo.
Demostraci on. En la seccion 7.3 se vio que L
u
es RE. Para mostrar que L
u
no es recursivo razonamos por contradiccion: suponemos que existe una MT
M que procesa todas las entradas M0w y se detiene siempre en un estado
de aceptacion (si M acepta a w) o en uno de rechazo (si M acepta a
w). Esta suposicion permitira construir una MT M

que acepte el lenguaje


L
d
del Teorema 7.4.1, de lo cual se deducira que L
d
es RE, contradiciendo
as la conclusion de dicho teorema.
Con una entrada w

, la maquina M

procede as: enumera sis-


tematicamente las palabras w
1
, w
2
, w
3
, . . . hasta que encuentra un k tal que
w = w
k
. Luego simula (o invoca) a M con entrada M
k
0w
k
, decidiendo
si M
k
acepta o no a w
k
. Por lo tanto, M

acepta el lenguaje L
d
, o sea,
L(M

) = L
d
. Esto signica, en particular, que L
d
es RE lo cual contradice
el Teorema 7.4.1.
10 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


La relacion entre los lenguajes recursivos, los lenguajes RE y los no RE,
se puede presentar en la siguiente graca:

RE
no RE
recursivos
RE pero no recursivos
L
d
L
u
7.6. Problemas indecidibles o irresolubles
Dada una propiedad P referente a maquinas de Turing, un problema de
decision para P consiste en buscar un algoritmo A, aplicable a toda MT M
(es decir, a toda codicacion binaria), que responda SI o NO a la pregunta:
satisface M la propiedad P? Si existe un algoritmo de decision, se dice que
el problema P es decidible o resoluble; en caso contrario, el problema P
es indecidible o irresoluble.
Un algoritmo de decision debe ser aplicable uniformemente a todas las
entradas (hay innitas entradas!) y terminar con una de las conclusiones
SI o NO (vease la graca de la pagina siguiente).
Seg un la Tesis de Church-Turing (seccion 6.8), armar que un problema
P es indecidible equivale a armar que el lenguaje
L = {M : M es el codigo de una MT que satisface P}
no es recursivo.

Ejemplo
El hecho de que el lenguaje universal L
u
no es recursivo, esta-
blecido en el Teorema 7.5.1, equivale a armar que el siguiente
problema de decision (el problema universal) es indecidible:
Dada una MT M cualquiera, sobre un alfabeto de cinta pre-
determinado, y una cadena w

, acepta M a w?
7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES 11
P se satisface
P no se satisface
Entrada o
Instancia
Algoritmo
de decision A
SI
NO
Notese que las entradas o instancias para este problema son de la forma
M0w donde M es el codigo de una MT y w es el codigo de una entrada.
Tecnica de reduccion de problemas
Conociendo que ciertos problemas son indecidibles, se puede concluir que
otros problemas de decision tambien lo son si se razona por contradiccion.
Para ser mas precisos, supongase que ya se sabe que un cierto problema P
1
es indecidible (como el problema universal, por ejemplo). Podramos con-
cluir que un problema dado P
2
es indecidible razonando por contradiccion:
si P
2
fuera decidible tambien lo sera P
1
. Esta contradiccion mostrara que
el problema P
2
no puede ser decidible. Al razonar de esta manera se dice
que el problema P
1
se reduce al problema P
2
.
Para utilizar esta tecnica de reduccion, es necesario dise nar un algoritmo
A (o una maquina de Turing) que sea capaz de convertir una entrada cual-
quiera u del problema P
1
en entradas para el problema P
2
de tal manera
que, al aplicar la supuesta MT M que resuelve el problema P
2
, se llegue
a una decision, SI o NO, del problema P
1
para la entrada u. La siguiente
graca ilustra este procedimiento; el algoritmo A, que aparece represen-
tado por el rectangulo a trozos, es la parte esencial del procedimiento de
reduccion.
12 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


Entrada
u de P
1
Entrada
de P
2
Decision para P
2
Decision para P
1
con entrada w
SI
NO
A
M

Ejemplo
Problema de la parada o problema de la detencion. Este fa-
moso problema (halting problem, en ingles), considerado por el
propio Turing, consiste en preguntar si existe un algoritmo para el siguiente
problema de decision:
Dada una MT M cualquiera, sobre el alfabeto de cinta , y una
cadena w

, se detiene M al procesar la entrada w?


El problema universal se puede reducir al problema de la parada. En otros
terminos, asumiendo la existencia de una MT M que resuelva el problema
de la parada se puede resolver el problema universal. La graca siguiente
esboza el razonamiento.
M0w M0w
Decision del problema
de la parada
Decision del problema
universal
SI
NO
M

M
Sea M0w una entrada arbitraria (M y w codican MT y cadenas sobre
, respectivamente). La maquina M

solamente devuelve la entrada M0w,


7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES 13
ya que las entradas para el problema universal y para el problema de la
parada coinciden. Puesto que M es capaz de decidir si M se detiene o no
con entrada w, se tendra:
Si M no se detiene con entrada w =M no acepta a w.
Si M se detiene con entrada w =M procesa w y decide si la acepta o no.
Conclusion: si el problema de la parada fuera decidible, tambien lo sera el
problema universal.
Lo anterior tambien permite concluir que el lenguaje
L
p
= {M0w : M se detiene con entrada w}
no es recursivo.

Ejemplo Problema de la cinta en blanco.


Dada una MT M cualquiera, sobre el alfabeto de cinta , se
detiene M al iniciar su funcionamiento con la cinta en blanco
(todas las celdas marcadas con b)?
El problema de la parada se puede reducir al problema de la cinta en blanco,
es decir, asumiendo la existencia de una MT Mque resuelva el problema de
la cinta en blanco se puede resolver el problema de la parada. La siguiente
graca esboza el razonamiento:
M0w M

Decision del problema


de la cinta en
blanco
Decision del problema
de la parada
SI
NO
M

M
Sea M0w una entrada arbitraria. Construimos una MT M

con dos cintas;


la primera (la cinta de entrada) esta inicialmente en blanco y en la segunda
14 CAP

ITULO 7. PROBLEMAS INDECIDIBLES


se escribe M0w. M

escribe luego w en la primera cinta y a continuacion


simula el procesamiento que hace M con entrada w. Como M

inicia su
procesamiento con la cinta en blanco, podemos ejecutar la maquina M,
con entrada M

(codicada). M decide si M

se detiene o no y, por lo
tanto, se obtiene una decision sobre si M se detiene o no con entrada w.
Conclusion: si el problema de la cinta en blanco fuera decidible, tambien lo
sera el problema de la parada.
Lo anterior tambien permite concluir que el lenguaje
L
b
= {M : M se detiene al operar con la cinta en blanco}
no es recursivo.

Ejercicios de la seccion 7.6


1. Mediante la tecnica de reduccion de problemas mostrar que los si-
guientes problemas de decision son indecidibles:
(a) Dada una MT M, L(M) =

? Ayuda: el problema de la cinta


en blanco se puede reducir a este problema. Para ello, dise nar un
algoritmo que genere el codigo de una MT M

de tal manera que


se cumpla: M

acepta cualquier cadena si y solo si M se detiene


con la cinta en blanco.
(b) Dada una MT M, L(M) = ? Ayuda: utilizar una idea similar
a la del problema (a).
(c) Dadas dos MT M
1
y M
2
cualesquiera, L(M
1
) = L(M
2
)? Ayuda:
si este problema fuera decidible, tambien lo sera el problema (a),
tomando como M
2
una MT adecuada.
(d) Dadas dos MT M
1
y M
2
cualesquiera, L(M
1
) L(M
2
)?
(e) Dadas dos MT M
1
y M
2
cualesquiera, L(M
1
) L(M
2
) = ?
(f) Dada una MT M = (Q, q
0
, F, , , b, ) cualquiera, una cadena
de entrada w

y estado q Q, entrara M al estado q al


procesar la cadena w? Ayuda: reducir el problema de la parada
a este problema.
(g) Dada una MT M = (Q, q
0
, F, , , b, ) cualquiera y un smbolo
s , escribira M alguna vez el smbolo s sobre la cinta si M
inicia su funcionamiento con la cinta en blanco?
2. Demostrar que si el problema de la parada fuera resoluble, todo len-
guaje RE sera recursivo.
7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES 15
3. Demostrar que los lenguajes L
a
, L
b
, L
p
y L
u
no son RE. Ayuda: usar
el Teorema 6.6.2.
4. Demostrar que el lenguaje {(M
1
, M
2
) : L(M
1
) L(M
2
) = } no es
RE.

Potrebbero piacerti anche