Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compiladores PDF
Compiladores PDF
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 2003-II 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
= {, 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.
es siempre un conjunto
innito (enumerable). En el caso mas simple, contiene solo un smbolo,
= {a}, y
, 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
.
Ejemplo Si w
, n, m N, demostrar que
|w
n+m
| = |w
n
| +|w
m
|
Solucion:
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
Si u, v
.
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
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 =
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 = 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
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.
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.
.
(Descripcion 1) A
=
_
i0
A
i
= A
0
A
1
A
2
A
n
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,
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
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 2003-II 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)
) = L(R)
)a
(bc)
) {a}
{bc}
(a b)
(ba)
({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 2003-II 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.
Solucion: 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)
(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 2003-II 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.