Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Departamento de Matematicas
Universidad Nacional de Colombia, Bogota
Teora de la Computacion
Lenguajes, automatas, gramaticas
c
Universidad Nacional de Colombia
Facultad de Ciencias
c
Rodrigo De Castro Korgi
Profesor Asociado
Departamento de Matematicas
Impresion:
UNIBIBLOS
Universidad Nacional de Colombia
Bogota D.C., 2004
Indice general
Prologo 1
2. Automatas finitos 25
2.1. Automatas finitos deterministas (AFD) . . . . . . . . . . . 25
2.2. Diagrama de transiciones de un automata . . . . . . . . . . 28
2.3. Diseno de automatas . . . . . . . . . . . . . . . . . . . . . . 29
2.4. Automatas finitos no-deterministas (AFN) . . . . . . . . . . 33
2.5. Equivalencia computacional entre los AFD y los AFN . . . 38
2.6. Automatas con transiciones (AFN-) . . . . . . . . . . . 43
iii
iv INDICE GENERAL
Bibliografa 221
vi INDICE GENERAL
Prologo
Este libro contiene lo mnimo que los estudiantes de las carreras de inge-
niera de sistemas y de matematicas deberan saber sobre los fundamentos
matematicos de la teora de la computacion. Esta basado en el material
de clase utilizado por el autor durante los ultimos anos en la Universidad
Nacional de Colombia, sede de Bogota.
A estudiantes y profesores
El libro esta escrito tanto para estudiantes de matematicas quienes, es
de suponer, tienen mas experiencia con razonamientos abstractos y demos-
traciones como para estudiantes de ingeniera. Es el profesor quien debe
establecer el tono del curso, enfatizando ya sea el rigor matematico o una
presentacion mas intuitiva y practica. Los resultados estan presentados en
forma de teoremas, corolarios y lemas, con sus respectivas demostraciones;
estas pueden omitirse, si as lo estima el profesor. En los cursos dirigidos
a estudiantes de ingeniera de sistemas, el enfasis debe residir tanto por
parte del profesor como por parte del estudiante en los ejemplos y ejer-
cicios practicos; hay que resaltar mas el significado de los enunciados que
sus demostraciones formales. El libro contiene gran cantidad de ejemplos y
problemas resueltos, con aplicaciones o ilustraciones directas de la teora.
Como prerrequisito, es imprescindible que el estudiante haya tomado al
menos un curso de matematicas discretas en el que se haya familiarizado
con las nociones basicas y la notacion de la teora intuitiva de conjuntos,
grafos, induccion matematica y logica elemental. La experiencia previa en
programacion es muy util pero, de ninguna manera, necesaria.
El material se presenta en secciones relativamente cortas, lo que permite
alguna flexibilidad en la seleccion de los topicos del curso. As, si el tiempo
1
2 PROLOGO
Agradecimientos
Durante la elaboracion de estas notas he recibido por parte de estudiantes
atentos muchas observaciones utiles que han ayudado a mejorar sustan-
cialmente la presentacion. Quiero expresarles mis agradecimientos a todos
ellos, demasiado numerosos para mencionarlos individualmente.
La primera version del curso virtual fue realizada con la ayuda del es-
tudiante de posgrado Adolfo Reyes, a quien expreso mi gratitud y reco-
nocimiento. Para la preparacion de la presente version tuve la suerte de
contar con la colaboracion del estudiante de matematicas Camilo Cubides,
con quien estoy muy agradecido por la calidad y seriedad de su trabajo.
Finalmente, quiero agradecer a Gustavo Rubiano, Director de las oficina
de publicaciones de la Facultad de Ciencias, por su continuo apoyo y su
cooperacion desinteresada.
Introduccion
3
4 INTRODUCCION
1
En el ano 2002, la Universidad Nacional de Colombia otorgo el doctorado Honoris
Causa a Noam Chomsky.
Captulo 1
Alfabetos, cadenas y lenguajes
5
6 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES
Observese que aba 6= aab. El orden de los smbolos en una cadena es sig-
nificativo ya que las cadenas se definen como sucesiones, es decir, conjuntos
secuencialmente ordenados.
Ejemplo El alfabeto = {0, 1} se conoce como alfabeto binario. Las
cadenas sobre este alfabeto son secuencias finitas de ceros y
unos, llamadas secuencias binarias, tales como
001
1011
001000001.
Ejemplo = {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}, el alfabeto del
idioma castellano. Las palabras oficiales del castellano (las que
aparecen en el diccionario DRA) son cadenas sobre .
Ejemplo El alfabeto utilizado por muchos de los llamados lenguajes de
programacion (como Pascal o C) es el conjunto de caracte-
res ASCII (o un subconjunto de el) que incluye, por lo general, las letras
mayusculas y minusculas, los smbolos de puntuacion y los smbolos ma-
tematicos disponibles en los teclados estandares.
= {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}.
u v = a1 a2 an b1 b2 bm .
(uv)w = u(vw).
u0 = ,
un = uu u} .
| {z
n veces
(uR )R = u, para u .
Ejercicios de la seccion 1.5
Prefijos de u : Sufijos de u :
b b
bc db
bcb adb
bcba aadb
bcbaa baadb
bcbaad cbaadb
bcbaadb bcbaadb
1.7. Lenguajes
Un lenguaje L sobre un alfabeto es un subconjunto de , es decir
L .
Casos extremos:
L = , lenguaje vaco.
L = , lenguaje de todas las cadenas sobre .
B
A
Ejemplos Los siguientes son ejemplos de lenguajes sobre los alfabetos
especificados.
N = {u : u = 0 o 0 no es un prefijo de u}.
AB = {uv : u A, v B}.
En general, AB 6= BA.
Ejemplo Si = {a, b, c}, A = {a, ab, ac}, B = {b, b2 }, entonces
2. A {} = {} A = A.
3. Propiedad Asociativa,
A (B C) = (A B) C.
A (B C) = A B A C.
(B C) A = B A C A.
Demostracion.
1. A = {uv : u A, v } = .
2. A {} = {uv : u A, v {}} = {u : u A} = A.
A (B C) = {a, } = .
(i) A (B C) A B A C.
(ii) A B A C A (B C).
14 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES
A0 = {},
An = AA A} = {u1 un : ui A, para todo i, 1 i n}.
| {z
n veces
1. A A = A (A0 A1 A2 )
= A1 A2 A3
= A+ .
0 1 2
7. A+ = A+ A+ A+
+ + +
= {} A A A
= A (conjuntos contenidos en A+ )
= A .
+ 1 2 3
8. A+ = A+ A+ A+ ,
= A (conjuntos contenidos en A+ )
+
= A+ .
1. x (A B)R x = uR , donde u A B
x = uR , donde u = vw, v A, w B
R
x = (vw) , donde v A, w B
x = wR v R , donde v A, w B
R R
x B A .
5. x (A )R x = uR , donde u A
x = (u1 u2 un )R , donde los ui A, n 0
x = uR R R
n u2 u1 , donde los ui A, n 0
x (AR ) .
Ejercicios de la seccion 1.12
Demostrar las propiedades 2, 3, 4 y 6 de la reflexion de cadenas.
Se pueden generalizar las propiedades 2 y 3 anteriores para uniones
e intersecciones arbitrarias, respectivamente?
18 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES
(R)(S)
(R S)
(R)
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)
20 CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES
( a) (a b) (ba)
A = b ab .
B = b(a b) .
C = (a b) ba(a b) .
Ejemplos Encontrar expresiones regulares que representen los siguientes
lenguajes, definidos sobre el alfabeto = {0, 1}:
(1 01) (1 01) 0.
c (b ac ) .
Ejercicios de la seccion 1.14
(i) = {0, 1, 2}. Lenguaje de todas las cadenas que comienzan con
2 y terminan con 1.
(ii) = {a, b, c}. Lenguaje de todas las cadenas que tienen un nume-
ro par de smbolos.
(iii) = {a, b}. Lenguaje de todas las cadenas que tienen un numero
impar de smbolos.
(iv) = {a, b, c}. Lenguaje de todas las cadenas que tienen un nume-
ro impar de smbolos.
(v) = {a, b}. Lenguaje de todas las cadenas que tienen un numero
impar de aes.
(vi) = {a, b}. Lenguaje de todas las cadenas que tienen la cadena
ab un numero par de veces.
(vii) = {a, b}. Lenguaje de todas las cadenas que tienen un numero
par de aes o un numero impar de bes.
(viii) = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen
dos unos consecutivos.
(ii) Lenguaje de todas las cadenas que tienen a lo sumo dos ceros
consecutivos.
(iii) Lenguaje de todas las cadenas cuyo quinto smbolo, de izquierda
a derecha, es un 1.
(iv) Lenguaje de todas las cadenas de longitud par 2 formadas
por ceros y unos alternados.
(v) Lenguaje de todas las cadenas cuya longitud es 4.
(vi) Lenguaje de todas las cadenas de longitud impar que tienen
unos unicamente en las posiciones impares.
(vii) Lenguaje de todas las cadenas cuya longitud es un multiplo de
tres.
(viii) Lenguaje de todas las cadenas que no contienen tres ceros con-
secutivos.
(ix) Lenguaje de todas las cadenas que no contienen cuatro ceros
consecutivos.
!(x) Lenguaje de todas las cadenas que no contienen la subcadena
101.
Automata
si (u es aceptada)
M
Cadena de
entrada u
no (u es rechazada)
El automata actua leyendo los smbolos escritos sobre una cinta semi-
infinita, 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 (tambien llamada cabeza lectora, control finito o unidad de
25
26 CAPITULO 2. AUTOMATAS FINITOS
s s
q q
2.1. AUTOMATAS FINITOS DETERMINISTAS (AFD) 27
a b
(q0 , a) = q0 (q0 , b) = q1
q0 q0 q1
(q1 , a) = q1 (q1 , b) = q2
q1 q1 q2
(q2 , a) = q1 (q2 , b) = q1 .
q2 q1 q1
u
z }| {
a a b a b
q0 q0 q0 q1 q1 q2
a a b a b a
q0 q0 q0 q1 q1 q2 q1
q0
= {a, b}.
Q = {q0 , q1 , q2 }.
q0 : estado inicial.
F = {q0 , q2 }, estados de aceptacion.
Funcion de transicion :
a b
(q0 , a) = q0 (q0 , b) = q1
q0 q0 q1
(q1 , a) = q1 (q1 , b) = q2
q1 q1 q2
(q2 , a) = q1 (q2 , b) = q1
q2 q1 q1
a b a
> q0 q1
a, b
b
q2
b
a
Version simplificada: > q0
Ejemplo L = a+ = {a, a2 , a3 , . . .}. AFD M tal que L(M ) = L:
a
a
> q0 q1
b a b
q2
a
a
Version simplificada: > q0 q1
Ejemplo = {a, b}. L = lenguaje de las cadenas que contienen exacta-
mente dos aes = b ab ab . AFD M tal que L(M ) = L:
2.3. DISENO DE AUTOMATAS 31
b b b
a a
> q0 q1 q2
Ejemplo = {0, 1}. L = lenguaje de las cadenas sobre que tienen un
numero par de smbolos (cadenas de longitud par). AFD M
tal que L(M ) = L:
0, 1
> q0 q1
0, 1
Ejemplo = {0, 1}. L = lenguaje de las cadenas sobre que contienen
un numero par de ceros. AFD M tal que L(M ) = L:
1 1
0
> q0 q1
0
Ejemplo = {a, b}. L = lenguaje de las cadenas sobre que terminan
en b. AFD M tal que L(M ) = L:
a b
b
> q0 q1
a
Ejercicios de la seccion 2.3
(i)
0 0 0 0 0
> q0 q1 q2 q3 q4
1 1 1 1 1
(ii)
1
1 0
> q0 q1 q2 q3
0
2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 33
(iii)
q1
0 1
0
1 1
> q0 q2 q3
(iv)
a a
b
b
> q0 q1 q2
1. es el alfabeto de cinta.
3. q0 Q es el estado inicial.
5.
: Q (Q)
(q, s) 7 (q, s) = {qi1 , qi2 , . . . , qik }
donde (Q) es el conjunto de subconjunto de Q.
34 CAPITULO 2. AUTOMATAS FINITOS
z u
}| {
s q
q
s
s q
Es decir, para que una cadena u sea aceptada, debe existir algun compu-
to en el que u sea procesada completamente y que finalice estando M en
un estado de aceptacion.
Ejemplo Sea M el siguiente AFN:
a a b
a b
a b
> q0 q1 q2
q0 {q0 , q1 , q3 }
b
a q1 {q1 } {q2 }
q2 {q1 , q2 }
q3
q3 {q3 }
b
Computo de rechazo: a b b
q0 q1 q2 q2
u
z }| {
Computo de aceptacion: a b b
q0 q3 q3 q3
u
z }| {
q0 q1 q2 q1
36 CAPITULO 2. AUTOMATAS FINITOS
u
z }| {
Computo abortado: a b b
q0 q0
Ejemplo En el ultimo ejemplo de la seccion 2.3 se diseno el siguiente
AFD que acepta el lenguaje de las cadenas sobre = {a, b}
que terminan en b:
a b
b
> q0 q1
a
Un AFN que acepta el mismo lenguaje y que es, tal vez, mas facil de
concebir, es el siguiente:
a
b
> q0 q1
b
a
> q0 q1
a a
q2
Ejemplo = {0, 1}, L = (01 010) . El siguiente AFN acepta a L.
2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 37
> q0 1 q1
0
0
q2 q3
1
Otro AFN que acepta el mismo lenguaje y que tiene solo tres estados es el
siguiente:
0 1
> q0 q1 q2
1
0
Ejercicios de la seccion 2.4
Disenar automatas AFD o AFN que acepten los siguientes lenguajes:
= {a, b}. L = ab+ a .
= {a, b}. L = a(a ab) .
= {a, b, c}. L = a b c .
= {0, 1, 2}. L = lenguaje de las cadenas sobre que comienzan
con 0 y terminan con 2.
= {0, 1}. Lenguaje de las cadenas de longitud par 2 formadas
por ceros y unos alternados.
= {0, 1}. Lenguaje de las cadenas que tienen a lo sumo dos ceros
consecutivos.
= {0, 1}. Lenguaje de las cadenas de longitud impar que tienen
unos unicamente en las posiciones impares.
= {a, b, c}. L = lenguaje de las cadenas sobre que contienen la
cadena bc.
= {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 expresiones regulares para L. Nota: se puede construir un AFD
con solo dos estados para aceptar este lenguaje!
38 CAPITULO 2. AUTOMATAS FINITOS
En esta seccion se mostrara que los modelos AFD y AFN son computacio-
nalmente equivalentes. En primer lugar, es facil ver que un AFD M =
(, Q, q0 , F, ) puede ser considerado como un AFN M = (, Q, q0 , F, )
definiendo (q, a) = {(q, a)} para cada q Q y cada a . Para la
afirmacion recproca tenemos el siguiente teorema.
b
a
> q0 q1 a b
q0 {q1 , q2 }
a a
q1 {q1 }
q2
q2 {q2 }
a b
q0 {q1 , q2 }
q1 {q1 }
q2 {q2 }
{q1 , q2 } {q2 } {q1 }
a
a a
> {q0 } {q1 , q2 } {q2 }
{q1 }
a a a
> p0 p1 p2
p3
b
Ejemplo El siguiente AFN M , presentado en la seccion 2.4, acepta el
lenguaje L = (01 010) sobre = {0, 1}.
40 CAPITULO 2. AUTOMATAS FINITOS
0 1
> q0 q1 q2
1
0 1
q0 {q1 }
q1 {q0 , q2 }
q2 {q0 }
{q0 , q2 } {q0 , q1 }
{q0 , q1 } {q1 } {q0 , q2 }
0
> {q0 } {q1 } {q2 }
1 0
0
{q0 , q2 } {q0 , q1 }
1
0
> p0 p1
1 0
0
p2 p3
1
b 0 , w) es el
Segun esta definicion, para una cadena de entrada w , (q
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:
b 0 , w) F }.
L(M ) = {w : (q
b w) se no-
Notacion. Sin peligro de ambiguedad, la funcion extendida (q,
tara simplemente (q, w).
b : Q (Q), de manera
Luego se extiende a una funcion
similar a como se hace para los AFD. Recursivamente,
b ) = {q}, q Q,
(q,
b
(q, a) = (q, a), q Q, a ,
[
(q,
b wa) = ((q,b w), a) = (p, a), q Q, a , w .
b
p(q,w)
b 0 , w) es el
Segun esta definicion, para una cadena de entrada w , (q
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
b 0 , w) = . Usando la funcion extendida ,
(q b el lenguaje aceptado por M
se puede describir de la siguiente forma:
b 0 , w) contiene un estado de aceptacion}.
L(M ) = {w : (q
b w) se
Notacion. Sin peligro de ambiguedad, la funcion extendida (q,
notara simplemente (q, w).
M = (, (Q), {q0 }, F , )
donde
: (Q) (Q)
(S, a) 7 (S, a) := (S, a).
F = {S (Q) : S F 6= }.
Se demostrara que L(M ) = L(M ) probando que, para toda cadena w ,
({q0 }, w) = (q0 , w). Esta igualdad se demostrara por induccion sobre w.
Para w = , claramente se tiene ({q0 }, ) = (q0 , ) = {q0 }. Para w = a,
a , se tiene
({q0 }, a) = ({q0 }, a) = (q0 , a).
Supongase (hipotesis de induccion) que ({q0 }, w) = (q0 , w), y que a .
Ejercicios de la seccion 2.5
Disenar AFD equivalentes a los siguientes AFN:
b
> q0 a q1
b
b
q2 q3
a
0 0 1
0 1
> q0 q1 q2
1
0
q3
En los automatas AFN-, al igual que en los AFN, puede haber multiples
computos para una misma cadena de entrada, as como computos aborta-
dos.
Ejemplo M:
a b
b
q1 q2
> q0
a q3 q4
b a
u = aab
v = abaa
w = abbaa
a a b
q0 q1 q1 q2
l
q1
a b a a
q0 q3 q3 q4 q4
l
q4
2.6. AUTOMATAS CON TRANSICIONES (AFN-) 45
c
AFN- que acepta a L:
a b c
> q0 q1 q2
AFD que acepta el lenguaje de las cadenas con un numero par de aes:
b b
a
> q0 q1
a
AFD que acepta el lenguaje de las cadenas con un numero par de bes:
a a
b
> q0 q1
b
AFN- que acepta el lenguaje de las cadenas con un numero par de aes o
un numero par de bes:
46 CAPITULO 2. AUTOMATAS FINITOS
b b
a
q1 q2
a
> q0
b
q3 q4
b
a a
A diferencia de los AFD y los AFN, en los AFN- pueden existir computos
infinitos, es decir computos que nunca terminan. Esto puede suceder si
el automata ingresa a un estado desde el cual haya varias transiciones
encadenadas que retornen al mismo estado, como por ejemplo:
Ejercicios de la seccion 2.6
Disenar AFN- que acepten los siguientes lenguajes:
: Q (Q)
(q, a) 7 (q, a) := ([q], a) .
a b c
> q0 q1 q2
> q0 q1 q2
a a, b b, c c
b
Ejercicios de la seccion 2.7
Construir AFN equivalentes a los siguientes AFN-:
> q0 b q1
a,
b
q2 q3
2.8. TEOREMA DE KLEENE. PARTE I 49
a a b
> q0 q1 q2
q3
AFN
AFD AFN-
T. de Kleene II T. de Kleene I
Lenguajes regulares
50 CAPITULO 2. AUTOMATAS FINITOS
M
Procedimiento
Expresion regular R AFN- tal que L(M ) = R.
algortmico
> q0 q1
> q0
M1 M2
.. ..
> . > .
2.8. TEOREMA DE KLEENE. PARTE I 51
M1
..
.
>
M2
..
.
M1 M2
.. .. ..
> . . .
Automata que acepta R . Los estados finales del nuevo automata son
los estados finales de M1 junto con el estado inicial.
52 CAPITULO 2. AUTOMATAS FINITOS
M1
..
> .
a
>
>
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}.
a b
>
2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE 53
b a
>
a b
>
b a
a b
>
b a
54 CAPITULO 2. AUTOMATAS FINITOS
a b
a
>
b a
>
b
a
>
a
2.10. LEMA DE ARDEN 55
a b
b a
>
a
a
Ejercicios de la seccion 2.9
Disenar automatas AFN- que acepten los siguientes lenguajes sobre el
alfabeto = {a, b, c}:
a (b ab ab a)c (a b)(a ac) .
c a(a ba) (abc) c (a cb c).
(ac) a(a ab a) (abc) (cba) (c ab ba ca) (ca cb) .
A(A B) B = A+ B B = (A+ )B = A B.
A B C = A(A B C) B
= A+ B AC B
= (A+ )B AC
= A B AC.
(A B C) C = (A B C) (AC C),
C = AC C.
Ejercicios de la seccion 2.10
(i) X = aX bX.
(ii) X = aX b ab bX a .
Ai = {w : (qi , w) F 6= }.
b b
A0 = (a b) a2 (a b)
Ejemplo Encontrar una expresion regular para el lenguaje aceptado por
el siguiente AFN M :
b a
a a b b
> q0 q1 q2 q3 q4
a
(9) A2 = b b(a ba) ba A2 b(a ba) .
Aplicando el lema de Arden en (9):
(10) A2 = b b(a ba) ba b(a ba) b .
Si se sustituye (10) en (2) y luego el valor de A1 obtenido se sustituye en
(1), se obtiene finalmente:
A0 = a2 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 numero par de aes
y un numero par de bes. El siguiente automata acepta el lenguaje L:
a
> q0 q1
a
b b b b
a
q2 q3
a
Ejercicios de la seccion 2.12
Utilizando el lema de Arden, encontrar expresiones regulares para los
siguientes lenguajes sobre = {a, b}:
a b a
> q0 q1 q2
a a
q3
(ii)
b
b a b a
> q0 q1 q2 q3 q4
b
b
Captulo 3
Otras propiedades de los lenguajes
regulares
63
64 CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES
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 muestra en la siguiente grafica, w se puede descomponer como
w = uvx, donde |uv| n, v 6= .
w
z }| {
| {z }| {z }| {z }
u v x
q0 q q p
q x
u
> q0 p
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.
w = uvx, v 6= , |uv| n.
u = ar , para algun r 0,
v = as , para algun s 1.
Entonces,
x = an(r+s) bn = anrs bn .
Por el lema de bombeo, uv i x L para todo i 0. En particular, si i = 0,
ux L. Pero ux = ar anrs bn = ans bn . Como n s 6= 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
u = ar , para algun r 0,
v = as , para algun s 1.
Entonces,
x = an(r+s) ban = anrs ban .
66 CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES
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
combinar para obtener automatas que acepten los lenguajes L1 L2 , L1 L2
y L1 L2 .
Para disenar un automata que acepte L1 L2 , segun el argumento del
Teorema 3.3.1, hay que usar la igualdad L1 L2 = L1 L2 y los proce-
dimientos para union, complemento, eliminacion de transiciones y elimi-
nacion del no-determinismo. El siguiente teorema muestra que existe una
construccion mas sencilla para el caso L1 L2 .
M = (, Q1 Q2 , (q1 , q2 ), F1 F2 , )
donde
: (Q1 Q2 ) Q1 Q2
((qi , qj ), a) = (1 (qi , a), 2 (qj , a))
satisface L(M ) = L(M1 ) L(M2 ).
w L(M ) ((q1 , q2 ), w) F1 F2
(1 (q1 , w), 2 (q2 , w)) F1 F2
(q1 , w) F1 & (q2 , w) F2
w L(M1 ) & w L(M2 )
w L(M1 ) L(M2 ).
Ejemplo Utilizar el Teorema 3.3.2 para construir un AFD que acepte el
lenguaje L de todas las cadenas sobre = {a, b} que tienen
un numero par de aes y un numero par de bes.
AFD M1 que acepta las cadenas con un numero par de aes:
b b
a
> q1 q3
a
3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS 71
a a a a
b
(q3 , q2 ) (q3 , q4 )
Ejercicios de la seccion 3.3
Utilizar el Teorema 3.3.2 para construir AFD que acepten los siguien-
tes los siguientes lenguajes sobre el alfabeto {a, b, c}:
3.4. Homomorfismos z
Un homomorfismo 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
homomorfismo es una funcion h : tal que h() = y para toda
cadena u = a1 a2 an , con ai , 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)] .
SI M satisface P
Automata M Algoritmo
de decision
NO M no satisface P
3.6.2 Corolario. Sea un alfabeto dado. Existen algoritmos para los si-
guientes problemas de decision referentes a automatas sobre :
3.6. ALGORITMOS DE DECISION 77
INICIALIZAR:
ALC := {q0 }, donde q0 es el estado inicial de M .
REPETIR:
Para cada q ALC buscar los arcos que salen de q y
anadir a ALC los estados p para los cuales haya un
arco de q a p con cualquier etiqueta (puede ser ).
HASTA:
No se anaden nuevos estados a ALC.
L1 L2 L1 L2 = .
81
82 LENGUAJES LIC Y GRAMATICAS GIC
uAv = uwv.
u1 = u2 = u3 = = un1 = un
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 |
Ejemplo La gramatica
(
S aS | aA
A bA | b
Ejemplo Encontrar una GIC que genere el lenguaje L = {ai bi : i 0}
sobre = {a, b}, el cual no es un lenguaje regular.
Solucion.
S aSb | .
Ejemplo Encontrar una GIC que genere el lenguaje de todos los
palndromos sobre = {a, b}, el cual no es lenguaje regular.
Solucion.
S aSa | bSb | a | b | .
Ejemplo Encontrar una GIC que genere el lenguaje de todas las cadenas
sobre = {a, b} que tienen un numero par de smbolos.
Solucion.
S aSa | bSb | aSb | bSa |
Dos gramaticas equivalentes son:
(
n S AAS |
S aaS | bbS | abS | baS |
Aa|b
Ejemplo Encontrar una GIC que genere el lenguaje (ab ba) sobre
= {a, b}.
Solucion.
S abS | baS | .
Ejemplo Demostrar que la gramatica G dada por:
S (S)S |
Ejercicios de la seccion 4.2
Encontrar GIC que generen los siguientes lenguajes sobre = {a, b}:
Encontrar GIC que generen los siguientes lenguajes sobre = {a, b, c, d}:
! Sea = {0, 1}. Encontrar una GIC que genere el lenguaje de las
cadenas que tienen igual numero de ceros que de unos.
88 LENGUAJES LIC Y GRAMATICAS GIC
b b
b b b b b
b b b b b b b b
b b b b b b b b b b b
b b b b b
b b b
b b b b b
b b b b b b b
b b b b b b b b b
4.3. ARBOL DE UNA DERIVACION 89
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.
es
S
b
A b b
B
a b
b b b
B b
a
b b
S = AB = aB = abBa = abba.
90 LENGUAJES LIC Y GRAMATICAS GIC
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
El arbol de la derivacion
es
S
b
B b b
A b
a
b b
b b
B b b
C
b b
a b b
B
Ejercicios de la seccion 4.3
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.
S S
b b
S b b b
S S b b b
S
+
b
S b b b
S S b b b
S b
1 + 0
b b b b
1 0 1 1
S
S b
A
a b
S b b
a b
S b b
A
a b
S b b
A b
a b
S b
A b
b b
A b
b
b b b
A
b
b
b
+
El lenguaje generado por esta gramatica es a b . Se puede construir
una gramatica no-ambigua que genere el mismo lenguaje:
S AB |
G : A aA | a
B bB |
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.
Ejercicios de la seccion 4.4
Mostrar que las siguientes gramaticas son ambiguas:
(i) S aSbS | bSaS | .
(ii) S abS | abScS | .
Mostrar que las gramaticas G1 y G2 siguientes son ambiguas. En
cada caso, encontrar el lenguaje generado por la gramatica y construir
luego una gramatica no-ambigua que genere el mismo lenguaje.
S AaSbB |
G1 : A aA | a
B bB |
S ASB | AB
G2 : A aA | a
B bB |
hreali hdgitosihdecimalihexpi
hdgitosi hdgitosihdgitosi | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
hdecimali .hdgitosi |
hexpi Ehdgitosi | E+hdgitosi | E-hdgitosi |
4.5. GRAMATICAS PARA LENGUAJES DE PROGRAMACION 95
hidentificadori hletraihlsdsi
hlsdsi hletraihlsdsi | hdgitoihlsdsi |
hletrai a | b | c| | x | y | z | A | B | C | | Y | Z
hdgitoi 0|1|2|3|4|5|6|7|8|9
Ejercicios de la seccion 4.5
Con la gramatica del primer ejemplo de esta seccion hacer derivacio-
nes y arboles de derivacion para las cadenas 235.101E+25 y 0.01E-12.
Encontrar una GIC, con una sola variable, para generar los identifi-
cadores, es decir, el lenguaje del segundo ejemplo de esta seccion.
Una gramatica similar a la siguiente se usa en muchos lenguajes de
programacion para generar expresiones aritmeticas formadas por su-
mas y productos de numeros en binario:
Los lenguajes naturales son casi siempre ambiguos porque existen muchas
reglas de produccion, lo que da lugar a multiples arboles de derivacion para
ciertas oraciones.
Ejemplo La oracion
Juan mira a una persona con un telescopio
4.6. GRAMATICAS PARA LENGUAJES NATURALES z 97
hOracioni
b
que q = wp tiene longitud n + 1, w = w a y en el ultimo paso se aplica la
produccion p ap. Entonces
q = w p = w ap = wp.
a b
b
> q0 q1
a
M induce la gramatica regular
(
q0 aq0 | bq1
G:
q1 bq1 | aq0 |
0 0 0
1 1
>S A B
Demostracion.
A a1 a2 an B
A a1 A1
A1 a2 A2
..
.
An1 an B
(i) ab a.
(ii) (ab ba) .
(iii) a+ b b+ a b.
(iv) 0 (10 01 ).
4.8.1. Definiciones.
Existen algoritmos para detectar todas las variables inutiles de una GIC
que permiten construir una gramatica G equivalente a una gramatica G
dada, de tal manera que G no tenga variables inutiles.
INICIALIZAR:
TERM := A V : produccion A w, w
REPETIR:
TERM := TERM A V : produccion A w, w ( TERM)
HASTA:
No se anaden nuevas variables a TERM
Ejemplo Encontrar las variables terminables de la siguiente gramatica.
S ACD | bBd | ab
A aB | aA | C
B aDS | aB
G:
C aCS | CB | CC
D bD | ba
E AB | aDb
Solucion.
TERM1 = {S, D}.
TERM2 = {S, D} {B, E} = {S, D, B, E}.
TERM3 = {S, D, B, E} {A} = {S, D, B, E, A}.
TERM4 = {S, D, B, E, A} { } = {S, D, B, E, A}.
TERM = {S, A, B, D, E}.
INICIALIZAR:
ALC := {S}
REPETIR:
ALC := ALC A V : produccion B uAv, B ALC y
u, v (V )
HASTA:
No se anaden nuevas variables a ALC
Ejemplo Encontrar las variables alcanzables de la siguiente gramatica.
S aS | AaB | ACS
A aS | AaB | AC
B bB | DB | BB
G: C aDa | ABD | ab
D aD | DD | ab
E F F | aa
F aE | EF
Solucion.
ALC1 = {S}.
ALC2 = {S} {A, B, C} = {S, A, B, C}.
ALC3 = {S, A, B, C} {D} = {S, A, B, C, D}.
ALC4 = {S, A, B, C, D} { } = {S, A, B, C, D}
ALC = {S, A, B, C, D}.
(1) Es G2 = G4 ?
Variables alcanzables de G1 :
ALC1 = {S}.
ALC2 = {S} {B, C}.
ALC3 = {S, B, C} { }.
4.9. ELIMINACION DE LAS PRODUCCIONES 107
Ejercicios de la seccion 4.8
INICIALIZAR:
ANUL := {A V : A es una produccion}
REPETIR:
ANUL := ANUL A V : prod. A w, w (ANUL)
HASTA:
No se anaden nuevas variables a ANUL
4.9.3 Teorema. Dada una GIC G, se puede construir una GIC G equi-
valente 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.9.2, las producciones de
se pueden eliminar (excepto S ) anadiendo nuevas producciones que
simulen el efecto de las producciones eliminadas. Mas concretamente, por
cada produccion A u de G se anaden 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.
S AB | ACA | ab
A aAa | B | CD
G: B bB | bA
C cC |
D aDc | CC | ABb
4.9. ELIMINACION DE LAS PRODUCCIONES 109
ANUL1 = {C}.
ANUL2 = {C} {D} = {C, D}.
ANUL3 = {C, D} {A} = {C, D, A}.
ANUL4 = {C, D, A} {S} = {C, D, A, S}.
ANUL5 = {C, D, A, S} { } = {C, D, A, S}.
Ejercicios de la seccion 4.9
UNIT(A) := {X V : una derivacion A = X
que usa unicamente producciones unitarias}.
INICIALIZAR:
UNIT(A):={A}
REPETIR:
UNIT(A):= UNIT(A) X V : una produccion Y X
con Y UNIT(A)
HASTA:
No se anaden nuevas variables UNIT(A)
4.10. ELIMINACION DE LAS PRODUCCIONES UNITARIAS 111
4.10.3 Teorema. Dada una GIC G, se puede construir una GIC G equi-
valente a G sin producciones unitarias.
Demostracion. Las producciones unitarias de G se pueden eliminar anadien-
do 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 gramatica original G.
Ejemplo Eliminar las producciones unitarias de la siguiente gramatica.
S AS | AA | BA |
A aA | a
G:
B bB | bC | C
C aA | bA | B | ab
Ejemplo Encontrar una GIC en FNC equivalente a la siguiente a la
gramatica:
S aS | aA | D
A aAa | aAD |
G: B aB | BC
C aBb | CC |
D aB | bA | aa | A
S ASB | BB
G: A aA | a
B bBS |
Ejercicios de la seccion 4.11
Las derivaciones en una gramatica que este en FNG tienen dos caractersti-
cas 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 gramatica equivalente en FNG. Para presentar el procedimiento
necesitamos algunos resultados preliminares.
A Aw, w (V ) .
{1 , 2 , . . . , m } {1 , 2 , . . . , n }
Demostracion. Inmediato.
Ejemplo Encontrar una gramatica en FNG equivalente a la siguiente
gramatica (que esta en FNC):
(
S AA | a
G:
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
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 2:
S AB | BC
B AA | CB | a
A a | aZ
Ca|b
Z B | BZ
Paso 3:
S aB | aZB | aAC | aZAC | aBC | bBC | aC
B aA | aZA | aB | bB | a
A a | aZ
Ca|b
Z B | BZ
Paso 4:
S aB | aZB | aAC | aZAC | aBC | bBC | aC
B aA | aZA | aB | bB | a
A a | aZ
Ca|b
Z aA | aZA | aB | bB | a | aAZ | aZAZ | aBZ | bBZ | aZ
S AB
A AB | CB | a
B AB | b
C AC | c
Paso 2:
S AB
A CB | a | CBZ1 | aZ1
B CBB | aB | CBZ1 B | aZ1 B | b
C CBC | aC | CBZ1 C | aZ1 C | c
Z1 B | BZ1
Prosiguiendo con el paso 2, se elimina la recursividad a izquierda de
la variable C:
S AB
A CB | a | CBZ1 | aZ1
B CBB | aB | CBZ B | aZ B | b
1 1
C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2
Z1 B | BZ1
Z BC | BZ C | BCZ | BZ CZ
2 1 2 1 2
Paso 3:
S 14 producciones
A a | aZ1 | 6 producciones | 6 producciones
B aB | aZ B | b | 6 producciones | 6 producciones
1
C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2
Z1 B | BZ1
Z BC | BZ C | BCZ | BZ CZ
2 1 2 1 2
Ejercicios de la seccion 4.12
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
S
b
k=3 b b
|w| 2 = 21 = 2k2
b b
S
b
b b
b b b b
S
b
b b
k=5 b b b b
|w| 8 = 23 = 2k2
b b b b b b b b
b b b b b b b b
Demostracion.
4.13.3. Lema de bombeo para LIC. Dado un LIC L, existe una cons-
tante n (llamada 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.
(3) v 6= o x 6= .
S = uAy, A = vAx, A = w.
As que
S = uAy = uvAxy = uvwxy = z.
| {z } | {z } | {z } | {z } | {z }
u v w x y
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 4.13.2,
podemos concluir que |vwx| 2k = n. Ademas:
S = uAy = uvAxy = uv i Axi y = uv i wxi 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
Ejemplo Demostrar que el lenguaje L = {ai bi ci : i 0} sobre =
{a, b, c} no es un LIC.
Solucion. Argumento por contradiccion. Si L fuera LIC, por el lema de
bombeo, existira una constante de bombeo n. Sea z = an bn cn ; se tiene que
z L y |z| > n. Por lo tanto, z se puede descomponer como z = an bn cn =
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 an bn cn debe tener longitud n+2). Como v 6= o x 6= ,
se distinguen dos casos:
Caso 1. Alguna de las cadenas v o x contiene dos tipos de terminales.
Entonces en uv 2 wx2 y aparecen algunas bes seguidas de aes o algunas
ces seguidas de bes. En cualquier caso, uv 2 wx2 y
/ L.
Por (i), (ii) y (iii) se puede escoger i de tal manera que |uv i wxi y| no sea un
numero primo, lo cual contradice que uv i wxi y L para todo i 0. Esta
contradiccion muestra que L no es un LIC.
Ejercicios de la seccion 4.13
Utilizar el lema de bombeo para demostrar que los siguientes lenguajes no
son LIC:
Ejemplo Utilizar las construcciones del Teorema 4.14.1 para encontrar
una GIC que genere el lenguaje L L donde L = ba+ y L =
1 2 1 2
{ai bj ai : i 0, j 1}.
Solucion. El lenguaje L1 se puede generar con la gramatica
(
S1 bA
A aA | a
y L2 con (
S2 aS2 a | bB
B bB |
La siguiente gramatica genera L2 :
S3 S2 S3 |
S2 aS2 a | bB
B bB |
Finalmente, el lenguaje L1 L2 se puede generar con
S S1 S3
S1 bA
A aA | a
S3 S2 S3 |
S2 aS2 a | bB
B bB | .
Tanto L1 como L2 son LIC porque son generados por las gramaticas
G1 y G2 , respectivamente:
S AB
S AB
G1 : A aAb | G2 : A aA |
B cB | B bBc |
(i) Mostrar que los dos lenguajes siguientes, sobre = {a, b, c, d},
son LIC:
L1 = {ai bi cj dj : i, j 1},
L2 = {ai bj cj dk : i, j, k 1}.
A1 b b
A2
b b
a1 a2
en los que aparecen exactamente 3 variables. Para derivar cadenas de lon-
gitud 3 solo se puede proceder de dos formas:
3
S = A1 A2 = B1 B1 A2 = a1 a2 a3 ,
o
2
S = A1 A2 = a1 A2 = a1 B1 B2 = a1 a2 a3 .
Los arboles de estas derivaciones son:
136 LENGUAJES LIC Y GRAMATICAS GIC
S S
b b
A1 b b
A2 A1 b b
A2
B1 b b
B2 b b
B1 b b
B2
a3 a1
b b b b
a1 a2 a2 a3
Cada uno de estos arboles tiene exactamente 5 nodos etiquetados con va-
riables. La situacion general es la siguiente: un arbol de derivacion de una
cadena de longitud n tiene exactamente 2n 1 nodos etiquetados con va-
riables. 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 exactamente 2n 2 nodos
interiores etiquetados con variables. La demostracion general puede hacerse
por induccion sobre n y la dejamos como ejercicio para el estudiante.
Por consiguiente, para determinar si una cadena dada de longitud n es
o no generada por G, consideramos todos los posibles arboles de derivacion
con 2n 2 variables interiores. Este algoritmo es ineficiente porque si G
tiene k variables, hay que chequear no menos de k 2n2 arboles (esto sin
contar las posibilidades para las hojas). Por consiguiente, el procedimiento
tiene complejidad exponencial con respecto al tamano de la entrada.
Para resolver el problema de la pertenencia hay un algoritmo muy efi-
ciente (su complejidad es polinomial) en el que se usa la llamada progra-
macion dinamica o tabulacion dinamica, tecnica para llenar tablas progre-
sivamente, re-utilizando informacion previamente obtenida. El algoritmo
que presentaremos se denomina algoritmo CYK (nombre que corresponde
a las iniciales de los investigadores Cocke, Younger y Kasami). El algoritmo
(exhibido en la pagina siguiente) tiene como entrada una GIC G en FNC
y una cadena de n terminales w = a1 a2 an ; se aplica llenando una tabla
de n filas (una por cada terminal de la entrada w) y n columnas. Xij 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,
+
Xij = conjunto de variables A tales que A = ai ai+1 ai+j1 .
Al determinar los conjuntos Xij se obtienen las posibles maneras de derivar
subcadenas de w que permitan construir una derivacion de la cadena com-
pleta 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 sucesi-
vamente. La ultima columna (j = n) corresponde a la unica subcadena de
4.15. ALGORITMOS DE DECISION PARA GIC 137
Algoritmo CYK
Entrada:
Gramatica G en FNC y cadena de n terminales w = a1 a2 an .
Inicializar:
j = 1. Para cada i, 1 i n,
Xij = Xi1 := conjunto de variables A tales que A ai
es una produccion de G.
Repetir:
j := j + 1. Para cada i, 1 i n j + 1,
Xij := conjunto de variables A tales que A BC es
una produccion de G, con B Xik y C Xi+k,jk ,
considerando todos los k tales que 1 k < j 1.
Hasta: j = n.
Salida: w L(G) si y solo si S X1n .
Ejemplo Vamos a aplicar el algoritmo CYK a la gramatica:
S BA | AC
A CC | b
G:
B AB | a
C BA | a
Ejercicios de la seccion 4.15
Sea G = (V, , S, P ) una gramatica dada. Encontrar algoritmos para
los siguientes problemas de decision:
Sea G la gramatica
S BA | AB
A CA | a
G:
B BB | b
C BA | c
2. q0 Q es el estado inicial.
5. es el alfabeto de pila.
: Q ( ) (Q ).
143
144 CAPITULO 5. AUTOMATAS CON PILA
..
.
..
.
La transicion
(q, a, s) = (q , )
..
.
Un paso
.. computacional
.
{
..
}|
.
s
{z
{
.. ..
}|
}|
. u . u
z }| { z }| {
a a
z
q q
(q, a, s) = (q , )
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
(q0 , aaabbb, z0 ) (q0 , aabbb, Az0 ) (q0 , abbb, AAz0 ) (q0 , bbb, AAAz0 )
(q1 , bb, AAz0 ) (q1 , b, Az0 ) (q1 , , z0 ) (q2 , , z0 ).
148 CAPITULO 5. AUTOMATAS CON PILA
(q0 , aabbb, z0 ) (q0 , abbb, Az0 ) (q0 , bbb, AAz0 ) (q1 , bb, Az0 )
(q1 , b, z0 ) (q2 , b, z0 ). [computo abortado]
(q0 , aaabb, z0 ) (q0 , aabb, Az0 ) (q0 , abb, AAz0 ) (q0 , bb, AAAz0 )
(q1 , b, AAz0 ) (q1 , , Az0 ).
sobre el alfabeto = {a, b, c}. Notese que las cadenas w y wR solo poseen
aes y/o bes.
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
5.2. AUTOMATAS CON PILA NO-DETERMINISTAS (AFPN) 149
Disenar AFPD que acepten los siguientes lenguajes sobre = {0, 1}:
: Q ( ) f (Q ),
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
Ejemplo Disenar un AFPN que acepte el lenguaje de las cadenas sobre
el alfabeto = {a, b} con igual numero de aes que de bes.
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 },
F = {q1 },
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
= {a, b, c},
= {z0 , A},
Q = {q0 , q1 , q2 , q3 , q4 },
F = {q4 },
O sea, una cadena es aceptada por pila vaca si se puede ir, en cero, uno o
mas pasos, desde la configuracion inicial hasta una configuracion en la que
la pila este completamente desocupada1 . Notese que, para ser aceptada, la
cadena de entrada w debe ser procesada completamente.
Para automatas AFPN las nociones de aceptacion por pila vaca y por
estados finales resultan ser equivalentes, como se establece en los dos si-
guientes teoremas. Es importante anotar que para automatas deterministas
AFPD los dos tipos de aceptacion no resultan ser equivalentes.
5.3.2 Teorema. Si L = L(M ) para algun automata con pila AFPN M ,
entonces L = N (M ) para algun AFPN M . Es decir, M acepta por pila
vaca lo que M acepta por estado final.
Demostracion. Sea M = (Q, q0 , F, , , z0 , ). M se disena modificando
M de tal manera que vace su pila cuando M haya aceptado una cadena
de entrada. Concretamente, se define M como
Por lo tanto, w N (M ).
Un razonamiento similar muestra que w N (M ) implica w L(M )
(ejercicio para el estudiante). En conclusion, L(M ) = N (M ).
Disenar AFPN que acepten por pila vaca los siguientes lenguajes:
5.4.1 Teorema. Dada una GIC G, existe un AFPN M tal que L(G) =
L(M ).
Q = {q0 , q1 , q2 },
F = {q2 },
= {a, b, S, A, B, z0 },
Ejemplo La siguiente gramatica genera los palndromos de longitud par,
sobre = {a, b}, es decir, el lenguaje L = {ww R : w }:
S aSa | bSb | .
Q = {q0 , q1 , q2 },
F = {q2 },
= {a, b, S, z0 }.
Disenar una gramatica, con una sola variable, que genere el lenguaje
L = {a2i b3i : i 0} y utilizar luego el procedimiento del Teore-
ma 5.4.1 para construir un AFPN que acepte a L. Comparar este
automata con el construido en el ejercicio de la seccion 5.2.
160 CAPITULO 5. AUTOMATAS CON PILA
del numeral 3 indica las posibles maneras en las que M puede extraer la
cadena Y1 Y2 Yk de la pila, una vez se haya sustituido el tope de la pila
X por dicha cadena, 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,
5.5. AUTOMATAS CON PILA Y LIC. PARTE II. z 161
+
por induccion sobre el numero de pasos del computo (q, w, X) (p, , ).
Cuando hay un solo paso, el computo es de la forma (q, a, X) (p, , )
o de la forma (q, , X) (p, , ). Si (q, a, X) (p, , ), entonces (p, )
(q, a, X); as que [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] = .
n
Para el razonamiento inductivo, supongase que (q, w, X) (p, , ) don-
de n > 1. Considerando el primer paso de este computo de n pasos, podemos
escribir:
(5.2) (q, ax, X) (r0 , x, Y1 Y2 Yk ) (p, , ),
+
donde rk = p. Por la hipotesis de induccion, [ri1 Yi ri ] = wi para i =
1, 2, . . . , k. Por consiguiente,
+
[qXp] = [qXrk ] = a[r0 Y1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ] = aw1 w2 wk = w.
162 CAPITULO 5. AUTOMATAS CON PILA
[q0 z0 q1 ] .
[q0 Bq0 ] a.
[q0 Aq0 ] b.
[q0 Aq0 ] a[q0 Aq0 ][q0 Aq0 ] | a[q0 Aq1 ][q1 Aq0 ]
[q0 Aq1 ] a[q0 Aq0 ][q0 Aq1 ] | a[q0 Aq1 ][q1 Aq1 ].
[q0 Bq0 ] b[q0 Bq0 ][q0 Bq0 ] | b[q0 Bq1 ][q1 Bq0 ]
[q0 Bq1 ] b[q0 Bq0 ][q0 Bq1 ] | b[q0 Bq1 ][q1 Bq1 ].
S [q0 z0 q0 ] | [q0 z0 q1 ].
Ejercicios de la seccion 5.5
2. q0 Q es el estado inicial.
4. es el alfabeto de entrada.
: Q Q {, }
167
168 CAPITULO 6. MAQUINAS DE TURING
(q, a) = (p, b, D)
a1 a2 ai1 qai an
a1 a2 ai1 ai an
aabq2 baaa
q5 ababba
abbbaabq0 bba
6.1. MAQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES 169
a|b
q p
6.1. MAQUINAS DE TURING COMO ACEPTADORAS DE LENGUAJES 171
(q, a) = (p, b, )
(q, a) = (q , b, ),
(q , s) = (p, s, ), para todo smbolo s .
> q0 q1
b|b 0|0
q2
Ejemplo En este ejemplo se construye una MT M que acepta el lenguaje
L = {ai bi ci : i 0} y que se detiene al procesar todas las
entradas. Por consiguiente, L es un lenguaje recursivo aunque no es LIC,
172 CAPITULO 6. MAQUINAS DE TURING
b|b
q4 q5
a|a
b|b
b
Y |Y a|a b|b Y |Y
b|
Y |Y Z|Z Z|Z
b|Y c|Z
> q0 a|X q1 q2 q3
X|X
q0 aabbcc Xq1 abbcc Xaq1 bbcc XaY q2 bcc XaY bq2 cc XaY bq3 bZc
q3 XaY bZc Xq0 aY bZc XXq1 Y bZc XXY q1 bZc
XXY Y q2 Zc XXY Zq2 c XXY q3 ZZ Xq3 XY ZZ
XXq0 Y Y ZZ XXY q4 Y ZZ XXY Y ZZq4 b
XXY Y ZZbq5 b.
Por otro lado, la cadena abbbcc, que tampoco esta en L, se procesara as:
q0 abbcc Xq1 bbcc XY q2 bcc XY bq2 cc XY q3 bZc q3 XY bZc
Xq0 Y bZc XY q4 bZc (computo abortado).
Ejercicios de la seccion 6.1
Segun los ejercicios de la seccion 4.13, los siguientes lenguajes no son LIC.
Disenar MT que los acepten, escribiendo explcitamente la idea utilizada en
el diseno. Presentar cada MT por medio de un diagrama de transiciones.
L = {ai bi cj : j i}.
L = {ai bj ck : 1 i j k}.
L = {ai bj ci dj : i, j 0}.
L = {ai bi ci di : i 0}.
174 CAPITULO 6. MAQUINAS DE TURING
Entrada: b a1 ak1 ak b
l l l ll
Salida: a1 a2 ak b b
La flecha l indica que las casillas senaladas 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 la subrutina, respectivamente.
La MT que aparece a continuacion sirve para implementar la subrutina
TI cuando el alfabeto de entrada es {a, b, c}:
b|b
qa
a|b b|a
b|b b|b
> q0 qb q1
c|b qc b|c
Entrada: ba1 a2 ak b
ll l l l
Salida: b b a1 ak1 ak
Subrutina BI, primer blanco a la izquierda. Busca el primer smbolo b a la
izquierda de una cadena w que no posee blancos:
Entrada: bwb
l l
Salida: bwb
Entrada: bwb
l l
Salida: bwb
Entrada: abb bb
ll l l l
Salida: abb bb
Entrada: bwb b
l l l
Salida: bwb w b
blancos:
Entrada: b bwb
l l l
Salida: b w bwb
Subrutina INT, intercambio. Intercambia las cadenas u y v (estas cadenas
no poseen blancos y no necesariamente son de la misma longitud):
Entrada: bubvb
l l
Salida: bvbub
Ejercicios de la seccion 6.2
Disenar MT que implementen las subrutinas TD, BI, BD, NBI, NBD,
COPD, COPI e INT cuando el alfabeto de entrada es {a, b}.
Disenar MT que implementen las subrutinas TD, BI, BD, NBI, NBD,
COPD, COPI e INT cuando el alfabeto de entrada es {0, 1, 2}.
Sea = {a, b}. Disenar MT para las siguientes subrutinas:
(i) TI2 . Traslada la cadena de entrada 2 casillas a la izquierda.
(ii) TD2 . Traslada la cadena de entrada 2 casillas a la derecha.
(iii) TIk . Traslada la cadena de entrada k casillas a la izquierda (k
es un entero fijo 1).
(iv) TDk . Traslada la cadena de entrada k casillas a la derecha (k es
un entero fijo 1).
1 | b
1 | b 1 | b
> q0 q1 q2
b | 1
b | 0 qf b | 2
1 | 1 1 | 1 1 | 1
Ejercicios de la seccion 6.3
Disenar MT que calculen las siguientes funciones; hacer diagramas de tran-
siciones para las maquinas obtenidas. Las entradas numericas se dan en el
sistema de numeracion unitario, como en los ejemplos de esta seccion.
La funcion de paridad de los numeros naturales (n 1):
(
1, si n es par,
h(n) =
0, si n es impar.
b|a
> q0 q1
b|a
Ejemplo La siguiente MT genera todas cadenas de ceros y unos en el
orden lexicografico (las cadenas se ordenan por longitud y las
cadenas de la misma longitud se ordenan ortograficamente de izquierda a
derecha, considerando 0 < 1): 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100,
101, 110, 111, 0000, 0001, . . . .
0|0
q3 b|b
b|0
0|0
0|1
> q0 q2 1|0
1|1
b|b
q1
b|b
0|0
1|1
180 CAPITULO 6. MAQUINAS DE TURING
Ejercicios de la seccion 6.4
Disenar MT que generen los siguientes lenguajes:
a1 Pista 1
a2 Pista 2
.. .. .. ..
. . . .
ak Pista k
q
a1 Cinta 1
a2 Cinta 2
.. ..
. .
ak Cinta k
Solucion. Una MT con dos cintas es mas facil de disenar 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 ai bi ci , se detectara simultaneamente el smbolo en blanco b
en ambas cintas.
La funcion de transicion requerida para implementar esta idea es:
donde los ai y los bi son smbolos del alfabeto de cinta , los pi son estados
y cada Di 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
184 CAPITULO 6. MAQUINAS DE TURING
(q, a) = (p1 , b1 , D1 ), (p2 , b2 , D2 ), . . . , (pk , bk , Dk )
| {z } | {z } | {z }
1 2 n ndice
Ejemplo La siguiente MT M no-determinista genera todas las cadenas
binarias (cadenas de ceros y unos). M escoge primero una
cadena binaria w por medio de las opciones no-deterministas b | 0 y
b | 1 y retrocede hacia el primer smbolo de w, retornando al estado
q0 . Luego borra todos los smbolos de la cadena generada w y procede a
generar una nueva.
b|0 0|0
b|b
b|1 1|1
> q0 q1
0|b
1|b
b|b
M = (Q , q0 , F , , , b, ) por medio de
(q, (b, s)) = (qf , (b, s), (, )), para todo s y todo q F .
b b b
a a
> q0 q1 q2
..
.
..
.
s2
s1 ..
.
..
.
(q, a, s1 , s2 ) = (q , 1 , 2 ),
(q, , s1 , s2 ) = (q , 1 , 2 ).
190 CAPITULO 6. MAQUINAS DE TURING
(q0 , 1, 0, 0) = (q1 , 0, ),
(q1 , 1, 0, 0) = (q1 , 0, ).
las transiciones
(q1 , 0, 0, z0 ) = (q2 , , z0 ),
(q2 , 0, 0, z0 ) = (q2 , , z0 ).
(q2 , $, z0 , z0 ) = (q3 , z0 , z0 ).
tope tope
z
1ra. pila
}| { z 2da. pila
}| {
(q, a) = (p, b, )
s a s b
q p
(q, a) = (p, b, )
s a s b
q p
Disenar automatas con dos pilas que acepten los siguientes lenguajes:
Demostracion.
194 CAPITULO 6. MAQUINAS DE TURING
Tambien hay que permitir que M siga operando en una de las cintas
incluso si se ha detenido en la otra en un estado de no aceptacion.
Por ejemplo, si 1 (q1 , s1 ) no esta definida en M1 , pero 2 (q2 , s2 ) =
(p2 , r2 , D2 ) es una transicion de M2 , definimos
(q1 , q2 ), (s1 , s2 ) = (qe , p2 ), (s1 , ), (s2 , D2 ) ,
= {s1 , s2 , . . . , sm , . . . , sp }
201
202 CAPITULO 7. PROBLEMAS INDECIDIBLES
Smbolo Codificacion
s1 (smbolo b) 1
s2 11
s3 111
.. ..
. .
sm 11 1}
| {z
m veces
.. ..
. .
sp | {z 1}
11
p veces
C1 C2 Cr
(q1 , a) = (q3 , a, )
(q3 , a) = (q3 , a, )
(q3 , b) = (q4 , b, )
(q4 , b) = (q2 , b, )
010110111011010011101101110110100111011101111011101001111010110101110
01012 013 012 010013 012 013 012 010013 013 014 013 010014 01012 01013 0.
0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, 0000, 0001, 0010, . . .
204 CAPITULO 7. PROBLEMAS INDECIDIBLES
01101101110101101110
Ejercicios de la seccion 7.1
Sea M la MT definida por el siguiente diagrama de estados:
b|b
a|a b|b
> q1 q3 q4
a|a
b|b
q2
Cinta 1
Codigo de una MT M
Cinta 2
Codigo de una entrada w
Cinta 3
Codigo del estado actual de M
Lu = {M 0w : la MT M acepta la cadena w }.
Mu
prog
ram
M a
1. Entrada: M 0w.
es RE.
Solucion. Usando el Teorema 6.8.3 se puede presentar el siguiente algoritmo
para aceptar a La :
wk L = wk no es aceptada por Mk = wk
/ L(Mk ) = L.
wk
/ L = wk
/ L(Mk ) = wk es aceptada por Mk = wk L.
Por lo tanto, wk L wk
/ L, lo cual es una contradiccion.
El lenguaje L del Teorema 7.4.1 se denomina lenguaje de diagonali-
zacion y se denota con Ld :
w1 w2 w3 w4
M1 0 0 1 0
M2 1 0 0 0
M3 0 1 1 0
.. ..
. .
Lu = {M 0w : M acepta a w},
es RE pero no es recursivo.
Demostracion. En las secciones 7.2 y 7.3 se vio que Lu es RE. Para mostrar
que Lu no es recursivo razonamos por contradiccion: suponemos que existe
una MT M que procesa todas las entradas M 0w 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 Ld del Teorema 7.4.1, de lo cual se deducira que Ld es RE,
contradiciendo as la conclusion de dicho teorema.
Con una entrada w , la maquina M procede as: enumera sis-
tematicamente las cadenas w1 , w2 , w3 , . . . hasta que encuentra un k tal que
w = wk . Luego simula (o invoca) a M con entrada Mk 0wk , decidiendo
si Mk acepta o no a wk . Por lo tanto, M acepta el lenguaje Ld , o sea,
L(M ) = Ld . Esto significa, en particular, que Ld es RE lo cual contradice
el Teorema 7.4.1.
El siguiente teorema sirve como fuente de ejemplos de lenguajes no RE.
7.5.2 Teorema. Si L es un lenguaje RE no recursivo, L no es RE.
Demostracion. Razonamiento por contradiccion: por el Teorema 6.8.2, si
L fuera RE, L sera recursivo.
Como aplicacion de este resultado podemos concluir que el complemento
del lenguaje universal, Lu , no es RE. La siguiente grafica muestra la relacion
entre los lenguajes recursivos, los lenguajes RE y los no RE:
RE
z }| {
no RE
recursivos
Lu
Ld
Lu
RE pero no recursivos
214 CAPITULO 7. PROBLEMAS INDECIDIBLES
Los resultados de las dos ultimas secciones permiten establecer las rela-
ciones de contenencia entre las colecciones de lenguajes estudiadas en este
curso (sobre un alfabeto dado):
Regulares
LIC
Recursivos
Recursivamente Enumerables
SI P se satisface
Entrada o Algoritmo
de decision A
Instancia
NO P no se satisface
Notese que las entradas o instancias para este problema son de la forma
M 0w donde M es el codigo de una MT y w es el codigo de una entrada
(sobre el alfabeto ).
216 CAPITULO 7. PROBLEMAS INDECIDIBLES
SI
M
Entrada A Entrada
u de P1 de P2
Decision para P2 Decision para P1
con entrada w
NO
Ejemplo Problema de la parada o problema de la detencion. Este fa-
moso problema (halting problem, en ingles), estudiado por el
propio Turing, consiste en preguntar si existe un algoritmo para el siguiente
problema de decision:
SI
M
M
M 0w M 0w
Decision del problema Decision del problema
de la parada universal
NO
SI
M
M
M 0w M
Decision del problema Decision del problema
de la cinta en de la parada
blanco
NO
no es recursivo.
Ejercicios de la seccion 7.6
Mediante la tecnica de reduccion de problemas mostrar que los si-
guientes problemas de decision son indecidibles:
221
222 BIBLIOGRAFIA