SlideShare una empresa de Scribd logo
1 de 228
Descargar para leer sin conexión
´
Teor´a de la Computacion
ı
´
Lenguajes, automatas, gram´ ticas
a

Rodrigo De Castro Korgi
´
Ph.D. en Matematicas
University of Illinois, U.S.A.
´
Departamento de Matematicas
´
Universidad Nacional de Colombia, Bogota
Teor´ de la Computaci´n
ıa
o
Lenguajes, aut´matas, gram´ticas
o
a
c

Universidad Nacional de Colombia
Facultad de Ciencias
Juan Manuel Tejeiro, Decano
Natalia Ruiz, Vicedecana Acad´mica
e
Gustavo Rubiano, Director de Publicaciones

c

Rodrigo De Castro Korgi
Profesor Asociado
Departamento de Matem´ticas
a
Primera edici´n, 2004
o
A
Diagramaci´n en L TEX realizada por el autor
o
Impresi´n:
o
UNIBIBLOS
Universidad Nacional de Colombia
Bogot´ D.C., 2004
a
´
Indice general

Pr´logo
o

1

Introducci´n. ¿Qu´ es la Teor´ de la Computaci´n?
o
e
ıa
o

3

1. Alfabetos, cadenas y lenguajes
1.1. Alfabetos y cadenas . . . . . . . . . .
1.2. Concatenaci´n de cadenas . . . . . . .
o
1.3. Potencias de una cadena . . . . . . . .
1.4. Longitud de una cadena . . . . . . . .
1.5. Reflexi´n o inversa de una cadena . . .
o
1.6. Subcadenas, prefijos y sufijos . . . . .
1.7. Lenguajes . . . . . . . . . . . . . . . .
1.8. Operaciones entre lenguajes . . . . . .
1.9. Concatenaci´n de lenguajes . . . . . .
o
1.10. Potencias de un lenguaje . . . . . . . .
1.11. La clausura de Kleene de un lenguaje
1.12. Reflexi´n o inverso de un lenguaje . .
o
1.13. Lenguajes regulares . . . . . . . . . . .
1.14. Expresiones regulares . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

2. Aut´matas finitos
o
2.1. Aut´matas finitos deterministas (AFD) . . . . . . . .
o
2.2. Diagrama de transiciones de un aut´mata . . . . . . .
o
2.3. Dise˜o de aut´matas . . . . . . . . . . . . . . . . . . .
n
o
2.4. Aut´matas finitos no-deterministas (AFN) . . . . . . .
o
2.5. Equivalencia computacional entre los AFD y los AFN
2.6. Aut´matas con transiciones λ (AFN-λ) . . . . . . . .
o
iii

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

5
5
7
8
8
9
9
10
11
12
14
14
17
18
19

.
.
.
.
.
.

25
25
28
29
33
38
43
iv

´
INDICE GENERAL

2.7. Equivalencia computacional entre los AFN-λ y los AFN
2.8. Teorema de Kleene. Parte I . . . . . . . . . . . . . . . .
2.9. Ejemplos de la parte I del Teorema de Kleene . . . . . .
2.10. Lema de Arden . . . . . . . . . . . . . . . . . . . . . . .
2.11. Teorema de Kleene. Parte II . . . . . . . . . . . . . . . .
2.12. Ejemplos de la parte II del Teorema de Kleene . . . . .
3. Otras propiedades de los lenguajes regulares
3.1. Lema de bombeo . . . . . . . . . . . . . . . .
3.2. Propiedades de clausura . . . . . . . . . . . .
3.3. Propiedades de clausura para aut´matas . . .
o
3.4. Homomorfismos
. . . . . . . . . . . . . . .
3.5. Imagen inversa de un homomorfismo
. . .
3.6. Algoritmos de decisi´n . . . . . . . . . . . . .
o
4. Lenguajes y gram´ticas independientes del
a
4.1. Gram´ticas generativas . . . . . . . . . . .
a
4.2. Gram´ticas independientes del contexto . .
a
´
4.3. Arbol de una derivaci´n . . . . . . . . . . .
o
4.4. Gram´ticas ambiguas . . . . . . . . . . . .
a
4.5. Gram´ticas para lenguajes de programaci´n
a
o
4.6. Gram´ticas para lenguajes naturales . . .
a
4.7. Gram´ticas regulares . . . . . . . . . . . . .
a
4.8. Eliminaci´n de las variables in´tiles . . . .
o
u
4.9. Eliminaci´n de las producciones λ . . . . .
o
4.10. Eliminaci´n de las producciones unitarias .
o
4.11. Forma Normal de Chomsky (FNC) . . . . .
4.12. Forma Normal de Greibach (FNG)
. . .
4.13. Lema de bombeo para LIC . . . . . . . . .
4.14. Propiedades de clausura de los LIC . . . . .
4.15. Algoritmos de decisi´n para GIC . . . . . .
o

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

contexto
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

5. Aut´matas con pila
o
5.1. Aut´matas con Pila Deterministas (AFPD) .
o
5.2. Aut´matas con pila no-deterministas (AFPN)
o
5.3. Aceptaci´n por pila vac´ . . . . . . . . . . .
o
ıa
5.4. Aut´matas con pila y LIC. Parte I. . . . . . .
o
5.5. Aut´matas con pila y LIC. Parte II.
o
. . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

47
49
52
55
57
58

.
.
.
.
.
.

.
.
.
.
.
.

63
63
67
69
72
74
75

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

81
81
82
88
91
94
96
98
102
107
110
113
120
125
130
135

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

143
143
149
154
157
160
v

´
INDICE GENERAL

6. M´quinas de Turing
a
6.1. M´quinas de Turing como aceptadoras de lenguajes . . . . .
a
6.2. Subrutinas o macros . . . . . . . . . . . . . . . . . . . . . .
6.3. M´quinas de Turing como calculadoras de funciones . . . .
a
6.4. M´quinas de Turing como generadoras de lenguajes . . . . .
a
6.5. Variaciones del modelo est´ndar de MT . . . . . . . . . . .
a
6.5.1. Estado de aceptaci´n unico . . . . . . . . . . . . . .
o ´
6.5.2. M´quina de Turing con cinta dividida en pistas . . .
a
6.5.3. M´quina de Turing con m´ltiples cintas . . . . . . .
a
u
6.5.4. M´quinas de Turing no-deterministas (MTN) . . . .
a
6.6. Simulaci´n de aut´matas por medio de m´quinas de Turing
o
o
a
6.6.1. Simulaci´n de aut´matas . . . . . . . . . . . . . . .
o
o
6.6.2. Simulaci´n de aut´matas con pila . . . . . . . . . . .
o
o
6.7. Aut´matas con dos pilas (AF2P) . . . . . . . . . . . . . .
o
6.8. Propiedades de clausura . . . . . . . . . . . . . . . . . . . .
6.9. MT, computadores, algoritmos y la tesis de Church-Turing
6.9.1. M´quinas de Turing y algoritmos . . . . . . . . . . .
a
6.9.2. M´quinas de Turing y computadores . . . . . . . . .
a

167
167
174
176
179
180
180
181
181
183
186
186
186
188
193
198
198
199

7. Problemas indecidibles
7.1. Codificaci´n y enumeraci´n de m´quinas de Turing
o
o
a
7.2. M´quina de Turing universal . . . . . . . . . . . .
a
7.3. Algoritmos de aceptaci´n para lenguajes RE . . . .
o
7.4. Lenguajes que no son RE . . . . . . . . . . . . . .
7.5. Lenguajes RE no recursivos . . . . . . . . . . . . .
7.6. Problemas indecidibles o irresolubles . . . . . . . .

201
201
206
209
211
212
215

Bibliograf´
ıa

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

221
vi

´
INDICE GENERAL
´
Prologo
Este libro contiene lo m´
ınimo que los estudiantes de las carreras de ingenier´ de sistemas y de matem´ticas deber´ saber sobre los fundamentos
ıa
a
ıan
matem´ticos de la teor´ de la computaci´n. Est´ basado en el material
a
ıa
o
a
de clase utilizado por el autor durante los ultimos a˜os en la Universidad
´
n
Nacional de Colombia, sede de Bogot´.
a

A estudiantes y profesores
El libro est´ escrito tanto para estudiantes de matem´ticas —quienes, es
a
a
de suponer, tienen m´s experiencia con razonamientos abstractos y demosa
traciones— como para estudiantes de ingenier´ Es el profesor quien debe
ıa.
establecer el tono del curso, enfatizando ya sea el rigor matem´tico o una
a
presentaci´n m´s intuitiva y pr´ctica. Los resultados est´n presentados en
o
a
a
a
forma de teoremas, corolarios y lemas, con sus respectivas demostraciones;
´stas pueden omitirse, si as´ lo estima el profesor. En los cursos dirigidos
e
ı
a estudiantes de ingenier´ de sistemas, el ´nfasis debe residir —tanto por
ıa
e
parte del profesor como por parte del estudiante— en los ejemplos y ejercicios pr´cticos; hay que resaltar m´s el significado de los enunciados que
a
a
sus demostraciones formales. El libro contiene gran cantidad de ejemplos y
problemas resueltos, con aplicaciones o ilustraciones directas de la teor´
ıa.
Como prerrequisito, es imprescindible que el estudiante haya tomado al
menos un curso de matem´ticas discretas en el que se haya familiarizado
a
con las nociones b´sicas y la notaci´n de la teor´ intuitiva de conjuntos,
a
o
ıa
grafos, inducci´n matem´tica y l´gica elemental. La experiencia previa en
o
a
o
programaci´n es muy util pero, de ninguna manera, necesaria.
o
´
El material se presenta en secciones relativamente cortas, lo que permite
alguna flexibilidad en la selecci´n de los t´picos del curso. As´ si el tiempo
o
o
ı,
1
2

´
PROLOGO

disponible no es holgado, o no es posible avanzar con la velocidad suficiente,
podr´ suprimirse las secciones demarcadas con el s´
ıan
ımbolo .
Casi todas las secciones poseen ejercicios, de variada dificultad; los m´s
a
dif´
ıciles est´n precedidos de un s´
a
ımbolo de admiraci´n ! y podr´ ser consio
ıan
derados opcionales. Es responsabilidad del estudiante resolver los ejercicios
que sean asignados por el profesor. La unica manera de aprender y asimilar
´
las ideas y t´cnicas presentadas en la clase es trabajar seria y completae
mente los ejercicios.

Material de apoyo en la red
Versiones preliminares de estas notas aparecieron, de forma incompleta,
en el curso virtual de Teor´ de la Computaci´n perteneciente al programa
ıa
o
Universidad Virtual de la la Universidad Nacional de Colombia. Es la intenci´n del autor mantener y actualizar permanentemente la versi´n virtual
o
o
interactiva de este curso, con material de apoyo como temas y ejercicios
nuevos, correcci´n de errores, software, enlaces a otra p´ginas Web, etc. Se
o
a
puede acceder libremente al curso virtual en el portal
http://www.virtual.unal.edu.co/
siguiendo los enlaces: Cursos–Facultad de Ciencias–Matem´ticas–Teor´ de
a
ıa
la Computaci´n.
o

Agradecimientos
Durante la elaboraci´n de estas notas he recibido por parte de estudiantes
o
atentos muchas observaciones utiles que han ayudado a mejorar sustan´
cialmente la presentaci´n. Quiero expresarles mis agradecimientos a todos
o
ellos, demasiado numerosos para mencionarlos individualmente.
La primera versi´n del curso virtual fue realizada con la ayuda del eso
tudiante de posgrado Adolfo Reyes, a quien expreso mi gratitud y reconocimiento. Para la preparaci´n de la presente versi´n tuve la suerte de
o
o
contar con la colaboraci´n del estudiante de matem´ticas Camilo Cubides,
o
a
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
cooperaci´n desinteresada.
o
´
Introduccion

¿Qu´ es la Teor´ de la Computaci´n?
e
ıa
o
La Teor´ de la Computaci´n estudia modelos abstractos de los dispositivos
ıa
o
concretos que conocemos como computadores, y analiza lo que se puede y no
se puede hacer con ellos. Este estudio te´rico se inici´ varias d´cadas antes
o
o
e
de la aparici´n de los primeros computadores reales y contin´a creciendo,
o
u
a medida que que la computaci´n incrementa su sofisticaci´n.
o
o
Entre los muchos t´picos que conforman la teor´ de la computaci´n,
o
ıa
o
s´lo tendremos la oportunidad de tratar someramente los dos siguientes:
o
Modelos de computaci´n. Las investigaciones en este campo comenzao
ron en la d´cada de los 30 del siglo XX con el trabajo del l´gico norteamee
o
ricano Alonzo Church (1903–1995) y del matem´tico brit´nico Alan Turing
a
a
(1912–1954). Church introdujo el formalismo conocido como c´lculo-λ y
a
enunci´ la tesis —hoy conocida como tesis de Church— de que las funcioo
nes efectivamente computables, es decir, computables por cualquier m´todo
e
computacional concebible, son exactamente las funciones λ-computables.
En contraste con el enfoque m´s abstracto de Church, Turing (quien fue
a
alumno doctoral de Church en la universidad de Princeton) propuso un
modelo concreto de m´quina computadora, hoy conocida como la m´quina
a
a
de Turing, capaz de simular las acciones de cualquier otro dispositivo f´
ısico
de computaci´n secuencial.
o
Curiosamente, las propuestas de Church y Turing se publicaron exactamente en el mismo a˜o: 1936. Los dos formalismos resultaron ser equivalenn
tes y, desde entonces, se han propuesto muchos otros modelos de computaci´n. Como todos han resultados ser equivalentes entre s´ ha ganado
o
ı,
3
4

´
INTRODUCCION

aceptaci´n universal la tesis de Church-Turing: no hay modelo de compuo
taci´n m´s general ni poderoso que la m´quina de Turing.
o
a
a
En los a˜os 40 y 50 del siglo XX se adelantaron investigaciones sobre
n
m´quinas de Turing con capacidad restringida, surgiendo as´ la noci´n de
a
ı
o
m´quina de estado finito o aut´mata finito (“aut´mata” es sin´nimo de
a
o
o
o
“m´quina de c´mputo autom´tico”). Los aut´matas han resultado ser moa
o
a
o
delos muy utiles para el dise˜o de diversos tipos de software y hardware.
´
n
Lenguajes y gram´ticas formales. Una l´
a
ınea investigativa, aparentemente alejada de los modelos de computaci´n, surgi´ con los estudios del
o
o
ling¨ista norteamericano Noam Chomsky1 . Chomsky introdujo en 1956 la
u
noci´n de gram´tica generativa con el prop´sito de describir los lenguajes
o
a
o
naturales como el espa˜ol, el ingl´s, el franc´s, etc. Chomsky clasific´ las
n
e
e
o
gram´ticas en cuatro tipos, dependiendo de la forma de sus producciones,
a
que son las reglas que utiliza una gram´tica para generar palabras o caa
denas de s´
ımbolos. Pocos a˜os despu´s se estableci´ que hay una estrecha
n
e
o
relaci´n entre aut´matas y gram´ticas: los lenguajes de la llamada jerarqu´
o
o
a
ıa
de Chomsky corresponden a los lenguajes que pueden ser reconocidos por
tipos especiales de aut´matas.
o
La interacci´n entre los aut´matas (mecanismos para procesar cadeo
o
nas de s´
ımbolos) y las gram´ticas (mecanismos para generar cadenas de
a
s´
ımbolos) es una fuente de resultados profundos y significativos. Desde la
aparici´n de los influyentes textos de Hopcroft y Ullman ([HU1], 1969) y
o
([HU2], 1979), un curso semestral b´sico de teor´ de la computaci´n se
a
ıa
o
ha centrado en el estudio de aut´matas y gram´ticas. Estas notas de clase
o
a
reflejan esa tradici´n.
o

1
En el a˜ o 2002, la Universidad Nacional de Colombia otorg´ el doctorado Honoris
n
o
Causa a Noam Chomsky.
Cap´tulo
ı

1

Alfabetos, cadenas y lenguajes
De manera muy amplia podr´ decirse que la computaci´n es la manipulaıa
o
ci´n de secuencias de s´
o
ımbolos. Pero el n´mero de s´
u
ımbolos disponibles en
cualquier mecanismo de c´mputo es finito y todos los objetos usados como
o
entradas o salidas (inputs/outputs) deben ser identificados en un tiempo
finito. Desde el punto de vista te´rico esto impone dos restricciones b´sicas:
o
a
el conjunto de s´
ımbolos (alfabeto) debe ser finito y se deben considerar uni´
camente cadenas (secuencias de s´
ımbolos) de longitud finita. Surgen as´ los
ı
ingredientes esenciales de una teor´ abstracta de la computaci´n: alfabeıa
o
tos y cadenas. Los conjuntos de cadenas (ya sean finitos o infinitos) se
denominar´n lenguajes.
a

1.1.

Alfabetos y cadenas

Un alfabeto es un conjunto finito no vac´ cuyos elementos se llaman
ıo
s´
ımbolos. Denotamos un alfabeto arbitrario con la letra Σ.
Una cadena o palabra sobre un alfabeto Σ es cualquier sucesi´n (o
o
secuencia) finita de elementos de Σ. Admitimos la existencia de una unica
´
cadena que no tiene s´
ımbolos, la cual se denomina cadena vac´ y se
ıa
denota con λ. La cadena vac´ desempe˜a, en la teor´ de la computaci´n,
ıa
n
ıa
o
un papel similar al del conjunto vac´ ∅ en la teor´ de conjuntos.
ıo
ıa
§

¤

¦

¥b. Las siguientes son cadenas sobre Σ:

Ejemplo

Sea Σ = {a, b} el alfabeto que consta de los dos s´
ımbolos a y
aba
ababaaa
aaaab.
5
6

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Obs´rvese que aba = aab. El orden de los s´
e
ımbolos en una cadena es significativo ya que las cadenas se definen como sucesiones, es decir, conjuntos
secuencialmente ordenados.
§

¤

¦

¥cadenas sobre este alfabeto son secuencias finitas de ceros y

Ejemplo

El alfabeto Σ = {0, 1} se conoce como alfabeto binario. Las

unos, llamadas secuencias binarias, tales como
001
1011
001000001.
§

¤

¦

¥idioma castellano. Las palabras oficiales del castellano (las que

Ejemplo

Σ = {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}, el alfabeto del

aparecen en el diccionario DRA) son cadenas sobre Σ.
§

¤

¦

¥programaci´n (como Pascal o C) es el conjunto de caracteo

Ejemplo

El alfabeto utilizado por muchos de los llamados lenguajes de

res ASCII (o un subconjunto de ´l) que incluye, por lo general, las letras
e
may´sculas y min´sculas, los s´
u
u
ımbolos de puntuaci´n y los s´
o
ımbolos matem´ticos disponibles en los teclados est´ndares.
a
a
El conjunto de todas las cadenas sobre un alfabeto Σ, incluyendo la
cadena vac´ se denota por Σ∗ .
ıa,
§

¤

¦

¥

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 aparece la notaci´n corrientemente utilizada en la
o
teor´ de la computaci´n. De ser necesario, se emplean sub´
ıa
o
ındices.

Σ, Γ

Notaci´n usada en la teor´ de la computaci´n
o
ıa
o
denotan alfabetos.

Σ∗

denota el conjunto de todas las cadenas que se
pueden formar con los s´
ımbolos del alfabeto Σ.

a, b, c, d, e,. . .

denotan s´
ımbolos de un alfabeto.

u, v, w, x, y, z, . . .
α, β, γ, . . .

denotan cadenas, es decir, sucesiones finitas de
s´
ımbolos de un alfabeto.

λ

denota la cadena vac´ es decir, la unica cadena
ıa,
´
que no tiene s´
ımbolos.

A, B, C, . . . , L, M, N ,. . . denotan lenguajes (definidos m´s adelante).
a
´
1.2. CONCATENACION DE CADENAS



Algunos autores denotan la cadena vac´ con la letra griega ε.
ıa
Preferimos denotarla con λ porque ε tiende a confundirse con el
s´
ımbolo ∈ usado para la relaci´n de pertenencia.
o



Si bien un alfabeto Σ es un conjunto finito, Σ∗ es siempre un
conjunto infinito (enumerable). En el caso m´s simple, Σ contiene
a
∗ = {λ, a, aa, aaa, aaaa, aaaaa, . . .}.
solo un s´
ımbolo, Σ = {a}, y Σ



Hay que distinguir entre los siguientes cuatro objetos, que son
todos diferentes entre s´ ∅, λ, {∅} y {λ}.
ı:



7

La mayor parte de la teor´ de la computaci´n se hace con refeıa
o
rencia a un alfabeto Σ fijo (pero arbitrario).

1.2.

Concatenaci´n de cadenas
o

Dado un alfabeto Σ y dos cadenas u, v ∈ Σ∗ , la concatenaci´n de u y v
o
se denota como u · v o simplemente uv y se define descriptivamente as´
ı:
1. Si v = λ, entonces u · λ = λ · u = u. Es decir, la concatenaci´n de
o
cualquier cadena u con la cadena vac´ a izquierda o a derecha, es
ıa,
igual a u.
2. Si u = a1 a2 · · · an , v = b1 b2 · · · bm , entonces
u · v = a1 a2 · · · an b1 b2 · · · bm .
Es decir, u · v es la cadena formada escribiendo los s´
ımbolos de u y a
continuaci´n los s´
o
ımbolos de v.
La concatenaci´n de cadenas se puede definir inductiva o recursivamente
o
de la siguiente manera. Si u, v ∈ Σ∗ , a ∈ Σ, entonces
1. u · λ = λ · u = u.
2. u · (va) = (u · v)a.
Propiedad. La concatenaci´n de cadenas es una operaci´n asociativa. Es
o
o
decir, si u, v, w ∈ Σ∗ , entonces
(uv)w = u(vw).
Demostraci´n. Se puede hacer escribiendo expl´
o
ıcitamente las cadenas u, v,
w y usando la definici´n descriptiva de concatenaci´n. Tambi´n se puede dar
o
o
e
una demostraci´n inductiva usando la definici´n recursiva de concatenaci´n
o
o
o
(ejercicio opcional).
8

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.3.

Potencias de una cadena

Dada u ∈ Σ∗ y n ∈ N, se define (descriptivamente) un en la siguiente forma
u0 = λ,
un = uu · · · u .
n veces

Como ejercicio, el estudiante puede dar una definici´n recursiva de un .
o

1.4.

Longitud de una cadena

La longitud de una cadena u ∈ Σ∗ se denota |u| y se define como el n´mero
u
de s´
ımbolos de u (contando los s´
ımbolos repetidos). Es decir,
|u| =

0, si u = λ,
n, si u = a1 a2 · · · an .

§

¤

¦

¥

§

¤

¦

¥Esta no es una propiedad realmente importante (¡no la usare-

Ejemplo
Ejemplo

|aba| = 3, |baaa| = 4.

Si w ∈ Σ∗ , n, m ∈ N, demostrar que |wn+m | = |wn | + |wm |.

mos nunca en este libro!); la presentamos aqu´ para enfatizar los conceptos
ı
involucrados e ilustrar los razonamientos estrictos.
Soluci´n.
o

Caso n, m ≥ 1. |wn+m | = | ww · · · w | = (n + m)|w|. Por otro
n+m veces

lado,
|wn | + |wm | = | ww · · · w | + | ww · · · w | = n|w| + m|w|.
n veces

m veces

Caso n = 0, m ≥ 1. |wn+m | = |w0+m | = |wm |. Por otro lado,
|wn | + |wm | = |w0 | + |wm | = |λ| + |wm | = 0 + |wm | = |wm |.
Caso m = 0, n ≥ 1. Similar al caso anterior.
Caso n = 0, m = 0. |wn+m | = |w0+0 | = |λ| = 0. Por otro lado,
|wn | + |wm | = |w0 | + |w0 | = |λ| + |λ| = 0 + 0 = 0.
´
1.5. REFLEXION O INVERSA DE UNA CADENA

1.5.

9

Reflexi´n o inversa de una cadena
o

La reflexi´n o inversa de una cadena u ∈ Σ∗ se denota uR y se define
o
descriptivamente as´
ı:
uR =

λ,
si u = λ,
an · · · a2 a1 , si u = a1 a2 · · · an .

De la definici´n se observa claramente que la reflexi´n de la reflexi´n de
o
o
o
una cadena es la misma cadena, es decir,
(uR )R = u,


para u ∈ Σ∗ .

Algunos autores escriben u−1 en lugar de uR para denotar la reflexi´n de una cadena u.
o

§

¤

¦

¥

Ejercicios de la secci´n 1.5
o

Œ Dar una definici´n recursiva de uR .
o
 Si u, v ∈ Σ∗ , demostrar que (uv)R = v R uR . Generalizar esta propiedad a la concatenaci´n de n cadenas.
o

1.6.

Subcadenas, prefijos y sufijos

Una cadena v es una subcadena o una subpalabra de u si existen cadenas
x, y tales que u = xvy. N´tese que x o y pueden ser λ y, por lo tanto,
o
la cadena vac´ es una subcadena de cualquier cadena y toda cadena es
ıa
subcadena de s´ misma.
ı
Un prefijo de u es una cadena v tal que u = vw para alguna cadena
w ∈ Σ∗ . Se dice que v es un prefijo propio si v = u.
Similarmente, un sufijo de u es una cadena v tal que u = wv para
alguna cadena w ∈ Σ∗ . Se dice que v es un sufijo propio si v = u.
Obs´rvese que λ es un prefijo y un sufijo de toda cadena u ya que
e
uλ = λu = u. Por la misma raz´n, toda cadena u es prefijo y sufijo de
o
s´ misma.
ı
§

¤

¦

¥

Ejemplo

Sean Σ = {a, b, c, d} y u = bcbaadb.
10

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Prefijos de u :
λ
b
bc
bcb
bcba
bcbaa
bcbaad
bcbaadb

1.7.

Sufijos de u :
λ
b
db
adb
aadb
baadb
cbaadb
bcbaadb

Lenguajes

Un lenguaje L sobre un alfabeto Σ es un subconjunto de Σ∗ , es decir
L ⊆ Σ∗ .
Casos extremos:
L = ∅,
L = Σ∗ ,

lenguaje vac´
ıo.
lenguaje de todas las cadenas sobre Σ.

Todo lenguaje L satisface ∅ ⊆ L ⊆ Σ∗ , y puede ser finito o infinito. Los
lenguajes se denotan con letras may´sculas A, B, C, . . . , L, M, N, . . .. En la
u
siguiente gr´fica se visualizan dos lenguajes A y B sobre Σ.
a

Σ∗
B
A

§

¤

¦

¥especificados.

Ejemplos

Los siguientes son ejemplos de lenguajes sobre los alfabetos

Σ = {a, b, c}. L = {a, aba, aca}.
Σ = {a, b, c}. L = {a, aa, aaa, . . .} = {an : n ≥ 1}.
1.8. OPERACIONES ENTRE LENGUAJES

11

Σ = {a, b, c}. L = {λ, aa, aba, ab2 a, ab3 a, . . .} = {abn a : n ≥ 0} ∪ {λ}.
Σ = {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}. L = {u ∈ Σ∗ : u aparece
en el diccionario espa˜ol DRA}. L es un lenguaje finito.
n
Σ = {a, b, c}. L = {u ∈ Σ∗ : u no contiene el s´
ımbolo c}. Por ejemplo,
abbaab ∈ L pero abbcaa ∈ L.
/
Σ = {0, 1}. L = conjunto de todas las secuencias binarias que contienen un n´mero impar de unos.
u
Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los n´meros naturales
u
se puede definir como un lenguaje sobre Σ, en la siguiente forma:
N = {u ∈ Σ∗ : u = 0 ´ 0 no es un prefijo de u}.
o
Como ejercicio, el estudiante puede definir el conjunto de los enteros Z =
{. . . , −2, −1, 0, 1, 2, . . .} como un lenguaje sobre un alfabeto adecuado.


1.8.

El concepto abstracto de “lenguaje”, tal como se ha definido, no es
exactamente la misma noci´n utilizada en la expresi´n “lenguaje
o
o
de programaci´n”. Para precisar la relaci´n entre estos conceptos,
o
o
consideremos el alfabeto Σ de los caracteres ASCII. Un programa
en C o en Pascal, por ejemplo, es simplemente una cadena de
s´
ımbolos de Σ y, por lo tanto, un conjunto de programas es un
lenguaje (en el sentido formal definido en esta secci´n).
o

Operaciones entre lenguajes

Puesto que los lenguajes sobre Σ son subconjuntos de Σ∗ , las operaciones
usuales entre conjuntos son tambi´n operaciones v´lidas entre lenguajes.
e
a
As´ si A y B son lenguajes sobre Σ (es decir A, B ⊆ Σ∗ ), entonces los
ı,
siguientes tambi´n son lenguajes sobre Σ:
e
A∪B
A∩B
A−B
A = Σ∗ − A

Uni´n
o
Intersecci´n
o
Diferencia
Complemento

Estas operaciones entre lenguajes se llaman operaciones conjuntistas o booleanas para distinguirlas de las operaciones ling¨´
uısticas (concatenaci´n, poo
tencia, inverso, clausura) que son extensiones a los lenguajes de las operaciones entre cadenas.
12

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.9.

Concatenaci´n de lenguajes
o

La concatenaci´n de dos lenguajes A y B sobre Σ, notada A · B o simo
plemente AB se define como
AB = {uv : u ∈ A, v ∈ B}.
En general, AB = BA.
§

¤

¦

¥

Ejemplo

Si Σ = {a, b, c}, A = {a, ab, ac}, B = {b, b2 }, entonces
AB = {ab, ab2 , ab2 , ab3 , acb, acb2 }.
BA = {ba, bab, bac, b2 a, b2 ab, b2 ac}.

§

¤

¦

¥

Ejemplo

Si Σ = {a, b, c}, A = {ba, bc}, B = {bn : n ≥ 0}, entonces
AB = {babn : n ≥ 0} ∪ {bcbn : n ≥ 0}.
BA = {bn ba : n ≥ 0} ∪ {bn bc : n ≥ 0}
= {bn+1 a : n ≥ 0} ∪ {bn+1 c : n ≥ 0}
= {bn a : n ≥ 1} ∪ {bn c : n ≥ 1}.

Propiedades de la concatenaci´n de lenguajes. Sean A, B, C lenguao
∗ . Entonces
jes sobre Σ, es decir A, B, C ⊆ Σ
1. A · ∅ = ∅ · A = ∅.
2. A · {λ} = {λ} · A = A.
3. Propiedad Asociativa,
A · (B · C) = (A · B) · C.
4. Distributividad de la concatenaci´n con respecto a la uni´n,
o
o
A · (B ∪ C) = A · B ∪ A · C.
(B ∪ C) · A = B · A ∪ C · A.
5. Propiedad distributiva generalizada. Si {Bi }i∈I es una familia cualquiera de lenguajes sobre Σ, entonces
A·

(A · Bi ),

Bi =
i∈I

i∈I

Bi · A =
i∈I

(Bi · A).
i∈I
´
1.9. CONCATENACION DE LENGUAJES

13

Demostraci´n.
o
1. A · ∅ = {uv : u ∈ A, v ∈ ∅} = ∅.
2. A · {λ} = {uv : u ∈ A, v ∈ {λ}} = {u : u ∈ A} = A.
3. Se sigue de la asociatividad de la concatenaci´n de cadenas.
o
4. Caso particular de la propiedad general, demostrada a continuaci´n.
o
5. Demostraci´n de la igualdad A ·
o
x∈A·

i∈I

Bi ⇐⇒
⇐⇒
⇐⇒
⇐⇒
i∈I

i∈I

x = u · v, con u ∈ A  v ∈ i∈I Bi
x = u · v, con u ∈ A  v ∈ Bj , para alg´n j ∈ I
u
x ∈ A · Bj , para alg´n j ∈ I
u
x ∈ i∈I (A · Bi ).

Bi · A =

La igualdad

(A · Bi ):

Bi =
i∈I

(Bi · A) se demuestra de forma similar.
i∈I



La propiedad asociativa permite escribir concatenaciones de tres
o m´s lenguajes sin necesidad de usar par´ntesis.
a
e



En general, no se cumple que A · (B ∩ C) = A · B ∩ A · C. Es decir,
la concatenaci´n no es distributiva con respecto a la intersecci´n.
o
o
Contraejemplo: A = {a, λ}, B = {λ}, C = {a}. Se tiene:
A · (B ∩ C) = {a, λ} · ∅ = ∅.
Por otro lado,
A · B ∩ A · C = {a, λ} · {λ} ∩ {a, λ} · {a} = {a, λ} ∩ {a2 , a} = {a}.

§

¤

¦

¥

Ejercicios de la secci´n 1.9
o

Œ Dar un ejemplo de un alfabeto Σ y dos lenguajes diferentes A, B sobre
Σ tales que AB = BA.
 Una de las dos contenencias siguientes es verdadera y la otra es falsa.
Demostrar o refutar, seg´n sea el caso:
u
(i) A · (B ∩ C) ⊆ A · B ∩ A · C.
(ii) A · B ∩ A · C ⊆ A · (B ∩ C).
14

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.10.

Potencias de un lenguaje

Dado un lenguaje A sobre Σ, (A ⊆ Σ∗ ), y un n´mero natural n ∈ N, se
u
n en la siguiente forma
define A
A0 = {λ},
An = AA · · · A = {u1 · · · un : ui ∈ A, para todo i, 1 ≤ i ≥ n}.
n veces

De esta forma, A2 es el conjunto de las concatenaciones dobles de cadenas
de A, A3 est´ formado por las concatenaciones triples y, en general, An
a
es el conjunto de todas las concatenaciones de n cadenas de A, de todas
las formas posibles. Como ejercicio, el estudiante puede dar una definici´n
o
recursiva de An .

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 uni´n de todas las potencias de A y se
o
denota por A∗ .
(Descripci´n 1)
o

Ai = A0 ∪ A1 ∪ A2 ∪ · · · ∪ An · · ·

A∗ =
i≥0

Seg´n la definici´n de las potencias de una lenguaje, A∗ consta de todas
u
o
las concatenaciones de cadenas de A consigo mismas, de todas las formas
posibles. Tenemos as´ una util descripci´n de A∗ :
ı
´
o

(Descripci´n 2)
o

A∗ = conjunto de todas las concatenaciones
de cadenas de A, incluyendo λ
= {u1 · · · un : ui ∈ A, n ≥ 0}

De manera similar se define la clausura positiva de un lenguaje A, A ⊆
Σ∗ , denotada por A+ .
Ai = A1 ∪ A2 ∪ · · · ∪ An · · ·

A+ =
i≥1

A+ se puede describir de la siguiente manera
A+

=
=

conjunto de todas las concatenaciones de cadenas de A
{u1 · · · un : ui ∈ A, n ≥ 1}
1.11. LA CLAUSURA DE KLEENE DE UN LENGUAJE

15

Obs´rvese que A∗ = A+ ∪ {λ} y que A∗ = A+ si y solamente si λ ∈ A.
e
Propiedades de ∗ y +. Sea A un lenguaje sobre Σ, es decir, A ⊆ Σ∗ .
1. A+ = A∗ · A = A · A∗ .
2. A∗ · A∗ = A∗ .
3. A∗

n

= A∗ , para todo n ≥ 1.

4. A∗

∗

= A∗ .

5. A+ · A+ ⊆ A+ .
6. A∗

+

= A∗ .

7. A+

∗

= A∗ .

8. A+

+

= A+ .

9. Si A y B son lenguajes sobre Σ∗ , entonces (A ∪ B)∗ = (A∗ B ∗ )∗ .
Demostraci´n.
o
1.

A · A∗ = A · (A0 ∪ A1 ∪ A2 ∪ · · · )
= A1 ∪ A2 ∪ A3 ∪ · · ·
= A+ .

Similarmente se demuestra que A∗ · A = A+ .
2. Si x ∈ A∗ · A∗ , entonces x = u · v, con u ∈ A∗ , v ∈ A∗ . De modo que,
x = u · v, con u = u1 u2 · · · un , ui ∈ A, n ≥ 0 y v = v1 v2 · · · vm , vi ∈ A,
m ≥ 0.
De donde
x = u · v = u1 · u2 · · · un · v 1 · v 2 · · · v m .
con ui ∈ A, vi ∈ A, n ≥ 0. Por lo tanto, x es una concatenaci´n de n + m
o
cadenas de A. As´ que x ∈ A∗ .
ı
Rec´
ıprocamente, si x ∈ A∗ , entonces x = x · λ ∈ A∗ · A∗ . Esto prueba la
igualdad de los conjuntos A∗ · A∗ y A∗ .
3.

Se sigue de la propiedad anterior.

4.

A∗

∗

= A∗

0

∪ A∗
∗

1
∗

∪ A∗
∗

2

∪ ···

= {λ} ∪ A ∪ A ∪ A ∪ · · ·
= A∗ .
16

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

5. La demostraci´n de esta propiedad es similar a la de la propiedad 2,
o
pero con la restricci´n m, n ≥ 1. En general, no se tiene la igualdad A+ ·
o
+ = A+ ; m´s adelante se mostrar´ un contraejemplo.
A
a
a
A∗

6.

+

= A∗

1

∗

∪ (A∗
∗

2

∪ (A∗

3

∪ ···

∗

= A ∪ A ∪ A ∪ ···
= A∗ .

A+

7.

∗

= A+

0

∪ A+
+

1
+

∪ A+

2

∪ ···

+

= {λ} ∪ A ∪ A A ∪ · · ·
= A∗ ∪ (conjuntos contenidos en A+ )
= A∗ .

A+

8.

+

= A+

1

∪ A+

2

∪ A+

3

∪ ··· ,

+

= A ∪ (conjuntos contenidos en A+ )
= A+ .
9. Seg´n la Descripci´n 2, el lenguaje (A∪B)∗ est´ formado por las concau
o
a
tenaciones de cadenas de A consigo mismas, las concatenaciones de cadenas
de B consigo mismas y las concatenaciones de cadenas de A con cadenas de
B, de todas las formas posibles y en cualquier orden. Si se usa tambi´n la
e
Descripci´n 2, se observa que eso mismo se obtiene al efectuar (A∗ B ∗ )∗ .
o


Contraejemplo de A+ · A+ = A+ . Sea Σ = {a, b}, A = {a}. Se
tiene
A+ = A1 ∪ A2 ∪ · · · = {a} ∪ {aa} ∪ {aaa} ∪ · · · = {an : n ≥ 1}.
Por otro lado,
A+ · A+ = {a, a2 , a3 , . . . } · {a, a2 , a3 , . . . } = {a2 , a3 , a4 , . . . }
= {an : n ≥ 2}.



Seg´n las definiciones dadas, Σ∗ tiene dos significados:
u
Σ∗ = conjunto de las cadenas sobre el alfabeto Σ.
Σ∗ = conjunto de todas las concatenaciones de cadenas de Σ.
No hay conflicto de notaciones porque las dos definiciones anteriores de Σ∗ dan lugar al mismo conjunto.
´
1.12. REFLEXION O INVERSO DE UN LENGUAJE

1.12.

17

Reflexi´n o inverso de un lenguaje
o

Dado A un lenguaje sobre Σ, se define AR de la siguiente forma:
AR = {uR : u ∈ A}.
AR se denomina la reflexi´n o el inverso de A.
o
Propiedades. Sean A y B lenguajes sobre Σ (es decir, A, B ⊆ Σ∗ ).
1. (A · B)R = B R · AR .
2. (A ∪ B)R = AR ∪ B R .
3. (A ∩ B)R = AR ∩ B R .
4. AR

R

= A.
∗

5. (A∗ )R = AR .
R

6. (A+ ) = AR

+

.

Demostraci´n. Demostraremos las propiedades 1 y 5; las dem´s se dejan
o
a
como ejercicio para el estudiante.
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 · uR · · · uR , donde los ui ∈ A, n ≥ 0
n
2
1
⇐⇒ x ∈ (AR )∗ .

§

¤

¦

¥

Ejercicios de la secci´n 1.12
o

Œ Demostrar las propiedades 2, 3, 4 y 6 de la reflexi´n de cadenas.
o
 ¿Se pueden generalizar las propiedades 2 y 3 anteriores para uniones
e intersecciones arbitrarias, respectivamente?
18

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.13.

Lenguajes regulares

Los lenguajes regulares sobre un alfabeto dado Σ son todos los lenguajes
que se pueden formar a partir de los lenguajes b´sicos ∅, {λ}, {a}, a ∈ Σ,
a
por medio de las operaciones de uni´n, concatenaci´n y estrella de Kleene.
o
o
A continuaci´n presentamos una definici´n recursiva de los lenguajes
o
o
regulares. Sea Σ un alfabeto.
1. ∅, {λ} y {a}, para cada a ∈ Σ, son lenguajes regulares sobre Σ. Estos
son los denominados lenguajes regulares b´sicos.
a
2. Si A y B son lenguajes regulares sobre Σ, tambi´n lo son
e
A∪B
A·B
A∗

(uni´n),
o
(concatenaci´n),
o
(estrella de Kleene).

Obs´rvese que tanto Σ como Σ∗ son lenguajes regulares sobre Σ. La uni´n,
e
o
la concatenaci´n y la estrella de Kleene se denominan operaciones reguo
lares.
§
¤
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}∗ .
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 finito L = {w1 , w2 , . . . , wn } es
regular ya que L se puede obtener con uniones y concatenaciones:
L = {w1 } ∪ {w2 } ∪ · · · ∪ {wn },
y cada wi es la concatenaci´n de un n´mero finito de s´
o
u
ımbolos, wi =
a1 a2 · · · ak ; por lo tanto, {wi } = {a1 } · {a2 } · · · {ak }.
1.14. EXPRESIONES REGULARES

1.14.

19

Expresiones regulares

Con el prop´sito de simplificar la descripci´n de los lenguajes regulares se
o
o
definen las llamadas expresiones regulares.
La siguiente es la definici´n recursiva de las expresiones regulares
o
sobre un alfabeto Σ dado.
1. Expresiones regulares b´sicas:
a
∅ es una expresi´n regular que representa al lenguaje ∅.
o
λ es una expresi´n regular que representa al lenguaje {λ}.
o
a es una expresi´n regular que representa al lenguaje {a}, a ∈ Σ.
o
2. Si R y S son expresiones regulares sobre Σ, tambi´n lo son:
e
(R)(S)
(R ∪ S)
(R)∗
(R)(S) representa la concatenaci´n de los lenguajes representados por
o
R y S; (R ∪ S) representa su uni´n, y (R)∗ representa la clausura
o
de Kleene del lenguaje representado por R. Los par´ntesis ( y ) son
e
s´
ımbolos de agrupaci´n y se pueden omitir si no hay peligro de amo
big¨edad.
u
Para una expresi´n regular R cualquiera se utiliza en ocasiones la siguiente
o
notaci´n:
o
L(R) := lenguaje representado por R.
Utilizando esta notaci´n y la definici´n recursiva de expresi´n regular poo
o
o
demos escribir las siguientes igualdades en las que R y S son 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)∗
20

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

es una expresi´n regular que representa al lenguaje
o
({a} ∪ {b}∗ ) · {a}∗ · {bc}∗ .
§

¤

¦

¥

Ejemplo

Dado el alfabeto Σ = {a, b},
(λ ∪ a)∗ (a ∪ b)∗ (ba)∗

es una expresi´n regular que representa al lenguaje
o
({λ} ∪ {a})∗ · ({a} ∪ {b})∗ · {ba}∗ .
§

¤

¦

¥ci´n 1.13 con expresiones regulares:
o

Ejemplos

Podemos representar los tres primeros lenguajes de la sec-

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)∗ .


La representaci´n de lenguajes regulares por medio de expresiones
o
regulares no es unica. Es posible que haya varias expresiones re´
gulares 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∗ b∗ )∗ representan el mismo lenguaje por la propiedad 9 de la secci´n 1.11.
o

§

¤

¦

¥lenguajes, definidos sobre el alfabeto Σ = {a, b}:

Ejemplos

Encontrar expresiones regulares que representen los siguientes

1. Lenguaje de todas las cadenas que comienzan con el s´
ımbolo b y
terminan con el s´
ımbolo a.
Soluci´n.
o

b(a ∪ b)∗ a.
1.14. EXPRESIONES REGULARES

21

2. Lenguaje de todas las cadenas que tienen un n´mero par de s´
u
ımbolos
(cadenas de longitud par).
o
Soluci´n. (aa ∪ ab ∪ ba ∪ bb)∗ . Otra expresi´n regular para este leno
guaje es [(a ∪ b)(a ∪ b)]∗ .
3. Lenguaje de todas las cadenas que tienen un n´mero par de aes.
u
Soluciones:
b∗ (b∗ ab∗ ab∗ )∗ .
(ab∗ a ∪ b)∗ .
(b∗ ab∗ ab∗ )∗ ∪ b∗ .
§

¤

¦

¥lenguajes, definidos sobre el alfabeto Σ = {0, 1}:

Ejemplos

Encontrar expresiones regulares que representen los siguientes

1. Lenguaje de todas las cadenas que tienen exactamente dos ceros.
Soluci´n.
o

1∗ 01∗ 01∗ .

2. Lenguaje de todas las cadenas cuyo pen´ltimo s´
u
ımbolo, de izquierda
a derecha, es un 0.
Soluci´n. (0 ∪ 1)∗ 0(0 ∪ 1). Usando la propiedad distributiva obteneo
mos otra expresi´n regular para este lenguaje: (0 ∪ 1)∗ 00 ∪ (0 ∪ 1)∗ 01.
o
§

¤

¦

¥el lenguaje de todas las cadenas que no contienen dos ceros

Ejemplo

Sea Σ = {0, 1}. Encontrar una expresi´n regular que represente
o

consecutivos.
Soluci´n. La condici´n de que no haya dos ceros consecutivos implica que
o
o
todo cero debe estar seguido necesariamente de un uno, excepto un cero al
final de la cadena. Por lo tanto, las cadenas de este lenguaje se obtienen
concatenado unos con bloques 01, de todas las formas posibles. Hay que
tener en cuenta, adem´s, que la cadena puede terminar ya sea en 1 o en 0.
a
A partir de este an´lisis, llegamos a la expresi´n regular
a
o
(1 ∪ 01)∗ ∪ (1 ∪ 01)∗ 0.
Usando la propiedad distributiva, obtenemos otra expresi´n para este leno
guaje: (1 ∪ 01)∗ (λ ∪ 0).
§

¤

¦

¥sente el lenguaje de todas las cadenas que no contienen la ca-

Ejemplo

dena bc.

Sea Σ = {a, b, c}. Encontrar una expresi´n regular que repreo
22

CAP´
ITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Soluci´n. Una b puede estar seguida solamente de otra b o de una a, mientras
o
que las aes y las ces pueden estar seguidas de cualquier s´
ımbolo. Teniendo
en cuenta todas las restricciones y posibilidades, arribamos a la siguiente
expresi´n regular:
o
(a ∪ c ∪ b+ a)∗ b∗ .
La condici´n de que no aparezca la cadena bc significa que una c puede
o
estar precedida solamente de una a y de otra c. Siguiendo esta descripci´n,
o
obtenemos otra expresi´n regular para el lenguaje en cuesti´n:
o
o
c∗ (b ∪ ac∗ )∗ .
§

¤

¦

¥

Ejercicios de la secci´n 1.14
o

Œ Encontrar expresiones regulares para los lenguajes descritos a continuaci´n:
o
(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 n´meu
ro par de s´
ımbolos.
(iii) Σ = {a, b}. Lenguaje de todas las cadenas que tienen un n´mero
u
impar de s´
ımbolos.
(iv) Σ = {a, b, c}. Lenguaje de todas las cadenas que tienen un n´meu
ro impar de s´
ımbolos.
(v) Σ = {a, b}. Lenguaje de todas las cadenas que tienen un n´mero
u
impar de aes.
(vi) Σ = {a, b}. Lenguaje de todas las cadenas que tienen la cadena
ab un n´mero par de veces.
u
(vii) Σ = {a, b}. Lenguaje de todas las cadenas que tienen un n´mero
u
par de aes o un n´mero impar de bes.
u
(viii) Σ = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen
dos unos consecutivos.
 Encontrar expresiones regulares para los siguientes lenguajes definidos
sobre el alfabeto Σ = {0, 1}:
(i) Lenguaje de todas las cadenas que tienen por lo menos un 0 y
por lo menos un 1.
1.14. EXPRESIONES REGULARES

23

(ii) Lenguaje de todas las cadenas que tienen a lo sumo dos ceros
consecutivos.
(iii) Lenguaje de todas las cadenas cuyo quinto s´
ımbolo, 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 m´ltiplo de
u
tres.
(viii) Lenguaje de todas las cadenas que no contienen tres ceros consecutivos.
(ix) Lenguaje de todas las cadenas que no contienen cuatro ceros
consecutivos.
!(x) Lenguaje de todas las cadenas que no contienen la subcadena
101.


No todos los lenguajes sobre un alfabeto dado Σ son regulares.
M´s adelante se mostrar´ que el lenguaje
a
a
L = {λ, ab, aabb, aaabbb, . . . } = {an bn : n ≥ 0}
sobre Σ = {a, b} no se puede representar por medio de una expresi´n regular, y por lo tanto, no es un lenguaje regular.
o
Cap´tulo
ı

2

Aut´matas finitos
o
Los aut´matas son m´quinas abstractas con capacidad de computaci´n.
o
a
o
Hist´ricamente, su estudio se origin´ con la llamada “m´quina de Turing”,
o
o
a
que fue propuesta en 1936 por el matem´tico brit´nico Alan Turing (1912–
a
a
1954) con el prop´sito de precisar las caracter´
o
ısticas y las limitaciones de
un dispositivo de computaci´n mec´nica. En los a˜os 40 y 50 del siglo XX
o
a
n
se adelantaron investigaciones sobre m´quinas de Turing con capacidad
a
restringida, lo que dio lugar a la noci´n de aut´mata finito.
o
o

2.1.

Aut´matas finitos deterministas (AFD)
o

Los aut´matas finitos son m´quinas abstractas que procesan cadenas de
o
a
entrada, las cuales son aceptadas o rechazadas:
Aut´mata
o
M

si

(u es aceptada)

Cadena de
entrada u
no

(u es rechazada)

El aut´mata act´a leyendo los s´
o
u
ımbolos escritos sobre una
infinita, dividida en celdas o casillas, sobre la cual se escribe
de entrada u, un s´
ımbolo por casilla. El aut´mata posee una
o
control (tambi´n llamada cabeza lectora, control finito o
e
25

cinta semiuna cadena
unidad de
unidad de
26

´
CAP´
ITULO 2. AUTOMATAS FINITOS

memoria) que tiene un n´mero finito de configuraciones internas, llamau
das estados del aut´mata. Entre los estados de un aut´mata se destacan
o
o
el estado inicial y los estados finales o estados de aceptaci´n.
o
Formalmente, un aut´mata finito M est´ definido por cinco par´metros
o
a
a
o componentes, M = (Σ, Q, q0 , F, δ), a saber:
1. Un alfabeto Σ, llamado alfabeto de cinta. Todas las cadenas que procesa M pertenecen a Σ∗ .
2. Q = {q0 , q1 , . . . , qn }, conjunto de estados internos del aut´mata.
o
3. q0 ∈ Q, estado inicial.
4. F ⊆ Q, conjunto de estados finales o de aceptaci´n. F = ∅.
o
5. La funci´n de transici´n del aut´mata
o
o
o
δ : Q × Σ −→
Q
(q, s) −→ δ(q, s)
Una cadena de entrada u se coloca en la cinta de tal manera que el primer
s´
ımbolo de u ocupa la primera casilla de la cinta. La unidad de control
est´ inicialmente en el estado q0 escaneando la primera casilla:
a
u

a

···

a

b

≡

···

↑

Unidad
de control

q

La funci´n de transici´n δ indica el estado al cual pasa el control finito,
o
o
dependiendo del s´
ımbolo escaneado y de su estado actual. As´ δ(q, s) = q ′
ı,
significa que, en presencia del s´
ımbolo s, la unidad de control pasa del
estado q al estado q ′ y se desplaza hacia la derecha. Esta acci´n constituye
o
un paso computacional:
δ(q, s) = q ′

···

s

···

···

···

s

↑

↑

q

q′
´
2.1. AUTOMATAS FINITOS DETERMINISTAS (AFD)

27

Puesto que la funci´n δ est´ definida para toda combinaci´n estadoo
a
o
s´
ımbolo, una cadena de entrada cualquiera es procesada completamente,
hasta que la unidad de control encuentra la primera casilla vac´
ıa.
La unidad de control de un aut´mata siempre se desplaza hacia la dereo
cha; no puede retornar ni escribir s´
ımbolos sobre la cinta.
§

¤

¦

¥componentes:

Ejemplo

Consideremos el aut´mata definido por los siguientes cinco
o

Σ = {a, b}.
Q = {q0 , q1 , q2 }.
q0 : estado inicial.
F = {q0 , q2 }, estados de aceptaci´n.
o
Funci´n de transici´n δ:
o
o
δ

a

b

δ(q0 , a) = q0

q2 q1 q1

δ(q1 , b) = q2

δ(q2 , a) = q1

q1 q1 q2

δ(q0 , b) = q1

δ(q1 , a) = q1

q0 q0 q1

δ(q2 , b) = q1 .

Vamos a ilustrar el procesamiento de dos cadenas de entrada.
1.

u = aabab.
u
a

a

b

a

b

↑
q0

↑
q0

↑
q0

↑
q1

↑
q1

···

≡
↑
q2

Como q2 es un estado de aceptaci´n, la cadena de entrada u es aceptada.
o
2.

v = aababa.
v
a

a

b

a

b

a

≡

↑
q0

↑
q0

↑
q0

↑
q1

↑
q1

↑
q2

···

↑
q1

Puesto que q1 no es un estado de aceptaci´n, la entrada v es rechazada.
o
28

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Caso especial: la cadena λ es la cadena de entrada.
≡

≡

···

↑
q0
Como q0 es un estado de aceptaci´n, la cadena λ es aceptada.
o
En general se tiene lo siguiente: la cadena vac´ λ es aceptada por un
ıa
aut´mata M si y solamente si el estado inicial q0 de M tambi´n es un estado
o
e
de aceptaci´n.
o
Los aut´matas finitos descritos anteriormente se denominan aut´matas
o
o
finitos deterministas (AFD) ya que para cada estado q y para cada
s´
ımbolo a ∈ Σ, la funci´n de transici´n δ(q, a) siempre est´ definida. Es
o
o
a
decir, la funci´n de transici´n δ determina completa y un´
o
o
ıvocamente la
acci´n que el aut´mata realiza cuando la unidad de control se encuentra en
o
o
un estado q leyendo un s´
ımbolo s sobre la cinta.
Dado un aut´mata M , el lenguaje aceptado o reconocido por M se
o
denota L(M ) y se define por
L(M ) := {u ∈ Σ∗ : M termina el procesamiento de la cadena
de entrada u en un estado q ∈ F }.

2.2.

Diagrama de transiciones de un aut´mata
o

Un aut´mata finito se puede representar por medio de un grafo dirigido y
o
etiquetado. Recu´rdese que un grafo es un conjunto de v´rtices o nodos
e
e
unidos por arcos o conectores; si los arcos tienen tanto direcci´n como
o
etiquetas, el grafo se denomina grafo dirigido y etiquetado o digrafo
etiquetado.
El digrafo etiquetado de un aut´mata se obtiene siguiendo las siguientes
o
convenciones:
Los v´rtices o nodos son los estados del aut´mata.
e
o
El estado q se representa por: q
El estado inicial q0 se representa por: q0
Un estado final q se representa por: q
29

˜
´
2.3. DISENO DE AUTOMATAS

La transici´n δ = (q, s) = p se representa en la forma
o
s
q
p
Dicho grafo se denomina diagrama de transiciones del aut´mata y
o
es muy util para hacer el seguimiento completo del procesamiento de una
´
cadena de entrada. Una cadena u es aceptada si existe una trayectoria
etiquetada con los s´
ımbolos de u, que comienza en el estado q0 y termina
en un estado de aceptaci´n.
o
§

¤

¦

¥ci´n anterior.
o

Ejemplo

Diagrama de transiciones del aut´mata presentado en la seco

Σ = {a, b}.
Q = {q0 , q1 , q2 }.
q0 : estado inicial.
F = {q0 , q2 }, estados de aceptaci´n.
o
Funci´n de transici´n δ:
o
o
δ

a

b

q0 q0 q1
q1 q1 q2
q2 q1 q1

δ(q0 , a) = q0

δ(q0 , b) = q1

δ(q1 , a) = q1

δ(q1 , b) = q2

δ(q2 , a) = q1

δ(q2 , b) = q1

a

b

 q0

a
q1

a, b
b
q2

Examinando el diagrama de transiciones podemos observar f´cilmente que
a
la entrada aaababbb es aceptada mientras que aabaaba es rechazada.

2.3.

Dise˜ o de aut´matas
n
o

Para aut´matas deterministas se adopta la siguiente convenci´n adicional
o
o
con respecto a los diagramas de transiciones: se supone que los arcos no
30

´
CAP´
ITULO 2. AUTOMATAS FINITOS

dibujadas expl´
ıcitamente conducen a un estado “limbo” de no-aceptaci´n.
o
Es decir, en el diagrama de transiciones se indican unicamente los arcos que
´
intervengan en trayectorias de aceptaci´n. Esto permite simplificar consio
derablemente los diagramas.
En este cap´
ıtulo abordaremos dos tipos de problemas:
1.

Dado un lenguaje regular L dise˜ar un aut´mata finito M que acepte
n
o
o reconozca a L, es decir, tal que L(M ) = L.

2.

Dado un aut´mata M determinar el lenguaje aceptado por M .
o

M´s adelante se demostrar´, en toda su generalidad, que estos problemas
a
a
siempre tienen soluci´n. Consideremos inicialmente problemas del primer
o
tipo.
§

¤

¦

¥

Ejemplo

L = a∗ = {λ, a, a2 , a3 , . . .}. AFD M tal que L(M ) = L:
a
 q0

a
b

q1
b

a
Versi´n simplificada:
o
§

¤

¦

¥

Ejemplo

 q0

L = a+ = {a, a2 , a3 , . . .}. AFD M tal que L(M ) = L:
a
 q0
b

a
q1

a

b

q2
b
a
Versi´n simplificada:
o

 q0

a

q1

§

¤

¦

¥mente dos aes = b∗ ab∗ ab∗ . AFD M tal que L(M ) = L:

Ejemplo

Σ = {a, b}. L = lenguaje de las cadenas que contienen exacta-
˜
´
2.3. DISENO DE AUTOMATAS

b

a

 q0

b

31

b

a

q1

q2

§

¤

¦

¥n´mero par de s´
u
ımbolos (cadenas de longitud par). AFD M

Ejemplo

Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que tienen un

tal que L(M ) = L:
0, 1
 q0

q1
0, 1

§

¤

¦

¥un n´mero par de ceros. AFD M tal que L(M ) = L:
u

Ejemplo

Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que contienen
1

0

 q0

1
q1

0
§

¤

¦

¥en b. AFD M tal que L(M ) = L:

Ejemplo

Σ = {a, b}. L = lenguaje de las cadenas sobre Σ que terminan
a

b

 q0

b
q1

a

§

¤

¦

¥

Ejercicios de la secci´n 2.3
o

Œ Dise˜ar aut´matas finitos deterministas que acepten los siguientes
n
o
lenguajes:
(i) Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ de longitud
impar.
(ii) Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que contienen
un n´mero impar de unos.
u
32

´
CAP´
ITULO 2. AUTOMATAS FINITOS

(iii) Σ = {a, b}. L = ab+ .
(iv) Σ = {a, b}. L = ab∗ ∪ ab∗ a.
(v) Σ = {0, 1}. L = (0 ∪ 10)∗ .
(vi) Σ = {0, 1}. L = (01 ∪ 10)∗ .
(vii) Σ = {0, 1}. Lenguaje de todas las cadenas que no contienen dos
unos consecutivos.
(viii) Σ = {a, b}. L = {a2i b3j : i, j ≥ 0}.
(ix) Σ = {a, b}. L = lenguaje de las cadenas sobre Σ que contienen
un n´mero par de aes y un n´mero par de bes. Ayuda: utilizar
u
u
4 estados.
(x) Σ = {a, b}. Para cada combinaci´n de las condiciones “par” e
o
“impar” y de las conectivas “o” e “y”, dise˜ar un AFD que
n
acepte el lenguaje L definido por
L = lenguaje de las cadenas con un n´mero par/impar de aes
u
y/o un n´mero par/impar de bes.
u
Ayuda: utilizar el aut´mata de 4 estados dise˜ado en el ejercio
n
cio anterior, modificando adecuadamente el conjunto de estados
finales.
 Determinar los lenguajes aceptados por los siguientes AFD. Describir
los lenguajes ya sea por medio de una propiedad caracter´
ıstica o de
una expresi´n regular.
o
(i)
0

0

 q0

q1

q2

1

0

0

1

0

q3

q4

1

1

1

(ii)
1
 q0

1

q1

0

q2

q3
0
´
2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

33

(iii)
q1
0

1
0
 q0

1

q2

1

q3

1
(iv)
b
 q0

b

a

q1

a
q2

b

2.4.

Aut´matas finitos no-deterministas (AFN)
o

Los aut´matas finitos no-deterministas (AFN) se asemejan a los AFD,
o
excepto por el hecho de que para cada estado q ∈ Q y cada a ∈ Σ, la
transici´n δ(q, a) puede consistir en m´s de un estado o puede no estar
o
a
definida. Concretamente, un AFN est´ definido por M = (Σ, Q, q0 , F, ∆)
a
donde:
1. Σ es el alfabeto de cinta.
2. Q es un conjunto (finito) de estados internos.
3. q0 ∈ Q es el estado inicial.
4. ∅ = F ⊆ Q es el conjunto de estados finales o estados de aceptaci´n.
o
5.

∆ : Q × Σ −→ ℘(Q)
(q, s) −→ ∆(q, s) = {qi1 , qi2 , . . . , qik }
donde

℘(Q) es el conjunto de subconjunto de Q.
34

´
CAP´
ITULO 2. AUTOMATAS FINITOS

El significado de ∆(q, s) = {qi1 , qi2 , . . . , qik } es el siguiente: estando en
el estado q, en presencia del s´
ımbolo s, la unidad de control puede pasar
(aleatoriamente) a uno cualquiera de los estados qi1 , qi2 ,. . . , qik , despu´s de
e
lo cual se desplaza a la derecha.
Puede suceder que ∆(q, s) = ∅, lo cual significa que, si durante el procesamiento de una cadena de entrada u, M ingresa al estado q leyendo sobre
la cinta el s´
ımbolo s, el c´mputo se aborta.
o
C´mputo abortado:
o
u
···

s

···

≡

···

↑
q
La noci´n de diagrama de transiciones para un AFN se define de manera
o
an´loga al caso AFD, pero puede suceder que desde un mismo nodo (estado)
a
salgan dos o m´s arcos con la misma etiqueta:
a

s

q ′′′

s

q ′′

q
s
q′

Un AFN M puede procesar una cadena de entrada u ∈ Σ∗ de varias maneras. Sobre el diagrama de transiciones del aut´mata, esto significa que
o
pueden existir varias trayectorias, desde el estado q0 , etiquetadas con los
s´
ımbolos de u.
La siguiente es la noci´n de aceptaci´n para aut´matas no-deterministas:
o
o
o
L(M ) = lenguaje aceptado o reconocido por M
= {u ∈ Σ∗ : existe por lo menos un c´mputo completo
o
de u que termina en un estado q ∈ F }
35

´
2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

Es decir, para que una cadena u sea aceptada, debe existir alg´n c´mpuu o
to en el que u sea procesada completamente y que finalice estando M en
un estado de aceptaci´n.
o
§

¤

¦

¥

Ejemplo
a
 q0

Sea M el siguiente AFN:

a

a

b

q1

b
∆

a

{q0 , q1 , q3 }

∅

{q1 }

{q2 }

q2

∅

{q1 , q2 }

q3

q3

b

q1

b

a

q0

q2

∅

{q3 }

b
Para la cadena de entrada u = abb, existen c´mputos que conducen al rechao
zo, c´mputos abortados y c´mputos que terminan en estados de aceptaci´n.
o
o
o
Seg´n la definici´n de lenguaje aceptado, u ∈ L(M ).
u
o
u
a

b

b

≡

↑
q0

C´mputo de rechazo:
o

↑
q1

↑
q2

···

↑
q2

u
a

b

b

≡

↑
q0

C´mputo de aceptaci´n:
o
o

↑
q3

↑
q3

···

↑
q3

u
Otro c´mputo de aceptaci´n:
o
o

a

b

b

≡

↑
q0

↑
q1

↑
q2

↑
q1

···
36

´
CAP´
ITULO 2. AUTOMATAS FINITOS

u
a

b

↑
q0

C´mputo abortado:
o

≡

···

↑
q0

b

§

¤

¦

¥AFD que acepta el lenguaje de las cadenas sobre Σ = {a, b}

Ejemplo

En el ultimo ejemplo de la secci´n 2.3 se dise˜´ el siguiente
´
o
no

que terminan en b:
a

b

b

 q0

q1
a

Un AFN que acepta el mismo lenguaje y que es, tal vez, m´s f´cil de
a a
concebir, es el siguiente:
a
b

 q0

q1

b
Este aut´mata se asemeja a la expresi´n regular (a ∪ b)∗ b.
o
o
§

Ejemplo

¦

¤

Consid´rese el lenguaje L = ab∗ ∪ a+ sobre el alfabeto Σ =
e
¥{a, b}. El siguiente AFN M satisface L(M ) = L.
a
 q0
a

b
q1

a
q2

§

¤

¦

¥

Ejemplo

Σ = {0, 1}, L = (01 ∪ 010)∗ . El siguiente AFN acepta a L.
´
2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN)

37

0
 q0
0

1

q1

0
q2

q3

1
Otro AFN que acepta el mismo lenguaje y que tiene s´lo tres estados es el
o
siguiente:
0
1
q1
q2
 q0
1
0
§

¤

¦

¥

Ejercicios de la secci´n 2.4
o

Dise˜ar aut´matas AFD o AFN que acepten los siguientes lenguajes:
n
o
Œ Σ = {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 secci´n 1.14 se presentaron
´
o
dos expresiones regulares para L. Nota: ¡se puede construir un AFD
con s´lo dos estados para aceptar este lenguaje!
o
38

2.5.

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Equivalencia computacional entre los AFD y
los AFN

En esta secci´n se mostrar´ que los modelos AFD y AFN son computacioo
a
nalmente equivalentes. En primer lugar, es f´cil ver que un AFD M =
a
(Σ, 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
afirmaci´n rec´
o
ıproca tenemos el siguiente teorema.
2.5.1 Teorema. Dado un AFN M = (Σ, Q, q0 , F, ∆) se puede construir
un AFD M ′ equivalente a M , es decir, tal que L(M ) = L(M ′ ).
Este teorema, cuya demostraci´n se dar´ en detalle m´s adelante, eso
a
a
tablece que el no-determinismo se puede eliminar. Dicho de otra manera,
los aut´matas deterministas y los no-deterministas aceptan los mismos leno
guajes. La idea de la demostraci´n consiste en considerar cada conjunto de
o
estados {p1 , . . . , pj }, que aparezca en la tabla de la funci´n ∆ del aut´mata
o
o
no-determinista, como un unico estado del nuevo aut´mata determinista.
´
o
La tabla de ∆ se completa hasta que no aparezcan nuevas combinaciones de
estados. Los estados de aceptaci´n del nuevo aut´mata son los conjuntos
o
o
de estados en los que aparece por lo menos un estado de aceptaci´n del
o
aut´mata original. El siguiente ejemplo ilustra el procedimiento.
o
§

¤

¦

¥acepta el lenguaje L(M ) = ab∗ ∪ a+ sobre Σ = {a, b}:

Ejemplo

Consideremos el AFN M , presentado en la secci´n 2.4, que
o

a
 q0
a

b
q1

a
q2

∆

a

b

q0

{q1 , q2 }

∅

q1

∅

{q1 }

q2

{q2 }

∅

El nuevo AFD M ′ construido a partir de M tiene un estado m´s, {q1 , q2 },
a
y su funci´n de transici´n δ tiene el siguiente aspecto:
o
o
2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

δ

a

b

q0

{q1 , q2 }

∅

q1

∅

{q1 }

q2

{q2 }

∅

{q1 , q2 }

{q2 }

39

{q1 }

El diagrama de transiciones de este aut´mata es:
o
a
a

a
 {q0 }

{q1 , q2 }

{q2 }

b

{q1 }

b
Los estados de aceptaci´n son aqu´llos en los que aparezcan q1 ´ q2 , que
o
e
o
son los estados de aceptaci´n del aut´mata original.
o
o
Para mayor simplicidad, podemos cambiar los nombres de los estados
del nuevo aut´mata:
o
a

a
 p0

p1

a
p2

b
p3

b
§

¤

¦

¥lenguaje L = (01 ∪ 010)∗ sobre Σ = {0, 1}.

Ejemplo

El siguiente AFN M , presentado en la secci´n 2.4, acepta el
o
40

´
CAP´
ITULO 2. AUTOMATAS FINITOS

0

1

 q0

q1

q2

1
0

La tabla de la funci´n de transici´n de M se extiende para completar la
o
o
funci´n δ del nuevo AFN:
o
δ

0

1

q0

{q1 }

∅

q1

∅

{q0 , q2 }

q2

{q0 }

∅

{q0 , q2 }

{q0 , q1 }

∅

{q0 , q1 }

{q1 }

{q0 , q2 }

El diagrama de transiciones del nuevo aut´mata es:
o
0
0
 {q0 }

{q1 }

1

{q2 }

0
0

{q0 , q2 }

1

{q0 , q1 }

Los estados de aceptaci´n son aqu´llos en los que aparezca q0 ya que q0 es
o
e
el unico estado de aceptaci´n del aut´mata original.
´
o
o
Puesto que el nuevo estado {q2 } no interviene en la aceptaci´n de cadeo
nas, el aut´mata se puede simplificar en la siguiente forma:
o
2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

41

0
 p0

p1

1

0
0

p2

1

p3

Para la demostraci´n del Teorema 2.5.1, conviene extender la definici´n de
o
o
la funci´n de transici´n, tanto de los aut´matas deterministas como de los
o
o
o
no-deterministas.
2.5.2 Definici´n. Sea M = (Σ, Q, q0 , F, δ) un AFD. La funci´n de transio
o
ci´n δ : Q × Σ −→ Q se extiende a una funci´n δ : Q × Σ∗ −→ Q por medio
o
o
de la siguiente definici´n recursiva:
o

δ(q, λ) = q, q ∈ Q,

δ(q, a) = δ(q, a), q ∈ Q, a ∈ Σ,


δ(q, wa) = δ(δ(q, w), a), q ∈ Q, a ∈ Σ, w ∈ Σ∗ .

Seg´n esta definici´n, para una cadena de entrada w ∈ Σ∗ , δ(q0 , w) es el
u
o
estado en el que el aut´mata termina el procesamiento de w. Por lo tanto,
o
podemos describir el lenguaje aceptado por M de la siguiente forma:
L(M ) = {w ∈ Σ∗ : δ(q0 , w) ∈ F }.
Notaci´n. Sin peligro de ambig¨edad, la funci´n extendida δ(q, w) se noo
u
o
tar´ simplemente δ(q, w).
a
2.5.3 Definici´n. Sea M = (Σ, Q, q0 , F, ∆) un AFN. La funci´n de trano
o
℘(Q) se extiende inicialmente a conjuntos de estados.
sici´n ∆ : Q × Σ −→
o
Para a ∈ Σ y S ⊆ F se define
∆(S, a) :=

∆(q, a).
q∈S
42

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Luego se extiende ∆ a una funci´n ∆ : Q × Σ∗ −→ ℘(Q), de manera
o
similar a como se hace para los AFD. Recursivamente,

∆(q, λ) = {q}, q ∈ Q,



∆(q, a) = ∆(q, a), q ∈ Q, a ∈ Σ,

∆(p, a), q ∈ Q, a ∈ Σ, w ∈ Σ∗ .
∆(q, wa) = ∆(∆(q, w), a) =


p∈∆(q,w)

Seg´n esta definici´n, para una cadena de entrada w ∈ Σ∗ , ∆(q0 , w) es el
u
o
conjunto de los posibles estados en los que terminan los c´mputos completos
o
de w. Si el c´mputo se aborta durante el procesamiento de w, se tendr´
o
ıa
∆(q0 , w) = ∅. Usando la funci´n extendida ∆, el lenguaje aceptado por M
o
se puede describir de la siguiente forma:
L(M ) = {w ∈ Σ∗ : ∆(q0 , w) contiene un estado de aceptaci´n}.
o
Notaci´n. Sin peligro de ambig¨edad, la funci´n extendida ∆(q, w) se
o
u
o
notar´ simplemente ∆(q, w).
a
Demostraci´n del Teorema 2.5.1:
o
Dado el AFN M = (Σ, Q, q0 , F, ∆), construimos el AFD M ′ as´
ı:
M ′ = (Σ, ℘(Q), {q0 }, F ′ , δ)

donde

δ : ℘(Q) × Σ −→ ℘(Q)
(S, a) −→ δ(S, a) := ∆(S, a).
F ′ = {S ⊆ ℘(Q) : S ∩ F = ∅}.

Se demostrar´ que L(M ) = L(M ′ ) probando que, para toda cadena w ∈ Σ∗ ,
a
δ({q0 }, w) = ∆(q0 , w). Esta igualdad se demostrar´ por inducci´n sobre w.
a
o
Para w = λ, claramente se tiene δ({q0 }, λ) = ∆(q0 , λ) = {q0 }. Para w = a,
a ∈ Σ, se tiene
δ({q0 }, a) = ∆({q0 }, a) = ∆(q0 , a).
Sup´ngase (hip´tesis de inducci´n) que δ({q0 }, w) = ∆(q0 , w), y que a ∈ Σ.
o
o
o
δ({q0 }, wa) = δ(δ({q0 }, w), a)
= δ(∆({q0 }, w), a)

(definici´n de la extensi´n de δ)
o
o
(hip´tesis de inducci´n)
o
o

= ∆(∆({q0 }, w), a) (definici´n de δ)
o
= ∆({q0 }, wa)

(definici´n de la extensi´n de ∆)
o
o

= ∆(q0 , wa)

(definici´n de la extensi´n de ∆).
o
o
´
2.6. AUTOMATAS CON TRANSICIONES λ (AFN-λ)

§

¤

¦

43

¥

Ejercicios de la secci´n 2.5
o

Dise˜ar AFD equivalentes a los siguientes AFN:
n
Œ
b
 q0

q1

a

b

b
q2

q3
a


0
 q0

0

0

1

q1

1
q2

1

0
q3
1

2.6.

Aut´matas con transiciones λ (AFN-λ)
o

Un aut´mata finito con transiciones λ (AFN-λ) es un aut´mata noo
o
determinista M = (Σ, Q, q0 , F, ∆) en el que la funci´n de transici´n est´ deo
o
a
finida como:
∆ : Q × (Σ ∪ {λ}) → ℘(Q).
o
o
La transici´n ∆(q, λ) = {pi1 , . . . , pin }, llamada transici´n λ, transici´n
o
nula o transici´n espont´nea, tiene el siguiente significado computacioo
a
nal: estando en el estado q, el aut´mata puede cambiar a uno cualquiera de
o
ımbolo le´ y sin mover
ıdo
los estados pi1 , . . . , pin , independientemente del s´
la unidad de control. Dicho de otra manera, las transiciones λ permiten
al aut´mata cambiar internamente de estado sin procesar o “consumir” el
o
s´
ımbolo le´ sobre la cinta.
ıdo
En el diagrama del aut´mata, las transiciones λ dan lugar a arcos con
o
etiquetas λ. Una cadena de entrada w es aceptada por un AFN-λ si existe por lo menos una trayectoria, desde el estado q0 , cuyas etiquetas son
exactamente los s´
ımbolos de w, intercalados con cero, uno o m´s λs.
a
44

´
CAP´
ITULO 2. AUTOMATAS FINITOS

En los aut´matas AFN-λ, al igual que en los AFN, puede haber m´ltiples
o
u
c´mputos para una misma cadena de entrada, as´ como c´mputos abortao
ı
o
dos.
§

¤

¦

¥

Ejemplo

M:
a

b

b

λ

q1

q2

a

q3

q4

 q0

λ

b

a

Ejemplos de cadenas aceptadas por M :
u = aab
v = abaa
w = abbaa
C´mputos de aceptaci´n de u = aab y v = abaa:
o
o
···

a

a

b

≡

↑
q0

↑
q1

↑
q1

↑
q2

a

b

a

a

≡

↑
q0

↑
q3

↑
q3

↑
q4

↑
q4

q1

q4

···
´
2.6. AUTOMATAS CON TRANSICIONES λ (AFN-λ)

45

Los AFN-λ permiten a´n m´s libertad en el dise˜o de aut´matas, espeu
a
n
o
cialmente cuando hay numerosas concatenaciones.
§

¤

¦

¥

Ejemplo

Σ = {a, b, c}. L = a∗ b∗ c∗ . AFD que acepta a L:
a

b

b

 q0

c

q1

c
q2

c
AFN-λ que acepta a L:
a

b

λ

 q0

λ

q1

c
q2

Este aut´mata se asemeja a la expresi´n regular a∗ b∗ c∗ : las concatenaciones
o
o
han sido reemplazadas por transiciones λ.
§

¤

¦

¥tienen un n´mero par de aes o un n´mero par de bes.
u
u

Ejemplo

Σ = {a, b}. L = lenguaje de todas las cadenas sobre Σ que

AFD que acepta el lenguaje de las cadenas con un n´mero par de aes:
u
b

a

 q0

b
q1

a
AFD que acepta el lenguaje de las cadenas con un n´mero par de bes:
u
a

b

 q0

a
q1

b
AFN-λ que acepta el lenguaje de las cadenas con un n´mero par de aes o
u
un n´mero par de bes:
u
46

´
CAP´
ITULO 2. AUTOMATAS FINITOS

b
λ

a

q1

b
q2

a
 q0
b
λ

q3
a

q4
b

a

A diferencia de los AFD y los AFN, en los AFN-λ pueden existir “c´mputos
o
infinitos”, es decir c´mputos que nunca terminan. Esto puede suceder si
o
el aut´mata ingresa a un estado desde el cual haya varias transiciones λ
o
encadenadas que retornen al mismo estado, como por ejemplo:
λ

λ

λ
§

¤

¦

¥

Ejercicios de la secci´n 2.6
o

Dise˜ar AFN-λ que acepten los siguientes lenguajes:
n
Œ (ab ∪ b)∗ ab∗ , sobre Σ = {a, b}.
 a(a ∪ c)∗ b+ , sobre Σ = {a, b, c}.
Ž ab∗ ∪ ba∗ ∪ b(ab ∪ ba)∗ , sobre Σ = {a, b}.
 ab∗ ba∗ b(ab ∪ ba)∗ , sobre Σ = {a, b}.
 (0 ∪ 010)∗ 0∗ (01 ∪ 10)∗ , sobre Σ = {0, 1}.
‘ 0+ 1(010)∗ (01 ∪ 10)∗ 1+ , sobre Σ = {0, 1}.
’ Σ = {a, b}. L = lenguaje de todas las cadenas sobre Σ que tienen un
n´mero par de aes y un n´mero par de bes.
u
u
2.7. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFN-λ Y LOS AFN

2.7.

47

Equivalencia computacional entre los AFN-λ
y los AFN

En esta secci´n se mostrar´ que el modelo AFN-λ es computacionalmente
o
a
equivalente al modelo AFN. O dicho m´s gr´ficamente, las transiciones λ
a
a
se pueden eliminar, a˜adiendo transiciones que las simulen, sin alterar el
n
lenguaje aceptado.
En primer lugar, un AFN M = (Σ, Q, q0 , F, ∆) puede ser considerado
como un AFN-λ en el que, simplemente, hay cero transiciones λ. Para la
afirmaci´n rec´
o
ıproca tenemos el siguiente teorema.
2.7.1 Teorema. Dado un AFN-λ M = (Σ, Q, q0 , F, ∆), se puede construir
un AFN M ′ equivalente a M , es decir, tal que L(M ) = L(M ′ ).
Bosquejo de la demostraci´n. Para construir M ′ a partir de M se requiere
o
la noci´n de λ-clausura de un estado. Para un estado q ∈ Q, la λo
clausura de q, notada λ[q], es el conjunto de estados de M a los que se
puede llegar desde q por 0, 1 o m´s transiciones λ. N´tese que, en general,
a
o
λ[q] = ∆(q, λ). Por definici´n, q ∈ λ[q]. La λ-clausura de un conjunto de
o
estados {q1 , . . . , qk } se define por:
λ[{q1 , . . . , qk }] := λ[q1 ] ∪ · · · ∪ λ[qk ].
Adem´s, λ[∅] := ∅. Sea M ′ = (Σ, Q, q0 , F ′ , ∆′ ) donde
a
∆′ : Q × Σ
(q, a)

−→
−→

℘(Q)
∆′ (q, a) := λ ∆(λ[q], a) .

M ′ simula as´ las transiciones λ de M teniendo en cuenta todas las posibles
ı
trayectorias. F ′ se define como:
F ′ = {q ∈ Q : λ[q] contiene al menos un estado de aceptaci´n}.
o
Es decir, los estados de aceptaci´n de M ′ incluyen los estados de aceptaci´n
o
o
de M y aquellos estados desde los cuales se puede llegar a un estado de
aceptaci´n por medio de una o m´s transiciones λ.
o
a
Como se puede apreciar, la construcci´n de M ′ a partir de M es purao
mente algor´
ıtmica.
§

¤

¦

¥sentado en el segundo ejemplo de la secci´n 2.6.
o

Ejemplo

Vamos a ilustrar el anterior algoritmo con el AFN-λ M , pre-
48

´
CAP´
ITULO 2. AUTOMATAS FINITOS

a

b

λ

 q0

c

λ

q1

q2

L(M ) = a∗ b∗ c∗ . Las λ-clausuras de los estados vienen dadas por:
λ[q0 ] = {q0 , q1 , q2 }.
λ[q1 ] = {q1 , q2 }.
λ[q2 ] = {q2 }.
La funci´n de transici´n ∆′ : Q × {a, b, c} → ℘({q0 , q1 , q2 }) es:
o
o
∆′ (q0 , a)
∆′ (q0 , b)
∆′ (q0 , c)
∆′ (q1 , a)
∆′ (q1 , b)
∆′ (q1 , c)
∆′ (q2 , a)
∆′ (q2 , b)
∆′ (q2 , c)

=
=
=
=
=
=
=
=
=

λ [∆(λ[q0 ], a)] = λ [∆({q0 , q1 , q2 }, a)] = λ[{q0 }] = {q0 , q1 , q2 }.
λ [∆(λ[q0 ], b)] = λ [∆({q0 , q1 , q2 }, b)] = λ[{q1 }] = {q1 , q2 }.
λ [∆(λ[q0 ], c)] = λ [∆({q0 , q1 , q2 }, c)] = λ[{q2 }] = {q2 }.
λ [∆(λ[q1 ], a)] = λ [∆({q1 , q2 }, a)] = λ[∅] = ∅.
λ [∆(λ[q1 ], b)] = λ [∆({q1 , q2 }, b)] = λ[{q1 }] = {q1 , q2 }.
λ [∆(λ[q1 ], c)] = λ [∆({q1 , q2 }, c)] = λ[{q2 }] = {q2 }.
λ [∆(λ[q2 ], a)] = λ [∆({q2 }, a)] = λ[∅] = ∅.
λ [∆(λ[q2 ], b)] = λ [∆({q2 }, b)] = λ[∅] = ∅.
λ [∆(λ[q2 ], c)] = λ [∆({q2 }, c)] = λ[{q2 }] = {q2 }.

El aut´mata M ′ as´ obtenido es el siguiente:
o
ı
a, b, c

 q0
a

q1
a, b

§

b, c

b

¤

¦

q2

¥

Ejercicios de la secci´n 2.7
o

Construir AFN equivalentes a los siguientes AFN-λ:
Œ

λ
 q0
a, λ

b

q1

b
q2

q3
λ

c
49

2.8. TEOREMA DE KLEENE. PARTE I


a

λ

 q0

a

λ

q1

b
q2

b

λ
q3
b

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 aut´mata de uno de estos tres modelos se
o
pueden construir aut´matas equivalentes en los otros modelos. Por lo tanto,
o
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 s´lo si es aceptado
o
por un aut´mata finito (AFD o AFN o AFN-λ).
o
Para demostrar el teorema consideraremos las dos direcciones por separado.
Primero demostraremos que para un lenguaje regular L dado existe un
AFN-λ tal que L(M ) = L. En la secci´n 2.11 demostraremos que, a partir
o
de un AFD M , se puede encontrar una expresi´n regular R tal que L(M ) =
o
R. En ambas direcciones las demostraciones son constructivas.
Las construcciones de este cap´
ıtulo se pueden presentar as´
ı:
AFN
AFD
T. de Kleene II

AFN-λ
Lenguajes regulares

T. de Kleene I
50

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Parte I. Dada una expresi´n regular R sobre un alfabeto Σ, se puede
o
construir un AFN-λ M tal que el lenguaje aceptado por M sea exactamente
el lenguaje representado por R.

Expresi´n regular R
o

M

Procedimiento

−− − − −
− − − −→

AFN-λ

algor´
ıtmico

tal que L(M ) = R.

Demostraci´n. Puesto que la definici´n de las expresiones regulares se hace
o
o
recursivamente, la demostraci´n se lleva a cabo razonando por inducci´n soo
o
bre R. Para las expresiones regulares b´sicas, podemos construir f´cilmente
a
a
aut´matas que acepten los lenguajes representados. As´ el aut´mata
o
ı,
o
 q0

q1

acepta el lenguaje ∅, es decir, el lenguaje representado por la expresi´n
o
regular R = ∅.
El aut´mata
o
 q0
acepta el lenguaje {λ}, es decir, el lenguaje representado por la expresi´n
o
regular R = λ.
El aut´mata
o
a

 q0

q1

acepta el lenguaje {a}, a ∈ Σ, es decir, el lenguaje representado por la
expresi´n regular R = a.
o
Paso inductivo: sup´ngase que para las expresiones regulares R y S exiso
ten AFN-λ M1 y M2 tales que L(M1 ) = R y L(M2 ) = S. Esquem´ticamente
a
vamos a presentar los aut´matas M1 y M2 en la siguiente forma:
o
M1


M2
.
.
.



.
.
.
51

2.8. TEOREMA DE KLEENE. PARTE I

Los estados finales o de aceptaci´n se dibujan a la derecha, pero cabe ado
vertir que el estado inicial puede ser tambi´n un estado de aceptaci´n.
e
o
Obviando ese detalle, podemos ahora obtener AFN-λ que acepten los lenguajes R ∪ S, RS y R∗ .
Aut´mata que acepta R ∪ S. Los aut´matas M1 y M2 se conectan
o
o
en paralelo y los estados finales del nuevo aut´mata son los estados
o
finales de M1 junto con los de M2 :

M1
.
.
.

λ


M2
λ

.
.
.

Aut´mata que acepta RS. Los aut´matas M1 y M2 se conectan en
o
o
serie y los estados finales del nuevo aut´mata son unicamente los
o
´
estados finales de M2 :
λ

M1


.
.
.

.
.
.

M2
.
.
.

λ
Aut´mata que acepta R∗ . Los estados finales del nuevo aut´mata son
o
o
los estados finales de M1 junto con el estado inicial.
52

´
CAP´
ITULO 2. AUTOMATAS FINITOS

λ
M1
.
.
.



λ
Esto concluye la demostraci´n de la parte I del Teorema de Kleene. En la sio
guiente secci´n se presentan ejemplos concretos del procedimiento utilizado
o
en la demostraci´n.
o

2.9.

Ejemplos de la parte I del Teorema de Kleene

De acuerdo con las construcciones presentadas en la demostraci´n de la
o
parte I del Teorema de Kleene, un AFN-λ que acepta el lenguaje a∗ es:
λ
a



Para simplificar las pr´ximas construcciones utilizaremos, en su lugar, el
o
bucle de un estado:
a


§

¤

¦

¥un AFN-λ que acepte el lenguaje a∗ (ab ∪ ba)∗ ∪ a(b ∪ a∗ ) sobre

Ejemplo

Vamos a utilizar el procedimiento del teorema para construir

el alfabeto {a, b}.
Aut´mata que acepta ab:
o

a


λ

b
2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE

Aut´mata que acepta ba:
o

a

λ

b


Aut´mata que acepta ab ∪ ba:
o

a

λ

b

b

λ

a

a

λ

b

b

λ

a

λ

λ

Aut´mata que acepta (ab ∪ ba)∗ :
o
λ

λ

λ

λ

53
54

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Aut´mata que acepta a∗ (ab ∪ ba)∗ :
o
λ

a
λ

b

b

a

λ

λ

a

λ


λ

λ
Aut´mata que acepta b ∪ a∗ :
o
b
λ

λ
a
Aut´mata que acepta a(b ∪ a∗ ):
o
b
λ
a

λ


λ
a
55

2.10. LEMA DE ARDEN

Aut´mata que acepta a∗ (ab ∪ ba)∗ ∪ a(b ∪ a∗ ):
o
λ

a
λ

λ

b

b

a

λ

λ

a

λ
λ


λ

b

λ

λ
a

λ
λ
a

§

¤

¦

¥

Ejercicios de la secci´n 2.9
o

Dise˜ar aut´matas AFN-λ que acepten los siguientes lenguajes sobre el
n
o
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)∗ .

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 ecuaci´n X = AX ∪ B tiene una unica soluci´n dada
o
´
o
por X = A∗ B.
56

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Demostraci´n. Si X es una soluci´n de X = AX ∪ B, entonces B ⊆
o
o
AX ∪ B = X. Tambi´n se tiene AX ⊆ X; a partir de esta contenencia y
e
usando inducci´n sobre n, se puede demostrar que An X ⊆ X para todo
o
n ∈ N. Por lo tanto
An B ⊆ An X ⊆ X
para todo n ∈ N. As´ que
ı
An B =

A∗ B =
n≥0

An B ⊆ X.
n≥0

Esto muestra que toda soluci´n de X = AX ∪ B contiene a A∗ B y es f´cil
o
a
verificar que, de hecho, A∗ B es una soluci´n:
o
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
soluci´n de la ecuaci´n, entonces C = ∅.
o
o
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 = ∅, existir´ una cadena u ∈ C de
ıa
longitud m´
ınima. Entonces u = vw, con v ∈ A, w ∈ C. Como λ ∈ A, v = λ;
por consiguiente |w|  |u|. Esta contradicci´n muestra que necesariamente
o
C = ∅, tal como se quer´
ıa.
§

¤

¦
§

¥
¤

¦

¥X = (a2 ∪ b+ )X ∪ ab. Por el lema de Arden la ecuaci´n tiene
o

Ejemplo
Ejemplo

La ecuaci´n X = aX ∪ b∗ ab tiene soluci´n unica X = a∗ b∗ ab.
o
o ´
La ecuaci´n X = a2 X ∪ b+ X ∪ ab se puede escribir en la forma
o

soluci´n unica X = (a2 ∪ b+ )∗ ab.
o ´
§

¤

¦

¥X = (ab2 ∪ a)X ∪ (a∗ b ∪ b∗ a). Por lema de Arden la ecuaci´n
o

Ejemplo

La ecuaci´n X = ab2 X ∪ aX ∪ a∗ b ∪ b∗ a se puede escribir como
o

tiene soluci´n unica X = (ab2 ∪ a)∗ (a∗ b ∪ b∗ a).
o ´
2.11. TEOREMA DE KLEENE. PARTE II

§

¤

¦

57

¥

Ejercicios de la secci´n 2.10
o

Œ Encontrar las soluciones (´nicas) de las siguientes ecuaciones:
u
(i) X = aX ∪ bX.
(ii) X = aX ∪ b∗ ab ∪ bX ∪ a∗ .
! Demostrar de si λ ∈ A, entonces Y es una soluci´n de la ecuaci´n
o
o
X = AX ∪ B si y solo si Y = A∗ (B ∪ D) para alg´n D ⊆ Σ∗ .
u

2.11.

Teorema de Kleene. Parte II

En esta secci´n demostraremos que para todo AFN M = (Σ, Q, q0 , F, ∆)
o
existe una expresi´n regular R tal que L(M ) = R.
o
Un aut´mata tiene un unico estado inicial pero cambiando dicho eso
´
tado surgen nuevos aut´matas. Para cada qi ∈ Q, sea Mi el aut´mata
o
o
que coincide con M pero con estado inicial qi ; m´s precisamente, Mi =
a
(Σ, Q, qi , F, ∆). Al lenguaje aceptado por Mi lo denotaremos Ai ; es decir,
L(Mi ) = Ai . En particular, A0 = L(M ). Puesto que los estados de aceptaci´n no se han alterado, se tiene que
o
Ai = {w ∈ Σ∗ : ∆(qi , w) ∩ F = ∅}.
Cada Ai se puede escribir como

 {aAj : qj ∈ ∆(qi , a)},

(2.1)
Ai = a∈Σ
 {aAj : qj ∈ ∆(qi , a)} ∪ λ.


si qi ∈ F,
si qi ∈ F.

a∈Σ

Si Q = {q0 , q1 , . . . , qn }, las igualdades de la forma (2.1) dan lugar a un
sistema de n + 1 ecuaciones con n + 1 inc´gnitas (los Ai ):
o

A0 = C01 A0 ∪ C02 A1 ∪ · · · ∪ C0n An (∪λ)



A1 = C11 A0 ∪ C12 A1 ∪ · · · ∪ C1n An (∪λ)
 ..
 ..
 ..


An = Cn1 A0 ∪ Cn2 A1 ∪ · · · ∪ Cnn An (∪λ)

donde cada coeficiente Cij o es ∅ o es un s´
ımbolo de Σ. El t´rmino λ se
e
a˜ade a una ecuaci´n solamente si el estado correspondiente es un estado
n
o
de aceptaci´n.
o
58

´
CAP´
ITULO 2. AUTOMATAS FINITOS

Utilizando sucesivas veces el lema de Arden, se puede mostrar que este
sistema de ecuaciones siempre se puede solucionar y su soluci´n es unica.
o
´
En efecto, comenzando con la ultima ecuaci´n, se escribe An en t´rminos
´
o
e
de los dem´s Ai , para lo cual se usa el lema de Arden si es necesario. Este
a
valor de An se reemplaza en las dem´s ecuaciones y el sistema se reduce a
a
n ecuaciones con n inc´gnitas. Similarmente, An−1 se escribe en t´rminos
o
e
de los dem´s Ai , usando el lema de Arden si es necesario, y tal valor se
a
reemplaza en las ecuaciones restantes. Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuaci´n cuya inc´gnita es precisamente
o
o
A0 . Esta ecuaci´n se soluciona recurriendo una vez m´s al lema de Arden.
o
a
Puesto que los coeficientes Cij diferentes de ∅ son s´
ımbolos de Σ, se obtiene
una expresi´n regular R tal que L(M ) = A0 = R.
o

2.12.

Ejemplos de la parte II del Teorema de
Kleene

A continuaci´n ilustraremos el procedimiento de la secci´n 2.11 para eno
o
contrar L(M ) a partir de un AFN M = (Σ, Q, q0 , F, ∆) dado.
§

¤

¦

¥

Ejemplo

Consid´rese el siguiente AFN M :
e
a

a

a

 q0

q1

b

a
q2
b

Por simple inspecci´n sabemos que L(M ) = (a ∪ b)∗ a2 (a ∪ b)∗ , pero utilio
zaremos el m´todo descrito para encontrar expl´
e
ıcitamente L(M ).
El sistema de ecuaciones

(1)

(2)


(3)

asociado con el aut´mata M es:
o
A0 = aA0 ∪ bA0 ∪ aA1
A1 = aA2
A2 = aA2 ∪ bA2 ∪ λ.

La ecuaci´n (3) se puede escribir como
o
(4)

A2 = (a ∪ b)A2 ∪ λ.

Aplicando el lema de Arden en (4):
(5)

A2 = (a ∪ b)∗ λ = (a ∪ b)∗ .
2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

59

Reemplazando (5) en (2):
(6)

A1 = a(a ∪ b)∗ .

Reemplazando (6) en (1):
(7)

A0 = (a ∪ b)A0 ∪ a2 (a ∪ b)∗ .

Aplicando el lema de Arden en (7) concluimos:
A0 = (a ∪ b)∗ a2 (a ∪ b)∗
§

¤

¦

¥el siguiente AFN M :

Ejemplo

Encontrar una expresi´n regular para el lenguaje aceptado por
o

a

a
 q0

q1

b
q2

b

a

b

q3

q4
a

a
El sistema de ecuaciones asociado con el aut´mata M es:
o

(1) A0 = aA1



(2) A1 = aA2


(3) A2 = bA2 ∪ bA3 ∪ λ


(4) A3 = aA3 ∪ bA4




(5) A4 = aA2 ∪ aA3 ∪ λ

Reemplazando (5) en (4):
(6)

A3 = aA3 ∪ baA2 ∪ baA3 ∪ b = (a ∪ ba)A3 ∪ baA2 ∪ b.

Aplicando el lema de Arden en (6):
(7)

A3 = (a ∪ ba)∗ (baA2 ∪ b) = (a ∪ ba)∗ baA2 ∪ (a ∪ ba)∗ b.

Reemplazando (7) en (3):
(8)

A2 = bA2 ∪ b(a ∪ ba)∗ baA2 ∪ b(a ∪ ba)∗ b ∪ λ.

El sistema original de cinco ecuaciones y cinco inc´gnitas se reduce al siso
tema de tres ecuaciones y tres inc´gnitas formado por (1), (2) y (8).
o
La ecuaci´n (8) se puede escribir como
o
60
(9)

´
CAP´
ITULO 2. AUTOMATAS FINITOS

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 ∪ λ

§

¤

¦

¥las cadenas sobre Σ = {a, b} que tienen un n´mero par de aes
u

Ejemplo

Encontrar una expresi´n regular para el lenguaje L de todas
o

y un n´mero par de bes. El siguiente aut´mata acepta el lenguaje L:
u
o
a
 q0

q1
a

b

b

b

b

a
q2

q3
a

Este aut´mata da lugar al siguiente sistema de ecuaciones:
o

(1) A0 = aA1 ∪ bA2 ∪ λ



(2) A = aA ∪ bA
1
0
3

(3) A2 = aA3 ∪ bA0


(4) A = aA ∪ bA
3
2
1

Reemplazando (4) en (3):
(5)

A2 = a2 A2 ∪ abA1 ∪ bA0 .

Reemplazando (4) en (2):
(6)

A1 = aA0 ∪ baA2 ∪ b2 A1 .

El sistema original de cuatro ecuaciones y cuatro inc´gnitas se reduce a un
o
sistema de tres ecuaciones y tres inc´gnitas, a saber:
o

(1) A0 = aA1 ∪ bA2 ∪ λ

(6) A1 = aA0 ∪ baA2 ∪ b2 A1


(5) A2 = a2 A2 ∪ abA1 ∪ bA0
61

2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

Aplicando el lema de Arden en (5):
(7)

A2 = (a2 )∗ (abA1 ∪ bA0 ) = (a2 )∗ abA1 ∪ (a2 )∗ bA0 .

Reemplazando (7) en (6):
(8)

A1 = aA0 ∪ ba(a2 )∗ abA1 ∪ ba(a2 )∗ bA0 ∪ b2 A1 .

Reemplazando (7) en (1):
(9)

A0 = aA1 ∪ b(a2 )∗ abA1 ∪ b(a2 )∗ bA0 ∪ λ.

El sistema se reduce ahora a dos ecuaciones:

 (9) A0 = aA1 ∪ b(a2 )∗ abA1 ∪ b(a2 )∗ bA0 ∪ λ
(8) A1 = aA0 ∪ ba(a2 )∗ abA1 ∪ ba(a2 )∗ bA0 ∪ b2 A1

= ba(a2 )∗ ab ∪ b2 A1 ∪ aA0 ∪ ba(a2 )∗ bA0 .

Aplicando el lema de Arden en (8):
(10)

A1 = ba(a2 )∗ ab ∪ b2

∗

aA0 ∪ ba(a2 )∗ bA0

∗

∗

= ba(a2 )∗ ab ∪ b2 aA0 ∪ ba(a2 )ab ∪ b2 ba(a2 )∗ bA0 .
∗

Haciendo R = ba(a2 )∗ ab ∪ b2 , (10) se puede escribir como
(11)

A1 = RaA0 ∪ Rba(a2 )∗ bA0 .

Aplicando el lema de Arden en (9):
(12)

A0 = b(a2 )∗ b

∗

aA1 ∪ b(a2 )∗ abA1 ∪ λ

∗

∗

∗

= b(a2 )∗ b aA1 ∪ b(a2 )∗ b b(a2 )∗ abA1 ∪ b(a2 )∗ b .
∗

Haciendo S = b(a2 )∗ b , (12) se puede escribir como:
(13)

A0 = SaA1 ∪ Sb(a2 )∗ abA1 ∪ S.

Al sustituir (11) en (13), el sistema original se reduce a una sola ecuaci´n:
o
(14) A0 = Sa RaA0 ∪ Rba(a2 )∗ bA0 ∪ Sb(a2 )∗ ab RaA0 ∪ Rba(a2 )∗ bA0 ∪ S.
Agrupando los t´rminos en los que aparece A0 y factorizando, se obtiene
e
(15) A0 = SaRa∪SaRba(a2 )∗ b∪Sb(a2 )a bRa∪Sb(a2 )∗ abRba(a2 )∗ b A0 ∪S.
Aplicando lema de Arden en (15):
∗

(16) A0 = SaRa ∪ SaRba(a2 )∗ b ∪ Sb(a2 )∗ abRa ∪ Sb(a2 )∗ abRba(a2 )∗ b S.
Si sustituimos R y S en (16) obtenemos una expresi´n regular para L.
o
62

´
CAP´
ITULO 2. AUTOMATAS FINITOS

§

¤

¦

¥

Ejercicios de la secci´n 2.12
o

ΠUtilizando el lema de Arden, encontrar expresiones regulares para los
siguientes lenguajes sobre Σ = {a, b}:
(i) El lenguaje L de todas las cadenas que tienen un n´mero par
u
de aes y un n´mero impar de bes.
u
(ii) El lenguaje L de todas las cadenas que tienen un n´mero par
u
de aes o un n´mero impar de bes.
u
 Utilizando el lema de Arden, encontrar expresiones regulares para los
lenguajes aceptados por los siguientes AFN:
(i)
b
b

a
 q0

a

q1

a

q2

a

q3

b
(ii)
b
 q0

b
q1

b

a
q2

a
q3

q4
b

b
Cap´tulo
ı

3

Otras propiedades de los lenguajes
regulares
En los dos cap´
ıtulos anteriores hemos presentado las propiedades b´sicas de
a
los lenguajes regulares pero no hemos visto c´mo se puede demostrar que
o
un lenguaje no es regular. El llamado “lema de bombeo”, expuesto en este
cap´
ıtulo, sirve para tal prop´sito. Tambi´n veremos que la regularidad es
o
e
una propiedad que se preserva por las operaciones booleanas usuales, por
homomorfismos y por las im´genes inversas de homomorfismos. Finalmena
te, analizaremos ciertos problemas de decisi´n referentes a aut´matas y a
o
o
lenguajes regulares.

3.1.

Lema de bombeo

El llamado “lema de bombeo” (pumping lemma, en ingl´s) es una propiee
dad 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.

Demostraci´n. Por el Teorema de Kleene y por los teoremas de equivalencia
o
de los modelos AFD, AFN y AFN-λ, existe un AFD M tal que L(M ) = L.
63
64

CAP´
ITULO 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 gr´fica, w se puede descomponer como
a
w = uvx, donde |uv| ≤ n, v = λ.
w
···
↑
q0

u

···
↑
q

···

≡

x

↑
p

↑
q

v

N´tese que tanto u como x pueden ser la cadena vac´ λ, pero v = λ.
o
ıa
Adem´s, la cadena v se puede “bombear”, en el sentido de que uv i x es
a
aceptada por M para todo i ≥ 0. En el diagrama de estados, se puede
visualizar esta propiedad de bombeo de v:
v
u

q

 q0

x
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 contradicci´n (o reducci´n al absurdo). El razonamiento utilizado tiene
o
o
la siguiente forma:
1. Si L fuera regular, existir´ una constante de bombeo n para L.
ıa
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 contradicci´n:
o
(I) Por el lema de bombeo, uv i x ∈ L, para todo i ≥ 0.
3.1. LEMA DE BOMBEO

65

(II) uv i x no puede estar en L, para alg´n i ∈ I. Por lo general, basta
u
escoger valores peque˜os de i como i = 0 ´ i = 2.
n
o
§

¤

¦

¥{ai bi : i ≥ 0} no es regular.

Ejemplo

Usar el lema de bombeo para demostrar que el lenguaje L =

ıa
Soluci´n. Si L fuera regular, existir´ una constante de bombeo n para L.
o
Sea w = an bn ∈ 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 = ar ,
v = as ,

para alg´n r ≥ 0,
u
para alg´n s ≥ 1.
u

Entonces,
x = an−(r+s) bn = an−r−s bn .
Por el lema de bombeo, uv i x ∈ L para todo i ≥ 0. En particular, si i = 0,
ux ∈ L. Pero ux = ar an−r−s bn = an−s bn . Como n − s = n, la cadena
ux ∈ L lo cual es una contradicci´n. Se concluye entonces que L no puede
/
o
ser regular.
Tomando i = 2 tambi´n se llega a una contradicci´n: por un lado, uv 2 x ∈
e
o
L, pero
uv 2 x = ar as as an−r−s bn = ar+2s+n−r−s bn = an+s bn .
Como s ≥ 1, an+s bn no est´ en L.
a
El argumento anterior tambi´n sirve para demostrar que el lenguaje
e
L = {ai bi : i ≥ 1} no es regular.
§

¤

¦

¥es un lenguaje regular. Recu´rdese que un pal´
e
ındromo es una

Ejemplo

Demostrar que el lenguaje de los pal´
ındromos sobre {a, b} no

cadena w tal que w = wR .
ıa
Soluci´n. Si L fuera regular, existir´ una constante de bombeo n para L.
o
Sea w = an ban ∈ L. Entonces w se puede descomponer como w = uvx, con
|v| ≥ 1, |uv| ≤ n, y para todo i ≥ 0, uv i x ∈ L. Por lo tanto, u y v constan
unicamente de aes:
´
u = ar ,
v = as ,

para alg´n r ≥ 0,
u
para alg´n s ≥ 1.
u

Entonces,
x = an−(r+s) ban = an−r−s ban .
66

CAP´
ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Tomando i = 0, se concluye que ux ∈ L, pero
ux = ar an−r−s ban = an−s ban .
Como s ≥ 1, an−s ban no es un pal´
ındromo. Esta contradicci´n muestra que
o
L no puede ser regular.
§

Ejemplo

¦

2

¤

Demostrar que el lenguaje L = ai : i ≥ 0 no es regular. L
¥est´ formado por cadenas de aes cuya longitud es un cuadrado
a

perfecto.
Soluci´n. Si L fuera regular, existir´ una constante de bombeo n para L.
o
ıa
2
Sea w = an ∈ 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,
n2  n2 + |v| = |uvx| + |v| = |uv 2 x| ≤ n2 + |uv| ≤ n2 + n  (n + 1)2 .
Esto quiere decir que el n´mero de s´
u
ımbolos de la cadena uv 2 x no es un
cuadrado perfecto y, por consiguiente, uv 2 x ∈ L. En conclusi´n, L no es
o
regular.
§

¤

¦

¥

Ejercicios de la secci´n 3.1
o

ΠUsar el lema de bombeo para demostrar que los siguientes lenguajes
no son regulares:
(i) L = {w ∈ {a, b}∗ : w tiene el mismo n´mero de aes que de bes}.
u
(ii) L = {ai bai : i ≥ 1}, sobre Σ = {a, b}.
(iii) L = {ai bj ai : i, j ≥ 0}, sobre Σ = {a, b}.
(iv) L = {0i 12i : i ≥ 0}, sobre Σ = {0, 1}.
(v) L = {1i 01i 0 : i ≥ 1}, sobre Σ = {0, 1}.
(vi) L = {ai bj ci+j : i, j ≥ 0}, sobre Σ = {a, b, c}.
(vii) L = {ai bj : j  i ≥ 0}, sobre Σ = {a, b}.
(viii) L = {ww : w ∈ Σ∗ }, siendo Σ = {a, b}.
(ix) L = {wwR : w ∈ Σ∗ }, siendo Σ = {a, b}.
(x) L = {ai : i es un n´mero primo}, sobre Σ = {a}.
u
 ¿Es L = {(ab)i : i ≥ 0} un lenguaje regular?
Ž Encontrar la falacia en el siguiente argumento: “Seg´n la propiedad
u
(B) del enunciado del lema de bombeo, se tiene que uv i x ∈ L para todo i ≥ 0. Por consiguiente, L posee infinitas cadenas y, en conclusi´n,
o
todo lenguaje regular es infinito.”
3.2. PROPIEDADES DE CLAUSURA

3.2.

67

Propiedades de clausura

Las propiedades de clausura afirman 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 colecci´n R ⊆ ℘(Σ∗ ) de los leno
guajes regulares sobre un alfabeto Σ es cerrada bajo todas las operaciones
booleanas.
3.2.1 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto
Σ, tambi´n lo son:
e
(1) L1 ∪ L2
(2) L1 L2
(3) L∗
(4) L+
(5) L = Σ∗ − L
(6) L1 ∩ L2
(7) L1 − L2
(8) L1 ¡ L2
Demostraci´n.
o

(uni´n)
o
(concatenaci´n)
o
(estrella de Kleene)
(clausura positiva)
(complemento)
(intersecci´n)
o
(diferencia)
(diferencia sim´trica)
e

(1), (2) y (3) se siguen de la definici´n de los lenguajes regulares.
o
(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, q0 , F, δ) tal
que L(M ) = L. Para construir un AFD que acepte el complemento
de L basta intercambiar los estados finales con los no finales. Si M ′
es el aut´mata (Σ, Q, q0 , Q − F, δ), entonces L(M ′ ) = L.
o
(6) Se sigue de (1) y (5) teniendo en cuenta que L1 ∩ L2 = L1 ∪ L2 .
(7) Se sigue de (5) y (6) teniendo en cuenta que L1 − L2 = L1 ∩ L2 .
(8) Puesto que
L1 ¡ L2 = (L1 ∪ L2 ) − (L1 ∩ L2 ) = (L1 − L2 ) ∪ (L2 − L1 )
el resultado se sigue de (1), (6), (7).
68

CAP´
ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Recu´rdese que un ´lgebra booleana de conjuntos es una familia A ⊆
e
a

℘(X) cerrada bajo las operaciones de uni´n, intersecci´n y complemento,
o
o
tal que ∅ ∈ A, X ∈ A.

3.2.2 Corolario. La colecci´n R ⊆ ℘(Σ∗ ) de todos los lenguajes regulares
o
sobre un alfabeto Σ es un ´lgebra booleana de conjuntos.
a
Demostraci´n. Se sigue del Teorema 3.2.1 y del hecho de que ∅ y Σ∗ son
o
lenguajes regulares sobre Σ.


Hemos visto que un lenguaje finito es regular y que la uni´n fio
nita de lenguajes regulares es regular. Pero una uni´n infinita de
o
lenguajes regulares no necesariamente es regular; consid´rese, por
e
ejemplo,
L = {an bn : n ≥ 1} =
{ai bi }.
i≥1

Cada conjunto {ai bi } es regular (porque posee s´lo una cadena)
o
pero L no lo es.


Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente regular, es decir, la familia de los lenguajes regulares
no es cerrada para subconjuntos. Dicho de otra forma, un lenguaje regular puede contener sublenguajes no-regulares. Por ejemplo,
L = {an bn : n ≥ 1} es un sublenguaje del lenguaje regular a∗ b∗ ,
pero L mismo no es regular.

Las propiedades de clausura permiten concluir, razonando por contradicci´n, que ciertos lenguajes no son regulares. Esto se ilustra en los siguientes
o
ejemplos en los que se usa el hecho de que los lenguajes L = {ai bi : i ≥ 0}
y L = {ai bi : i ≥ 1} no son regulares.
§

¤

¦

L = {ai bj : i, j ≥ 0, i = j} no es regular. Si lo fuera, a∗ b∗ − L
¥tambi´n lo ser´ pero a∗ b∗ − L = {ai bi : i ≥ 0}.
e
ıa,

§

¤

¦

¥Σ = {a, b} no es regular. Si L fuera regular, tambi´n lo ser´
e
ıa

Ejemplo
Ejemplo

El lenguaje L = {wbn : w ∈ Σ∗ , |w| = n, n ≥ 1} sobre

L ∩ a∗ b∗ pero L ∩ a∗ b∗ = {an bn : n ≥ 1}.
§

¤

¦

¥

Ejercicios de la secci´n 3.2
o

Œ Demostrar que a∗ b∗ es la uni´n de dos lenguajes disyuntos no-regulares.
o
´
3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS

69

 Sea L un lenguaje no-regular y N un subconjunto finito de L. Demostrar que L − N tampoco es regular.
Ž Demostrar o refutar las siguientes afirmaciones:
(i) Un lenguaje no-regular debe ser infinito.
(ii) Si el lenguaje L1 ∪ L2 es regular, tambi´n lo son L1 y L2 .
e
(iii) Si los lenguajes L1 y L2 no son regulares, el lenguaje L1 ∩ L2
tampoco puede ser regular.
(iv) Si el lenguaje L∗ es regular, tambi´n lo es L.
e
(v) Si L es regular y N es un subconjunto finito de L, entonces
L − N es regular.
(vi) Un lenguaje regular L es infinito si y s´lo si en cualquier expreo
si´n regular de L aparece por lo menos una ∗.
o
 Utilizar las propiedades de clausura para concluir que los siguientes
lenguajes no son regulares:
(i) L = {1i 01j 0 : i, j ≥ 1, i = j}, sobre Σ = {0, 1}. Ayuda: utilizar
el ejercicio 1(v) de la secci´n 3.1.
o
(ii) L = {uvuR : u, v ∈ {a, b}+ }, sobre Σ = {a, b}. Ayuda: utilizar
el ejercicio 1(ii) de la secci´n 3.1.
o
(iii) L = {u : |u| es un cuadrado perfecto}, sobre Σ = {a, b, c}. Ayuda: utilizar el ultimo ejemplo de la secci´n 3.1.
´
o

3.3.

Propiedades de clausura para aut´matas
o

Las propiedades de clausura del Teorema 3.2.1 se pueden enunciar como
procedimientos algor´
ıtmicos para la construcci´n de aut´matas finitos.
o
o
3.3.1 Teorema. Sean M , M1 y M2 aut´matas finitos (ya sean AFD o AFN
o
o AFN-λ) y L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir
aut´matas finitos que acepten los siguientes lenguajes:
o
(1)
(2)
(3)
(4)

L1 ∪ L2 .
L1 L2 .
L∗ .
L+ .

(5)
(6)
(7)
(8)

L = Σ∗ − L.
L1 ∩ L2 .
L1 − L2 .
L1 ¡ L2 .

Demostraci´n. La construcci´n de aut´matas para L1 ∪ L2 , L1 L2 , L∗ y L+
o
o
o
se present´ en la demostraci´n de la parte I del Teorema de Kleene. En el
o
o
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro
T computacion rodrigo de castro

Más contenido relacionado

La actualidad más candente

Máquinas de turing y autómatas acotados
Máquinas de turing y autómatas acotadosMáquinas de turing y autómatas acotados
Máquinas de turing y autómatas acotadosBryan Chasiguano
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turingAnel Sosa
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareKarloz Dz
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contextoVerónica Es'Loo
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
PASO DEL MODELO E/R AL MODELO RELACIONAL
PASO DEL MODELO E/R AL MODELO RELACIONALPASO DEL MODELO E/R AL MODELO RELACIONAL
PASO DEL MODELO E/R AL MODELO RELACIONAL Laura Correa Restrepo
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De TuringRicardo Quintero
 
Tesis Maestría en Software Libre
Tesis Maestría en Software LibreTesis Maestría en Software Libre
Tesis Maestría en Software LibreJairo Serrano
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Humano Terricola
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionIrving Che
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARESAnel Sosa
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 

La actualidad más candente (20)

Máquinas de turing y autómatas acotados
Máquinas de turing y autómatas acotadosMáquinas de turing y autómatas acotados
Máquinas de turing y autómatas acotados
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contexto
 
Autómatas Finitos
Autómatas FinitosAutómatas Finitos
Autómatas Finitos
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Lenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajesLenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajes
 
PASO DEL MODELO E/R AL MODELO RELACIONAL
PASO DEL MODELO E/R AL MODELO RELACIONALPASO DEL MODELO E/R AL MODELO RELACIONAL
PASO DEL MODELO E/R AL MODELO RELACIONAL
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De Turing
 
Tesis Maestría en Software Libre
Tesis Maestría en Software LibreTesis Maestría en Software Libre
Tesis Maestría en Software Libre
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Gramaticas y lic
Gramaticas y licGramaticas y lic
Gramaticas y lic
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 

Destacado

Conjuntos regulares 04[1]
Conjuntos regulares 04[1]Conjuntos regulares 04[1]
Conjuntos regulares 04[1]edeciofreitez
 
Teoria de la computacion
Teoria de la computacionTeoria de la computacion
Teoria de la computacionAriel Medina
 
Historia de la Teoria de la Computación.
Historia de la Teoria de la Computación.Historia de la Teoria de la Computación.
Historia de la Teoria de la Computación.guestdf1874
 
Teoría computación
Teoría computaciónTeoría computación
Teoría computaciónOscar Eduardo
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automataJacqui Venegas
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacionLuis Couoh
 

Destacado (8)

Conjuntos regulares 04[1]
Conjuntos regulares 04[1]Conjuntos regulares 04[1]
Conjuntos regulares 04[1]
 
Teoria de la computacion
Teoria de la computacionTeoria de la computacion
Teoria de la computacion
 
Historia de la Teoria de la Computación.
Historia de la Teoria de la Computación.Historia de la Teoria de la Computación.
Historia de la Teoria de la Computación.
 
Teoría computación
Teoría computaciónTeoría computación
Teoría computación
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata
 
Teoría Computacional
Teoría ComputacionalTeoría Computacional
Teoría Computacional
 
Teoría de la computación presentación
Teoría de la computación presentaciónTeoría de la computación presentación
Teoría de la computación presentación
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
 

Similar a T computacion rodrigo de castro

Practicas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmosPracticas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmosChucho E. Peña
 
Teoria de automatas y lenguajes formales
Teoria de automatas y lenguajes formalesTeoria de automatas y lenguajes formales
Teoria de automatas y lenguajes formalesUniversidad del Valle
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numericoLUIS COAQUIRA
 
ApuntesC++.pdf
ApuntesC++.pdfApuntesC++.pdf
ApuntesC++.pdfbilgrado01
 
Aprender a programar, con matlab
Aprender a programar, con matlabAprender a programar, con matlab
Aprender a programar, con matlabCarlos Avila
 
Introduccion al lenguaje c
Introduccion al lenguaje cIntroduccion al lenguaje c
Introduccion al lenguaje cChucho E. Peña
 
Teaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligenceTeaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligenceJosé Carlos Martínez Velázquez
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE Cclaudiocj7
 
Métodos operativos del calculo diferencial
Métodos operativos del calculo diferencial Métodos operativos del calculo diferencial
Métodos operativos del calculo diferencial Joe Arroyo Suárez
 
ejercicio de variable compleja
ejercicio de variable compleja ejercicio de variable compleja
ejercicio de variable compleja Soledad Serapio
 
Fundamentos de Programación con Lenguaje de Programación C++
Fundamentos de Programación con Lenguaje de Programación C++Fundamentos de Programación con Lenguaje de Programación C++
Fundamentos de Programación con Lenguaje de Programación C++Andy Juan Sarango Veliz
 
El lenguaje de programación c++
El lenguaje de programación c++El lenguaje de programación c++
El lenguaje de programación c++Darkcame
 
Matematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_oMatematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_oriberthancco
 
Manual completo python
Manual completo pythonManual completo python
Manual completo pythonalan moreno
 

Similar a T computacion rodrigo de castro (20)

Practicas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmosPracticas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmos
 
Teoria de automatas y lenguajes formales
Teoria de automatas y lenguajes formalesTeoria de automatas y lenguajes formales
Teoria de automatas y lenguajes formales
 
Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
 
Autómatas
AutómatasAutómatas
Autómatas
 
Criptografia
CriptografiaCriptografia
Criptografia
 
ApuntesC++.pdf
ApuntesC++.pdfApuntesC++.pdf
ApuntesC++.pdf
 
Aprender a programar, con matlab
Aprender a programar, con matlabAprender a programar, con matlab
Aprender a programar, con matlab
 
Criptografia (1)
Criptografia (1)Criptografia (1)
Criptografia (1)
 
Introduccion al lenguaje c
Introduccion al lenguaje cIntroduccion al lenguaje c
Introduccion al lenguaje c
 
Teaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligenceTeaching tool for searching algorithms in artificial intelligence
Teaching tool for searching algorithms in artificial intelligence
 
Manual abreviado de_analisis_multivarian
Manual abreviado de_analisis_multivarianManual abreviado de_analisis_multivarian
Manual abreviado de_analisis_multivarian
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
 
Métodos operativos del calculo diferencial
Métodos operativos del calculo diferencial Métodos operativos del calculo diferencial
Métodos operativos del calculo diferencial
 
ejercicio de variable compleja
ejercicio de variable compleja ejercicio de variable compleja
ejercicio de variable compleja
 
Fundamentos de Programación con Lenguaje de Programación C++
Fundamentos de Programación con Lenguaje de Programación C++Fundamentos de Programación con Lenguaje de Programación C++
Fundamentos de Programación con Lenguaje de Programación C++
 
El lenguaje de programación c++
El lenguaje de programación c++El lenguaje de programación c++
El lenguaje de programación c++
 
Matematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_oMatematicas en ingenieria_con_matlab_y_o
Matematicas en ingenieria_con_matlab_y_o
 
Metodos numericos con matlab
Metodos numericos con matlabMetodos numericos con matlab
Metodos numericos con matlab
 
Manual completo python
Manual completo pythonManual completo python
Manual completo python
 
Python desde 0
Python desde 0Python desde 0
Python desde 0
 

T computacion rodrigo de castro

  • 1. ´ Teor´a de la Computacion ı ´ Lenguajes, automatas, gram´ ticas a Rodrigo De Castro Korgi ´ Ph.D. en Matematicas University of Illinois, U.S.A. ´ Departamento de Matematicas ´ Universidad Nacional de Colombia, Bogota
  • 2. Teor´ de la Computaci´n ıa o Lenguajes, aut´matas, gram´ticas o a c Universidad Nacional de Colombia Facultad de Ciencias Juan Manuel Tejeiro, Decano Natalia Ruiz, Vicedecana Acad´mica e Gustavo Rubiano, Director de Publicaciones c Rodrigo De Castro Korgi Profesor Asociado Departamento de Matem´ticas a Primera edici´n, 2004 o A Diagramaci´n en L TEX realizada por el autor o Impresi´n: o UNIBIBLOS Universidad Nacional de Colombia Bogot´ D.C., 2004 a
  • 3. ´ Indice general Pr´logo o 1 Introducci´n. ¿Qu´ es la Teor´ de la Computaci´n? o e ıa o 3 1. Alfabetos, cadenas y lenguajes 1.1. Alfabetos y cadenas . . . . . . . . . . 1.2. Concatenaci´n de cadenas . . . . . . . o 1.3. Potencias de una cadena . . . . . . . . 1.4. Longitud de una cadena . . . . . . . . 1.5. Reflexi´n o inversa de una cadena . . . o 1.6. Subcadenas, prefijos y sufijos . . . . . 1.7. Lenguajes . . . . . . . . . . . . . . . . 1.8. Operaciones entre lenguajes . . . . . . 1.9. Concatenaci´n de lenguajes . . . . . . o 1.10. Potencias de un lenguaje . . . . . . . . 1.11. La clausura de Kleene de un lenguaje 1.12. Reflexi´n o inverso de un lenguaje . . o 1.13. Lenguajes regulares . . . . . . . . . . . 1.14. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Aut´matas finitos o 2.1. Aut´matas finitos deterministas (AFD) . . . . . . . . o 2.2. Diagrama de transiciones de un aut´mata . . . . . . . o 2.3. Dise˜o de aut´matas . . . . . . . . . . . . . . . . . . . n o 2.4. Aut´matas finitos no-deterministas (AFN) . . . . . . . o 2.5. Equivalencia computacional entre los AFD y los AFN 2.6. Aut´matas con transiciones λ (AFN-λ) . . . . . . . . o iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 8 8 9 9 10 11 12 14 14 17 18 19 . . . . . . 25 25 28 29 33 38 43
  • 4. iv ´ INDICE GENERAL 2.7. Equivalencia computacional entre los AFN-λ y los AFN 2.8. Teorema de Kleene. Parte I . . . . . . . . . . . . . . . . 2.9. Ejemplos de la parte I del Teorema de Kleene . . . . . . 2.10. Lema de Arden . . . . . . . . . . . . . . . . . . . . . . . 2.11. Teorema de Kleene. Parte II . . . . . . . . . . . . . . . . 2.12. Ejemplos de la parte II del Teorema de Kleene . . . . . 3. Otras propiedades de los lenguajes regulares 3.1. Lema de bombeo . . . . . . . . . . . . . . . . 3.2. Propiedades de clausura . . . . . . . . . . . . 3.3. Propiedades de clausura para aut´matas . . . o 3.4. Homomorfismos . . . . . . . . . . . . . . . 3.5. Imagen inversa de un homomorfismo . . . 3.6. Algoritmos de decisi´n . . . . . . . . . . . . . o 4. Lenguajes y gram´ticas independientes del a 4.1. Gram´ticas generativas . . . . . . . . . . . a 4.2. Gram´ticas independientes del contexto . . a ´ 4.3. Arbol de una derivaci´n . . . . . . . . . . . o 4.4. Gram´ticas ambiguas . . . . . . . . . . . . a 4.5. Gram´ticas para lenguajes de programaci´n a o 4.6. Gram´ticas para lenguajes naturales . . . a 4.7. Gram´ticas regulares . . . . . . . . . . . . . a 4.8. Eliminaci´n de las variables in´tiles . . . . o u 4.9. Eliminaci´n de las producciones λ . . . . . o 4.10. Eliminaci´n de las producciones unitarias . o 4.11. Forma Normal de Chomsky (FNC) . . . . . 4.12. Forma Normal de Greibach (FNG) . . . 4.13. Lema de bombeo para LIC . . . . . . . . . 4.14. Propiedades de clausura de los LIC . . . . . 4.15. Algoritmos de decisi´n para GIC . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Aut´matas con pila o 5.1. Aut´matas con Pila Deterministas (AFPD) . o 5.2. Aut´matas con pila no-deterministas (AFPN) o 5.3. Aceptaci´n por pila vac´ . . . . . . . . . . . o ıa 5.4. Aut´matas con pila y LIC. Parte I. . . . . . . o 5.5. Aut´matas con pila y LIC. Parte II. o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 49 52 55 57 58 . . . . . . . . . . . . 63 63 67 69 72 74 75 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 81 82 88 91 94 96 98 102 107 110 113 120 125 130 135 . . . . . . . . . . . . . . . 143 143 149 154 157 160
  • 5. v ´ INDICE GENERAL 6. M´quinas de Turing a 6.1. M´quinas de Turing como aceptadoras de lenguajes . . . . . a 6.2. Subrutinas o macros . . . . . . . . . . . . . . . . . . . . . . 6.3. M´quinas de Turing como calculadoras de funciones . . . . a 6.4. M´quinas de Turing como generadoras de lenguajes . . . . . a 6.5. Variaciones del modelo est´ndar de MT . . . . . . . . . . . a 6.5.1. Estado de aceptaci´n unico . . . . . . . . . . . . . . o ´ 6.5.2. M´quina de Turing con cinta dividida en pistas . . . a 6.5.3. M´quina de Turing con m´ltiples cintas . . . . . . . a u 6.5.4. M´quinas de Turing no-deterministas (MTN) . . . . a 6.6. Simulaci´n de aut´matas por medio de m´quinas de Turing o o a 6.6.1. Simulaci´n de aut´matas . . . . . . . . . . . . . . . o o 6.6.2. Simulaci´n de aut´matas con pila . . . . . . . . . . . o o 6.7. Aut´matas con dos pilas (AF2P) . . . . . . . . . . . . . . o 6.8. Propiedades de clausura . . . . . . . . . . . . . . . . . . . . 6.9. MT, computadores, algoritmos y la tesis de Church-Turing 6.9.1. M´quinas de Turing y algoritmos . . . . . . . . . . . a 6.9.2. M´quinas de Turing y computadores . . . . . . . . . a 167 167 174 176 179 180 180 181 181 183 186 186 186 188 193 198 198 199 7. Problemas indecidibles 7.1. Codificaci´n y enumeraci´n de m´quinas de Turing o o a 7.2. M´quina de Turing universal . . . . . . . . . . . . a 7.3. Algoritmos de aceptaci´n para lenguajes RE . . . . o 7.4. Lenguajes que no son RE . . . . . . . . . . . . . . 7.5. Lenguajes RE no recursivos . . . . . . . . . . . . . 7.6. Problemas indecidibles o irresolubles . . . . . . . . 201 201 206 209 211 212 215 Bibliograf´ ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
  • 7. ´ Prologo Este libro contiene lo m´ ınimo que los estudiantes de las carreras de ingenier´ de sistemas y de matem´ticas deber´ saber sobre los fundamentos ıa a ıan matem´ticos de la teor´ de la computaci´n. Est´ basado en el material a ıa o a de clase utilizado por el autor durante los ultimos a˜os en la Universidad ´ n Nacional de Colombia, sede de Bogot´. a A estudiantes y profesores El libro est´ escrito tanto para estudiantes de matem´ticas —quienes, es a a de suponer, tienen m´s experiencia con razonamientos abstractos y demosa traciones— como para estudiantes de ingenier´ Es el profesor quien debe ıa. establecer el tono del curso, enfatizando ya sea el rigor matem´tico o una a presentaci´n m´s intuitiva y pr´ctica. Los resultados est´n presentados en o a a a forma de teoremas, corolarios y lemas, con sus respectivas demostraciones; ´stas pueden omitirse, si as´ lo estima el profesor. En los cursos dirigidos e ı a estudiantes de ingenier´ de sistemas, el ´nfasis debe residir —tanto por ıa e parte del profesor como por parte del estudiante— en los ejemplos y ejercicios pr´cticos; hay que resaltar m´s el significado de los enunciados que a a sus demostraciones formales. El libro contiene gran cantidad de ejemplos y problemas resueltos, con aplicaciones o ilustraciones directas de la teor´ ıa. Como prerrequisito, es imprescindible que el estudiante haya tomado al menos un curso de matem´ticas discretas en el que se haya familiarizado a con las nociones b´sicas y la notaci´n de la teor´ intuitiva de conjuntos, a o ıa grafos, inducci´n matem´tica y l´gica elemental. La experiencia previa en o a o programaci´n es muy util pero, de ninguna manera, necesaria. o ´ El material se presenta en secciones relativamente cortas, lo que permite alguna flexibilidad en la selecci´n de los t´picos del curso. As´ si el tiempo o o ı, 1
  • 8. 2 ´ PROLOGO disponible no es holgado, o no es posible avanzar con la velocidad suficiente, podr´ suprimirse las secciones demarcadas con el s´ ıan ımbolo . Casi todas las secciones poseen ejercicios, de variada dificultad; los m´s a dif´ ıciles est´n precedidos de un s´ a ımbolo de admiraci´n ! y podr´ ser consio ıan derados opcionales. Es responsabilidad del estudiante resolver los ejercicios que sean asignados por el profesor. La unica manera de aprender y asimilar ´ las ideas y t´cnicas presentadas en la clase es trabajar seria y completae mente los ejercicios. Material de apoyo en la red Versiones preliminares de estas notas aparecieron, de forma incompleta, en el curso virtual de Teor´ de la Computaci´n perteneciente al programa ıa o Universidad Virtual de la la Universidad Nacional de Colombia. Es la intenci´n del autor mantener y actualizar permanentemente la versi´n virtual o o interactiva de este curso, con material de apoyo como temas y ejercicios nuevos, correcci´n de errores, software, enlaces a otra p´ginas Web, etc. Se o a puede acceder libremente al curso virtual en el portal http://www.virtual.unal.edu.co/ siguiendo los enlaces: Cursos–Facultad de Ciencias–Matem´ticas–Teor´ de a ıa la Computaci´n. o Agradecimientos Durante la elaboraci´n de estas notas he recibido por parte de estudiantes o atentos muchas observaciones utiles que han ayudado a mejorar sustan´ cialmente la presentaci´n. Quiero expresarles mis agradecimientos a todos o ellos, demasiado numerosos para mencionarlos individualmente. La primera versi´n del curso virtual fue realizada con la ayuda del eso tudiante de posgrado Adolfo Reyes, a quien expreso mi gratitud y reconocimiento. Para la preparaci´n de la presente versi´n tuve la suerte de o o contar con la colaboraci´n del estudiante de matem´ticas Camilo Cubides, o a 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 cooperaci´n desinteresada. o
  • 9. ´ Introduccion ¿Qu´ es la Teor´ de la Computaci´n? e ıa o La Teor´ de la Computaci´n estudia modelos abstractos de los dispositivos ıa o concretos que conocemos como computadores, y analiza lo que se puede y no se puede hacer con ellos. Este estudio te´rico se inici´ varias d´cadas antes o o e de la aparici´n de los primeros computadores reales y contin´a creciendo, o u a medida que que la computaci´n incrementa su sofisticaci´n. o o Entre los muchos t´picos que conforman la teor´ de la computaci´n, o ıa o s´lo tendremos la oportunidad de tratar someramente los dos siguientes: o Modelos de computaci´n. Las investigaciones en este campo comenzao ron en la d´cada de los 30 del siglo XX con el trabajo del l´gico norteamee o ricano Alonzo Church (1903–1995) y del matem´tico brit´nico Alan Turing a a (1912–1954). Church introdujo el formalismo conocido como c´lculo-λ y a enunci´ la tesis —hoy conocida como tesis de Church— de que las funcioo nes efectivamente computables, es decir, computables por cualquier m´todo e computacional concebible, son exactamente las funciones λ-computables. En contraste con el enfoque m´s abstracto de Church, Turing (quien fue a alumno doctoral de Church en la universidad de Princeton) propuso un modelo concreto de m´quina computadora, hoy conocida como la m´quina a a de Turing, capaz de simular las acciones de cualquier otro dispositivo f´ ısico de computaci´n secuencial. o Curiosamente, las propuestas de Church y Turing se publicaron exactamente en el mismo a˜o: 1936. Los dos formalismos resultaron ser equivalenn tes y, desde entonces, se han propuesto muchos otros modelos de computaci´n. Como todos han resultados ser equivalentes entre s´ ha ganado o ı, 3
  • 10. 4 ´ INTRODUCCION aceptaci´n universal la tesis de Church-Turing: no hay modelo de compuo taci´n m´s general ni poderoso que la m´quina de Turing. o a a En los a˜os 40 y 50 del siglo XX se adelantaron investigaciones sobre n m´quinas de Turing con capacidad restringida, surgiendo as´ la noci´n de a ı o m´quina de estado finito o aut´mata finito (“aut´mata” es sin´nimo de a o o o “m´quina de c´mputo autom´tico”). Los aut´matas han resultado ser moa o a o delos muy utiles para el dise˜o de diversos tipos de software y hardware. ´ n Lenguajes y gram´ticas formales. Una l´ a ınea investigativa, aparentemente alejada de los modelos de computaci´n, surgi´ con los estudios del o o ling¨ista norteamericano Noam Chomsky1 . Chomsky introdujo en 1956 la u noci´n de gram´tica generativa con el prop´sito de describir los lenguajes o a o naturales como el espa˜ol, el ingl´s, el franc´s, etc. Chomsky clasific´ las n e e o gram´ticas en cuatro tipos, dependiendo de la forma de sus producciones, a que son las reglas que utiliza una gram´tica para generar palabras o caa denas de s´ ımbolos. Pocos a˜os despu´s se estableci´ que hay una estrecha n e o relaci´n entre aut´matas y gram´ticas: los lenguajes de la llamada jerarqu´ o o a ıa de Chomsky corresponden a los lenguajes que pueden ser reconocidos por tipos especiales de aut´matas. o La interacci´n entre los aut´matas (mecanismos para procesar cadeo o nas de s´ ımbolos) y las gram´ticas (mecanismos para generar cadenas de a s´ ımbolos) es una fuente de resultados profundos y significativos. Desde la aparici´n de los influyentes textos de Hopcroft y Ullman ([HU1], 1969) y o ([HU2], 1979), un curso semestral b´sico de teor´ de la computaci´n se a ıa o ha centrado en el estudio de aut´matas y gram´ticas. Estas notas de clase o a reflejan esa tradici´n. o 1 En el a˜ o 2002, la Universidad Nacional de Colombia otorg´ el doctorado Honoris n o Causa a Noam Chomsky.
  • 11. Cap´tulo ı 1 Alfabetos, cadenas y lenguajes De manera muy amplia podr´ decirse que la computaci´n es la manipulaıa o ci´n de secuencias de s´ o ımbolos. Pero el n´mero de s´ u ımbolos disponibles en cualquier mecanismo de c´mputo es finito y todos los objetos usados como o entradas o salidas (inputs/outputs) deben ser identificados en un tiempo finito. Desde el punto de vista te´rico esto impone dos restricciones b´sicas: o a el conjunto de s´ ımbolos (alfabeto) debe ser finito y se deben considerar uni´ camente cadenas (secuencias de s´ ımbolos) de longitud finita. Surgen as´ los ı ingredientes esenciales de una teor´ abstracta de la computaci´n: alfabeıa o tos y cadenas. Los conjuntos de cadenas (ya sean finitos o infinitos) se denominar´n lenguajes. a 1.1. Alfabetos y cadenas Un alfabeto es un conjunto finito no vac´ cuyos elementos se llaman ıo s´ ımbolos. Denotamos un alfabeto arbitrario con la letra Σ. Una cadena o palabra sobre un alfabeto Σ es cualquier sucesi´n (o o secuencia) finita de elementos de Σ. Admitimos la existencia de una unica ´ cadena que no tiene s´ ımbolos, la cual se denomina cadena vac´ y se ıa denota con λ. La cadena vac´ desempe˜a, en la teor´ de la computaci´n, ıa n ıa o un papel similar al del conjunto vac´ ∅ en la teor´ de conjuntos. ıo ıa § ¤ ¦ ¥b. Las siguientes son cadenas sobre Σ: Ejemplo Sea Σ = {a, b} el alfabeto que consta de los dos s´ ımbolos a y aba ababaaa aaaab. 5
  • 12. 6 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES Obs´rvese que aba = aab. El orden de los s´ e ımbolos en una cadena es significativo ya que las cadenas se definen como sucesiones, es decir, conjuntos secuencialmente ordenados. § ¤ ¦ ¥cadenas sobre este alfabeto son secuencias finitas de ceros y Ejemplo El alfabeto Σ = {0, 1} se conoce como alfabeto binario. Las unos, llamadas secuencias binarias, tales como 001 1011 001000001. § ¤ ¦ ¥idioma castellano. Las palabras oficiales del castellano (las que Ejemplo Σ = {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}, el alfabeto del aparecen en el diccionario DRA) son cadenas sobre Σ. § ¤ ¦ ¥programaci´n (como Pascal o C) es el conjunto de caracteo Ejemplo El alfabeto utilizado por muchos de los llamados lenguajes de res ASCII (o un subconjunto de ´l) que incluye, por lo general, las letras e may´sculas y min´sculas, los s´ u u ımbolos de puntuaci´n y los s´ o ımbolos matem´ticos disponibles en los teclados est´ndares. a a El conjunto de todas las cadenas sobre un alfabeto Σ, incluyendo la cadena vac´ se denota por Σ∗ . ıa, § ¤ ¦ ¥ 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 aparece la notaci´n corrientemente utilizada en la o teor´ de la computaci´n. De ser necesario, se emplean sub´ ıa o ındices. Σ, Γ Notaci´n usada en la teor´ de la computaci´n o ıa o denotan alfabetos. Σ∗ denota el conjunto de todas las cadenas que se pueden formar con los s´ ımbolos del alfabeto Σ. a, b, c, d, e,. . . denotan s´ ımbolos de un alfabeto. u, v, w, x, y, z, . . . α, β, γ, . . . denotan cadenas, es decir, sucesiones finitas de s´ ımbolos de un alfabeto. λ denota la cadena vac´ es decir, la unica cadena ıa, ´ que no tiene s´ ımbolos. A, B, C, . . . , L, M, N ,. . . denotan lenguajes (definidos m´s adelante). a
  • 13. ´ 1.2. CONCATENACION DE CADENAS Algunos autores denotan la cadena vac´ con la letra griega ε. ıa Preferimos denotarla con λ porque ε tiende a confundirse con el s´ ımbolo ∈ usado para la relaci´n de pertenencia. o Si bien un alfabeto Σ es un conjunto finito, Σ∗ es siempre un conjunto infinito (enumerable). En el caso m´s simple, Σ contiene a ∗ = {λ, a, aa, aaa, aaaa, aaaaa, . . .}. solo un s´ ımbolo, Σ = {a}, y Σ Hay que distinguir entre los siguientes cuatro objetos, que son todos diferentes entre s´ ∅, λ, {∅} y {λ}. ı: 7 La mayor parte de la teor´ de la computaci´n se hace con refeıa o rencia a un alfabeto Σ fijo (pero arbitrario). 1.2. Concatenaci´n de cadenas o Dado un alfabeto Σ y dos cadenas u, v ∈ Σ∗ , la concatenaci´n de u y v o se denota como u · v o simplemente uv y se define descriptivamente as´ ı: 1. Si v = λ, entonces u · λ = λ · u = u. Es decir, la concatenaci´n de o cualquier cadena u con la cadena vac´ a izquierda o a derecha, es ıa, igual a u. 2. Si u = a1 a2 · · · an , v = b1 b2 · · · bm , entonces u · v = a1 a2 · · · an b1 b2 · · · bm . Es decir, u · v es la cadena formada escribiendo los s´ ımbolos de u y a continuaci´n los s´ o ımbolos de v. La concatenaci´n de cadenas se puede definir inductiva o recursivamente o de la siguiente manera. Si u, v ∈ Σ∗ , a ∈ Σ, entonces 1. u · λ = λ · u = u. 2. u · (va) = (u · v)a. Propiedad. La concatenaci´n de cadenas es una operaci´n asociativa. Es o o decir, si u, v, w ∈ Σ∗ , entonces (uv)w = u(vw). Demostraci´n. Se puede hacer escribiendo expl´ o ıcitamente las cadenas u, v, w y usando la definici´n descriptiva de concatenaci´n. Tambi´n se puede dar o o e una demostraci´n inductiva usando la definici´n recursiva de concatenaci´n o o o (ejercicio opcional).
  • 14. 8 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES 1.3. Potencias de una cadena Dada u ∈ Σ∗ y n ∈ N, se define (descriptivamente) un en la siguiente forma u0 = λ, un = uu · · · u . n veces Como ejercicio, el estudiante puede dar una definici´n recursiva de un . o 1.4. Longitud de una cadena La longitud de una cadena u ∈ Σ∗ se denota |u| y se define como el n´mero u de s´ ımbolos de u (contando los s´ ımbolos repetidos). Es decir, |u| = 0, si u = λ, n, si u = a1 a2 · · · an . § ¤ ¦ ¥ § ¤ ¦ ¥Esta no es una propiedad realmente importante (¡no la usare- Ejemplo Ejemplo |aba| = 3, |baaa| = 4. Si w ∈ Σ∗ , n, m ∈ N, demostrar que |wn+m | = |wn | + |wm |. mos nunca en este libro!); la presentamos aqu´ para enfatizar los conceptos ı involucrados e ilustrar los razonamientos estrictos. Soluci´n. o Caso n, m ≥ 1. |wn+m | = | ww · · · w | = (n + m)|w|. Por otro n+m veces lado, |wn | + |wm | = | ww · · · w | + | ww · · · w | = n|w| + m|w|. n veces m veces Caso n = 0, m ≥ 1. |wn+m | = |w0+m | = |wm |. Por otro lado, |wn | + |wm | = |w0 | + |wm | = |λ| + |wm | = 0 + |wm | = |wm |. Caso m = 0, n ≥ 1. Similar al caso anterior. Caso n = 0, m = 0. |wn+m | = |w0+0 | = |λ| = 0. Por otro lado, |wn | + |wm | = |w0 | + |w0 | = |λ| + |λ| = 0 + 0 = 0.
  • 15. ´ 1.5. REFLEXION O INVERSA DE UNA CADENA 1.5. 9 Reflexi´n o inversa de una cadena o La reflexi´n o inversa de una cadena u ∈ Σ∗ se denota uR y se define o descriptivamente as´ ı: uR = λ, si u = λ, an · · · a2 a1 , si u = a1 a2 · · · an . De la definici´n se observa claramente que la reflexi´n de la reflexi´n de o o o una cadena es la misma cadena, es decir, (uR )R = u, para u ∈ Σ∗ . Algunos autores escriben u−1 en lugar de uR para denotar la reflexi´n de una cadena u. o § ¤ ¦ ¥ Ejercicios de la secci´n 1.5 o Œ Dar una definici´n recursiva de uR . o  Si u, v ∈ Σ∗ , demostrar que (uv)R = v R uR . Generalizar esta propiedad a la concatenaci´n de n cadenas. o 1.6. Subcadenas, prefijos y sufijos Una cadena v es una subcadena o una subpalabra de u si existen cadenas x, y tales que u = xvy. N´tese que x o y pueden ser λ y, por lo tanto, o la cadena vac´ es una subcadena de cualquier cadena y toda cadena es ıa subcadena de s´ misma. ı Un prefijo de u es una cadena v tal que u = vw para alguna cadena w ∈ Σ∗ . Se dice que v es un prefijo propio si v = u. Similarmente, un sufijo de u es una cadena v tal que u = wv para alguna cadena w ∈ Σ∗ . Se dice que v es un sufijo propio si v = u. Obs´rvese que λ es un prefijo y un sufijo de toda cadena u ya que e uλ = λu = u. Por la misma raz´n, toda cadena u es prefijo y sufijo de o s´ misma. ı § ¤ ¦ ¥ Ejemplo Sean Σ = {a, b, c, d} y u = bcbaadb.
  • 16. 10 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES Prefijos de u : λ b bc bcb bcba bcbaa bcbaad bcbaadb 1.7. Sufijos de u : λ b db adb aadb baadb cbaadb bcbaadb Lenguajes Un lenguaje L sobre un alfabeto Σ es un subconjunto de Σ∗ , es decir L ⊆ Σ∗ . Casos extremos: L = ∅, L = Σ∗ , lenguaje vac´ ıo. lenguaje de todas las cadenas sobre Σ. Todo lenguaje L satisface ∅ ⊆ L ⊆ Σ∗ , y puede ser finito o infinito. Los lenguajes se denotan con letras may´sculas A, B, C, . . . , L, M, N, . . .. En la u siguiente gr´fica se visualizan dos lenguajes A y B sobre Σ. a Σ∗ B A § ¤ ¦ ¥especificados. Ejemplos Los siguientes son ejemplos de lenguajes sobre los alfabetos Σ = {a, b, c}. L = {a, aba, aca}. Σ = {a, b, c}. L = {a, aa, aaa, . . .} = {an : n ≥ 1}.
  • 17. 1.8. OPERACIONES ENTRE LENGUAJES 11 Σ = {a, b, c}. L = {λ, aa, aba, ab2 a, ab3 a, . . .} = {abn a : n ≥ 0} ∪ {λ}. Σ = {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}. L = {u ∈ Σ∗ : u aparece en el diccionario espa˜ol DRA}. L es un lenguaje finito. n Σ = {a, b, c}. L = {u ∈ Σ∗ : u no contiene el s´ ımbolo c}. Por ejemplo, abbaab ∈ L pero abbcaa ∈ L. / Σ = {0, 1}. L = conjunto de todas las secuencias binarias que contienen un n´mero impar de unos. u Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los n´meros naturales u se puede definir como un lenguaje sobre Σ, en la siguiente forma: N = {u ∈ Σ∗ : u = 0 ´ 0 no es un prefijo de u}. o Como ejercicio, el estudiante puede definir el conjunto de los enteros Z = {. . . , −2, −1, 0, 1, 2, . . .} como un lenguaje sobre un alfabeto adecuado. 1.8. El concepto abstracto de “lenguaje”, tal como se ha definido, no es exactamente la misma noci´n utilizada en la expresi´n “lenguaje o o de programaci´n”. Para precisar la relaci´n entre estos conceptos, o o consideremos el alfabeto Σ de los caracteres ASCII. Un programa en C o en Pascal, por ejemplo, es simplemente una cadena de s´ ımbolos de Σ y, por lo tanto, un conjunto de programas es un lenguaje (en el sentido formal definido en esta secci´n). o Operaciones entre lenguajes Puesto que los lenguajes sobre Σ son subconjuntos de Σ∗ , las operaciones usuales entre conjuntos son tambi´n operaciones v´lidas entre lenguajes. e a As´ si A y B son lenguajes sobre Σ (es decir A, B ⊆ Σ∗ ), entonces los ı, siguientes tambi´n son lenguajes sobre Σ: e A∪B A∩B A−B A = Σ∗ − A Uni´n o Intersecci´n o Diferencia Complemento Estas operaciones entre lenguajes se llaman operaciones conjuntistas o booleanas para distinguirlas de las operaciones ling¨´ uısticas (concatenaci´n, poo tencia, inverso, clausura) que son extensiones a los lenguajes de las operaciones entre cadenas.
  • 18. 12 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES 1.9. Concatenaci´n de lenguajes o La concatenaci´n de dos lenguajes A y B sobre Σ, notada A · B o simo plemente AB se define como AB = {uv : u ∈ A, v ∈ B}. En general, AB = BA. § ¤ ¦ ¥ Ejemplo Si Σ = {a, b, c}, A = {a, ab, ac}, B = {b, b2 }, entonces AB = {ab, ab2 , ab2 , ab3 , acb, acb2 }. BA = {ba, bab, bac, b2 a, b2 ab, b2 ac}. § ¤ ¦ ¥ Ejemplo Si Σ = {a, b, c}, A = {ba, bc}, B = {bn : n ≥ 0}, entonces AB = {babn : n ≥ 0} ∪ {bcbn : n ≥ 0}. BA = {bn ba : n ≥ 0} ∪ {bn bc : n ≥ 0} = {bn+1 a : n ≥ 0} ∪ {bn+1 c : n ≥ 0} = {bn a : n ≥ 1} ∪ {bn c : n ≥ 1}. Propiedades de la concatenaci´n de lenguajes. Sean A, B, C lenguao ∗ . Entonces jes sobre Σ, es decir A, B, C ⊆ Σ 1. A · ∅ = ∅ · A = ∅. 2. A · {λ} = {λ} · A = A. 3. Propiedad Asociativa, A · (B · C) = (A · B) · C. 4. Distributividad de la concatenaci´n con respecto a la uni´n, o o A · (B ∪ C) = A · B ∪ A · C. (B ∪ C) · A = B · A ∪ C · A. 5. Propiedad distributiva generalizada. Si {Bi }i∈I es una familia cualquiera de lenguajes sobre Σ, entonces A· (A · Bi ), Bi = i∈I i∈I Bi · A = i∈I (Bi · A). i∈I
  • 19. ´ 1.9. CONCATENACION DE LENGUAJES 13 Demostraci´n. o 1. A · ∅ = {uv : u ∈ A, v ∈ ∅} = ∅. 2. A · {λ} = {uv : u ∈ A, v ∈ {λ}} = {u : u ∈ A} = A. 3. Se sigue de la asociatividad de la concatenaci´n de cadenas. o 4. Caso particular de la propiedad general, demostrada a continuaci´n. o 5. Demostraci´n de la igualdad A · o x∈A· i∈I Bi ⇐⇒ ⇐⇒ ⇐⇒ ⇐⇒ i∈I i∈I x = u · v, con u ∈ A v ∈ i∈I Bi x = u · v, con u ∈ A v ∈ Bj , para alg´n j ∈ I u x ∈ A · Bj , para alg´n j ∈ I u x ∈ i∈I (A · Bi ). Bi · A = La igualdad (A · Bi ): Bi = i∈I (Bi · A) se demuestra de forma similar. i∈I La propiedad asociativa permite escribir concatenaciones de tres o m´s lenguajes sin necesidad de usar par´ntesis. a e En general, no se cumple que A · (B ∩ C) = A · B ∩ A · C. Es decir, la concatenaci´n no es distributiva con respecto a la intersecci´n. o o Contraejemplo: A = {a, λ}, B = {λ}, C = {a}. Se tiene: A · (B ∩ C) = {a, λ} · ∅ = ∅. Por otro lado, A · B ∩ A · C = {a, λ} · {λ} ∩ {a, λ} · {a} = {a, λ} ∩ {a2 , a} = {a}. § ¤ ¦ ¥ Ejercicios de la secci´n 1.9 o Œ Dar un ejemplo de un alfabeto Σ y dos lenguajes diferentes A, B sobre Σ tales que AB = BA.  Una de las dos contenencias siguientes es verdadera y la otra es falsa. Demostrar o refutar, seg´n sea el caso: u (i) A · (B ∩ C) ⊆ A · B ∩ A · C. (ii) A · B ∩ A · C ⊆ A · (B ∩ C).
  • 20. 14 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES 1.10. Potencias de un lenguaje Dado un lenguaje A sobre Σ, (A ⊆ Σ∗ ), y un n´mero natural n ∈ N, se u n en la siguiente forma define A A0 = {λ}, An = AA · · · A = {u1 · · · un : ui ∈ A, para todo i, 1 ≤ i ≥ n}. n veces De esta forma, A2 es el conjunto de las concatenaciones dobles de cadenas de A, A3 est´ formado por las concatenaciones triples y, en general, An a es el conjunto de todas las concatenaciones de n cadenas de A, de todas las formas posibles. Como ejercicio, el estudiante puede dar una definici´n o recursiva de An . 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 uni´n de todas las potencias de A y se o denota por A∗ . (Descripci´n 1) o Ai = A0 ∪ A1 ∪ A2 ∪ · · · ∪ An · · · A∗ = i≥0 Seg´n la definici´n de las potencias de una lenguaje, A∗ consta de todas u o las concatenaciones de cadenas de A consigo mismas, de todas las formas posibles. Tenemos as´ una util descripci´n de A∗ : ı ´ o (Descripci´n 2) o A∗ = conjunto de todas las concatenaciones de cadenas de A, incluyendo λ = {u1 · · · un : ui ∈ A, n ≥ 0} De manera similar se define la clausura positiva de un lenguaje A, A ⊆ Σ∗ , denotada por A+ . Ai = A1 ∪ A2 ∪ · · · ∪ An · · · A+ = i≥1 A+ se puede describir de la siguiente manera A+ = = conjunto de todas las concatenaciones de cadenas de A {u1 · · · un : ui ∈ A, n ≥ 1}
  • 21. 1.11. LA CLAUSURA DE KLEENE DE UN LENGUAJE 15 Obs´rvese que A∗ = A+ ∪ {λ} y que A∗ = A+ si y solamente si λ ∈ A. e Propiedades de ∗ y +. Sea A un lenguaje sobre Σ, es decir, A ⊆ Σ∗ . 1. A+ = A∗ · A = A · A∗ . 2. A∗ · A∗ = A∗ . 3. A∗ n = A∗ , para todo n ≥ 1. 4. A∗ ∗ = A∗ . 5. A+ · A+ ⊆ A+ . 6. A∗ + = A∗ . 7. A+ ∗ = A∗ . 8. A+ + = A+ . 9. Si A y B son lenguajes sobre Σ∗ , entonces (A ∪ B)∗ = (A∗ B ∗ )∗ . Demostraci´n. o 1. A · A∗ = A · (A0 ∪ A1 ∪ A2 ∪ · · · ) = A1 ∪ A2 ∪ A3 ∪ · · · = A+ . Similarmente se demuestra que A∗ · A = A+ . 2. Si x ∈ A∗ · A∗ , entonces x = u · v, con u ∈ A∗ , v ∈ A∗ . De modo que, x = u · v, con u = u1 u2 · · · un , ui ∈ A, n ≥ 0 y v = v1 v2 · · · vm , vi ∈ A, m ≥ 0. De donde x = u · v = u1 · u2 · · · un · v 1 · v 2 · · · v m . con ui ∈ A, vi ∈ A, n ≥ 0. Por lo tanto, x es una concatenaci´n de n + m o cadenas de A. As´ que x ∈ A∗ . ı Rec´ ıprocamente, si x ∈ A∗ , entonces x = x · λ ∈ A∗ · A∗ . Esto prueba la igualdad de los conjuntos A∗ · A∗ y A∗ . 3. Se sigue de la propiedad anterior. 4. A∗ ∗ = A∗ 0 ∪ A∗ ∗ 1 ∗ ∪ A∗ ∗ 2 ∪ ··· = {λ} ∪ A ∪ A ∪ A ∪ · · · = A∗ .
  • 22. 16 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES 5. La demostraci´n de esta propiedad es similar a la de la propiedad 2, o pero con la restricci´n m, n ≥ 1. En general, no se tiene la igualdad A+ · o + = A+ ; m´s adelante se mostrar´ un contraejemplo. A a a A∗ 6. + = A∗ 1 ∗ ∪ (A∗ ∗ 2 ∪ (A∗ 3 ∪ ··· ∗ = A ∪ A ∪ A ∪ ··· = A∗ . A+ 7. ∗ = A+ 0 ∪ A+ + 1 + ∪ A+ 2 ∪ ··· + = {λ} ∪ A ∪ A A ∪ · · · = A∗ ∪ (conjuntos contenidos en A+ ) = A∗ . A+ 8. + = A+ 1 ∪ A+ 2 ∪ A+ 3 ∪ ··· , + = A ∪ (conjuntos contenidos en A+ ) = A+ . 9. Seg´n la Descripci´n 2, el lenguaje (A∪B)∗ est´ formado por las concau o a tenaciones de cadenas de A consigo mismas, las concatenaciones de cadenas de B consigo mismas y las concatenaciones de cadenas de A con cadenas de B, de todas las formas posibles y en cualquier orden. Si se usa tambi´n la e Descripci´n 2, se observa que eso mismo se obtiene al efectuar (A∗ B ∗ )∗ . o Contraejemplo de A+ · A+ = A+ . Sea Σ = {a, b}, A = {a}. Se tiene A+ = A1 ∪ A2 ∪ · · · = {a} ∪ {aa} ∪ {aaa} ∪ · · · = {an : n ≥ 1}. Por otro lado, A+ · A+ = {a, a2 , a3 , . . . } · {a, a2 , a3 , . . . } = {a2 , a3 , a4 , . . . } = {an : n ≥ 2}. Seg´n las definiciones dadas, Σ∗ tiene dos significados: u Σ∗ = conjunto de las cadenas sobre el alfabeto Σ. Σ∗ = conjunto de todas las concatenaciones de cadenas de Σ. No hay conflicto de notaciones porque las dos definiciones anteriores de Σ∗ dan lugar al mismo conjunto.
  • 23. ´ 1.12. REFLEXION O INVERSO DE UN LENGUAJE 1.12. 17 Reflexi´n o inverso de un lenguaje o Dado A un lenguaje sobre Σ, se define AR de la siguiente forma: AR = {uR : u ∈ A}. AR se denomina la reflexi´n o el inverso de A. o Propiedades. Sean A y B lenguajes sobre Σ (es decir, A, B ⊆ Σ∗ ). 1. (A · B)R = B R · AR . 2. (A ∪ B)R = AR ∪ B R . 3. (A ∩ B)R = AR ∩ B R . 4. AR R = A. ∗ 5. (A∗ )R = AR . R 6. (A+ ) = AR + . Demostraci´n. Demostraremos las propiedades 1 y 5; las dem´s se dejan o a como ejercicio para el estudiante. 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 · uR · · · uR , donde los ui ∈ A, n ≥ 0 n 2 1 ⇐⇒ x ∈ (AR )∗ . § ¤ ¦ ¥ Ejercicios de la secci´n 1.12 o Œ Demostrar las propiedades 2, 3, 4 y 6 de la reflexi´n de cadenas. o  ¿Se pueden generalizar las propiedades 2 y 3 anteriores para uniones e intersecciones arbitrarias, respectivamente?
  • 24. 18 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES 1.13. Lenguajes regulares Los lenguajes regulares sobre un alfabeto dado Σ son todos los lenguajes que se pueden formar a partir de los lenguajes b´sicos ∅, {λ}, {a}, a ∈ Σ, a por medio de las operaciones de uni´n, concatenaci´n y estrella de Kleene. o o A continuaci´n presentamos una definici´n recursiva de los lenguajes o o regulares. Sea Σ un alfabeto. 1. ∅, {λ} y {a}, para cada a ∈ Σ, son lenguajes regulares sobre Σ. Estos son los denominados lenguajes regulares b´sicos. a 2. Si A y B son lenguajes regulares sobre Σ, tambi´n lo son e A∪B A·B A∗ (uni´n), o (concatenaci´n), o (estrella de Kleene). Obs´rvese que tanto Σ como Σ∗ son lenguajes regulares sobre Σ. La uni´n, e o la concatenaci´n y la estrella de Kleene se denominan operaciones reguo lares. § ¤ 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}∗ . 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 finito L = {w1 , w2 , . . . , wn } es regular ya que L se puede obtener con uniones y concatenaciones: L = {w1 } ∪ {w2 } ∪ · · · ∪ {wn }, y cada wi es la concatenaci´n de un n´mero finito de s´ o u ımbolos, wi = a1 a2 · · · ak ; por lo tanto, {wi } = {a1 } · {a2 } · · · {ak }.
  • 25. 1.14. EXPRESIONES REGULARES 1.14. 19 Expresiones regulares Con el prop´sito de simplificar la descripci´n de los lenguajes regulares se o o definen las llamadas expresiones regulares. La siguiente es la definici´n recursiva de las expresiones regulares o sobre un alfabeto Σ dado. 1. Expresiones regulares b´sicas: a ∅ es una expresi´n regular que representa al lenguaje ∅. o λ es una expresi´n regular que representa al lenguaje {λ}. o a es una expresi´n regular que representa al lenguaje {a}, a ∈ Σ. o 2. Si R y S son expresiones regulares sobre Σ, tambi´n lo son: e (R)(S) (R ∪ S) (R)∗ (R)(S) representa la concatenaci´n de los lenguajes representados por o R y S; (R ∪ S) representa su uni´n, y (R)∗ representa la clausura o de Kleene del lenguaje representado por R. Los par´ntesis ( y ) son e s´ ımbolos de agrupaci´n y se pueden omitir si no hay peligro de amo big¨edad. u Para una expresi´n regular R cualquiera se utiliza en ocasiones la siguiente o notaci´n: o L(R) := lenguaje representado por R. Utilizando esta notaci´n y la definici´n recursiva de expresi´n regular poo o o demos escribir las siguientes igualdades en las que R y S son 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)∗
  • 26. 20 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES es una expresi´n regular que representa al lenguaje o ({a} ∪ {b}∗ ) · {a}∗ · {bc}∗ . § ¤ ¦ ¥ Ejemplo Dado el alfabeto Σ = {a, b}, (λ ∪ a)∗ (a ∪ b)∗ (ba)∗ es una expresi´n regular que representa al lenguaje o ({λ} ∪ {a})∗ · ({a} ∪ {b})∗ · {ba}∗ . § ¤ ¦ ¥ci´n 1.13 con expresiones regulares: o Ejemplos Podemos representar los tres primeros lenguajes de la sec- 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)∗ . La representaci´n de lenguajes regulares por medio de expresiones o regulares no es unica. Es posible que haya varias expresiones re´ gulares 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∗ b∗ )∗ representan el mismo lenguaje por la propiedad 9 de la secci´n 1.11. o § ¤ ¦ ¥lenguajes, definidos sobre el alfabeto Σ = {a, b}: Ejemplos Encontrar expresiones regulares que representen los siguientes 1. Lenguaje de todas las cadenas que comienzan con el s´ ımbolo b y terminan con el s´ ımbolo a. Soluci´n. o b(a ∪ b)∗ a.
  • 27. 1.14. EXPRESIONES REGULARES 21 2. Lenguaje de todas las cadenas que tienen un n´mero par de s´ u ımbolos (cadenas de longitud par). o Soluci´n. (aa ∪ ab ∪ ba ∪ bb)∗ . Otra expresi´n regular para este leno guaje es [(a ∪ b)(a ∪ b)]∗ . 3. Lenguaje de todas las cadenas que tienen un n´mero par de aes. u Soluciones: b∗ (b∗ ab∗ ab∗ )∗ . (ab∗ a ∪ b)∗ . (b∗ ab∗ ab∗ )∗ ∪ b∗ . § ¤ ¦ ¥lenguajes, definidos sobre el alfabeto Σ = {0, 1}: Ejemplos Encontrar expresiones regulares que representen los siguientes 1. Lenguaje de todas las cadenas que tienen exactamente dos ceros. Soluci´n. o 1∗ 01∗ 01∗ . 2. Lenguaje de todas las cadenas cuyo pen´ltimo s´ u ımbolo, de izquierda a derecha, es un 0. Soluci´n. (0 ∪ 1)∗ 0(0 ∪ 1). Usando la propiedad distributiva obteneo mos otra expresi´n regular para este lenguaje: (0 ∪ 1)∗ 00 ∪ (0 ∪ 1)∗ 01. o § ¤ ¦ ¥el lenguaje de todas las cadenas que no contienen dos ceros Ejemplo Sea Σ = {0, 1}. Encontrar una expresi´n regular que represente o consecutivos. Soluci´n. La condici´n de que no haya dos ceros consecutivos implica que o o todo cero debe estar seguido necesariamente de un uno, excepto un cero al final de la cadena. Por lo tanto, las cadenas de este lenguaje se obtienen concatenado unos con bloques 01, de todas las formas posibles. Hay que tener en cuenta, adem´s, que la cadena puede terminar ya sea en 1 o en 0. a A partir de este an´lisis, llegamos a la expresi´n regular a o (1 ∪ 01)∗ ∪ (1 ∪ 01)∗ 0. Usando la propiedad distributiva, obtenemos otra expresi´n para este leno guaje: (1 ∪ 01)∗ (λ ∪ 0). § ¤ ¦ ¥sente el lenguaje de todas las cadenas que no contienen la ca- Ejemplo dena bc. Sea Σ = {a, b, c}. Encontrar una expresi´n regular que repreo
  • 28. 22 CAP´ ITULO 1. ALFABETOS, CADENAS Y LENGUAJES Soluci´n. Una b puede estar seguida solamente de otra b o de una a, mientras o que las aes y las ces pueden estar seguidas de cualquier s´ ımbolo. Teniendo en cuenta todas las restricciones y posibilidades, arribamos a la siguiente expresi´n regular: o (a ∪ c ∪ b+ a)∗ b∗ . La condici´n de que no aparezca la cadena bc significa que una c puede o estar precedida solamente de una a y de otra c. Siguiendo esta descripci´n, o obtenemos otra expresi´n regular para el lenguaje en cuesti´n: o o c∗ (b ∪ ac∗ )∗ . § ¤ ¦ ¥ Ejercicios de la secci´n 1.14 o Œ Encontrar expresiones regulares para los lenguajes descritos a continuaci´n: o (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 n´meu ro par de s´ ımbolos. (iii) Σ = {a, b}. Lenguaje de todas las cadenas que tienen un n´mero u impar de s´ ımbolos. (iv) Σ = {a, b, c}. Lenguaje de todas las cadenas que tienen un n´meu ro impar de s´ ımbolos. (v) Σ = {a, b}. Lenguaje de todas las cadenas que tienen un n´mero u impar de aes. (vi) Σ = {a, b}. Lenguaje de todas las cadenas que tienen la cadena ab un n´mero par de veces. u (vii) Σ = {a, b}. Lenguaje de todas las cadenas que tienen un n´mero u par de aes o un n´mero impar de bes. u (viii) Σ = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen dos unos consecutivos.  Encontrar expresiones regulares para los siguientes lenguajes definidos sobre el alfabeto Σ = {0, 1}: (i) Lenguaje de todas las cadenas que tienen por lo menos un 0 y por lo menos un 1.
  • 29. 1.14. EXPRESIONES REGULARES 23 (ii) Lenguaje de todas las cadenas que tienen a lo sumo dos ceros consecutivos. (iii) Lenguaje de todas las cadenas cuyo quinto s´ ımbolo, 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 m´ltiplo de u tres. (viii) Lenguaje de todas las cadenas que no contienen tres ceros consecutivos. (ix) Lenguaje de todas las cadenas que no contienen cuatro ceros consecutivos. !(x) Lenguaje de todas las cadenas que no contienen la subcadena 101. No todos los lenguajes sobre un alfabeto dado Σ son regulares. M´s adelante se mostrar´ que el lenguaje a a L = {λ, ab, aabb, aaabbb, . . . } = {an bn : n ≥ 0} sobre Σ = {a, b} no se puede representar por medio de una expresi´n regular, y por lo tanto, no es un lenguaje regular. o
  • 30.
  • 31. Cap´tulo ı 2 Aut´matas finitos o Los aut´matas son m´quinas abstractas con capacidad de computaci´n. o a o Hist´ricamente, su estudio se origin´ con la llamada “m´quina de Turing”, o o a que fue propuesta en 1936 por el matem´tico brit´nico Alan Turing (1912– a a 1954) con el prop´sito de precisar las caracter´ o ısticas y las limitaciones de un dispositivo de computaci´n mec´nica. En los a˜os 40 y 50 del siglo XX o a n se adelantaron investigaciones sobre m´quinas de Turing con capacidad a restringida, lo que dio lugar a la noci´n de aut´mata finito. o o 2.1. Aut´matas finitos deterministas (AFD) o Los aut´matas finitos son m´quinas abstractas que procesan cadenas de o a entrada, las cuales son aceptadas o rechazadas: Aut´mata o M si (u es aceptada) Cadena de entrada u no (u es rechazada) El aut´mata act´a leyendo los s´ o u ımbolos escritos sobre una infinita, dividida en celdas o casillas, sobre la cual se escribe de entrada u, un s´ ımbolo por casilla. El aut´mata posee una o control (tambi´n llamada cabeza lectora, control finito o e 25 cinta semiuna cadena unidad de unidad de
  • 32. 26 ´ CAP´ ITULO 2. AUTOMATAS FINITOS memoria) que tiene un n´mero finito de configuraciones internas, llamau das estados del aut´mata. Entre los estados de un aut´mata se destacan o o el estado inicial y los estados finales o estados de aceptaci´n. o Formalmente, un aut´mata finito M est´ definido por cinco par´metros o a a o componentes, M = (Σ, Q, q0 , F, δ), a saber: 1. Un alfabeto Σ, llamado alfabeto de cinta. Todas las cadenas que procesa M pertenecen a Σ∗ . 2. Q = {q0 , q1 , . . . , qn }, conjunto de estados internos del aut´mata. o 3. q0 ∈ Q, estado inicial. 4. F ⊆ Q, conjunto de estados finales o de aceptaci´n. F = ∅. o 5. La funci´n de transici´n del aut´mata o o o δ : Q × Σ −→ Q (q, s) −→ δ(q, s) Una cadena de entrada u se coloca en la cinta de tal manera que el primer s´ ımbolo de u ocupa la primera casilla de la cinta. La unidad de control est´ inicialmente en el estado q0 escaneando la primera casilla: a u a ··· a b ≡ ··· ↑ Unidad de control q La funci´n de transici´n δ indica el estado al cual pasa el control finito, o o dependiendo del s´ ımbolo escaneado y de su estado actual. As´ δ(q, s) = q ′ ı, significa que, en presencia del s´ ımbolo s, la unidad de control pasa del estado q al estado q ′ y se desplaza hacia la derecha. Esta acci´n constituye o un paso computacional: δ(q, s) = q ′ ··· s ··· ··· ··· s ↑ ↑ q q′
  • 33. ´ 2.1. AUTOMATAS FINITOS DETERMINISTAS (AFD) 27 Puesto que la funci´n δ est´ definida para toda combinaci´n estadoo a o s´ ımbolo, una cadena de entrada cualquiera es procesada completamente, hasta que la unidad de control encuentra la primera casilla vac´ ıa. La unidad de control de un aut´mata siempre se desplaza hacia la dereo cha; no puede retornar ni escribir s´ ımbolos sobre la cinta. § ¤ ¦ ¥componentes: Ejemplo Consideremos el aut´mata definido por los siguientes cinco o Σ = {a, b}. Q = {q0 , q1 , q2 }. q0 : estado inicial. F = {q0 , q2 }, estados de aceptaci´n. o Funci´n de transici´n δ: o o δ a b δ(q0 , a) = q0 q2 q1 q1 δ(q1 , b) = q2 δ(q2 , a) = q1 q1 q1 q2 δ(q0 , b) = q1 δ(q1 , a) = q1 q0 q0 q1 δ(q2 , b) = q1 . Vamos a ilustrar el procesamiento de dos cadenas de entrada. 1. u = aabab. u a a b a b ↑ q0 ↑ q0 ↑ q0 ↑ q1 ↑ q1 ··· ≡ ↑ q2 Como q2 es un estado de aceptaci´n, la cadena de entrada u es aceptada. o 2. v = aababa. v a a b a b a ≡ ↑ q0 ↑ q0 ↑ q0 ↑ q1 ↑ q1 ↑ q2 ··· ↑ q1 Puesto que q1 no es un estado de aceptaci´n, la entrada v es rechazada. o
  • 34. 28 ´ CAP´ ITULO 2. AUTOMATAS FINITOS Caso especial: la cadena λ es la cadena de entrada. ≡ ≡ ··· ↑ q0 Como q0 es un estado de aceptaci´n, la cadena λ es aceptada. o En general se tiene lo siguiente: la cadena vac´ λ es aceptada por un ıa aut´mata M si y solamente si el estado inicial q0 de M tambi´n es un estado o e de aceptaci´n. o Los aut´matas finitos descritos anteriormente se denominan aut´matas o o finitos deterministas (AFD) ya que para cada estado q y para cada s´ ımbolo a ∈ Σ, la funci´n de transici´n δ(q, a) siempre est´ definida. Es o o a decir, la funci´n de transici´n δ determina completa y un´ o o ıvocamente la acci´n que el aut´mata realiza cuando la unidad de control se encuentra en o o un estado q leyendo un s´ ımbolo s sobre la cinta. Dado un aut´mata M , el lenguaje aceptado o reconocido por M se o denota L(M ) y se define por L(M ) := {u ∈ Σ∗ : M termina el procesamiento de la cadena de entrada u en un estado q ∈ F }. 2.2. Diagrama de transiciones de un aut´mata o Un aut´mata finito se puede representar por medio de un grafo dirigido y o etiquetado. Recu´rdese que un grafo es un conjunto de v´rtices o nodos e e unidos por arcos o conectores; si los arcos tienen tanto direcci´n como o etiquetas, el grafo se denomina grafo dirigido y etiquetado o digrafo etiquetado. El digrafo etiquetado de un aut´mata se obtiene siguiendo las siguientes o convenciones: Los v´rtices o nodos son los estados del aut´mata. e o El estado q se representa por: q El estado inicial q0 se representa por: q0 Un estado final q se representa por: q
  • 35. 29 ˜ ´ 2.3. DISENO DE AUTOMATAS La transici´n δ = (q, s) = p se representa en la forma o s q p Dicho grafo se denomina diagrama de transiciones del aut´mata y o es muy util para hacer el seguimiento completo del procesamiento de una ´ cadena de entrada. Una cadena u es aceptada si existe una trayectoria etiquetada con los s´ ımbolos de u, que comienza en el estado q0 y termina en un estado de aceptaci´n. o § ¤ ¦ ¥ci´n anterior. o Ejemplo Diagrama de transiciones del aut´mata presentado en la seco Σ = {a, b}. Q = {q0 , q1 , q2 }. q0 : estado inicial. F = {q0 , q2 }, estados de aceptaci´n. o Funci´n de transici´n δ: o o δ a b q0 q0 q1 q1 q1 q2 q2 q1 q1 δ(q0 , a) = q0 δ(q0 , b) = q1 δ(q1 , a) = q1 δ(q1 , b) = q2 δ(q2 , a) = q1 δ(q2 , b) = q1 a b q0 a q1 a, b b q2 Examinando el diagrama de transiciones podemos observar f´cilmente que a la entrada aaababbb es aceptada mientras que aabaaba es rechazada. 2.3. Dise˜ o de aut´matas n o Para aut´matas deterministas se adopta la siguiente convenci´n adicional o o con respecto a los diagramas de transiciones: se supone que los arcos no
  • 36. 30 ´ CAP´ ITULO 2. AUTOMATAS FINITOS dibujadas expl´ ıcitamente conducen a un estado “limbo” de no-aceptaci´n. o Es decir, en el diagrama de transiciones se indican unicamente los arcos que ´ intervengan en trayectorias de aceptaci´n. Esto permite simplificar consio derablemente los diagramas. En este cap´ ıtulo abordaremos dos tipos de problemas: 1. Dado un lenguaje regular L dise˜ar un aut´mata finito M que acepte n o o reconozca a L, es decir, tal que L(M ) = L. 2. Dado un aut´mata M determinar el lenguaje aceptado por M . o M´s adelante se demostrar´, en toda su generalidad, que estos problemas a a siempre tienen soluci´n. Consideremos inicialmente problemas del primer o tipo. § ¤ ¦ ¥ Ejemplo L = a∗ = {λ, a, a2 , a3 , . . .}. AFD M tal que L(M ) = L: a q0 a b q1 b a Versi´n simplificada: o § ¤ ¦ ¥ Ejemplo q0 L = a+ = {a, a2 , a3 , . . .}. AFD M tal que L(M ) = L: a q0 b a q1 a b q2 b a Versi´n simplificada: o q0 a q1 § ¤ ¦ ¥mente dos aes = b∗ ab∗ ab∗ . AFD M tal que L(M ) = L: Ejemplo Σ = {a, b}. L = lenguaje de las cadenas que contienen exacta-
  • 37. ˜ ´ 2.3. DISENO DE AUTOMATAS b a q0 b 31 b a q1 q2 § ¤ ¦ ¥n´mero par de s´ u ımbolos (cadenas de longitud par). AFD M Ejemplo Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que tienen un tal que L(M ) = L: 0, 1 q0 q1 0, 1 § ¤ ¦ ¥un n´mero par de ceros. AFD M tal que L(M ) = L: u Ejemplo Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que contienen 1 0 q0 1 q1 0 § ¤ ¦ ¥en b. AFD M tal que L(M ) = L: Ejemplo Σ = {a, b}. L = lenguaje de las cadenas sobre Σ que terminan a b q0 b q1 a § ¤ ¦ ¥ Ejercicios de la secci´n 2.3 o Œ Dise˜ar aut´matas finitos deterministas que acepten los siguientes n o lenguajes: (i) Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ de longitud impar. (ii) Σ = {0, 1}. L = lenguaje de las cadenas sobre Σ que contienen un n´mero impar de unos. u
  • 38. 32 ´ CAP´ ITULO 2. AUTOMATAS FINITOS (iii) Σ = {a, b}. L = ab+ . (iv) Σ = {a, b}. L = ab∗ ∪ ab∗ a. (v) Σ = {0, 1}. L = (0 ∪ 10)∗ . (vi) Σ = {0, 1}. L = (01 ∪ 10)∗ . (vii) Σ = {0, 1}. Lenguaje de todas las cadenas que no contienen dos unos consecutivos. (viii) Σ = {a, b}. L = {a2i b3j : i, j ≥ 0}. (ix) Σ = {a, b}. L = lenguaje de las cadenas sobre Σ que contienen un n´mero par de aes y un n´mero par de bes. Ayuda: utilizar u u 4 estados. (x) Σ = {a, b}. Para cada combinaci´n de las condiciones “par” e o “impar” y de las conectivas “o” e “y”, dise˜ar un AFD que n acepte el lenguaje L definido por L = lenguaje de las cadenas con un n´mero par/impar de aes u y/o un n´mero par/impar de bes. u Ayuda: utilizar el aut´mata de 4 estados dise˜ado en el ejercio n cio anterior, modificando adecuadamente el conjunto de estados finales.  Determinar los lenguajes aceptados por los siguientes AFD. Describir los lenguajes ya sea por medio de una propiedad caracter´ ıstica o de una expresi´n regular. o (i) 0 0 q0 q1 q2 1 0 0 1 0 q3 q4 1 1 1 (ii) 1 q0 1 q1 0 q2 q3 0
  • 39. ´ 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 33 (iii) q1 0 1 0 q0 1 q2 1 q3 1 (iv) b q0 b a q1 a q2 b 2.4. Aut´matas finitos no-deterministas (AFN) o Los aut´matas finitos no-deterministas (AFN) se asemejan a los AFD, o excepto por el hecho de que para cada estado q ∈ Q y cada a ∈ Σ, la transici´n δ(q, a) puede consistir en m´s de un estado o puede no estar o a definida. Concretamente, un AFN est´ definido por M = (Σ, Q, q0 , F, ∆) a donde: 1. Σ es el alfabeto de cinta. 2. Q es un conjunto (finito) de estados internos. 3. q0 ∈ Q es el estado inicial. 4. ∅ = F ⊆ Q es el conjunto de estados finales o estados de aceptaci´n. o 5. ∆ : Q × Σ −→ ℘(Q) (q, s) −→ ∆(q, s) = {qi1 , qi2 , . . . , qik } donde ℘(Q) es el conjunto de subconjunto de Q.
  • 40. 34 ´ CAP´ ITULO 2. AUTOMATAS FINITOS El significado de ∆(q, s) = {qi1 , qi2 , . . . , qik } es el siguiente: estando en el estado q, en presencia del s´ ımbolo s, la unidad de control puede pasar (aleatoriamente) a uno cualquiera de los estados qi1 , qi2 ,. . . , qik , despu´s de e lo cual se desplaza a la derecha. Puede suceder que ∆(q, s) = ∅, lo cual significa que, si durante el procesamiento de una cadena de entrada u, M ingresa al estado q leyendo sobre la cinta el s´ ımbolo s, el c´mputo se aborta. o C´mputo abortado: o u ··· s ··· ≡ ··· ↑ q La noci´n de diagrama de transiciones para un AFN se define de manera o an´loga al caso AFD, pero puede suceder que desde un mismo nodo (estado) a salgan dos o m´s arcos con la misma etiqueta: a s q ′′′ s q ′′ q s q′ Un AFN M puede procesar una cadena de entrada u ∈ Σ∗ de varias maneras. Sobre el diagrama de transiciones del aut´mata, esto significa que o pueden existir varias trayectorias, desde el estado q0 , etiquetadas con los s´ ımbolos de u. La siguiente es la noci´n de aceptaci´n para aut´matas no-deterministas: o o o L(M ) = lenguaje aceptado o reconocido por M = {u ∈ Σ∗ : existe por lo menos un c´mputo completo o de u que termina en un estado q ∈ F }
  • 41. 35 ´ 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) Es decir, para que una cadena u sea aceptada, debe existir alg´n c´mpuu o to en el que u sea procesada completamente y que finalice estando M en un estado de aceptaci´n. o § ¤ ¦ ¥ Ejemplo a q0 Sea M el siguiente AFN: a a b q1 b ∆ a {q0 , q1 , q3 } ∅ {q1 } {q2 } q2 ∅ {q1 , q2 } q3 q3 b q1 b a q0 q2 ∅ {q3 } b Para la cadena de entrada u = abb, existen c´mputos que conducen al rechao zo, c´mputos abortados y c´mputos que terminan en estados de aceptaci´n. o o o Seg´n la definici´n de lenguaje aceptado, u ∈ L(M ). u o u a b b ≡ ↑ q0 C´mputo de rechazo: o ↑ q1 ↑ q2 ··· ↑ q2 u a b b ≡ ↑ q0 C´mputo de aceptaci´n: o o ↑ q3 ↑ q3 ··· ↑ q3 u Otro c´mputo de aceptaci´n: o o a b b ≡ ↑ q0 ↑ q1 ↑ q2 ↑ q1 ···
  • 42. 36 ´ CAP´ ITULO 2. AUTOMATAS FINITOS u a b ↑ q0 C´mputo abortado: o ≡ ··· ↑ q0 b § ¤ ¦ ¥AFD que acepta el lenguaje de las cadenas sobre Σ = {a, b} Ejemplo En el ultimo ejemplo de la secci´n 2.3 se dise˜´ el siguiente ´ o no que terminan en b: a b b q0 q1 a Un AFN que acepta el mismo lenguaje y que es, tal vez, m´s f´cil de a a concebir, es el siguiente: a b q0 q1 b Este aut´mata se asemeja a la expresi´n regular (a ∪ b)∗ b. o o § Ejemplo ¦ ¤ Consid´rese el lenguaje L = ab∗ ∪ a+ sobre el alfabeto Σ = e ¥{a, b}. El siguiente AFN M satisface L(M ) = L. a q0 a b q1 a q2 § ¤ ¦ ¥ Ejemplo Σ = {0, 1}, L = (01 ∪ 010)∗ . El siguiente AFN acepta a L.
  • 43. ´ 2.4. AUTOMATAS FINITOS NO-DETERMINISTAS (AFN) 37 0 q0 0 1 q1 0 q2 q3 1 Otro AFN que acepta el mismo lenguaje y que tiene s´lo tres estados es el o siguiente: 0 1 q1 q2 q0 1 0 § ¤ ¦ ¥ Ejercicios de la secci´n 2.4 o Dise˜ar aut´matas AFD o AFN que acepten los siguientes lenguajes: n o Œ Σ = {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 secci´n 1.14 se presentaron ´ o dos expresiones regulares para L. Nota: ¡se puede construir un AFD con s´lo dos estados para aceptar este lenguaje! o
  • 44. 38 2.5. ´ CAP´ ITULO 2. AUTOMATAS FINITOS Equivalencia computacional entre los AFD y los AFN En esta secci´n se mostrar´ que los modelos AFD y AFN son computacioo a nalmente equivalentes. En primer lugar, es f´cil ver que un AFD M = a (Σ, 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 afirmaci´n rec´ o ıproca tenemos el siguiente teorema. 2.5.1 Teorema. Dado un AFN M = (Σ, Q, q0 , F, ∆) se puede construir un AFD M ′ equivalente a M , es decir, tal que L(M ) = L(M ′ ). Este teorema, cuya demostraci´n se dar´ en detalle m´s adelante, eso a a tablece que el no-determinismo se puede eliminar. Dicho de otra manera, los aut´matas deterministas y los no-deterministas aceptan los mismos leno guajes. La idea de la demostraci´n consiste en considerar cada conjunto de o estados {p1 , . . . , pj }, que aparezca en la tabla de la funci´n ∆ del aut´mata o o no-determinista, como un unico estado del nuevo aut´mata determinista. ´ o La tabla de ∆ se completa hasta que no aparezcan nuevas combinaciones de estados. Los estados de aceptaci´n del nuevo aut´mata son los conjuntos o o de estados en los que aparece por lo menos un estado de aceptaci´n del o aut´mata original. El siguiente ejemplo ilustra el procedimiento. o § ¤ ¦ ¥acepta el lenguaje L(M ) = ab∗ ∪ a+ sobre Σ = {a, b}: Ejemplo Consideremos el AFN M , presentado en la secci´n 2.4, que o a q0 a b q1 a q2 ∆ a b q0 {q1 , q2 } ∅ q1 ∅ {q1 } q2 {q2 } ∅ El nuevo AFD M ′ construido a partir de M tiene un estado m´s, {q1 , q2 }, a y su funci´n de transici´n δ tiene el siguiente aspecto: o o
  • 45. 2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN δ a b q0 {q1 , q2 } ∅ q1 ∅ {q1 } q2 {q2 } ∅ {q1 , q2 } {q2 } 39 {q1 } El diagrama de transiciones de este aut´mata es: o a a a {q0 } {q1 , q2 } {q2 } b {q1 } b Los estados de aceptaci´n son aqu´llos en los que aparezcan q1 ´ q2 , que o e o son los estados de aceptaci´n del aut´mata original. o o Para mayor simplicidad, podemos cambiar los nombres de los estados del nuevo aut´mata: o a a p0 p1 a p2 b p3 b § ¤ ¦ ¥lenguaje L = (01 ∪ 010)∗ sobre Σ = {0, 1}. Ejemplo El siguiente AFN M , presentado en la secci´n 2.4, acepta el o
  • 46. 40 ´ CAP´ ITULO 2. AUTOMATAS FINITOS 0 1 q0 q1 q2 1 0 La tabla de la funci´n de transici´n de M se extiende para completar la o o funci´n δ del nuevo AFN: o δ 0 1 q0 {q1 } ∅ q1 ∅ {q0 , q2 } q2 {q0 } ∅ {q0 , q2 } {q0 , q1 } ∅ {q0 , q1 } {q1 } {q0 , q2 } El diagrama de transiciones del nuevo aut´mata es: o 0 0 {q0 } {q1 } 1 {q2 } 0 0 {q0 , q2 } 1 {q0 , q1 } Los estados de aceptaci´n son aqu´llos en los que aparezca q0 ya que q0 es o e el unico estado de aceptaci´n del aut´mata original. ´ o o Puesto que el nuevo estado {q2 } no interviene en la aceptaci´n de cadeo nas, el aut´mata se puede simplificar en la siguiente forma: o
  • 47. 2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN 41 0 p0 p1 1 0 0 p2 1 p3 Para la demostraci´n del Teorema 2.5.1, conviene extender la definici´n de o o la funci´n de transici´n, tanto de los aut´matas deterministas como de los o o o no-deterministas. 2.5.2 Definici´n. Sea M = (Σ, Q, q0 , F, δ) un AFD. La funci´n de transio o ci´n δ : Q × Σ −→ Q se extiende a una funci´n δ : Q × Σ∗ −→ Q por medio o o de la siguiente definici´n recursiva: o  δ(q, λ) = q, q ∈ Q,  δ(q, a) = δ(q, a), q ∈ Q, a ∈ Σ,   δ(q, wa) = δ(δ(q, w), a), q ∈ Q, a ∈ Σ, w ∈ Σ∗ . Seg´n esta definici´n, para una cadena de entrada w ∈ Σ∗ , δ(q0 , w) es el u o estado en el que el aut´mata termina el procesamiento de w. Por lo tanto, o podemos describir el lenguaje aceptado por M de la siguiente forma: L(M ) = {w ∈ Σ∗ : δ(q0 , w) ∈ F }. Notaci´n. Sin peligro de ambig¨edad, la funci´n extendida δ(q, w) se noo u o tar´ simplemente δ(q, w). a 2.5.3 Definici´n. Sea M = (Σ, Q, q0 , F, ∆) un AFN. La funci´n de trano o ℘(Q) se extiende inicialmente a conjuntos de estados. sici´n ∆ : Q × Σ −→ o Para a ∈ Σ y S ⊆ F se define ∆(S, a) := ∆(q, a). q∈S
  • 48. 42 ´ CAP´ ITULO 2. AUTOMATAS FINITOS Luego se extiende ∆ a una funci´n ∆ : Q × Σ∗ −→ ℘(Q), de manera o similar a como se hace para los AFD. Recursivamente,  ∆(q, λ) = {q}, q ∈ Q,    ∆(q, a) = ∆(q, a), q ∈ Q, a ∈ Σ,  ∆(p, a), q ∈ Q, a ∈ Σ, w ∈ Σ∗ . ∆(q, wa) = ∆(∆(q, w), a) =   p∈∆(q,w) Seg´n esta definici´n, para una cadena de entrada w ∈ Σ∗ , ∆(q0 , w) es el u o conjunto de los posibles estados en los que terminan los c´mputos completos o de w. Si el c´mputo se aborta durante el procesamiento de w, se tendr´ o ıa ∆(q0 , w) = ∅. Usando la funci´n extendida ∆, el lenguaje aceptado por M o se puede describir de la siguiente forma: L(M ) = {w ∈ Σ∗ : ∆(q0 , w) contiene un estado de aceptaci´n}. o Notaci´n. Sin peligro de ambig¨edad, la funci´n extendida ∆(q, w) se o u o notar´ simplemente ∆(q, w). a Demostraci´n del Teorema 2.5.1: o Dado el AFN M = (Σ, Q, q0 , F, ∆), construimos el AFD M ′ as´ ı: M ′ = (Σ, ℘(Q), {q0 }, F ′ , δ) donde δ : ℘(Q) × Σ −→ ℘(Q) (S, a) −→ δ(S, a) := ∆(S, a). F ′ = {S ⊆ ℘(Q) : S ∩ F = ∅}. Se demostrar´ que L(M ) = L(M ′ ) probando que, para toda cadena w ∈ Σ∗ , a δ({q0 }, w) = ∆(q0 , w). Esta igualdad se demostrar´ por inducci´n sobre w. a o Para w = λ, claramente se tiene δ({q0 }, λ) = ∆(q0 , λ) = {q0 }. Para w = a, a ∈ Σ, se tiene δ({q0 }, a) = ∆({q0 }, a) = ∆(q0 , a). Sup´ngase (hip´tesis de inducci´n) que δ({q0 }, w) = ∆(q0 , w), y que a ∈ Σ. o o o δ({q0 }, wa) = δ(δ({q0 }, w), a) = δ(∆({q0 }, w), a) (definici´n de la extensi´n de δ) o o (hip´tesis de inducci´n) o o = ∆(∆({q0 }, w), a) (definici´n de δ) o = ∆({q0 }, wa) (definici´n de la extensi´n de ∆) o o = ∆(q0 , wa) (definici´n de la extensi´n de ∆). o o
  • 49. ´ 2.6. AUTOMATAS CON TRANSICIONES λ (AFN-λ) § ¤ ¦ 43 ¥ Ejercicios de la secci´n 2.5 o Dise˜ar AFD equivalentes a los siguientes AFN: n Œ b q0 q1 a b b q2 q3 a  0 q0 0 0 1 q1 1 q2 1 0 q3 1 2.6. Aut´matas con transiciones λ (AFN-λ) o Un aut´mata finito con transiciones λ (AFN-λ) es un aut´mata noo o determinista M = (Σ, Q, q0 , F, ∆) en el que la funci´n de transici´n est´ deo o a finida como: ∆ : Q × (Σ ∪ {λ}) → ℘(Q). o o La transici´n ∆(q, λ) = {pi1 , . . . , pin }, llamada transici´n λ, transici´n o nula o transici´n espont´nea, tiene el siguiente significado computacioo a nal: estando en el estado q, el aut´mata puede cambiar a uno cualquiera de o ımbolo le´ y sin mover ıdo los estados pi1 , . . . , pin , independientemente del s´ la unidad de control. Dicho de otra manera, las transiciones λ permiten al aut´mata cambiar internamente de estado sin procesar o “consumir” el o s´ ımbolo le´ sobre la cinta. ıdo En el diagrama del aut´mata, las transiciones λ dan lugar a arcos con o etiquetas λ. Una cadena de entrada w es aceptada por un AFN-λ si existe por lo menos una trayectoria, desde el estado q0 , cuyas etiquetas son exactamente los s´ ımbolos de w, intercalados con cero, uno o m´s λs. a
  • 50. 44 ´ CAP´ ITULO 2. AUTOMATAS FINITOS En los aut´matas AFN-λ, al igual que en los AFN, puede haber m´ltiples o u c´mputos para una misma cadena de entrada, as´ como c´mputos abortao ı o dos. § ¤ ¦ ¥ Ejemplo M: a b b λ q1 q2 a q3 q4 q0 λ b a Ejemplos de cadenas aceptadas por M : u = aab v = abaa w = abbaa C´mputos de aceptaci´n de u = aab y v = abaa: o o ··· a a b ≡ ↑ q0 ↑ q1 ↑ q1 ↑ q2 a b a a ≡ ↑ q0 ↑ q3 ↑ q3 ↑ q4 ↑ q4 q1 q4 ···
  • 51. ´ 2.6. AUTOMATAS CON TRANSICIONES λ (AFN-λ) 45 Los AFN-λ permiten a´n m´s libertad en el dise˜o de aut´matas, espeu a n o cialmente cuando hay numerosas concatenaciones. § ¤ ¦ ¥ Ejemplo Σ = {a, b, c}. L = a∗ b∗ c∗ . AFD que acepta a L: a b b q0 c q1 c q2 c AFN-λ que acepta a L: a b λ q0 λ q1 c q2 Este aut´mata se asemeja a la expresi´n regular a∗ b∗ c∗ : las concatenaciones o o han sido reemplazadas por transiciones λ. § ¤ ¦ ¥tienen un n´mero par de aes o un n´mero par de bes. u u Ejemplo Σ = {a, b}. L = lenguaje de todas las cadenas sobre Σ que AFD que acepta el lenguaje de las cadenas con un n´mero par de aes: u b a q0 b q1 a AFD que acepta el lenguaje de las cadenas con un n´mero par de bes: u a b q0 a q1 b AFN-λ que acepta el lenguaje de las cadenas con un n´mero par de aes o u un n´mero par de bes: u
  • 52. 46 ´ CAP´ ITULO 2. AUTOMATAS FINITOS b λ a q1 b q2 a q0 b λ q3 a q4 b a A diferencia de los AFD y los AFN, en los AFN-λ pueden existir “c´mputos o infinitos”, es decir c´mputos que nunca terminan. Esto puede suceder si o el aut´mata ingresa a un estado desde el cual haya varias transiciones λ o encadenadas que retornen al mismo estado, como por ejemplo: λ λ λ § ¤ ¦ ¥ Ejercicios de la secci´n 2.6 o Dise˜ar AFN-λ que acepten los siguientes lenguajes: n Œ (ab ∪ b)∗ ab∗ , sobre Σ = {a, b}.  a(a ∪ c)∗ b+ , sobre Σ = {a, b, c}. Ž ab∗ ∪ ba∗ ∪ b(ab ∪ ba)∗ , sobre Σ = {a, b}.  ab∗ ba∗ b(ab ∪ ba)∗ , sobre Σ = {a, b}.  (0 ∪ 010)∗ 0∗ (01 ∪ 10)∗ , sobre Σ = {0, 1}. ‘ 0+ 1(010)∗ (01 ∪ 10)∗ 1+ , sobre Σ = {0, 1}. ’ Σ = {a, b}. L = lenguaje de todas las cadenas sobre Σ que tienen un n´mero par de aes y un n´mero par de bes. u u
  • 53. 2.7. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFN-λ Y LOS AFN 2.7. 47 Equivalencia computacional entre los AFN-λ y los AFN En esta secci´n se mostrar´ que el modelo AFN-λ es computacionalmente o a equivalente al modelo AFN. O dicho m´s gr´ficamente, las transiciones λ a a se pueden eliminar, a˜adiendo transiciones que las simulen, sin alterar el n lenguaje aceptado. En primer lugar, un AFN M = (Σ, Q, q0 , F, ∆) puede ser considerado como un AFN-λ en el que, simplemente, hay cero transiciones λ. Para la afirmaci´n rec´ o ıproca tenemos el siguiente teorema. 2.7.1 Teorema. Dado un AFN-λ M = (Σ, Q, q0 , F, ∆), se puede construir un AFN M ′ equivalente a M , es decir, tal que L(M ) = L(M ′ ). Bosquejo de la demostraci´n. Para construir M ′ a partir de M se requiere o la noci´n de λ-clausura de un estado. Para un estado q ∈ Q, la λo clausura de q, notada λ[q], es el conjunto de estados de M a los que se puede llegar desde q por 0, 1 o m´s transiciones λ. N´tese que, en general, a o λ[q] = ∆(q, λ). Por definici´n, q ∈ λ[q]. La λ-clausura de un conjunto de o estados {q1 , . . . , qk } se define por: λ[{q1 , . . . , qk }] := λ[q1 ] ∪ · · · ∪ λ[qk ]. Adem´s, λ[∅] := ∅. Sea M ′ = (Σ, Q, q0 , F ′ , ∆′ ) donde a ∆′ : Q × Σ (q, a) −→ −→ ℘(Q) ∆′ (q, a) := λ ∆(λ[q], a) . M ′ simula as´ las transiciones λ de M teniendo en cuenta todas las posibles ı trayectorias. F ′ se define como: F ′ = {q ∈ Q : λ[q] contiene al menos un estado de aceptaci´n}. o Es decir, los estados de aceptaci´n de M ′ incluyen los estados de aceptaci´n o o de M y aquellos estados desde los cuales se puede llegar a un estado de aceptaci´n por medio de una o m´s transiciones λ. o a Como se puede apreciar, la construcci´n de M ′ a partir de M es purao mente algor´ ıtmica. § ¤ ¦ ¥sentado en el segundo ejemplo de la secci´n 2.6. o Ejemplo Vamos a ilustrar el anterior algoritmo con el AFN-λ M , pre-
  • 54. 48 ´ CAP´ ITULO 2. AUTOMATAS FINITOS a b λ q0 c λ q1 q2 L(M ) = a∗ b∗ c∗ . Las λ-clausuras de los estados vienen dadas por: λ[q0 ] = {q0 , q1 , q2 }. λ[q1 ] = {q1 , q2 }. λ[q2 ] = {q2 }. La funci´n de transici´n ∆′ : Q × {a, b, c} → ℘({q0 , q1 , q2 }) es: o o ∆′ (q0 , a) ∆′ (q0 , b) ∆′ (q0 , c) ∆′ (q1 , a) ∆′ (q1 , b) ∆′ (q1 , c) ∆′ (q2 , a) ∆′ (q2 , b) ∆′ (q2 , c) = = = = = = = = = λ [∆(λ[q0 ], a)] = λ [∆({q0 , q1 , q2 }, a)] = λ[{q0 }] = {q0 , q1 , q2 }. λ [∆(λ[q0 ], b)] = λ [∆({q0 , q1 , q2 }, b)] = λ[{q1 }] = {q1 , q2 }. λ [∆(λ[q0 ], c)] = λ [∆({q0 , q1 , q2 }, c)] = λ[{q2 }] = {q2 }. λ [∆(λ[q1 ], a)] = λ [∆({q1 , q2 }, a)] = λ[∅] = ∅. λ [∆(λ[q1 ], b)] = λ [∆({q1 , q2 }, b)] = λ[{q1 }] = {q1 , q2 }. λ [∆(λ[q1 ], c)] = λ [∆({q1 , q2 }, c)] = λ[{q2 }] = {q2 }. λ [∆(λ[q2 ], a)] = λ [∆({q2 }, a)] = λ[∅] = ∅. λ [∆(λ[q2 ], b)] = λ [∆({q2 }, b)] = λ[∅] = ∅. λ [∆(λ[q2 ], c)] = λ [∆({q2 }, c)] = λ[{q2 }] = {q2 }. El aut´mata M ′ as´ obtenido es el siguiente: o ı a, b, c q0 a q1 a, b § b, c b ¤ ¦ q2 ¥ Ejercicios de la secci´n 2.7 o Construir AFN equivalentes a los siguientes AFN-λ: Œ λ q0 a, λ b q1 b q2 q3 λ c
  • 55. 49 2.8. TEOREMA DE KLEENE. PARTE I  a λ q0 a λ q1 b q2 b λ q3 b 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 aut´mata de uno de estos tres modelos se o pueden construir aut´matas equivalentes en los otros modelos. Por lo tanto, o 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 s´lo si es aceptado o por un aut´mata finito (AFD o AFN o AFN-λ). o Para demostrar el teorema consideraremos las dos direcciones por separado. Primero demostraremos que para un lenguaje regular L dado existe un AFN-λ tal que L(M ) = L. En la secci´n 2.11 demostraremos que, a partir o de un AFD M , se puede encontrar una expresi´n regular R tal que L(M ) = o R. En ambas direcciones las demostraciones son constructivas. Las construcciones de este cap´ ıtulo se pueden presentar as´ ı: AFN AFD T. de Kleene II AFN-λ Lenguajes regulares T. de Kleene I
  • 56. 50 ´ CAP´ ITULO 2. AUTOMATAS FINITOS Parte I. Dada una expresi´n regular R sobre un alfabeto Σ, se puede o construir un AFN-λ M tal que el lenguaje aceptado por M sea exactamente el lenguaje representado por R. Expresi´n regular R o M Procedimiento −− − − − − − − −→ AFN-λ algor´ ıtmico tal que L(M ) = R. Demostraci´n. Puesto que la definici´n de las expresiones regulares se hace o o recursivamente, la demostraci´n se lleva a cabo razonando por inducci´n soo o bre R. Para las expresiones regulares b´sicas, podemos construir f´cilmente a a aut´matas que acepten los lenguajes representados. As´ el aut´mata o ı, o q0 q1 acepta el lenguaje ∅, es decir, el lenguaje representado por la expresi´n o regular R = ∅. El aut´mata o q0 acepta el lenguaje {λ}, es decir, el lenguaje representado por la expresi´n o regular R = λ. El aut´mata o a q0 q1 acepta el lenguaje {a}, a ∈ Σ, es decir, el lenguaje representado por la expresi´n regular R = a. o Paso inductivo: sup´ngase que para las expresiones regulares R y S exiso ten AFN-λ M1 y M2 tales que L(M1 ) = R y L(M2 ) = S. Esquem´ticamente a vamos a presentar los aut´matas M1 y M2 en la siguiente forma: o M1 M2 . . . . . .
  • 57. 51 2.8. TEOREMA DE KLEENE. PARTE I Los estados finales o de aceptaci´n se dibujan a la derecha, pero cabe ado vertir que el estado inicial puede ser tambi´n un estado de aceptaci´n. e o Obviando ese detalle, podemos ahora obtener AFN-λ que acepten los lenguajes R ∪ S, RS y R∗ . Aut´mata que acepta R ∪ S. Los aut´matas M1 y M2 se conectan o o en paralelo y los estados finales del nuevo aut´mata son los estados o finales de M1 junto con los de M2 : M1 . . . λ M2 λ . . . Aut´mata que acepta RS. Los aut´matas M1 y M2 se conectan en o o serie y los estados finales del nuevo aut´mata son unicamente los o ´ estados finales de M2 : λ M1 . . . . . . M2 . . . λ Aut´mata que acepta R∗ . Los estados finales del nuevo aut´mata son o o los estados finales de M1 junto con el estado inicial.
  • 58. 52 ´ CAP´ ITULO 2. AUTOMATAS FINITOS λ M1 . . . λ Esto concluye la demostraci´n de la parte I del Teorema de Kleene. En la sio guiente secci´n se presentan ejemplos concretos del procedimiento utilizado o en la demostraci´n. o 2.9. Ejemplos de la parte I del Teorema de Kleene De acuerdo con las construcciones presentadas en la demostraci´n de la o parte I del Teorema de Kleene, un AFN-λ que acepta el lenguaje a∗ es: λ a Para simplificar las pr´ximas construcciones utilizaremos, en su lugar, el o bucle de un estado: a § ¤ ¦ ¥un AFN-λ que acepte el lenguaje a∗ (ab ∪ ba)∗ ∪ a(b ∪ a∗ ) sobre Ejemplo Vamos a utilizar el procedimiento del teorema para construir el alfabeto {a, b}. Aut´mata que acepta ab: o a λ b
  • 59. 2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE Aut´mata que acepta ba: o a λ b Aut´mata que acepta ab ∪ ba: o a λ b b λ a a λ b b λ a λ λ Aut´mata que acepta (ab ∪ ba)∗ : o λ λ λ λ 53
  • 60. 54 ´ CAP´ ITULO 2. AUTOMATAS FINITOS Aut´mata que acepta a∗ (ab ∪ ba)∗ : o λ a λ b b a λ λ a λ λ λ Aut´mata que acepta b ∪ a∗ : o b λ λ a Aut´mata que acepta a(b ∪ a∗ ): o b λ a λ λ a
  • 61. 55 2.10. LEMA DE ARDEN Aut´mata que acepta a∗ (ab ∪ ba)∗ ∪ a(b ∪ a∗ ): o λ a λ λ b b a λ λ a λ λ λ b λ λ a λ λ a § ¤ ¦ ¥ Ejercicios de la secci´n 2.9 o Dise˜ar aut´matas AFN-λ que acepten los siguientes lenguajes sobre el n o 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)∗ . 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 ecuaci´n X = AX ∪ B tiene una unica soluci´n dada o ´ o por X = A∗ B.
  • 62. 56 ´ CAP´ ITULO 2. AUTOMATAS FINITOS Demostraci´n. Si X es una soluci´n de X = AX ∪ B, entonces B ⊆ o o AX ∪ B = X. Tambi´n se tiene AX ⊆ X; a partir de esta contenencia y e usando inducci´n sobre n, se puede demostrar que An X ⊆ X para todo o n ∈ N. Por lo tanto An B ⊆ An X ⊆ X para todo n ∈ N. As´ que ı An B = A∗ B = n≥0 An B ⊆ X. n≥0 Esto muestra que toda soluci´n de X = AX ∪ B contiene a A∗ B y es f´cil o a verificar que, de hecho, A∗ B es una soluci´n: o 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 soluci´n de la ecuaci´n, entonces C = ∅. o o 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 = ∅, existir´ una cadena u ∈ C de ıa longitud m´ ınima. Entonces u = vw, con v ∈ A, w ∈ C. Como λ ∈ A, v = λ; por consiguiente |w| |u|. Esta contradicci´n muestra que necesariamente o C = ∅, tal como se quer´ ıa. § ¤ ¦ § ¥ ¤ ¦ ¥X = (a2 ∪ b+ )X ∪ ab. Por el lema de Arden la ecuaci´n tiene o Ejemplo Ejemplo La ecuaci´n X = aX ∪ b∗ ab tiene soluci´n unica X = a∗ b∗ ab. o o ´ La ecuaci´n X = a2 X ∪ b+ X ∪ ab se puede escribir en la forma o soluci´n unica X = (a2 ∪ b+ )∗ ab. o ´ § ¤ ¦ ¥X = (ab2 ∪ a)X ∪ (a∗ b ∪ b∗ a). Por lema de Arden la ecuaci´n o Ejemplo La ecuaci´n X = ab2 X ∪ aX ∪ a∗ b ∪ b∗ a se puede escribir como o tiene soluci´n unica X = (ab2 ∪ a)∗ (a∗ b ∪ b∗ a). o ´
  • 63. 2.11. TEOREMA DE KLEENE. PARTE II § ¤ ¦ 57 ¥ Ejercicios de la secci´n 2.10 o Œ Encontrar las soluciones (´nicas) de las siguientes ecuaciones: u (i) X = aX ∪ bX. (ii) X = aX ∪ b∗ ab ∪ bX ∪ a∗ . ! Demostrar de si λ ∈ A, entonces Y es una soluci´n de la ecuaci´n o o X = AX ∪ B si y solo si Y = A∗ (B ∪ D) para alg´n D ⊆ Σ∗ . u 2.11. Teorema de Kleene. Parte II En esta secci´n demostraremos que para todo AFN M = (Σ, Q, q0 , F, ∆) o existe una expresi´n regular R tal que L(M ) = R. o Un aut´mata tiene un unico estado inicial pero cambiando dicho eso ´ tado surgen nuevos aut´matas. Para cada qi ∈ Q, sea Mi el aut´mata o o que coincide con M pero con estado inicial qi ; m´s precisamente, Mi = a (Σ, Q, qi , F, ∆). Al lenguaje aceptado por Mi lo denotaremos Ai ; es decir, L(Mi ) = Ai . En particular, A0 = L(M ). Puesto que los estados de aceptaci´n no se han alterado, se tiene que o Ai = {w ∈ Σ∗ : ∆(qi , w) ∩ F = ∅}. Cada Ai se puede escribir como   {aAj : qj ∈ ∆(qi , a)},  (2.1) Ai = a∈Σ  {aAj : qj ∈ ∆(qi , a)} ∪ λ.  si qi ∈ F, si qi ∈ F. a∈Σ Si Q = {q0 , q1 , . . . , qn }, las igualdades de la forma (2.1) dan lugar a un sistema de n + 1 ecuaciones con n + 1 inc´gnitas (los Ai ): o  A0 = C01 A0 ∪ C02 A1 ∪ · · · ∪ C0n An (∪λ)    A1 = C11 A0 ∪ C12 A1 ∪ · · · ∪ C1n An (∪λ)  ..  ..  ..   An = Cn1 A0 ∪ Cn2 A1 ∪ · · · ∪ Cnn An (∪λ) donde cada coeficiente Cij o es ∅ o es un s´ ımbolo de Σ. El t´rmino λ se e a˜ade a una ecuaci´n solamente si el estado correspondiente es un estado n o de aceptaci´n. o
  • 64. 58 ´ CAP´ ITULO 2. AUTOMATAS FINITOS Utilizando sucesivas veces el lema de Arden, se puede mostrar que este sistema de ecuaciones siempre se puede solucionar y su soluci´n es unica. o ´ En efecto, comenzando con la ultima ecuaci´n, se escribe An en t´rminos ´ o e de los dem´s Ai , para lo cual se usa el lema de Arden si es necesario. Este a valor de An se reemplaza en las dem´s ecuaciones y el sistema se reduce a a n ecuaciones con n inc´gnitas. Similarmente, An−1 se escribe en t´rminos o e de los dem´s Ai , usando el lema de Arden si es necesario, y tal valor se a reemplaza en las ecuaciones restantes. Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuaci´n cuya inc´gnita es precisamente o o A0 . Esta ecuaci´n se soluciona recurriendo una vez m´s al lema de Arden. o a Puesto que los coeficientes Cij diferentes de ∅ son s´ ımbolos de Σ, se obtiene una expresi´n regular R tal que L(M ) = A0 = R. o 2.12. Ejemplos de la parte II del Teorema de Kleene A continuaci´n ilustraremos el procedimiento de la secci´n 2.11 para eno o contrar L(M ) a partir de un AFN M = (Σ, Q, q0 , F, ∆) dado. § ¤ ¦ ¥ Ejemplo Consid´rese el siguiente AFN M : e a a a q0 q1 b a q2 b Por simple inspecci´n sabemos que L(M ) = (a ∪ b)∗ a2 (a ∪ b)∗ , pero utilio zaremos el m´todo descrito para encontrar expl´ e ıcitamente L(M ). El sistema de ecuaciones  (1)  (2)   (3) asociado con el aut´mata M es: o A0 = aA0 ∪ bA0 ∪ aA1 A1 = aA2 A2 = aA2 ∪ bA2 ∪ λ. La ecuaci´n (3) se puede escribir como o (4) A2 = (a ∪ b)A2 ∪ λ. Aplicando el lema de Arden en (4): (5) A2 = (a ∪ b)∗ λ = (a ∪ b)∗ .
  • 65. 2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE 59 Reemplazando (5) en (2): (6) A1 = a(a ∪ b)∗ . Reemplazando (6) en (1): (7) A0 = (a ∪ b)A0 ∪ a2 (a ∪ b)∗ . Aplicando el lema de Arden en (7) concluimos: A0 = (a ∪ b)∗ a2 (a ∪ b)∗ § ¤ ¦ ¥el siguiente AFN M : Ejemplo Encontrar una expresi´n regular para el lenguaje aceptado por o a a q0 q1 b q2 b a b q3 q4 a a El sistema de ecuaciones asociado con el aut´mata M es: o  (1) A0 = aA1    (2) A1 = aA2   (3) A2 = bA2 ∪ bA3 ∪ λ   (4) A3 = aA3 ∪ bA4     (5) A4 = aA2 ∪ aA3 ∪ λ Reemplazando (5) en (4): (6) A3 = aA3 ∪ baA2 ∪ baA3 ∪ b = (a ∪ ba)A3 ∪ baA2 ∪ b. Aplicando el lema de Arden en (6): (7) A3 = (a ∪ ba)∗ (baA2 ∪ b) = (a ∪ ba)∗ baA2 ∪ (a ∪ ba)∗ b. Reemplazando (7) en (3): (8) A2 = bA2 ∪ b(a ∪ ba)∗ baA2 ∪ b(a ∪ ba)∗ b ∪ λ. El sistema original de cinco ecuaciones y cinco inc´gnitas se reduce al siso tema de tres ecuaciones y tres inc´gnitas formado por (1), (2) y (8). o La ecuaci´n (8) se puede escribir como o
  • 66. 60 (9) ´ CAP´ ITULO 2. AUTOMATAS FINITOS 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 ∪ λ § ¤ ¦ ¥las cadenas sobre Σ = {a, b} que tienen un n´mero par de aes u Ejemplo Encontrar una expresi´n regular para el lenguaje L de todas o y un n´mero par de bes. El siguiente aut´mata acepta el lenguaje L: u o a q0 q1 a b b b b a q2 q3 a Este aut´mata da lugar al siguiente sistema de ecuaciones: o  (1) A0 = aA1 ∪ bA2 ∪ λ    (2) A = aA ∪ bA 1 0 3  (3) A2 = aA3 ∪ bA0   (4) A = aA ∪ bA 3 2 1 Reemplazando (4) en (3): (5) A2 = a2 A2 ∪ abA1 ∪ bA0 . Reemplazando (4) en (2): (6) A1 = aA0 ∪ baA2 ∪ b2 A1 . El sistema original de cuatro ecuaciones y cuatro inc´gnitas se reduce a un o sistema de tres ecuaciones y tres inc´gnitas, a saber: o  (1) A0 = aA1 ∪ bA2 ∪ λ  (6) A1 = aA0 ∪ baA2 ∪ b2 A1   (5) A2 = a2 A2 ∪ abA1 ∪ bA0
  • 67. 61 2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE Aplicando el lema de Arden en (5): (7) A2 = (a2 )∗ (abA1 ∪ bA0 ) = (a2 )∗ abA1 ∪ (a2 )∗ bA0 . Reemplazando (7) en (6): (8) A1 = aA0 ∪ ba(a2 )∗ abA1 ∪ ba(a2 )∗ bA0 ∪ b2 A1 . Reemplazando (7) en (1): (9) A0 = aA1 ∪ b(a2 )∗ abA1 ∪ b(a2 )∗ bA0 ∪ λ. El sistema se reduce ahora a dos ecuaciones:   (9) A0 = aA1 ∪ b(a2 )∗ abA1 ∪ b(a2 )∗ bA0 ∪ λ (8) A1 = aA0 ∪ ba(a2 )∗ abA1 ∪ ba(a2 )∗ bA0 ∪ b2 A1  = ba(a2 )∗ ab ∪ b2 A1 ∪ aA0 ∪ ba(a2 )∗ bA0 . Aplicando el lema de Arden en (8): (10) A1 = ba(a2 )∗ ab ∪ b2 ∗ aA0 ∪ ba(a2 )∗ bA0 ∗ ∗ = ba(a2 )∗ ab ∪ b2 aA0 ∪ ba(a2 )ab ∪ b2 ba(a2 )∗ bA0 . ∗ Haciendo R = ba(a2 )∗ ab ∪ b2 , (10) se puede escribir como (11) A1 = RaA0 ∪ Rba(a2 )∗ bA0 . Aplicando el lema de Arden en (9): (12) A0 = b(a2 )∗ b ∗ aA1 ∪ b(a2 )∗ abA1 ∪ λ ∗ ∗ ∗ = b(a2 )∗ b aA1 ∪ b(a2 )∗ b b(a2 )∗ abA1 ∪ b(a2 )∗ b . ∗ Haciendo S = b(a2 )∗ b , (12) se puede escribir como: (13) A0 = SaA1 ∪ Sb(a2 )∗ abA1 ∪ S. Al sustituir (11) en (13), el sistema original se reduce a una sola ecuaci´n: o (14) A0 = Sa RaA0 ∪ Rba(a2 )∗ bA0 ∪ Sb(a2 )∗ ab RaA0 ∪ Rba(a2 )∗ bA0 ∪ S. Agrupando los t´rminos en los que aparece A0 y factorizando, se obtiene e (15) A0 = SaRa∪SaRba(a2 )∗ b∪Sb(a2 )a bRa∪Sb(a2 )∗ abRba(a2 )∗ b A0 ∪S. Aplicando lema de Arden en (15): ∗ (16) A0 = SaRa ∪ SaRba(a2 )∗ b ∪ Sb(a2 )∗ abRa ∪ Sb(a2 )∗ abRba(a2 )∗ b S. Si sustituimos R y S en (16) obtenemos una expresi´n regular para L. o
  • 68. 62 ´ CAP´ ITULO 2. AUTOMATAS FINITOS § ¤ ¦ ¥ Ejercicios de la secci´n 2.12 o Œ Utilizando el lema de Arden, encontrar expresiones regulares para los siguientes lenguajes sobre Σ = {a, b}: (i) El lenguaje L de todas las cadenas que tienen un n´mero par u de aes y un n´mero impar de bes. u (ii) El lenguaje L de todas las cadenas que tienen un n´mero par u de aes o un n´mero impar de bes. u  Utilizando el lema de Arden, encontrar expresiones regulares para los lenguajes aceptados por los siguientes AFN: (i) b b a q0 a q1 a q2 a q3 b (ii) b q0 b q1 b a q2 a q3 q4 b b
  • 69. Cap´tulo ı 3 Otras propiedades de los lenguajes regulares En los dos cap´ ıtulos anteriores hemos presentado las propiedades b´sicas de a los lenguajes regulares pero no hemos visto c´mo se puede demostrar que o un lenguaje no es regular. El llamado “lema de bombeo”, expuesto en este cap´ ıtulo, sirve para tal prop´sito. Tambi´n veremos que la regularidad es o e una propiedad que se preserva por las operaciones booleanas usuales, por homomorfismos y por las im´genes inversas de homomorfismos. Finalmena te, analizaremos ciertos problemas de decisi´n referentes a aut´matas y a o o lenguajes regulares. 3.1. Lema de bombeo El llamado “lema de bombeo” (pumping lemma, en ingl´s) es una propiee dad 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. Demostraci´n. Por el Teorema de Kleene y por los teoremas de equivalencia o de los modelos AFD, AFN y AFN-λ, existe un AFD M tal que L(M ) = L. 63
  • 70. 64 CAP´ ITULO 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 gr´fica, w se puede descomponer como a w = uvx, donde |uv| ≤ n, v = λ. w ··· ↑ q0 u ··· ↑ q ··· ≡ x ↑ p ↑ q v N´tese que tanto u como x pueden ser la cadena vac´ λ, pero v = λ. o ıa Adem´s, la cadena v se puede “bombear”, en el sentido de que uv i x es a aceptada por M para todo i ≥ 0. En el diagrama de estados, se puede visualizar esta propiedad de bombeo de v: v u q q0 x 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 contradicci´n (o reducci´n al absurdo). El razonamiento utilizado tiene o o la siguiente forma: 1. Si L fuera regular, existir´ una constante de bombeo n para L. ıa 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 contradicci´n: o (I) Por el lema de bombeo, uv i x ∈ L, para todo i ≥ 0.
  • 71. 3.1. LEMA DE BOMBEO 65 (II) uv i x no puede estar en L, para alg´n i ∈ I. Por lo general, basta u escoger valores peque˜os de i como i = 0 ´ i = 2. n o § ¤ ¦ ¥{ai bi : i ≥ 0} no es regular. Ejemplo Usar el lema de bombeo para demostrar que el lenguaje L = ıa Soluci´n. Si L fuera regular, existir´ una constante de bombeo n para L. o Sea w = an bn ∈ 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 = ar , v = as , para alg´n r ≥ 0, u para alg´n s ≥ 1. u Entonces, x = an−(r+s) bn = an−r−s bn . Por el lema de bombeo, uv i x ∈ L para todo i ≥ 0. En particular, si i = 0, ux ∈ L. Pero ux = ar an−r−s bn = an−s bn . Como n − s = n, la cadena ux ∈ L lo cual es una contradicci´n. Se concluye entonces que L no puede / o ser regular. Tomando i = 2 tambi´n se llega a una contradicci´n: por un lado, uv 2 x ∈ e o L, pero uv 2 x = ar as as an−r−s bn = ar+2s+n−r−s bn = an+s bn . Como s ≥ 1, an+s bn no est´ en L. a El argumento anterior tambi´n sirve para demostrar que el lenguaje e L = {ai bi : i ≥ 1} no es regular. § ¤ ¦ ¥es un lenguaje regular. Recu´rdese que un pal´ e ındromo es una Ejemplo Demostrar que el lenguaje de los pal´ ındromos sobre {a, b} no cadena w tal que w = wR . ıa Soluci´n. Si L fuera regular, existir´ una constante de bombeo n para L. o Sea w = an ban ∈ L. Entonces w se puede descomponer como w = uvx, con |v| ≥ 1, |uv| ≤ n, y para todo i ≥ 0, uv i x ∈ L. Por lo tanto, u y v constan unicamente de aes: ´ u = ar , v = as , para alg´n r ≥ 0, u para alg´n s ≥ 1. u Entonces, x = an−(r+s) ban = an−r−s ban .
  • 72. 66 CAP´ ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES Tomando i = 0, se concluye que ux ∈ L, pero ux = ar an−r−s ban = an−s ban . Como s ≥ 1, an−s ban no es un pal´ ındromo. Esta contradicci´n muestra que o L no puede ser regular. § Ejemplo ¦ 2 ¤ Demostrar que el lenguaje L = ai : i ≥ 0 no es regular. L ¥est´ formado por cadenas de aes cuya longitud es un cuadrado a perfecto. Soluci´n. Si L fuera regular, existir´ una constante de bombeo n para L. o ıa 2 Sea w = an ∈ 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, n2 n2 + |v| = |uvx| + |v| = |uv 2 x| ≤ n2 + |uv| ≤ n2 + n (n + 1)2 . Esto quiere decir que el n´mero de s´ u ımbolos de la cadena uv 2 x no es un cuadrado perfecto y, por consiguiente, uv 2 x ∈ L. En conclusi´n, L no es o regular. § ¤ ¦ ¥ Ejercicios de la secci´n 3.1 o Œ Usar el lema de bombeo para demostrar que los siguientes lenguajes no son regulares: (i) L = {w ∈ {a, b}∗ : w tiene el mismo n´mero de aes que de bes}. u (ii) L = {ai bai : i ≥ 1}, sobre Σ = {a, b}. (iii) L = {ai bj ai : i, j ≥ 0}, sobre Σ = {a, b}. (iv) L = {0i 12i : i ≥ 0}, sobre Σ = {0, 1}. (v) L = {1i 01i 0 : i ≥ 1}, sobre Σ = {0, 1}. (vi) L = {ai bj ci+j : i, j ≥ 0}, sobre Σ = {a, b, c}. (vii) L = {ai bj : j i ≥ 0}, sobre Σ = {a, b}. (viii) L = {ww : w ∈ Σ∗ }, siendo Σ = {a, b}. (ix) L = {wwR : w ∈ Σ∗ }, siendo Σ = {a, b}. (x) L = {ai : i es un n´mero primo}, sobre Σ = {a}. u  ¿Es L = {(ab)i : i ≥ 0} un lenguaje regular? Ž Encontrar la falacia en el siguiente argumento: “Seg´n la propiedad u (B) del enunciado del lema de bombeo, se tiene que uv i x ∈ L para todo i ≥ 0. Por consiguiente, L posee infinitas cadenas y, en conclusi´n, o todo lenguaje regular es infinito.”
  • 73. 3.2. PROPIEDADES DE CLAUSURA 3.2. 67 Propiedades de clausura Las propiedades de clausura afirman 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 colecci´n R ⊆ ℘(Σ∗ ) de los leno guajes regulares sobre un alfabeto Σ es cerrada bajo todas las operaciones booleanas. 3.2.1 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto Σ, tambi´n lo son: e (1) L1 ∪ L2 (2) L1 L2 (3) L∗ (4) L+ (5) L = Σ∗ − L (6) L1 ∩ L2 (7) L1 − L2 (8) L1 ¡ L2 Demostraci´n. o (uni´n) o (concatenaci´n) o (estrella de Kleene) (clausura positiva) (complemento) (intersecci´n) o (diferencia) (diferencia sim´trica) e (1), (2) y (3) se siguen de la definici´n de los lenguajes regulares. o (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, q0 , F, δ) tal que L(M ) = L. Para construir un AFD que acepte el complemento de L basta intercambiar los estados finales con los no finales. Si M ′ es el aut´mata (Σ, Q, q0 , Q − F, δ), entonces L(M ′ ) = L. o (6) Se sigue de (1) y (5) teniendo en cuenta que L1 ∩ L2 = L1 ∪ L2 . (7) Se sigue de (5) y (6) teniendo en cuenta que L1 − L2 = L1 ∩ L2 . (8) Puesto que L1 ¡ L2 = (L1 ∪ L2 ) − (L1 ∩ L2 ) = (L1 − L2 ) ∪ (L2 − L1 ) el resultado se sigue de (1), (6), (7).
  • 74. 68 CAP´ ITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES Recu´rdese que un ´lgebra booleana de conjuntos es una familia A ⊆ e a ℘(X) cerrada bajo las operaciones de uni´n, intersecci´n y complemento, o o tal que ∅ ∈ A, X ∈ A. 3.2.2 Corolario. La colecci´n R ⊆ ℘(Σ∗ ) de todos los lenguajes regulares o sobre un alfabeto Σ es un ´lgebra booleana de conjuntos. a Demostraci´n. Se sigue del Teorema 3.2.1 y del hecho de que ∅ y Σ∗ son o lenguajes regulares sobre Σ. Hemos visto que un lenguaje finito es regular y que la uni´n fio nita de lenguajes regulares es regular. Pero una uni´n infinita de o lenguajes regulares no necesariamente es regular; consid´rese, por e ejemplo, L = {an bn : n ≥ 1} = {ai bi }. i≥1 Cada conjunto {ai bi } es regular (porque posee s´lo una cadena) o pero L no lo es. Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente regular, es decir, la familia de los lenguajes regulares no es cerrada para subconjuntos. Dicho de otra forma, un lenguaje regular puede contener sublenguajes no-regulares. Por ejemplo, L = {an bn : n ≥ 1} es un sublenguaje del lenguaje regular a∗ b∗ , pero L mismo no es regular. Las propiedades de clausura permiten concluir, razonando por contradicci´n, que ciertos lenguajes no son regulares. Esto se ilustra en los siguientes o ejemplos en los que se usa el hecho de que los lenguajes L = {ai bi : i ≥ 0} y L = {ai bi : i ≥ 1} no son regulares. § ¤ ¦ L = {ai bj : i, j ≥ 0, i = j} no es regular. Si lo fuera, a∗ b∗ − L ¥tambi´n lo ser´ pero a∗ b∗ − L = {ai bi : i ≥ 0}. e ıa, § ¤ ¦ ¥Σ = {a, b} no es regular. Si L fuera regular, tambi´n lo ser´ e ıa Ejemplo Ejemplo El lenguaje L = {wbn : w ∈ Σ∗ , |w| = n, n ≥ 1} sobre L ∩ a∗ b∗ pero L ∩ a∗ b∗ = {an bn : n ≥ 1}. § ¤ ¦ ¥ Ejercicios de la secci´n 3.2 o Œ Demostrar que a∗ b∗ es la uni´n de dos lenguajes disyuntos no-regulares. o
  • 75. ´ 3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS 69  Sea L un lenguaje no-regular y N un subconjunto finito de L. Demostrar que L − N tampoco es regular. Ž Demostrar o refutar las siguientes afirmaciones: (i) Un lenguaje no-regular debe ser infinito. (ii) Si el lenguaje L1 ∪ L2 es regular, tambi´n lo son L1 y L2 . e (iii) Si los lenguajes L1 y L2 no son regulares, el lenguaje L1 ∩ L2 tampoco puede ser regular. (iv) Si el lenguaje L∗ es regular, tambi´n lo es L. e (v) Si L es regular y N es un subconjunto finito de L, entonces L − N es regular. (vi) Un lenguaje regular L es infinito si y s´lo si en cualquier expreo si´n regular de L aparece por lo menos una ∗. o  Utilizar las propiedades de clausura para concluir que los siguientes lenguajes no son regulares: (i) L = {1i 01j 0 : i, j ≥ 1, i = j}, sobre Σ = {0, 1}. Ayuda: utilizar el ejercicio 1(v) de la secci´n 3.1. o (ii) L = {uvuR : u, v ∈ {a, b}+ }, sobre Σ = {a, b}. Ayuda: utilizar el ejercicio 1(ii) de la secci´n 3.1. o (iii) L = {u : |u| es un cuadrado perfecto}, sobre Σ = {a, b, c}. Ayuda: utilizar el ultimo ejemplo de la secci´n 3.1. ´ o 3.3. Propiedades de clausura para aut´matas o Las propiedades de clausura del Teorema 3.2.1 se pueden enunciar como procedimientos algor´ ıtmicos para la construcci´n de aut´matas finitos. o o 3.3.1 Teorema. Sean M , M1 y M2 aut´matas finitos (ya sean AFD o AFN o o AFN-λ) y L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir aut´matas finitos que acepten los siguientes lenguajes: o (1) (2) (3) (4) L1 ∪ L2 . L1 L2 . L∗ . L+ . (5) (6) (7) (8) L = Σ∗ − L. L1 ∩ L2 . L1 − L2 . L1 ¡ L2 . Demostraci´n. La construcci´n de aut´matas para L1 ∪ L2 , L1 L2 , L∗ y L+ o o o se present´ en la demostraci´n de la parte I del Teorema de Kleene. En el o o