Subido por Martin Gutierrez

Teoria-de-Automatas-y-Lenguajes-Formales-Dean-Kelley-1-155

Anuncio
) ) ) ) ) )
N o .D E U B R 0 ^ 7 ;3 - t±
. ie »
L _
L Z
No. DEETIG. M ^ 4 -T ^
Teoría de autómatas )
lenguajes formales
Dean Kelley
Departamento de Matemáticas y Ciencias de la Computación
Gustavus Adolphus College
T raducción:
Ma Luisa Diez Platas
Facultad de Informática
Universidad Pontificia de Salamanca en Madrid
Revisión técnica:
Luis Joyanes Aguilar
Facultad de Informática
Universidad Pontificia de Salamanca en Madrid
PRENTICE
HALL
M adrid • México • Santafé de Bogotá • Buenos Aires • Caracas • Lima • Moi
San Juan • San José • Santiago • Sao Paulo • W hite Plains
www.FreeLibros.com
CONSULTORES EDITORIALES:
SEBASTIÁN DORMIDO BENCOMO
Departamento de Informática y Automática
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA
LUIS JOYANES AGUILAR
Departamento de Lenguajes, Sistemas Informáticos e Ingeniería de Software
UNIVERSIDAD PONTIFICIA DE SALAMANCA en Madrid
www.FreeLibros.com
DEAN KELLEY
Teoría de autómatas y lenguajes formales
No está permitida la reproducción total o parcial de esta obra
ni su tratamiento o transmisión por cualquier medio o método,
sin autorización escrita de la Editorial.
DERECHOS RESERVADOS © 1995 respecto a la primera edición en español por
PEARSON EDUCACIÓN, S. A.
C / N úñez de Balboa, 120
28006 M adrid
ISBN 0-13-518705-2
Depósito Legal: M-21607-2001
Última reimpresión, 2001
Traducido de:
AUTOMATA AND FORMAL LANGUAGES: AN 1NTRODUCTION
PRENTICE HALL
© 1995
ISBN: 0-13-497777-7
Editor de la edición en español: Juan Stumpf
Diseño de cubierta: DIGRAF
Composición: AULA DOCUMENTAL DE INVESTIGACIÓN
Impreso por ENCO Artes Gráficas, S.L.
,
IMPRESO EN ESPAÑA - PRINTED IN SPAIN
Este libro está impreso con papel y tintas ecológicos
www.FreeLibros.com
A m is P adres
. y a l tío F u d d
www.FreeLibros.com
Contenido
Prólogo .................................................................................... .............
xi
0. Preliminares m atem áticos...........................................................
0.1 Lógica elem ental...................................................................................
0.2 Definiciones b ásicas...................................................... :....................
0.3 Operaciones con conjuntos..................................................................
0.4 Relaciones y funciones........................................................................
0.5 Inducción................................................................................................
0.6 Cardinalidad...........................................................................................
1
1
6
8
12
19
22
1. Alfabetos y lenguajes....................................................................
1.1 Alfabetos, palabras y lenguajes..........................................................
1.2 Operaciones con cadenas.....................................................................
1.3 Operaciones con lenguajes..................................................................
Problemas .......................................................................................................
29
29
32
34
41
2. Lenguajes regulares......................................................................
2.1 Lenguajes sobre alfabetos....................................................................
2.2 Lenguajes regulares y expresiones regulares....................................
2.3 Autómata
finito determinista..............................................................
/
45
48
53
www.FreeLibros.com
45
VIII
TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES
2.4
2.5
2.6
2.7
2.8
2.9
2.10
AFD y lenguajes...................................................................................
Autómata finito no determinista.........................................................
Equivalencia de AFN y AFD...............................................................
8-transiciones.........................................................................................
Autómatas finitos y expresiones regulares........................................
Propiedades de los lenguajes regulares .......................................... .
Aplicaciones de las expresiones regulares y los autómatas
fin ito s.....................................................................................................
Problemas .......................................................................................................
59
61
66
70
75
84
90
93
3.
L e n g u a je s in d e p e n d ie n te s d el c o n te x to ........................................ 105
3.1
Gramáticas regulares.......................................................................... 105
3.2
Gramáticas regulares y lenguajes regulares.................................... 110
3.3
Gramáticas independientes del contexto.......................................... 114
3.4 Árboles de derivación o de análisis y am bigüedad........................ 117
3.5
Simplificación de gramáticas independientes del contexto.......... 122
3.6 Propiedades de los lenguajes independientes del contexto........... 136
3.7 Autómata de p ila.................................................................................. 144
3.8 Autómatas de pila y lenguajes independientes del contexto......... 151
3.9 Forma normal de G reibach................................................................. 162
Problemas ....................................................................................................... 168
4.
M á q u in a s d e T u r in g ................................................................................. 171
4.1 Definiciones básicas........................................................................... 171
4.2 Máquinas de Turing como aceptadoras de lenguajes..................... 178
4.3 Construcción de máquinas de T uring............................................... 184
4.4 Modificaciones de las máquinas de Turing...................................... 194
4.5 Máquinas de Turing universales........................................................ 205
Problemas ........................................................................."....:...................... 207
5.
M á q u in a s d e T u rin g y l e n g u a j e s ........................................................
$ 5.1 Lenguajes aceptados por máquinas de T u rin g ................................
5.2 Lenguajes regulares, independientes del contexto, recursivos
y recursivamente enumerables............................................................
5.3 Lenguajes recursivos y recursivamente enum erables....................
5.4 Gramáticas no restringidas y lenguajes recursivamente
enum erables..........................................................................................
5.5 Lenguajes sensibles al contexto y la jerarquía de Chom sky..........
Problemas .......................................................................................................
www.FreeLibros.com
209
209
210
215
221
228
235
CONTENIDO
IX
6. Resolubilidad..................................................................................
6.1
El problema de parada........................................................................
6.2 El problema de correspondencia de Post..........................................
6.3 Irresolubilidad y lenguajes independientes del contexto...............
Problemas .......................................................................................................
241
241
245
258
263
7. Introducción a la complejidad com putacio nal.........................
7.1 Complejidad espacial..........................................................................
7.2 Complejidad tem poral........................................................................
7.3 Introducción a la teoría de la com plejidad.......................................
Problemas .......................................................................................................
265
272
281
288
Referencias y bibliografía
291
índice a n a lític o .................
293
www.FreeLibros.com
265
Prólogo
Este libro es el resultado de las anotaciones tomadas en el curso de introducción
a la teoría de la computación, impartido en la universidad Gustavus Adolfus. Di­
cho curso abarca los temas de lenguajes formales y autómatas, máquinas de Tu­
ring y computabilidad a través de la resolubilidad. El curso va dirigido a estu­
diantes de segundo año de Ciencias de la Computación y hasta ahora este curso
tenía como principal prerrequisito el haber seguido con anterioridad un curso so­
bre lectura y tratamiento de las demostraciones matemáticas.
El libro está dirigido a estudiantes con los conocimientos matemáticos míni­
mos. El Capítulo 0 trata dé los preliminares matemáticos necesarios para poder
abordar la lectura del libro én su totalidad.
El nivel de conocimientos matemáticos en los capítulos siguientes es ini­
cialmente bajo, pero se eleva a medida que los temas lo requieren y la capacidad
del estudiante se incrementa. Trataré de evitar las demostraciones matemáticas
rigurosas en la medida de lo posible, en especial en los primeros capítulos. Por
tanto, se evitará dar muchos detalles de las demostraciones que sean tediosas.
Por otro lado, trataré de presentar teoremas y definiciones de la forma más preci­
sa posible. La mayoría de mis razonamientos tienen la intención de motivar mas
que la de ser matemáticamente completos o elegantes.
Creo, además, que los ejercicios contribuyen, en gran medida, al buen
aprendizaje del proceso. Al final de cada sección, los ejercicios planteados pre­
tenden ilustrar, revisar y ampliar los conceptos vistos en las mismas. Hay ejercí-
www.FreeLibros.com
XII
TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES
cios desde bastante fáciles a muy difíciles. La mayoría de los ejercicios más fá­
ciles pretenden reforzar las ideas vistas en la sección, mientras que los más difí­
ciles ilustran y amplían dichas ideas.
Los Capítulos del 1 al 7 terminan con unas colecciones de problemas. Di­
chos problemas pretenden animar al lector a investigar sobre los temas tratados.
Generalmente (aunque no siempre), el material tratado en las colecciones de
problemas representan lo que yo considero necesario para estar interesado en re­
alizar incursiones a través de la línea de desarrollo principal del texto.
El texto consta de ocho capítulos. A continuación se realiza una breve des­
cripción de cada uno de ellos.
El Capítulo 0 cubre los preliminares matemáticos y lógicos. Consiste en una
rápida revisión de la lógica y la teoría de conjuntos, siendo un capítulo bastante
completo. Además, en este capítulo se repasan todos los conocimientos matemá­
ticos necesarios para entender el resto del texto.
En el Capítulo 1 se presentan las definiciones básicas y la notación usada
para alfabetos, cadenas y lenguajes. Se definen y estudian las operaciones ele­
mentales sobre cadenas y lenguajes.
El Capítulo 2 trata de los lenguajes y las expresiones regulares. Se definen
los autómatas finitos y se establece la relación de los mismos con los lenguajes
regulares. Se introduce el no determinismo. Además, se estudian las propiedades
fundamentales de los lenguajes regulares (lema del bombeo, algoritmos de deci­
sión, etc.).
El Capítulo 3 introduce los conceptos sobre gramáticas desarrollando, ade­
más, las propiedades de las gramáticas independientes del contexto y los autó­
matas de pila. Se presentan varias simplificaciones y formas normales de gramá­
ticas.
El Capítulo 4 es el primero de los cuatro capítulos cuyo tema central son las
máquinas de Turing. Este capítulo contiene definiciones básicas, las distintas
versiones de máquinas de Turing e introduce la idea de funciones Turing-computables y lenguajes reconocidos por las máquinas de Turing.
El Capítulo 5 estudia las relaciones entre las máquinas de Turing y los len­
guajes formales. Además, establece la jerarquía de Chomsky.
En el Capítulo 6 se habla de la resolubilidad. Comienza con el problema de
parada de las máquinas de Turing, después trata el problema de la irresolubilidad del problema de la correspondencia de Post y presenta algunos problemas
irresolubles para los lenguajes y gramáticas independientes del contexto. El ca­
pítulo termina con el estudio de las funciones computables totales.
El Capítulo 7 es una introducción a la complejidad computacional del reco­
nocimiento del lenguaje. Se estudia en función de los recursos de espacio y
tiempo (de la máquinas de Turing).
www.FreeLibros.com
PRÓLOGO
XIII
Aunque la mayoría del material presentado se corresponde con el contenido
usual de un curso de introducción a la teoría, la novedad de este texto quizás ra­
dique en el nivel con el cual se enfoca. He tratado de transmitir todos estos con­
ceptos a estudiantes que no sean avezados matemáticos, de forma que puedan
comprenderlos al mismo tiempo que desarrollan su capacidad matemática.
Entiendo que éste es el material suficiente para cubrir un curso de un semes­
tre de cuatro días a la semana. Generalmente trato los Capítulos del 1 al 5 en su
totalidad, con la rapidez con que los estudiantes son capaces de asimilarlos. Este
material es el corazón de cualquier curso de teoría de lenguajes formales y no
me importa tomarme el tiempo necesario para que los estudiantes puedan dige­
rirlo. Dependiendo de la audiencia, imparto algunas clases del Capítulo 0 o sim­
plemente asigno trabajos a cerca del mismo. La mayoría del material presente en
el Capítulo 0, proviene de un curso corto (2 créditos) de demostraciones mate­
máticas que una vez se impartió en la universidad. Siempre trato de desarrollar
el Capítulo 6 en su totalidad, aunque depende del tiempo que quede del semes­
tre. Al principio me sorprendió que, cuando el tiempo apremia, la resolubilidad
puede ser presentada bastante bien por medio de conferencias cortas.
Me gustaría agradecer a mi amigo Ding-Zhu Du de la Universidad de Min­
nesota, Minneapolis, por sugerirme el Problema 1.7, el cual trata de la desigual­
dad de McMillan. El desarrollo anterior al Lema 2.8.3, usado en el lema de Ar­
den, fue sugerido por una de las primeras personas que revisaron este libro. Me
gustaría agradecerle, a él o a ella, por llamar mi atención sobre el mismo (debido
a Brzozowski). Me gustaría también expresar mi aprecio a mis amigos T. J. Morrison y D. J. Malmanger por su estímulo y apoyo moral a lo largo de este pro­
yecto aparentemente infinito. Finalmente, me gustaría dar las gracias a las si­
guientes personas por sus comentarios cuando revisaron el manuscrito: Moon
Jung Chung (Michigan State University), Ronald K. Friesen (Texas A&M University), Micha Hofri (University of Houston), Robert Kline (West Chester Uni­
versity) y S. A. Kovatch (General Electric).
Dean Kelley
www.FreeLibros.com
Teoría de autómatas
lenguajes formales
www.FreeLibros.com
o
Preliminares
matemáticos
0.1
LÓGICA ELEMENTAL
Para el estudio de la teoría de la computación se necesitan tres herramientas ma­
temáticas básicas. Una de ellas es la notación teórica establecida, otra el dominio
de los conceptos de funciones y relaciones, y la tercera son unos buenos conoci­
mientos de inducción matemática. La capacidad para usar la notación teórica
establecida depende, fundamentalmente, del conocimiento de las definiciones
básicas de símbolos y sus significados. Conocer las otras dos herramientas de­
pende de la capacidad para entender razonamientos lógicos. Por tanto, comenza­
remos con una presentación -de las ideas fundamentales de la lógica para pasar a
establecer los mecanismos matemáticos requeridos.
En lógica, una proposición o sentencia es una frase de la cual se puede de­
terminar si es verdadera o falsa. Las frases “2 + 1 es 5”, “3 > V8~” y “ 17 es un
número primo” son proposiciones, mientras que “ven a nuestra fiesta”, “¿qué
hora es?” y “esta proposición es falsa” no lo son. Si P y Q son proposiciones, se
dice que P es equivalente a Q si para todos los casos tienen el mismo valor de
verdad. Por eso las frases “3 < 5” y “ íc es irracional” son equivalentes, como lo
son las frases “ Vfe es un entero” y “4 < 3”, puesto que sus valores de verdad son
los mismos.
Si P es una proposición, su negación se denota por —i P. Si P es verdadera,
-i P es falsa, y si P es falsa, -> P es verdadera. —<P se lee “no P”. Por ejemplo, si
P es la proposición “3 < 5”, —>P es “3 > 5”. Dado que el valor de verdad d e —>P
www.FreeLibros.com
2
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
depende del valor de verdad de P, podemos usar una tabla, llamada tabla de ver­
dad, para indicar la dependencia:
p
-i P
V
F
F
V
La tabla de verdad presenta los valores de verdad de —i P correspondientes a los
valores de verdad de P.
La conjunción de las proposiciones P y Q se denota por P a Q y se lee
“P y <2 ”• La proposición compuesta P a Q es verdadera sólo cuando P y Q sean
verdaderas simultáneamente. Por eso podemos obtener la tabla de verdad si­
guiente:
P
Q
V
V
V
V
F
F
F
V
F
F
F
F
P
a
Q
Es importante hacer notar que para una proposición compuesta la tabla de
verdad debe considerar todas las posibles combinaciones de los valores de ver­
dad correspondientes a los componentes de la misma.
Considérense las conjunciones siguientes
1. 3 < V ! 7 y 25 = 52.
2.
3 < V77 y 26 = 52.
3.
3 > VÍ7 y 25 = 52.
4.
3 > VT7y 26 = 52.
De estas cuatro proposiciones compuestas, sólo la primera es verdadera. En
todas las demás, al menos uno de los componentes es falso, lo que hace que la
conjunción sea falsa.
La disyunción de las proposiciones P y Q se denota por P v Q. Es verdadera
cuando al menos una de las dos es verdadera. Otra forma de decir esto es que
P v Q e s falsa solamente cuando P y Q son falsas a la vez. P v Q s e lee “ P o Q”.
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
3
La proposición P —> Q se llama proposición condicional y tiene la siguiente
tabla de verdad
p
Q
P-^Q
V
V
V
V
F
F
F
V
V
F
F
V
La condicional se lee “si P entonces Q”. Para entender los valores de verdad
de P —>Q, considérese la proposición “Si el sol brilla, entonces Carlos juega al
béisbol”. Para determinar cuando es verdadera esta proposición, nos pregunta­
mos si la persona que la ha hecho está diciendo la verdad. Tenemos cuatro casos
que corresponden a las cuatro líneas de la tabla de verdad precedente.
En el primer caso (el sol brilla y Carlos juega al béisbol), se ha dicho la ver­
dad. En el segundo caso (el sol brilla y Carlos no juega al béisbol), no se ha di­
cho la verdad. En los dos últimos casos (el sol no brilla y Carlos juega al béis­
bol; el sol no brilla y Carlos no juega al béisbol), no deberíamos decir que la
persona que hizo la proposición es un mentiroso puesto que el sol no brilla y él,
o ella, sólo dijeron lo que ocurriría si el sol brillara.
En la condicional P —> Q, la proposición P se llama hipótesis, condición o
antecedente, mientras que Q se llama conclusión o consecuente.
La recíproca de la condicional P —>Q es la proposición Q —» P.
La contrapuesta de P —>Q es (—' Q) —> (—' P). Advierta que P —» Q y su
contraposición son equivalentes puesto que tienen los mismos valores de verdad
para todos los casos, como muestra la siguiente tabla de verdad:
p
Q
P ^Q
~ 'Q
-I p
V
V
V
F
F
V
V
F
F
V
F
F
F
V
V
F
V
V
F
F
V
V
V
V
Consideremos la proposición P —>Q a Q —» P. Es fácil ver que la proposi­
ción es. verdadera sólo cuando P y Q tienen los mismos valores de verdad. Esta
www.FreeLibros.com
4
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
proposición en forma abreviada es P
Q, la cual se lee “P si y sólo si Q". Se
llama proposición bicondicional.
Las proposiciones —■(P a Q) y ( - 1 P) v ( - 1 Q) son equivalentes (ésta es una
de las leyes de De Morgan; véase Ejercicio 0.1.2). Considérese la proposición
- .( / » A f i) < - > ( - .P ) v ( - . Q)
A causa de la equivalencia de proposiciones, obtenemos que ambos lados
de la bicondicional tienen el mismo valor de verdad en todos los casos. Por tanto
la bicondicional es verdad en todos los casos. Esto sugiere el siguiente teorema:
T eorem a 0.1.1. Sea P y Q proposiciones para las cuales P o Q es siempre verdadera.
Entonces P y Q son equivalentes. Por otro lado, si P y Q son equivalentes, en­
tonces la bicondicional P <-> Q es siempre verdadera.
Un proposición es una tautología si es siempre verdadera. Fíjese que si P y
Q son equivalentes entonces, según el teorema previo, P
Q t s una tautología.
Por tanto, la equivalencia puede ser definida como: P y Q son equivalentes si
P
Q es una tautología.
Cuando la proposición condicional P —> Q es una tautología, se escribe
P => Q. De forma similar podemos escribir P <=í> Q si la bicondicional P
Q es
una tautología. Fíjese, que substancialmente, esto no significa más que la condi­
cional (o bicondicional) es una proposición verdadera. La verdad de P —>Q
depende de los valores de verdad de P y Q. Por otro lado, —■{A a B) —»
(—iA) v ( - 1 B) es una proposición verdadera sea cuales sean los valores de
verdad de sus componentes A y B. Esto puede ser representado por
-i (A a £ ) = > ( - . A) v(-< B).
Una contradicción es una proposición que siempre es falsa. Por tanto, la ne­
gación de una tautología es una contradicción.
Una frase abierta o función proposicional es una proposición que contiene
una variable. Por ejemplo, la frase “x 2 + 2x+ 16 = 0” contiene la variable x, al
igual que la frase “jc fue el primer presidente de los Estados Unidos” . La colec­
ción de objetos que pueden ser sustituidos por una variable en una frase abierta
se llama conjunto de significados de esa variable. Llamaremos conjunto de ver­
dad de la frase abierta, al conjunto de objetos pertenecientes al conjunto de sig­
nificados para los cuales la frase abierta se convierte en una proposición verda­
dera al sustituir la variable por ellos. Si se considera que el conjunto de signifi­
cados para la frase abierta x 2 + 2x + 16 = 0 es el de los números reales, entonces
el conjunto de verdad es vacío. Si el conjunto de significados incluye además
. —1 ± i VTT entonces el conjunto de verdad tiene algún elemento.
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
5
Si P es una frase abierta que contiene la variable x, se escribe P (x). Gene­
ralmente, cuando se muestra una frase abierta, el conjunto de significados para
la(s) variable(s) que contiene es explícitamente declarado o se deduce fácilmen­
te del contexto. Ciertos operadores indican la forma de seleccionar elementos
del conjunto de significados. Esos operadores son los cuantificadores universal
y existencial.
Una frase de la forma “para todo x del conjunto de significados P (x) es ver­
dadera” se dice que es una frase universalmente cuantificada. Esto indica que el
conjunto de verdad de P (x) esta compuesto por todos los objetos pertenecientes
al conjunto de significados de x. Esto, en forma abreviada, se escribe Vx P (x),
lo cual se lee “para todo x, P (x)” . Fíjese que Vx P (x) ya no es una frase abierta,
puesto que su verdad o falsedad puede ser determinada. Por ejemplo, si P (x) es
la frase abierta “x + 1 > x” y el conjunto de significados es la colección de todos
los números reales, entonces Vx P (x) es una proposición verdadera.
Una frase de la forma “existe un x en el conjunto de significados para el
cual P (x) es verdadera” se dice que está cuantificada existencialmente. Esto in­
dica que algún elemento del conjunto de significados es un valor que, al sustituir
a x, hace que P (x) sea verdadera. Lo cual quiere decir que algún elemento del
conjunto de significados está también en el conjunto de verdad de P (x). Esto en
forma abreviada, se escribe 3 x P (x) y se lee “existe un x tal que P (x)”, o “para
algún x, P (x)”. Tenga en cuenta que 3 x P (x) ya no es una frase abierta.
Teorem a 0.1.2.
—>(Vx P (x)) es equivalente a 3 x -> P (x).
Demostración. Supongamos que - i V x P (x) es verdadera. Entonces Vx P (x) es falsa, y
por tanto, el conjunto de verdad de P (x) no es todo el conjunto de significados
de x. Entonces, el conjunto de verdad de —<P (x) contiene algún elemento. Por
tanto la proposición 3 x —■P (x) es verdadera.
Ahora supongamos que —>Vx P (x) es falsa. Entonces Vx P (x) es verdadera,
así que el conjunto de verdad de P (x) es todo el conjunto de significados de x.
Por lo tanto, el conjunto de verdad de -i P (x) es vacío, lo que implica que
3 x —iP (x) es falsa.
Con esto hemos demostrado que las dos proposiciones tienen exactamente
los mismos valores de verdad y, por tanto, son equivalentes. □
Si P (x) es una frase abierta, entonces un contraejemplo para Vx P (x) es un
elemento, t, del conjunto de significados de forma que P (t) sea falsa. Se puede
demostrar una proposición de la forma “Si para cada x P (x), entonces Q (x)”
probando que Vx (P (x) —» Q (x)) es verdadera. Esto puede ser refutado si se
proporciona un contraejemplo. Por ejemplo, la proposición “si n es primo enton-
www.FreeLibros.com
6
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
ces 2” - 1 es primo” podría ser refutada si se encuentra un contraejemplo tal
como « = 1 1 .
Ejercicios de la Sección 0.1
0.1.1. Obtener la tabla de verdad para P v Q .
0.1.2. Probar que -i (P a Q) es equivalente a (—>P) v (-> Q). Probar que —>(P v Q) es
equivalente a (—>P) a (—iQ). Estas dos equivalencias se conocen como las leyes
de De Morgan.
0.1.3. Probar que P a (Q v R) es equivalente a (P a Q) v (P a R) y que P v (Q a R) es
equivalente a (P v 0 a (P v P).
0.1.4. Probar que P y —>(—■P) son equivalentes.
0.1.5. Simplificar ' (( ■P)
v
( i0 ).
0.1.6. Simplificar -> ((-> Q) a (—>P)).
0.1.7. ¿Son equivalentes P —> Q y Q —>P?
0.1.8. ¿Cuáles de las siguientes proposiciones son tautologías?
(a) P o - . ( - . P ) ,
(e) P a—iP.
(b) —1 (P v 0 <-» —1 P a —1 Q.
(f)
(c) P v
(g) ( P < - > 0 - * ( P - » 0 .
—1 P.
(d) (P v
—1 P)
a ((2 v -< 0 .
(Pa - P ) ^ Q .
(h) ( P 0
-1 P v g.
0.1.9. Probar que las siguientes proposiciones son contradicciones:
(a) (P - ) 0
a
(Pa
i
0.
(b) ((P v 0 a -i P) a (—>0 .
(c) (P a 0 A ( i P).
0.1.10. Mostrar que —>3 x P (x) es equivalente a Vx -> P (x).
DEFINICIONES BÁSICAS
Ahora veremos las nociones básicas sobre teoría de conjuntos.
Un conjunto es una colección de objetos llamados elementos del conjunto.
Si A es un conjunto y a es un elemento de A, se usa la notación a e A (se lee “a
es un elemento de A ”). Se usa la notación b <£ A cuando es necesario indicar que
b no es un elemento de A.
Si sabemos que A contiene exactamente los elementos a\, <
22,
a,„ lo indi­
camos escribiendo A = {0 1 , <22 , . . . , an}. Por ejemplo, el conjunto de los números
naturales menores que 6 puede ser escrito A = {0, 1, 2, 3,4, 5}. Esta notación
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
7
puede ser extendida a los conjuntos para los cuales no es posible listar todos sus
elementos, tales como N = {0, 1, 2, ...} o N + = {1,2, 3, . . . }. Un conjunto sólo
se caracteriza por sus elementos y no por el orden en el cual se listan. Por eso
{1, 2, 3} y {2, 1,3} denotan el mismo conjunto.
Los conjuntos A y B son iguales si contienen exactamente los mismos ele­
mentos. Por tanto, si A = {1, 2, 3} y B = {2, 1, 3}, se puede escribir que A = B.
Fíjese que {a} y a no son lo mismo. Tenemos que a e A, pero a & {a}. También
el conjunto {{a, b ) } tiene un único elemento que es el conjunto {a, b). Por otro
lado, [ a , b } tiene dos elementos, a y b. Por consiguiente, {{a, b}} ¿ {a, b}.
Si A y B son conjuntos y todos los elementos de A son también elementos
de B, se escribe A c B y se dice que A es un subconjunto de B. Por ejemplo, si
A = {1, 2, 3} y B = {0, 1, 2, 3 ,4 , 5}, se tiene A c 8 . Por otro lado, B no es un
subconjunto de A, porque los elementos 0 ,4 y 5 de B no lo son de A.
Obsérvese que s i A Q B y B ^ A simultáneamente, entonces todos los ele­
mentos de A están en B y todos los elementos de B están en A. Por lo tanto, si
A c B y B c A, tenemos que A = B.
T eorem a 0.2.1.
S i A c B y B c C , entonces A c C .
Demostración. Sea x e A. Entonces, si A c B se obtiene que x e /?. Además, puesto
que B c C y x e B, tenemos que x e C. Por tanto, dado que x era un elemento
arbitrario de A, resulta que A c C . □
Para completar las definiciones, es conveniente considerar un conjunto es­
pecial 0, llamado conjunto vacío o nulo, el cual no tiene elementos. El conjunto
vacío es un subconjunto de todos los conjuntos; por lo cual se puede escribir
0 c A , para todo conjunto A.
Algunas veces es conveniente describir el contenido de un conjunto en tér­
minos de una propiedad que sea característica de todos los elementos del con­
junto. Sea P (x) una proposición sobre x. La notación {x| P (x)}, que se int erpre­
ta como “el conjunto de todos los x tales que P (x)”, denota el conjunto de todos
los x para los cuales P (x) es una proposición verdadera. Por ejemplo,
Z + = { x | x e N y x > 0 } describe el conjunto de los enteros positivos.
A = {x|x e N y x < 5} es el conjunto {(), 1, 2, 3,4}.
Supongamos que A es un conjunto. Definimos conjunto potencia de A como
2a = {S| B c A ¡ . Por ejemplo, sea A - {a, b,c}. Entonces 2A es el conjunto
{0, {a}, {b}, {c}, {a,b}, {a,c}, {b , c }, {a, b, c}}
Obsérvese que 0 e 2a y A e 2a
Supongamos que / es un conjunto. Si para todo a e l tenemos que Aa es un
conjunto, entonces {Aa | a e /} se llama fam ilia indexada de conjuntos. Por
www.FreeLibros.com
8
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
ejemplo, si para todo n > 0, A n = [-1 /n , l/n], entonces {An\n e Z +} es la fami­
lia de los intervalos cerrados desde - l / n a l / n para n = 1 , 2, 3 ...
0.3
OPERACIONES CON CONJUNTOS
En aritmética se puede sumar, restar o multiplicar dos números. En la teoría de
conjuntos existen tres operaciones que son análogas a las anteriores. La unión de
conjuntos A y B se denota por A u B y es un conjunto formado por los elemen­
tos que aparecen en A, en B o en ambos. Por tanto A kj B = {x | x e A o x e B}.
La intersección de A y B es el conjunto A n B = { x\ x e A y x e B } . Obsér­
vese que si x g A n B entonces se puede decir que x aparece simultáneamente en
A y B.
Por ejemplo, si A = {0, 1, 2, 3, 4, 5} y B - {2, 3, 5, 9} entonces A u B = {0,
1 , 2 , 3 , 4 , 5,9} y A n f i = { 2 , 3 , 5 } .
Obsérvese que Z + u {0} = N , mientras que N n Z + = Z +.
Se dice que los conjuntos A y B son disjuntos si A n i 5 = 0.
T eorem a 0.3.1.
Dados los conjuntos A y B, se tiene lo siguiente:
1.
0uA=A.
2.
0 n A = 0.
3.
Si A c S , entonces A o B = A.
4.
Si A c B, entonces A u B = B.
5.
AnA=A=AuA.
6.
(a) A
u
B =B
kj A.
(b) A n B = B n A .
7.
(a) A u ( f i u C ) = ( A u S ) u C .
(b) A n ( B n C ) = ( A n B ) n C .
8.
(a) A n ( f i u C ) = ( A n B ) u ( A n C).
(b) A u ( B n C ) = ( A u B ) n ( A u C ) .
Demostración. Dejaremos la demostración de la mayoría de las propiedades para que
sea realizada por el lector.
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
7.
9
(a) Un elemento x satisface
A u ( 5 u Q « x e A o x e ( B u C)
« x e A o ( x e B o x e C)
« ( j t e A o x e B) o x e C
O x g (AuB) o xe C
<=> x e ( A u 5) u C
Por tanto tenemos que A u ( B u Q c ( A u B ) u C y también
( A u f i ) u C c A u ( B u C ) con lo que ambos conjuntos son igua­
les.
8.
(b) Un elemento x satisface
x e A u ( # n C ) < = > x G A o x e (B n C )
<=> x g A o ( x e B y x e C )
<¿>(xe A o x e B) y ( x e A o x e Q
<=> x g (A u B) y x e ( A u Q
<=>x g ( A u B ) n ( A u Q
con lo que tenemos que cada uno de estos conjuntos A u (B n Q y
(A u B) n (A u Q es un subconjunto del otro. Por tanto los dos
conjuntos son iguales. □
Si A y B son dos conjuntos cualesquiera, el complemento de B con respecto
a A (también llamado complemento relativo) es el conjunto
A - B = {x\ x e A y x g B }
Por lo tanto, A - B esta compuesto por todos los elementos de A que no es­
tán también en B. Por ejemplo, si A = {0, 2, 4, 6, 8, 10} y B - {0, 1, 2, 3,4}, en­
tonces A - B = {6, 8, 10}, mientras que B - A = {1, 3}.
Es conveniente pensar que todos los conjuntos aquí tratados se consideran
subconjuntos de un conjunto universal U. Los complementos pueden ser forma­
dos con respecto a este conjunto universal. Si A es un conjunto, entonces U - A
es el conjunto de todos los elementos que no están en A. Conviene denotar tales
complementos mediante A; de forma que U - A = A . Obsérvese que 0 = U y
V=0.
www.FreeLibros.com
10
TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES
T eorem a 0.3.2.
Dados los conjuntos A y B:
1.
A - B =A n B .
2.
( A n B ) = A u B.
3.
(Au B)=AnB.
4.
Á = A.
Demostración.
Vamos a probar los Apartados 1 y 3 y dejaremos el resto para el lector.
Un elemento x satisface
xe A -B
xe A y x £ B
<=>x e A y x e B
<=>xe A n B
Por lo tanto, tenemos que A - B c : A n B y A n B c : A - B , a s í que tenemos
que A - B = A n B con lo que (1) queda probado.
Para el Apartado 3, un elemento satisface
x e A u B <=> x i. A u B
<=>x <£ A y x <£. B
<=>xeAyxeB
<=>x e A n B
Por lo tanto, tenemos que A u f i c A n B y A n B c A u B , con lo que los
dos conjuntos son iguales. □
Téngase en cuenta que los apartados (2) y (3) del Teorema 0.3.2 se conocen
como las leyes de De Morgan para conjuntos.
Dados dos conjuntos A y B, su producto cartesiano, A x B, es el conjunto de
todos los pares ordenados de los que el primer elemento proviene de A y el se­
gundo de B. Así que,
A x B = {(a, b)\ a e A y b e B]
Por ejemplo, si A - {1, 2, 3} y B - {5, 6} entonces
A x B = {(1, 5), (2, 5), (3, 5), (1, 6), (2, 6), (3, 6)}
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
11
Obsérvese que dos pares ordenados son iguales si y sólo si los elementos
correspondientes de los mismos son iguales. Por lo tanto (a, b) = (c, d) sólo
cuando a = c y b = d. Luego un par ordenado es distinto que un conjunto de dos
elementos.
Ejercicios de la Sección 0.3
0.3.1. Probar las siguientes afirmaciones:
(a) Si A c B, entonces 2a c 2b.
(b) S i / l n 5 = (4 u 8 , entonces A = B.
(c) Si A = B entonces A r \ B = A u B.
0.3.2. Si A c B, entonces para todo conjunto C, se obtiene que A u C c B n C y
A n C c f i n C . Probarlo.
0.3.3. Si A c C y B c D ¿se cumple que C u D c / l u S ?
0.3.4. Probar o refutar las siguientes afirmaciones:
(a) Si A u B - A u C, entonces B - C.
(b) S i A n / í = A n C , entonces B = C.
0.3.5. Sea {Z?a | a e /} una familia
indexadadeconjuntos.Seusará lanotación
u a s i Bapara indicar la unión de todoslos Ba y n a6¡Baparaindicar la inter­
sección de todos los Ba. Probar que para todo conjunto A se cumplen las si­
guientes igualdades:
(a) A Oe / Bq) —Wfx e I
r~'1Ba)-
(b) A u (o a e / Ba) —r \( s i (A kj Ba).
0.3.6. Demostrar las siguientes igualdades:
(a) A - B = A - ( B n A ) .
(b) B c A si y sólo si A n B = 0.
(c) (r>ae i Ba) - A = n ae i (Bn - A) .
(d) ( A - B ) - C = ( A - C ) - ( B - C ) = A - ( B u C ) .
(e) A r \ B = 0 y A n B = 0 s \ y sólo si A = B„
0.3.7. ¿Son ciertos los siguientes resultados?
' (a) 2An 2 B = 2AnB.
(b) 2/' u 2 i = 2AuB.
0.3.8. Los pares ordenados (x, y) se definen formalmente por medio de la siguiente
igualdad (x,y) = {{a-}, {.v, y}¡. Usando la definición anterior, mostrar que
(a, b) = (c, d) si y sólo si a = c y b = d.
www.FreeLibros.com
12
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
0.3.9. Dados los conjuntos A , B y C , probar que:
(a) A x ( g n Q = ( A x B ) n ( / l x q .
(b) A x ( B k j Q = ( A x B ) u ( A x Q.
(c) A x ( B - Q = ( A x B ) - ( A x C ) .
RELACIONES Y FUNCIONES
Una relación del conjunto A con el conjunto B es un subconjunto de A x B. Por
tanto, si R c A x B y (a, tí) e R, se dice que a está relacionado con b bajo la re­
lación R. Por ejemplo, si A = {2, 3 ,4 , 5} y B = {1, 3, 5, 7, 9}, entonces
R = {(2, 1), (2, 3), (5, 3), (5, 5)} es una relación, y 2 está relacionado con 1 bajo
esta relación.
Si A y B son el mismo conjunto, se dice que la relación es una relación so­
bre A. Por ejemplo, sea í c N x N definida por (x , y) e R si y sólo si x < y. R es
la relación “menor o igual que” sobre N .
La relación R c A x B define dos subconjuntos, uno de A y otro de B. Estos
son
Dom (R) = {a | a e A y (a, x) e R para algún x e B)
Im ( R) = { b | b e B y (y, b) e R para algún y e A)
y se conocen como el dominio y la imagen de R, respectivamente.
Por ejemplo, si A = {<7. b. c, d, e} y B = {1, 2, 3,4, 5} con R = {(a, 1), (a , 2),
(b, 5), (c, 4)}, entonces se tiene que
Dom (R) = {a, b, c} e Im (/?) = { 1, 2 ,4 , 5}
Si R c z A x B es una relación de A con B, entonces el conjunto
7T1 = {(b, a)\(a, b) e /?} es un subconjunto de B x A. Por consiguiente, ella mis­
ma es una relación de B con A. Llamaremos a R~] inversa de la relación R.
Sea A un conjunto no vacío. Una colección Jl de subconjuntos no vacíos de
A es una partición de A si se cumple lo siguiente:
1.
Si B y C son conjuntos en ¡A. , entonces o bien B = C o B n C = 0.
2.
A=
B.
Intuitivamente, una partición de A divide a A en partes no vacías disjuntas.
Por ejemplo, sea A = {x|x e N y x < 10} y sea
* = { { 0 , 2 , 4 } , { 1 , 3 , 5 } , { 6 , 8, 10},{7,9}}
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
13
una partición de A. Por otro lado,
®= { { 0 , 2, 4, 6}, {1,2, 3, 5, 7}, {9, 10}, 0}
no es una partición.
Veamos otro ejemplo interesante. Sea Q el conjunto de los números racio­
nales. Para cada r e ü , sea
Por tanto £>3/8 contiene a (3, 8), (6, 16), (9, 24) y así sucesivamente. Obsér­
vese que la colección F = {Qr\ r e Q} es una partición de N x Z +. Para verlo,
primero obsérvese que si Qr y Qs son elementos de F y si (x, y) e Q, n Qs>en­
tonces s = x /y = r con lo que s = r y por tanto Qr = Qs. Puesto que 2 r c N x Z +
para todo r, tenemos que U r s ü & ' £ N x Z +. Por otro lado, si
(x, y) e N x Z +, entonces x / y e Q , y, por tanto, (x, y) e Qr, siendo r —x /y . Así
(jc, y) e
s q Qr. De todo ello se concluye que
e q Qr = N x Z +.
Vamos a ver un nuevo ejemplo de una partición de un conjunto que es la
colección {Zo, Z ¡, ..., Z m- 1 }, donde m es un entero positivo fijado y Z / se de­
fine como
Z ; = {x\x e Z y x - i = km para algún entero k }
Por ejemplo, si m = 3, tenemos Zo = {0, ±3, ±6, ± 9 ,...} , Z i = { ...,- 5 ,- 2 ,
1,4, 7, ...} y Z 2 = {..., -4 , -1 , 2, 5, 8,...}.
Supongamos que SI es una partición del conjunto X. Definamos una relación
sobre X mediante
R = {(x, y) |x e y están en el mismo conjunto de A }
Por ejemplo, si X = {0, 1,2} y Jl = {{0}, {1,2}}, entonces R sería el con­
junto R = {(0, 0), (1, 1), (2, 2), (1,2), (2, 1)}.
Una relación definida'de esta manera tiene algunas propiedades interesan­
tes. Primero obsérvese que, si a e X y puesto que A es una partición de X, existe
algún A e JZ para el cual a e A . Por tanto (a, á) e R.
Segundo, si (a, b) e R ello significa que a y b están en el mismo conjunto
de A , con lo que también b y a están en el mismo conjunto de A . Entonces
(,b, a) e R.
Finalmente si (a, b) e R y (b, c) e R entonces a, b y c están en el mismo
conjunto de A . En consecuencia tenemos que (a, c) e R.
www.FreeLibros.com
14
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
En resumen, para la relación
R = {(x, y) | x e y están en el mismo conjunto de A]
tendremos lo siguiente:
1. (a, a) e R para todo a e X (propiedad reflexiva).
2.
Si (a, b) e R, entonces (b, a) e R (propiedad simétrica).
3.
Si (a, b) y (b, c) estlán en R, entonces (a, c) e R (propiedad transitiva).
Toda relación que tenga estas tres propiedades se dice que es una relación
de equivalencia.
Supongamos que R es una relación de equivalencia sobre el conjunto X.
Para cada x e X, se define el conjunto [x] = [y e X \ (x, y) e R }. El conjunto [a]
se llama clase de equivalencia de x.
Teorem a 0.4.1. Las clases de equivalencia de una relación de equivalencia R sobre un
conjunto X forman una partición de X.
Demostración. Para probar este teorema se necesita demostrar que las clases de equi­
valencia son disjuntas entre sí y que'su unión es X. Primero veremos que son
disjuntas entre sí.
Supongamos que z e [x] n [y]. Entonces (x, z) e R y (z, y) e R. Dado que R
es transitiva, entonces (x, y) e R. Por lo tanto, x e [>'] e y e [x], y en consecuen­
cia (x, y) e R e (y, x) e R. Ahora bien, si 16 [x], entonces (t, x) e R y, debido a
la transid vidad de R, (t, y) e R. Por lo tanto t e [y], con lo que se obtiene
[x] c [y]. A la inversa, si t e [y] entonces (t, y) e R, y (/, x) e R, de lo que se de­
riva que t e [x] e [y] e [x]. De todo lo visto se sigue que si [x] n [y] * 0, enton­
ces [x] = [y].
Ahora bien, puesto q u e / f es una relación de equivalencia sobre X, todo
x e X debe satisfacer (x,x) e R, con lo que x e [x]. Esto significa que todo ele­
mento de X está contenido en una clase de equivalencia, con su mismo nom­
bre. □
De lo visto anteriormente se deduce el siguiente teorema:
Teorem a 0.4.2. Cualquier partición A de un conjunto no vacío X define una relación de
equivalencia sobre X.
Por lo tanto existe una relación muy estrecha entre las relaciones de equiva­
lencia y las particiones.
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
15
Una función de ,4 a B es una relación de A con B con unas características
adicionales. El conjv ' ' f e A x B
una función si Dom (f ) = A y si para cual­
quier pareja (x, y) y (x, r.) que pertenezcan a / entonces y = z- Esto significa que \
para todo elemento x ■' - A existe ' ’inico y tal que (x, y) e /. Generalmente se
escribe / : A —» B y se usa la notación f ( x ) = y, donde (x, y) e /. De hecho, esta
notación puede ser c.v, elida a ; : . jnes en general, como se ha hecho con la
/?-imagen del Ejercicio n,4.3.
T eorem a 0.4.3. Sean las fu nciones/: A —>B y g: A —> B. Entonces f = g si y sólo si
/ (x) = g (x) para t o d o A .
Demostración. Supongamos que/ = g. Sea .v un elemento de A. Entonces si y = /( x ) , se
tiene que (x, y) e f y por tanto (x, y) e g. En consecuencia, y = g (x).
A la inversa, supongamos que f ( x ) - g (x) para todo x de A y supongamos
que (x,y) es un elém tm o arbitrano d e /. Entonces y = / ( x ) = g (x) con lo que
(x, y) e g, obteniéndose que/ c g. Por otro lado, si (x, y) es un elemento arbitra­
rio de g, tenemos que v —g (x) = / ( x ¡ y por tanto (x, y) 6 / , obteniéndose g c / .
Se concluye finalmente q u e ,/= g.
Para que / c A x 1' ea una fcr.dón, se requiere que Dom ( / ) =A. Esto es
más restrictivo que lo de eable p e; ios objetivos de este libro. Definiremos/ífnción total como la e!;r de función ue hemos definido previamente. Definire­
mos función parcial
o una
ó n / q u e satisface las condiciones de que
Dom ( / ) c A , y que m v. y) y ( x . . pertenecen a / , entonces y - Z- La única dife­
rencia que aparece aLue es que ce ;a función parcial de A a i? el dominio de la
función no necesita ser el conjunto en su totalidad. Usaremos el
término fun­
ción, sin modificar, \ e.¡ referiré
cualquier función parcialo total que cuali­
ficaremos sólo cuarta
a neceSea una función / : A —> B. Si A e A, diremos que la imagen de X b a jo f es
/(.Y) - {v e i : ;
Si F e 5, la imagen : •
f
T eorem a 0.4.4.
/ (x) para algún x e X)
*a de Y
fe s el conjunto
' (V) = j x e A ; (x) = y para algún y e Y]
Sea/ : A —> B una función
1.
/ (0) = 0.
2-
/({ * } ) = { f (x)} para todo e s A.
3.
SiX eFc
itonce
c /(F ).
www.FreeLibros.com
16
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
1 (X) c / 1 (Y).
4.
S i l c 7 c 5 , entonces /
5.
Si X e Y son subconjuntos de B, entonces
f ~ l ( X - Y ) = f - \ ( X ) ~ f - { (Y).
Demostración. La demostración se obtiene fácilmente a partir de las definiciones pre­
cedentes, por lo que se deja la misma para el lector. □
Una función/ : A —> B se dice que es uno a uno o inyectiva si, para cuales­
quiera (x, y) e / y (z, y) e / , entonces x - z . Esto quiere decir que si f ( x ) - f ( z )
entonces x = z.
Una fu n c ió n /se dice que es sobreyectiva si, para cualquier y e B, existe al­
gún x e A para el c u a l/ (x) = y.
La fu n c ió n /: N -» N definida por f ( n ) = n es a la vez inyectiva y sobre­
yectiva. La función g: N —» N , donde g (rí) = n + 1, es inyectiva pero no sobre­
yectiva, ya que no existe ningún x e N, tal que x + 1 = 0. La función h: R —> R,
donde h (x) = x2, no es ni inyectiva, ni sobreyectiva. S i /e s inyectiva y sobreyec­
tiva a la vez, se llama biyección o correspondencia uno a uno. Obsérvese que si
/ : A —> B es sobreyectiva e n to n c e s /-1 ({¿>}) ^ 0 para todo b e B . S ' i f e s una bi­
yección, entonces, para todo b e B, f ~ ] ({£}) es un conjunto con un único ele­
mento. Por tanto c u a n d o /e s una b iy ecció n ,/-1 \ B —>Ae s una función.
Las funciones y las relaciones se pueden asociar de una manera adecuada.
Sean las relaciones R ^ A x B y S c i B x C . Definimos la composición de R y 5
como
S ° R = {(a, c) e A x C \ para algún b e B, (a, b) e R y (¿>, c) e 5}
Por tanto si R - { { 0, 1), (0, 2), (1, 1)} y S - {(1, a), (2, fr)}, tendremos que
S ° R = {(0, «), (0, b), (1, a)}. Por otro lado, R ° 5 = 0, puesto que no hay símbo­
los que aparezcan simultáneamente como primer componente de un elemento de
R y como segundo componente de un elemento de S. Por tanto, en general, R ° S
y S 0 R no son la misma.
La composición de funciones se realiza de la misma forma:
g ° f = { (a, b) | para algún y, / ( « ) = y y b =g (y)}
Por ejemplo, sea/ : R -> R definida co m o /(x ) = x + 1 y g: R —>R definida
como g (X) = x2. Entonces tenemos que
8 ° / W = 8 (/(* )) = 8 (x + 1) = (x + l) 2
y
f ° 8 (*) =f (8 (x)) = f ( x 2) = x2 + 1
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
17
Ejercicios de la Sección 0.4
0.4.1. Sean A y B los conjuntos A = ( 2, 3,4,5} y B= {1, 3, 5, 7, 9}. Sea R la relación
R = {(•*,)') e A x B\ x<y]
Listar los pares ordenados de R.
0.4.2. Demostrar las siguientes igualdades:
(a) Dom (R~l) = Im (R).
(b) Im (JT1) = Dom (R).
0.4.3. Sea R q A x B una relación de A con B. Sea X c A. Definimos R-imagen de X
como
R (X) = {>’ 6 B\ (x, y) e R para algún x e X]
Obsérvese que la /?-imagen de X es la imagen de la relación R restringida al
subconjunto X x B de A x B. Sean D y E subconjuntos de A. Probar las siguien­
tes igualdades:
(a) ü ( D u £ ) = í (D) u R (E).
(b) R (D n E) = R (D) n R (£).
(c) Dom (R) = R-] (B).
(d) Im (R) = R(A).
0.4.4. Sean las relaciones R q A x B y S q A x B. Entonces R u S c A x B e s también
una relación de A con B, al igual que R n S . Demostrar las siguientes afirma­
ciones:
(a) Dom (R<u S) = Dom (R) u Dom (S).
(b) Im (i? u S) - Im (R) u Im (5).
(c) (R u S) (X) = R (X) v S (X) para cualquier X c A .
(d) (7? u S)_l = R~] u S~K
(e) ( í n S J ' ^ J r ' o T 1.
0.4.5. Sea m = 5. Encontrar los conjuntos Zo, Z i, Z 2 , Z 3 , Z4.
0.4.6. Probar que {Zo, Z j , . . Z„, _ j } constituye una partición de Z para un m > 0 de­
terminado.
0.4.7. Determinar si cada una de las relaciones siguientes es una relación de equiva­
lencia sobre el conjunto
A = {0, 1,2, 3, 4,5)
www.FreeLibros.com
18
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
(a) Rt = {(0, 0), (1, 1), (1, 2), (2, 2), (3, 3), (4,4), (5, 5)}.
(b) /?2 = í , u
{(2,1)}.
(c) /?3= i ? i - { ( l ,2)}.
(d) R, = R2 u {(2, 3), (1, 3), (3, 1), (3,2)}.
0.4.8. Sea
{ Z o , Z i , Z 2 , Z 3 , Z 4 } la partición de Z definida en la página13.¿Cuál esla
relación de equivalencia sobre Z que genera esta partición?
0.4.9. Sea
[A\,A 2, ..., Am} una partición de A y [B\,Bz, ■■■,B„}unaparticióndeB.
Probar que el siguiente conjunto es una partición de A X B:
{A¡xBj\i= 1,2, . . . , m y j= 1,2, ...,«}
0.4.10. Sean A y B los conjuntos definidos de la siguiente manera
A= {0, 1,2,3}
y
* 5 = {-1, 0,l/2, l , 3/2,2 ,3 ,4 }
¿Cuáles de las siguientes relaciones son funciones totales, cuáles funciones par­
ciales y cuáles no son funciones?
(a) / = {(0, 1), (1, 2), (2, 3), (3,4)}
(b) /= { (0 ,0 ), (1,1/2), (2,1), (3, 3/2)}
(c) / = {(0,0), (1,1), (1,-1), (2, 3)}
(d) /= { (0 , 0), (1,3), (2,2)}
(e) /'= {(0, 0)}
0.4.11. Sean / : A —> C y g: B —>D dos funciones tales que, f{x) = g (x) para todo
x e A n B. Probar q u e /u g es una función d e A u B e n C u D .
0.4.12. Sea/: A —» B una biyección. Probar q u e /-1 también es una biyección.
0.4.13. Demostrar que si / “' (f(X)) = X para todo X c A entonces/ es inyectiva. De­
mostrar que si f ( f ~ [ (Y)) = Y para todo Y c B. entonces/es sobreyectiva.
0.4.14. Sea / : A —>A una función para la cual / ( / (x)) = x para todo x e A. Probar que /
es una relación simétrica sobre A.
0.4.15. Sean las funciones f :A —>B y g: C —>D y supongamos que A n C = 0 y
B n D = 0. Probar q u e /u g es sobreyectiva s i / y g lo son. Probar que / u g es
inyectiva si / y g lo son.
0.4.16. Sean/y g las funciones definidas como
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
19
g= {(x,y)\xe Z + e y e N e y = -2 \x \ j
Obsérvese q u e /c N x Z + y g c Z + x N de modo que f ° g y g °/están defini­
das. Describir/° g y g °f.
0.4.17. Supongamos que A es un conjunto y que se define la relación
IA = {(a ,á )\a e A]
(a)
Probar que ¡a es una función.
(b)
Probar que I,\ es una biyección.
(c) Sea/: X —» Kuna función. Probar que f 0 Ix = h ° f - /•
(d) S i/: X -» Y es una biyección, demostrar q u e / ° / -1 = Jy y que/ " ' °/ = /*.
0.4.18. Dadas las funciones/: A
nes son ciertas:
0.5
B y g : B ^ C. Probar que las siguientes afirmacio­
(a)
S i/y g son inyectivas, entonces g° f tambiénlo es.
(b)
S i/y g son sobreyectivas, entonces g °/también lo es.
INDUCCIÓN
Se dice que un subconjunto A de N es un conjunto inductivo si, para cada a e A,
entonces a+ 1 también pertenece a A. Por ejemplo, el conjunto {5, 6, 7, ...} es
inductivo, pero el conjunto {0. 2 .4 . 6. 8. 10. ...} no lo es. Para que un conjunto
sea inductivo no puede tener un número finito de elementos. La mayoría de los
conjuntos de números naturales que contienen el 0 no son inductivos. El hecho
de que haya una única colección de números naturales que contenga el 0 y sea
inductiva se conoce por el principio de la inducción matemática (PIM).
A continuación se muestra una breve exposición del principio de inducción
matemática.
Dado A c N tal que satisface lo siguiente:
1.
O e A, ,
2.
si n 6 A, entonces n + 1 e A,
entonces A - N .
El principio de inducción matemática es muy usado en matemáticas. Pro­
porciona un método apropiado para definir conjuntos de objetos en los cuales
hay un primer objeto, un segundo objeto y así sucesivamente. En el mismo, se
define el primer objeto y el n + 1 se define en términos del enésimo.
www.FreeLibros.com
20
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Por ejemplo, el factorial de un número natural puede ser definido inductiva­
mente como
0! = 1
y
(n + 1)! = (n + 1) • n!,
para
n> 0
El PIM también se usa para probar planteamientos acerca de proposiciones
que en uno u otro nivel pueden estar indexados mediante N . En tal prueba se
muestra que la colección de índices es inductiva y contiene el 0 y, que por consi­
guiente, es N .
Por ejemplo, la proposición “n + 3 < 5 (n + 1) para todo número natural n”
se puede demostrar como sigue:
Sea A = { n e N |n + 3 < 5 (n + 1)}. Debemos probar que A es N . Ob­
sérvese que si n es 0 entonces se tiene que n + 3 = 3 y 5 (n + 1) es 5, de
modo que la proposición se cumple. Por tanto se obtiene que 0 pertene­
ce a A. Ahora supongamos que n e A. Tenemos que probar que n + 1
también está en A. Obsérvese que ( n + l ) + 3 = « + 4 = (« + 3) + l. En­
tonces:
5 ((« + 1) + l) = 5 n + 10
= 5 (/? + 1) + 5
> (;? + 3) + 5
> (n + 3) + 1
= (n + l) + 3
Por tanto la proposición se cumple para n + 1 cuando se cumple para n,
con lo que n + 1 e A cuando n e A. Por el PIM, se obtiene que A = N ,
así que la proposición se cumple para todos los números naturales. D
Los pasos de una demostración en la que se usa el PIM son bastante fáciles
de recordar.
1.
Probar que la proposición se cumple para 0.
.•
2.
Suponer que la proposición se cumple para n y probar que esto implica
que se cumpla para n + 1.
3.
Deducir que la proposición se cumple para todos los elementos de N .
La etapa 1 se conoce como etapa base o inicial. La suposición de que la
proposición se cumple para n en laetapa 2 se conoce como hipótesis de induc­
ción. La etapa 2 se llama etapa de inducción.
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
21
Es conveniente usar el PIM para probar proposiciones sobre colecciones de
números naturales que no contienen el 0. Por ejemplo, la proposición de la fór­
mula 1 + 2 + ... + (2« - 1) = n2 no tiene sentido (no es verdadera) para n - 0. Sin
embargo, esta fórmula se cumple para todo n > 1. En este caso el conjunto de in­
ducción elegido es distinto. Obsérvese que la fórmula se cumple para n = 1. S ea^
S - { n e N | la fórmula se cumple para 1 + n]
Fíjese en que 0 e S. Por tanto si n e S se tiene que
1 + 2 + ... + 2 (2 (1 + n) - 1) = (1 + n)2
'Con lo que se prueba que la fórmula se cumple para n + 1. Es decir,
n + 1 e S siempre que n e S. Para n + 1 se suma un valor apropiado en cada lado
de la igualdad y se obtiene
1 + 2 + . . . + (2 (1 +n) - 1) + (2 (1 + ( « + 1 ) ) - 1) = (1 + n f + (2 (1 + (n + 1)) - 1)
= 1 + 2 (n + 1) + (1 + n)2
= (l+(«+l))2
Entonces, por medio de PIM, se tiene que S = N y por lo tanto la fórmula se
cumple para todo n > 1. □
En la práctica, el conjunto 5 no se especifica. Si se expresa una propiedad
como P (n) para todo n > k , la demostración se realiza de la siguiente manera:
1.
(etapa base) Probar que P (k) se cumple.
2.
(etapa de inducción) Probar que si P (n) es verdadera entonces
P (n + 1) es verdad para todo n > k.
3.
(conclusión) Por las etapas 1 y 2 y el PIM, P (n) es verdadera para todo
n>k.
Por tanto, la demostración del ejemplo precedente puede volver a reali­
zarse de esta forma:
Sea n = 1. Entonces se tiene que 1 = l 2, con lo que la fórmula se cum­
ple. Ahora se supone que la fórmula se cumple para n > 1. Es decir,
1 + 2 + ... + (2(1 + n) - ! ) = (! + n)2
Entonces se obtiene que
www.FreeLibros.com
22
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
1 + 2 4-. .. + ( 2 ( 1 +
ií )
~~ 1) + (2 (1 + (n + 1)) — 1)
= (1 + «)* + ( 2 ( l + (n + 1 ) ) - 1 )
= 1 + 2 (n + 1) + (1 + n)2
= (\+(n+\))2
con lo que la fórmula se cumple para n + 1. Entonces, debido al PIM, la
fórmula se cumple para todo n > 1. □
Ejercicios de la Sección 0.5
0.5.1. Probar que, para todo n e M,
2o + 21+ ... + 2" = 2" + 1—1
0.5.2. Probar que, para todo n > 1,
21+ 22 + ... + 2" = 2" + 1—2
CARDINALIDAD
Para comparar los
distintos tamaños de los conjuntos se usan funciones
tre los mismos que son biyectivas, sobreyectivas o inyectivas. Dos conjuntos A y
fí son equivalentes si existe una biyección entre ellos. Se emplea la notación
A = B para denotarlo. Por tanto tenemos que { x, y, z} = { 1, 2, 3}, mientras que
{x, y, z} 2 {1,2}.
Ejemplo 0.6.1.
Veamos un ejemplo trivial. Sea{ / 1/ : N —> {0, 1}} el conjunto de to­
das las funciones de N en {0,1}; entonces 7 —2N. Para probar esto se necesita
una biyección H \ J - 2:\ Por tanto, se necesita una regla que asocie cada fun­
ción de 7 con algún subconjunto de N. Para g e J, sea H (g) = {x|g (x) = 1}.
Obsérvese que todas las funciones de jF tienen una imagen bajo H. Ahora proba­
remos que H es inyectiva y sobreyectiva.
Para ver que H es inyectiva, sean g\ y gi unas funciones que pertenecen a
7 y supongamos que H (gi) = H (gi). Sea x e N. Debemos obtener que
x € H (gi) o x e H {g i). Si x s H (g¡) entonces, dado que H (gi) = H (gi), se ob­
tiene que gi (x) = g 2 (x) = 1. Por otro lado, si x £ H ( g i), entonces
gi (x) = g 2 (x') = 0. Luego en ambos casos tenemos que gi (x) = g2 (x) para un
x e N arbitrario, con lo que gt = g2.
www.FreeLibros.com
en­
PRELIMINARES MATEMÁTICOS
23
Para ver que H es sobreyticiiva, sea A e - ' un subconjunto arbitrario de
Se define la función g: N --> {0, 1} como
0,
si
' \
1, si v
t
Obsérvese que g e J y que H(g) = A . Por ' uto paracualquier elemento A
de 2n , sepuede encontrar una¡unción en J
formaque represente a A. De
esto se deduce que H es sobreyectiva.
T eorem a 0.6.1. Supongamos que A = C y B ■D con A n 3 = 0 y C n D = 0. Entonces
AuB=CuD.
Demostración. Puesto que A = C y B = D existen iükis biyecciones g: A —> C y
h: B -> D. D efinam os/: A ü />’ —->
0 como
/U
si .v e A
j ; ( v), si v s B
Por el Ejercicio 0.4.15,/ e s b:
guiente, A u B = C u D. □
Para cada número natural k >
tos se usan como “estándar de tan
tos.
x ió n pues. ><:;ue g y h lo son. Por consi­
define
con e!
{1. 2.......£}. Dichos conjun­
; se compararan otros conjun­
Un conjunto A es finito si:
1.
A = 0, en cuyo caso A tier vardinalitkúf.O.
2.
A = N*, en cuyo caso A ti ,
<ardiñal
k.
Un conjunto es infinito si no es í -:ío.
Por ejemplo, A = {a, b, c, d, c
es infinito. Para simplificar, si A e
su cardinalidad.
inito o
dinalidad 5 mientras que N
ito escril;Reinos \A \ - k para representar
Supongamos que A es finito i:c¡¡ cardinal k y que x<£ A. Obsérvese que
{x} = {k + 1} por lo que A u {x}
Hén es
y su cardinal es k+ 1. Este
resultado se obtiene a partir del Teoiv : x 0.6.1. y se extiende a:
T eorem a 0.6.2. Si A y B son conjuntos c' '
nito y | A u i ? | = \A\ + \B\.
ios finios
itoncesA u B es también fi­
www.FreeLibros.com
24
Demostración.
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Si A = 0, entonces A u B = B, con lo que
|; 4 u s | =
0+
| B | = |fl|
Si A & 0 y B 0, entonces sean / : A —> N m y g: B —> N „ las biyecciones
a partir de las cuales se obtiene que \A \ = m y \B\ - n . Se define
h\ N,¡ —> / / = {m + 1, m + 2 , m + n } como h (x) = m + x. Es obvio que h es
una biyección y por tanto N „ = H. Obsérvese que N m u H - {1, 2,
m + n) =
A
N m+n y la f u n c i ó n / : A u B - > N n + m definida como
frx) - í f t o >
sixeA
| h ° g (x), si x e B
es sobreyectiva e inyectiva. Por consiguiente, A u B es finito y l A u S l =
m + n = | A | + |5 ¡ . □
Una propiedad muy utilizada para conjuntos finitos es el principio del palo­
mar. En esencia dice que si hay más palomas que agujeros se debe poner más de
una paloma en el mismo agujero.
Teorema 0.6.3. (Principio del palomar). Sean A y B conjuntos finitos con
| / 4 | > | ¿ ? | > 0 y / : A —>B una función. Entonces / no es inyectiva.
Demostración.
La demostración se realiza por inducción sobre | B \ .
Si |f i| = l y | A | > | Z? | , entonces A contiene al menos dos elementos distin­
tos a\ y « 2 - Pero entonces f { a \ ) - / { a i ) por lo q u e / n o es inyectiva. Por tanto el
resultado se cumple para | B \ = 1.
Ahora supongamos que el resultado se cumple para algún conjunto B tal
que 0 < |B | <n. Entonces sea B un conjunto de forma que ¡B\ = n + 1. Fijado
un elemento b e B, obsérvese que | B - {b} \ - n . Supongamos que A es un con­
junto tal que |A | > |¿?| y f : A - ^ B . Consideremos los dos casos siguientes para
r 1 {by
Caso 1: Supongamos que |/ “ ' (b) | > 2. En este caso habrá dos elementos
ai y ü 2 de A , de forma que a\ y ü 2 están en / “ ' (b) o, lo que es lo mismo,
(«2 ) = b. En este caso / no es inyectiva.
Caso 2: Supongamos que | / “* (¿>)| < 1. Obsérvese que \ A - f ~ l (¿)| >
|/ i | - 1 > n =
- {b} | . Se define la función g: A - f ~ l (b) —> B - {¿>} como
g W = / ( 4 Obsérvese que, como | B - f ~ l (¿)| =n y \ A - f ~ \ b ) \ > | 5 - { ¿ > } | ,
se satisface la hipótesis de inducción. Por lo tanto g no es inyectiva con lo que
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
25
existirán a\ y ai en A - f ~ l (b) para los cuales a\ * <22 y g (a 1 ) = g (¿22). Por con­
siguiente, / ( a i ) = / ( a 2), de lo que se deduce que / tampoco es inyectiva.
En ambos casos, si el resultado se cumple para cualquier conjunto B con n
elementos, también se cumple para cualquier B con n + 1 elementos. Por tanto, y
por el PIM, la proposición se cumple para todo conjunto finito B con
j# | > 0. □
Hay muchos ejemplos en los que se aplica este principio. Si 11 zapatos son
elegidos al azar de una caja que contiene 10 pares de zapatos, al menos se obtie­
ne un par completo. Si n ^ m , entonces N „ £ N w.
Corolario 0.6.4. Si A es un conjunto finito y B es un subconjunto propio de A, entonces A i-B.
Hay dos tamaños para los conjuntos infinitos, “grande” y “muy grande”. Un
conjunto A es enumerable si A = N . En este caso, | A | = No (alef cero). Un con­
junto es numerable si es finito o enumerable.
El conjunto Z es enumerable mediante la fu n ció n /: N —> Z definida por
n
si n es par
2
,
s in es impar
es una biyección, que transforma 0 en 0, 1 en -1 , 2 en 1, 3 en - 2 y así sucesiva­
mente.
Teorema 0.6.5. Sea A un conjunto enumerable. Si f i e A es un conjunto infinito, en­
tonces B es enumerable*
Demostración. Puesto que A es enumerable, existe una b iy ec c ió n /: N —>A. Supon­
gamos que tenemos que f ( n ) - a n por lo que A puede ser enumerado como
A = {«o, «i, ••• }• Sea »o el menor subíndice para el cual a„0 e B. Sea n\ el menor
subíndice para el cual
£ B - {a„a}. Generalizando, sea nk el menor subíndice
para el cual a„k € B - {a„0, ant, ...,a n4_,}. Puesto que B es infinito,
B - {a„0, a „ ,,..., a„k_,} 0 para todo k, con lo que hemos construido una corres­
pondencia uno a uno entre N y B. Por tanto, B es enumerable. □
Puesto que los conjuntos finitos son numerables, se tiene que todo subcon­
junto de un conjunto numerable, es numerable.
Obsérvese cada conjunto infinito contiene un subconjunto enumerable. Para
probarlo, sea X infinito. Entonces X & 0, por lo cual se puede seleccionar un ele-
www.FreeLibros.com
26
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
mentó de X, que llamaremos xo- Nuevamente, y puesto que X es infinito, tene­
mos que X - {xo} 5* 0 y se puede elegir x \ e X - {xo}. Una vez definidos cada
uno de los elementos xo, *\> *k, se sabe que X - {xo, x \ , ..., xk] 0 con lo cual
se puede seleccionar un
xk + i e X - {x0, X], ...,xk}
El conjunto {x¿ | k = 0, 1,2, ...} es un subconjunto enumerable de X .
Terminaremos este capítulo mostrando un conjunto no numerable. Para ello
usaremos una técnica de demostración muy eficaz llamada diagonalización.
Teorema 0.6.6.
El conjunto 2N no es numerable.
Demostración. Supongamos que 2N es numerable. Dado que es un conjunto infinito,
debe suponerse que 2>: es enumerable y que por lo tanto, puede ser enumerado
de la forma 2N - {Ao, A \ , ...}. Sea D = {» e N, n £ A„ }. Obsérvese que D c N
y, por tanto, D = Ak para algún k. Consideremos dicho k. Si k e Ak, entonces
puesto que Ak = D, k no puede estar en Ak. Por otro lado, si k <s Ak, entonces
k & D y por tanto k debe estar en Ak. Ambas posibilidades nos llevan a una
contradicción. Por consiguiente, la suposición de que 2N es enumerable es inco­
rrecta. □
Sabemos, por el Ejemplo 0.6.1, que la colección J de funciones de N en
{0. 1} es equivalente a 2"x . Ahora por el Teorema 0.6.6, sabemos que J no es
numerable.
La técnica de la diagonalización se usa para la refutación de muchas afirma­
ciones. En la demostración precedente no se ve claramente donde se usa dicha
técnica. Un ejemplo clásico de diagonalización es la demostración de que el in­
tervalo abierto (0, 1) no es numerable. Supongamos que (0, 1) es numerable, pol­
lo que puede ser representado por el conjunto {ao, «i,
Entonces cada a¡ será
representado por su desarrollo decimal y por convención se usará la forma in­
completa tanto para los números de esa forma como para los de forma completa.
Por tanto, 0,25 se representará como 0,24999... Bajo esta representación,
dos números en (0, 1) son iguales si y sólo si los dígitos correspondientes son los
mismos. Haremos una lista con los a¡
ao-0.doodo\do2--.
ai = O.diodi \d\2-. ■
ük = 0.dkodk\dk2-■■dkk•
www.FreeLibros.com
PRELIMINARES MATEMÁTICOS
27
Para demostrar que (0, 1) no es numerable debemos encontrar un número
z e (0, 1) tal que z ^ a¡ para cualquier /. Sea z = O.zqZi-- donde
lk-
5, si akk* 5
2. si akk= 5
Obsérvese que z difiere de cada au en al menos una cifra decimal y que
0 < z < 1. Por tanto, hemos encontrado el z que buscábamos, con lo que a¡ no da
cuenta de todos los números pertenecientes a (0, 1).
Aquí la diagonalización resulta obvia.
Ejercicios de la Sección 0.6
0.6.1. Dados los conjuntos A y B, si A es finito ¿A n B es finito?
0.6.2. Probar que si A c B y A es infinito, entonces B es infinito.
0.6.3. Dar, si es posible, un ejemplo de cada apartado:
(a) Un subconjunto infinito de un conjunto finito.
(b) Una familia {A¡\i e N ) de conjuntos finitos cuya unión sea finita.
(c) Una familia {A¡| i s N ¡ de conjuntos finitos cuya unión no lo sea.
(d) Una familia finita de conjuntos finitos cuya unión sea infinita.
(e) Unos conjuntos finitos A y B tales que | A u B \ * \,41 + | B \ .
0.6.4. Probar que N x N es numerable usando la función / : X x N —>X definida
comof{n, m) = 2" 3'" además del Teorema 0.6.5.
0.6.5. Mostrar que N* es enumerable para cualquier k = 1,2,...
0.6.6. Probar que R no es numerable.
www.FreeLibros.com
www.FreeLibros.com
1
Alfabetos y
lenguajes
ALFABETOS, PALABRAS Y LENGUAJES
Todo lo descrito a continuación tiene al menos dos cosas en común:
Programas escritos en algún lenguaje de programación como Pascal.
Palabras inglesas.
Secuencias de símbolos que se usan para representar un valor entero.
Frases escritas en algún lenguaje natural como el inglés.
Primero, cada uno está compuesto por secuencias de símbolos tomados de
alguna colección finita. En el caso de las palabras inglesas, la colección finita es
el conjunto de las letras del alfabeto junto con los símbolos que se usan para
construir palabras en inglés (tales como el guión, el apostrofe y otros por el esti­
lo). De forma similar, la representación de enteros son secuencias de caracteres
del conjunto de los dígitos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Los programas de ordena­
dor escritos en Pascal y las frases en inglés también están compuestos por sím­
bolos tomados de una colección finita. Sin embargo en estos, los conjuntos de
símbolos son distintos. En el caso de los programas en Pascal, el conjunto de
símbolos es una colección de identificadores legales de Pascal con una longitud
menor o igual que una constante, palabras clave y palabras reservadas, símbolos
especiales de Pascal y espacios en blanco tales como el retomo de carro, el ca­
rácter de salto de línea y el espacio manual.
www.FreeLibros.com
30
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Segundo, en todos los casos vistos las secuencias de símbolos que constitu­
yen los elementos en cuestión tienen longitud finita, aunque no existen limita­
ciones en cuanto a la longitud de las mismas.
La noción de secuencia finita de símbolos es el elemento principal a ser tra­
tado por este texto. Introduciremos la notación y los nombres a usar para dichas
secuencias.
Un conjunto no vacío y finito de símbolos se conoce como alfabeto. Por
ejemplo, el alfabeto inglés está formado por 26 símbolos. En otro contexto se
puede considerar como alfabeto a la colección de todas las palabras inglesas co­
rrectas o la colección de todos los símbolos legales de Pascal (los identificadores
de Pascal, palabras claves y reservadas, caracteres especiales, y así sucesiva­
mente). Si E es un alfabeto, o e X denota que ü es un símbolo de E. Por tanto, si
E = { 0 , 1,2, 3, 4, 5, 6, 7, 8,9}
podemos decir que 0 e E.
Obsérvese que, puesto que un alfabeto es simplemente un conjunto finito no
vacío, dados Ei y E 2 alfabetos, se tiene que Si u E 2 también lo es. Es más, si
Si n I 2 , Sj - Z 2 y Z 2 - Si son conjuntos no vacíos, también son alfabetos.
Una secuencia finita de símbolos de un determinado alfabeto se conoce
como palabra sobre dicho alfabeto^ Si el alfabeto es el alfabeto inglés, algunas
palabras pueden ser PROGRAM, DIGIT, MOON y BLEAK. Es más, nuestra
definición permite que BXW TEEMRE y JIPOQPY sean también palabras.
Nuestra experiencia nos lleva a identificar el término palabra con las palabras de
algún lenguaje natural. Por esta razón, a menudo se usa el término cadena en lu­
gar de palabra con el fin de evitar esta idea preconcebida. A lo largo del texto se
usarán por igual los términos cadena y palabra.
Obsérvese que si nuestro alfabeto base es el conjunto de todos los identifi­
cadores legales de Pascal cuya longitud es menor o igual que una constante, las
palabras clave y reservadas, los símbolos especiales de Pascal, y así sucesiva­
mente, un programa en Pascal bien construido, es una cadena. De la misma for­
ma que basándonos en la definición se pueden formar palabras incorrectas a par­
tir del alfabeto inglés también se pueden formar programas incorrectos sobre el
alfabeto anterior. Aparentemente, las cadenas que constituyen programas en
Pascal bien construidos deben cumplir ciertas restricciones, al igual que las pala­
bras inglesas “legales” se construyen de una determinada manera sobre el alfa­
beto inglés.
Cada símbolo de un alfabeto es una cadena sobre dicho alfabeto. La cadena
vacía, la cual se denota por el símbolo £, es una palabra sobre cualquier alfabe­
to. La palabra vacía es una secuencia vacía de símbolos tomados de cualquiera
www.FreeLibros.com
ALFABETOS Y LENGUAJES
31
que sea el alfabeto en cuestión. La cadena vacía tiene ciertas propiedades que
veremos más adelante,
_ . . . !i
/
Un lenguaje es un conjunto de palabras. Por tanto el conjunto {1,12, 123,
1234, 12345, 123456} es un lenguaje sobre el alfabeto compuesto por dígitos.
De forma similar, la colección de palabras inglesas “correctas” es un lenguaje
sobre el alfabeto inglés. Obsérvese que si Z es un alfabeto, también es un len­
guaje — el formado por todas las cadenas con un único símbolo.
Los lenguajes pueden ser bastantes grandes, como es el caso de todas las
palabras inglesas “correctas” o el lenguaje {1, 11, 111, 1111, 11111, ...} forma­
do por todas las cadenas finitas de unos. Obsérvese que este lenguaje es infinito
(aunque cada cadena del mismo tenga longitud finita). Cuando un lenguaje tiene
un tamaño muy grande es difícil especificar que palabras le pertenecen. La espe­
cificación de las palabras de un lenguaje es uno de los temas principales de este
libro, y le dedicaremos gran parte del tiempo.
Dado que un lenguaje es un conjunto de cadenas, se puede tener el lenguaje
compuesto por ninguna cadena —el lenguaje vacío. Este no es el mismo lengua­
je que el que consta de la cadena vacía {£}. El lenguaje vacío se denota de la
misma forma que el conjunto vacío, 0.
Supongamos que Z es un alfabeto y w es una cadena sobre Z. Si L es el len­
guaje formado por algunas de las cadenas sobre Z y si w está en L, entonces se
tiene que w e L y se dice que w es un elemento de L, o w es un miembro de L.
Por tanto,
121 e {1.12, 121, 1212, 12121}
Es necesario tener en cuenta el lenguaje compuesto por tocias las cadenas
sobre el alfabeto Z. Se conoce como cerradura de Z o lenguaje universal sobre
Z y se denota por Z*. Por ejemplo, si se tiene el alfabeto Z = {1}, entonces
Z*={£, 1, 11, 111, 1111,...}
Para cualquier alfabeto, Z* es infinito (ya que los alfabetos son no vacíos).
Ejercicios de la Sección 1.1
1.1.1. ¿De qué conjunto de símbolos se derivan las frases inglesas?
1.1.2. ¿Por qué el lenguaje vacío 0 no es el rnismo que fe}?
www.FreeLibros.com
32
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
OPERACIONES CON CADENAS
Si w es una cadena sobre cualquier alfabeto, su longitud se denota mediante el
símbolo | w | . La longitud de w es el número de símbolos que tiene la cadena.
Así que, si >v = 121 sobre el alfabeto £ = { 1 , 2 } , entonces |w | = 3 . La cadena
vacía e, no tiene símbolos con lo que leí = 0 .
Si w y z son cadenas, la concatenación de w con z es la cadena que se obtie­
ne al añadir a la cadena w la palabra z- Por ejemplo, si w = “banana” y
Z = “rama”, la concatenación de w con z es la cadena “bananarama”. La con­
catenación de las palabras w y z se denota como wz o w - z . Obsérvese que se tie­
ne que
| wz | = | w\ + |z |
La concatenación de la palabra vacía e con cualquier otra palabra w, no mo­
difica a la palabra w. Por esta razón, £ se comporta como la identidad con res­
pecto a la operación de concatenación.
Vamos a introducir la noción de potencia de una palabra sobre un alfabeto.
Sea w una palabra; para n e N se define
si n = 0
ww " ~ *,
si n > 0
Por tanto, si w = 122 sobre el alfabeto £ = {1,2}, se tiene
H’° = £
=
122
w2 = 122122
w3 = 122122122
y así sucesivamente. Se dice que w ' es la potencia i-ésima de w.
Hasta ahora hemos usado el símbolo = de forma intuitiva, sin definirlo. Para
ser más precisos, definiremos la igualdad de cadenas como sigue: si w y z son
palabras, se dice que w es igual a z, si tienen la misma longitud y los mismos
símbolos en la misma posición. Se denota mediante w = zLas nociones de sufijo y prefijo de cadenas sobre un alfabeto son análogas a
las que se usan habitualmente. S i w y j t son palabras, se dice que x es prefijo de
w, si para alguna cadena y se obtiene que w = xy. Por ejemplo, si w es la cadena
121, entonces la cadena x = 12 es un prefijo de w e y - 1. Si se considera >• = £,
entonces para w = xy se tiene que w = x, con lo que toda palabra puede conside­
rarse prefijo de sí misma. Introduciremos el término prefijo propio para denotar
aquellas cadenas que son prefijos de una palabra pero no iguales a la misma. Por
www.FreeLibros.com
ALFABETOS Y LENGUAJES
33
Tjéso x = 121 es un prefijo de la cadena w = 121, pero no es un prefijo propio de
w. Finalmente hay que tener en cuenta que la palabra vacía e es prefijo de cual­
quier palabra"^
Una cadena w es una subcadena o subpalabra de otra cadena z si existen las
cadenas x e y para las cuales z = xwy.
La inversa o transpuesta de una palabra w es la imagen refleja de w. Por
ejemplo, si w = “able” entonces su inversa es “elba”. Para denotar la inversa de
w se usa w1. Una definición más precisa de la misma puede ser la siguiente:
j _ {w,
W a,
si w = £
si w - ay por tanto a e l y y e E *
Por ejemplo, supongamos que x = “able” . Si se sigue la definición anterior
para calcular w 7 se tiene:
x7= (able)7= (ble)7a
= (le)7 ba
= (e)7 Iba
= (e)7 elba
= zelba
= elba
Consideremos la concatenación de las palabras “ab” y “cd ” que forma
“abcd” sobre el alfabeto inglés. Sabemos que (abcd)1= deba. Obsérvese que
deba = (cd )7 {ab)1. Por lo tanto, si w e y son cadenas y si x = wy, entonces
x7= (wy)l = y 1 wl.
La inversa se “deshace” a sí misma. Obsérvese que
((abcd Y y = (deba)1
= abcd
En general, (x7)7= x.
Ejercicios de la Sección 1.2
1.2.1. Sea £ = {1}. ¿Se puede decir que para todo número natural n hay alguna pala­
bra w e E* para la cual | vvj = ni Si w es una cadena de Z* para la cual | w \ —n,
¿es única? ¿Qué ocurriría si Z = {1, ?}?
www.FreeLibros.com
34
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
1.2.2. Para una palabra w, ¿se puede decir que
Encontrar una expresión para | vi>'+-/ | en términos de i,j y | w |.
1.2.3. ¿La cadena vacía e es un prefijo propio de sí misma?
1.2.4. Definir las nociones de sufijo y sufijo propio de una cadena sobre un alfabeto.
1.2.5. Obtener todos los prefijos, sufijos y subpalabras de la palabra w = “bar” sobre el
alfabeto inglés.
1.2.6. Probar formalmente que (wy)' = y' w'.
1.3
OPERACIONES CON LENGUAJES
Las ideas de concatenación, potencia e inverso se pueden extender al len­
guaje en su totalidad. Sean A y B lenguajes sobre un alfabeto. Se define el len­
guaje concatenación de A y B como
A ■B - {vv • x \w e A y x e B)
Por tanto, A • B está formado por todas las cadenas que se forman concate­
nando cada cadena de A con todas las cadenas de B.
Por ejemplo, si A = {casa} y B = {pájaro, perro), entonces A • B sería el
lenguaje {casapájaro, casaperro).
Obsérvese que para formar el lenguaje concatenación A • B no es necesario
que A y B sean lenguajes sobre el mismo alfabeto. Si A es un lenguaje sobre Xi y
B es un lenguaje sobre £ 2 , entonces A • B es un lenguaje sobre Z¡ u £ 2 - Se suele
escribir AB en lugar de A ■B, cuando la expresión resulta ambigua.
Dado que para toda palabra x, x ■e = x = £ • x, se obtiene que para cualquier
lenguaje A, A • {£} = {£} A = A . Es decir, el lenguaje cuyo único elemento es la
palabra vacía, se comporta como la identidad para la operación de concatenación
de lenguajes.
Al igual que para las cadenas, una vez que se ha definido la concatenación
de lenguajes, se puede definir la potencia. Sea A un lenguaje sobre el alfabeto £.
Definimos
f
\
|{£},
si n = 0
|A ■A"~ *,
si n > 1
Por tanto, si A = {ab} sobre el alfabeto inglés, se obtiene que
www.FreeLibros.com
ALFABETOS Y LENGUAJES
35
A° = {e}
A l =A = {ab)
A 2 = A • A 1= {abab}
A 3 = A - A 2 - {abcibab}
Interesa tener en cuenta que de esta definición se obtiene que 0° = {£}.
Puesto que un lenguaje es una colección o conjunto de cadenas, se puede
definir para el mismo la unión, intersección y sublenguaje, al igual que se defi­
nen para los conjuntos en general. Si A y B son lenguajes sobre el alfabeto I , en­
tonces la unión de A y B se denota mediante A o B y está formada por todas las
palabras que pertenecen al menos a uno de los dos lenguajes. Por tanto,
A u 5 = {x | x e A o x e B}
La intersección de los lenguajes A y B es el lenguaje
A n B = {x|x e A y x e B simultáneamente}
Luego, A n B está formado sólo por las palabras que pertenecen a los len­
guajes A y B a la vez.
Veamos un ejemplo. Consideremos el alfabeto L = { 0 , 1} y los lenguajes
A = {e, 0, 1, 10,11} y B = {£, 1,0110, 11010}. Entonces
A u 5 = {£.0. 1. 10, 11,0110, 11010}
y
A n B = {£, 1}
Antes de ver la relación que existe entre la concatenación y la intersección e
unión de lenguajes, es conveniente definir formalmente sublenguaje y la igual­
dad de lenguajes. Si A y B son lenguajes sobre un alfabeto X y si todas las cade­
nas de A son también cadenas de B, entonces se dice que A es un sublenguaje de
B. Dado que esto se corresponde exactamente con el concepto de subconjunto
visto en la teoría de lenguajes, A c z B denota que A es un sublenguaje de B.
Para los lenguajes A = {a, aci, aaa, aaaa, aaciaa} y B = {a" | n = 0, 1,2,...},
se tiene que A c B. Obsérvese que cualquier lenguaje L sobre el alfabeto £ es un
sublenguaje de I*, es decir. L c Z*.
Se dice que dos lenguajes A y B son iguales si contienen exactamente las
mismas cadenas, es decir, son conjuntos iguales. Se denota con A - B . Los teore­
mas siguientes muestran la relación que existe entre sublenguajes e igualdad.
www.FreeLibros.com
36
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
T eorem a 1.3.1. Sean A y B dos lenguajes sobre el alfabeto X. Entonces A - B si y sólo
s i A Q B y B q A.
Demostración. Supongamos en primer lugar que A = B. Tenemos que probar que
A c f i y í c A . Supongamos que x e A. Puesto que A y B tienen exactamente las
mismas cadenas, se obtiene que x e B, de lo que se deduce que A c í . Análoga­
mente, si x es una cadena que pertenece a B, entonces como A y B tienen exacta­
mente las mismas cadenas, se obtiene que x e A y por tanto B c A .
Supongamos ahora que / I c f i y B c A . Esto significa que toda cadena de A
está también en B y viceversa. Por tanto, A y B tienen exactamente las mismas
cadenas, con lo que son iguales. □
El Teorema 1.3.1 proporciona una forma de determinar oportunamente si
dos lenguajes son iguales. Lo usaremos para demostrar que la concatenación es
distributiva con respecto a la unión.
T eorem a 1.3.2.
Dados los lenguajes A, B y C sobre un alfabeto L, se cumple que:
i.
A ( B u Q =A B u A C
ii.
(B u Q ■A = B ■A u C ■A
Demostración, (i) Probaremos primero que A ■(B u C) c;A ■B u A ■C. Sea
x e A ■(B u C). Entonces x = w ■y para las cadenas w e A e y e B u C. Puesto
que y e B u C. entonces y e B o y e C. Si y e B, entonces w ■y e A ■B, y por
tanto, w • y e A ■B u A ■C. Por otro lado, si y e C, entonces w ■y e A ■C, con
lo que de nuevo tenemos que w ■y 6 A ■B u A ■C. En ambos casos se obtiene
que
A -(Bu Q
q
A B
u
A C
Para probar que A B u A C c z A ( B u C ) , supongamos que x e A ■B u
A ■C. Entonces x e A B o x e A C . S i x e A ■B, entonces x = u ■v para las ca­
denas u e A y v e B. Puesto que v e B entonces v e B u C y, por tanto,
uv e A ■(B u C). Por otro lado, si x e A ■C, entonces x = w ■y para las cadenas
w e A e y e C. En este caso y puesto que y e C, se tiene que y e B u C, y por
tanto, w ■y e A - ( B u C). Luego A B u A - C c z A ( B u C ) . Luego por el Teo­
rema 1.3.1 se obtiene que A - ( B u C ) = A B u A - C .
La prueba de la parte (ii) es similar y se deja como ejercicio. □
La relación que tiene la concatenación con la intersección no es tan buena
como con la unión. Generalmente, la concatenación no es distributiva con res­
pecto a la intersección. Para verlo, supongamos que A = {a, e}, 5 = { e } y
www.FreeLibros.com
ALFABETOS Y LENGUAJES
37
C = { a } . Obsérvese que A B = { a , e } y A ■C - { a 2, a}, por lo tanto
A - B n A - C = {a}. Por otro lado, B n C = 0, con lo que A ■(B n C) = 0.
Si A es un lenguaje sobre algún alfabeto X, se define la cerradura de Kleene
o cerradura de estrella de un lenguaje A como A* = ^ J “ = oA". Definiremos
también la cerradura positiva de A como A + = I^J“ = i A n. Obsérvese que las ca­
denas de la cerradura de Kleene se forman ai realizar cero o más concatenacio­
nes de las cadenas del lenguaje, mientras que la cerradura positiva se forma al
realizar una o más concatenaciones.
Por ejemplo, supongamos que A = {a} sobre el alfabeto inglés. Entonces te­
nemos que A° = { e } , A 1 = {«}, A 2 = { a 2} y así sucesivamente. Por tanto
A* = {e, a, a2, a3, ...}. Por otro lado, A+ = {a, a2, a 3, ...}.
Obsérvese que si X es un alfabeto, entonces X* está formado por todas las
concatenaciones de 0 o más símbolos de X. Precisamente, ésta será la colección
de cadenas que constituyen el lenguaje universal, el cual también se denota por
X*. Por tanto, nuestra notación es consistente. Además todo lenguaje sobre X es
necesariamente un sublenguaje de X*. Es más, si A es un lenguaje sobre X, se ob­
tiene que A„ c X* para todo n = 0, 1, 2, . . . , y por tanto, A* c X ’ y A+ c X+. Ob­
sérvese también que puesto que A n c A* para todo n, se tiene que A+ c A*. Final­
mente, puesto que 0o = {e} y 0” = 0 para todo n > 1, entonces 0* = {e} y 0+ = 0.
Ejemplo 1.3,1
Consideremos £ = {0, 1,2, 3, 4,5,6, 7, 8, 9} y definamos A como el len­
guaje formado por las cadenas que no contienen ninguno de los dígitos 2, 3,...,
9. Entonces 8 € A, 0 e A y l e A. También 000101001 e A. Obsérvese que si
k> 1 y x e Ak entonces x = w\ ■w2 - ■■■ ■Wk donde las cadenas w¡ e A. Puesto
que las cadenas w¿ no contienen los dígitos 2, 3,..., 9, la cadena x tampoco con­
tiene ninguno de esos dígitos. Por tanto x e A. Es decir, Ak c: A para k > 1.
Por otro lado, si x e A, como e e A se puede poner que
la cual es una cadena de Ak. De aquí que Ac A* para k > 1, y por tanto A = A k
para k > 1. De esto se obtiene que
oo
©o
A+= U Ak = J J A=A
k= 1
Jt=l
Además dado que A° = {e} c A, se deduce que A* = A° u A+ = A° kj A =A.
Por tanto en algunos casos A* y A+ son el mismo.
www.FreeLibros.com
38
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Si A y B son lenguajes sobre £ , definiremos la diferencia como
A - B = { x | x e A y x g B}
la cual es exactamente la misma definición que se vio en la teoría de conjuntos.
Ejemplo 1.3.2
Si A es como en el Ejemplo 1.3.1 y B es el lenguaje de todas las cadenas de
ceros, entonces A - B es el lenguaje de todas las cadenas de ceros y unos que
tienen al menos un 1.
Definimos el complemento de un lenguaje A sobre el alfabeto £ como
A = £* - A
la cual es también una definición análoga a la dada para el complemento en la
teoría de conjuntos. Nuevamente nos referiremos al Ejemplo 1.3.1 para obtener
que A es el lenguaje de todas las cadenas que contienen al menos uno de los dí­
gitos 2, 3 ,..., 9.
La concatenación y la diferencia de lenguajes son incompatibles de forma
similar a como lo eran la concatenación y la intersección. En general,
A (B-C)^AB-AC.
En el siguiente teorema se muestra una igualdad que relaciona las cerradu­
ras A+ y A*. Aunque el resultado es obvio intuitivamente hablando, conviene
ofrecer una demostración rigurosa de una parte del teorema puesto que es una
buena forma de indicar cómo se demuestran tales igualdades.
Teorema 1.3.3.
A+ = A • A* - A* ■A.
Demostración.
xe
Sea x e A +. De la definición de la cerradura positiva se obtiene que
i A k, así que para algún £o > 1, se sigue que x e Akn.
Puesto queA t(, = A - A*0-1, se obtiene q u e x e A • A k°~ *, y por tanto
oo
oo
X e U (A • A'1) = A ■(_J A” = A • A*
n=0
n=0
Esto prueba que A + c A • A*.
www.FreeLibros.com
39
ALFABETOS Y LENGUAJES
A la inversa, sea
oo
oo
x e A ■A* = A ■U An = U (A ■A 1')
j
,1=0
»= o
Entonces, para algún j > 0, se deduce que
oo
x 6 A ■Aj = A;+ 1 c ( J Ak = A +
k= 1
Por lo tanto A ■A* c A+.
La demostración de A+ = A* ■A es similar y se deja para el lector.
□
Consideremos el lenguaje A = {ab} sobre el alfabeto inglés.Tenemos que
A+ = {(ab)11/ > 1} = {ab, abab, ababab, ...}
Entonces podemos considerar el lenguaje (A+)' para distintos exponentes i.
Por ejemplo, si i = 2, se tiene
(A+)2 = A + ■A += {ab ■ab, ab ■abab, ab ■ababab, ...,
abab ■ab, abab • abab, abab ■ababab, ...}
Puesto que podemos obtener cada uno de los lenguajes (A+)', entonces tam­
bién se puede obtener (Apf. Es más, puesto que (A+)°= {e}, también se puede
considerar que (A+)*. Luego parece que tiene sentido preguntarse cómo son los
lenguajes que son cerraduras de cerraduras. Las repuestas son sorprendentemen­
te sencillas.
Si x es una cadena de (A+)+, entonces, puesto que (A+)+ =
i (A+)k, tene­
mos que para algún n > 1, x e (A+)", y por tanto x = x\ ■X2 • ■■■ ■x„, donde cada
x¡ e A+. Dado que x¡ e A+ =
i A', existe algún i¡ > 1 para el cual x¡ e A'1. Por
tanto cada
Xi = y¡,\ ■y i,2 •
■y¡,t,
donde cada y,y e A. Por tanto se obtiene
* = O’i.i y 1,2 ••• yi,/,) - 0 2 ,i yi.i ■■■ yi-t2) ■-■■■■ (y»,i y »,2 ■■■y,u„)
Pero ésta es justamente una cadena perteneciente al lenguaje a ,|+,2 + -" + í".
Es más, puesto que t¡ > 1 para cada i, se obtiene que
t\ + t2 + ... + tn > 1
www.FreeLibros.com
40
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
por lo que es una cadena de A+. Por tanto (A+)+ c A+. Por otro lado, puesto que
A+ = (A+)* c
i (A+)k = (A+)+, se obtiene que A+ c (A+)+, de lo que se des­
prende que A+ = (A+)+.
De forma similar se puede demostrar que (A*)* =A*. Estos resultados se
pueden interpretar como que no se añaden nuevas cadenas a los lenguajes A* o
A+, aunque se vuelva a realizar sobre ellos cualquier tipo de cerradura. Esto des­
vela intuitivamente lo que significa el término cerradura.
También se puede desarrollar la idea de inverso o transpuesta de un lengua­
je. El inverso de un lenguaje A es
A 1= {x' \x e A}
Por ejemplo si A = {dog, bog}, entonces A1 = {god, gob}.
Obsérvese que si se vuelve a realizar el inverso del inverso de todas las pa­
labras de un lenguaje, entonces se obtiene, de nuevo, el lenguaje original. Por
tanto, (A1)1= A.
El comportamiento del inverso es bueno para la mayoría de las operaciones
sobre lenguajes, como se muestra en el Ejercicio 1.3.18.
El inverso de la concatenación no sólo invierte las palabras concatenadas de
los lenguajes sino que también cambia el orden de la concatenación de los len­
guajes, como se muestra en el siguiente teorema.
Teorema 1.3.4.
(A • B)1= B1 ■A 1.
Demostración. Sea x e (AB)1. Entonces x ! e AB, con lo que xJ = yz para las cadenas
y e A y z e B. Por tanto, x = (xJ )' = (yz)1= z1 • / . Pero dado que z e B, entonces
z7 e B1. A dem ás y e A, con lo que y 1 e A 1, y por tanto se obtiene que x e B1A1,
lo cual prueba que (A5)7 c Z?7 • A7. A la inversa, si x e B1A 1, entonces x = uw
para alguna palabra u e B1 y w e A 1. Pero entonces x 1= v / ul e AB, con lo que
x7 e AB y x e (AB)1. Por eso Bl A7 c (AB)1, y por tanto (AB)1 = B1A7. □
Ejercicios de ia Sección 1.3
1.3.1. Para todo lenguaje A, ¿Qué es A • 0?
1.3.2. Sean A = {the, my} y B - {horse, house, hose} lenguajes sobre el alfabeto in­
glés. Obtener A ■B, A ■A y A ■B ■B.
1.3.3. Se supone que A = {e, a). Obtener A" para n = 0, 1,2, 3. ¿Cuántos elementos
tiene A" para un n arbitrario? ¿Cuáles son las cadenas de A" para un n arbi­
trario?
1.3.4. Se supone que A = {e}.'Obtener A" para un n arbitrario.
www.FreeLibros.com
ALFABETOS Y LENGUAJES
41
1.3.5. Sean A = {e, ab} y B = {c<r/}. ¿Cuántas cadenas hay en A" 5 para un n arbitra­
rio?
1.3.6. Sean A = {a} y B = {b}. Obtener A'1B,ABn y (AB)".
1.3.7. Sean A = {e}, B = [aa, ab, bb), C = {e, aa, ab} y D = 0 el lenguaje vacío. Obte­
ner A u B , A u C , A u D , B u D y A n B , B r\C , C n D, A n D. Suponer que
F es un lenguaje cualquiera. Obtener F u D y F n £>.
1.3.8. Probar la parte ii del Teorema 1.3.2.
1.3.9. Si A y B¡ son lenguajes sobre £ para i = 1 ,2 ,3 ,..., probar que
L U
;= i
= U
(A ■Bi)
i —i
1.3.10. ¿Bajo qué condiciones A* = A+?
1.3.11. Obsérvese que para todo lenguaje A se tiene que £ 6 A*. ¿Cuándo £ 6 A+?
1.3.12. Probar que {e}” = {£} = {e}+.
1.3.13. En los Ejemplos 1.3.1 y 1.3.2 ¿por qué £ no está en los lenguajes A - B y A?
1.3.14. Antes se obtuvo que A* = A ° u A += {£} u A +. Cabría esperar que A+ =
A" - {£}. Probar que, en general, la expresión no es cierta. ¿Cuándo se cumplirá
que A+ = A* - {£}?
1.3.15. Sean A y B dos lenguajes sobre £. Probar que A n B = A u B y que
A u B =A n B .
1.3.16. Obtener los lenguajes A, B y C tales que A (B - C ) ^ A B -A C .
1.3.17. Probar que (A*)* = A*, (A’)+ = A* y (A+)* = A*.
1.3.18. Demostrar que se cumplen las siguiente igualdades para los lenguajes A y i? so­
bre el alfabeto £:
(a) ( A kj B)' =A,X ) B I
(b) (A n B)' = A, n B l
(c) (A)1= (A7)
(d) (A+)'= (A ')+
(e) (A*)! = (A1)*
www.FreeLibros.com
42
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
PROBLEMAS
1.1. Sea Z = [a, b ,..., z] el alfabeto inglés. Definir la relación < sobre Z \ de forma
que x < y siempre que x preceda a y en orden alfabético (ordenación lexicográ­
fica).
1.2. Sea A un lenguaje sobre el alfabeto Z. ¿Cuándo se cumple A = A l
1.3. Sea Z = {a, b, c} y sea L = {c' xcJ\ i,j >0}, donde x se restringe a x = £, x = aw
o x = wb para algún w e Z. ¿Se cumple que L = E*? ¿Es cierto que L2 = Z*?
1.4. Sea Z = {a, b}. Lo siguiente es una definición recursiva del lenguaje A:
i.
ii.
iii.
iv.
£6/ 4.
Si x e A, entonces axb y bxa pertenecen a A.
Si x e y pertenecen a A, entonces xy pertenece a A.
No hay nada más en A.
(a) Probar que
A = {w e Z* | w tiene el mismo número de aes que de bes}
(b) Si b y £ están en A ¿qué más palabras hay en A l
(c) Dar una definición recursiva para que A c [a, ¿>}* contenga todas las pala­
bras que tienen el doble de aes que bes.
1.5. Un pa lín d ro m o es una cadena que se lee igual hacia adelante que hacia atrás.
Por ejemplo, la palabra“a” es un palíndromo, al igual que la cadena “radar”. Dar
una definición recursiva de un palíndromo (obsérvese que £ es un palíndromo).
1.6. Probar que para los lenguajes A y B, (A u B f = (A* B*)*.
1.7. Desigualdad de McMillan. Aunque la definición de que un alfabeto es un con­
junto finito de símbolos es matemáticamente correcta, plantea problemas cuan­
do se trata de aplicarla. Por ejemplo, si Z = {1, 11}, entonces l i l e Z , pero no
está claro si 111 = 1 1 1 ó 111 = 1 1 1 ó 111 = 11- 1. El problema es que,
aunque desde un punto de vista teórico 11 es indivisible (es un único símbolo y
no un par de unos), no tenemos forma de representarlo. Por tanto, aunque
w\ —1 • 11 y
11 • 1 parecen iguales, no lo son. Según la igualdad de cade­
nas, se deben tener los mismos símbolos y en la misma posición. En este proble­
ma se puede imponer una condición a los alfabetos cuyos símbolos son cadenas
sobre otros alfabetos. Esta condición garantiza que no se tenga el problema an­
terior con respecto a la igualdad de cadenas. Se conoce como la desigualdad de
MacMillan y se enuncia como sigue:
Desigualdad de McMillan: Sea Z un alfabeto formado por r símbolos.
Sean a\, a2, ..., aq cadenas no vacías sobre Z. Si el conjunto {ai, a2, aq} es un
alfabeto, entonces >
www.FreeLibros.com
ALFABETOS Y LENGUAJES
43
/= i
La demostración de la desigualdad de McMillan no es difícil pero requiere
una profundización en ciertas ideas sobre cadenas.
1.
Obsérvese que para las cadenas w\ y w2, |wj| + ¡W'2 i = |m’i W2 I, ¿cómo
( <¡
\n
será un término arbitrario de
r"'0í'
después de que se realice el pro-
/= 1
2.
ducto (pero antes de efectuar cualquier simplificación)?
Sea
h = (Oh k, ...,Q \k = k , | +. . . + |a ,„ |}
Es decir, h es la colección de «-tupias de los índices de las a¡, que pueden
ser usadas para formar cadenas de longitud k. Sea Mk = | /¿-|, que es el nú­
mero de cadenas de las a¡ que forman cadenas de longitud k. Probar que
í= 1
3.
k =n
donde r = max {!« 1 !. | aj \,.... | a„ | ).
Por la parte 2. puesto que
< i* para todo k. se obtiene que
< ‘i
IH * ¡
< n (t - 1) < nt
í=t
Probar que si
4.
se llega a una contradicción y por tanto se cumple la desigualdad de
McMillan.
La desigualdad de McMillan se usa para deducir un resultado más fuerte.
Sean /|, /2, ..., lq, q números naturales y Z un alfabeto con r= | z l . Existi­
rán q cadenas a\, a2,..., aq en F de longitudes l\, h , l q, respectivamente,
que formarán un alfabeto si y sólo si
www.FreeLibros.com
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
1.8. Cadenas exentas de cuadrados y exentas de cubos. Sea E un alfabeto. Una
cadena w e E* se dice que está exenta de cuadrados si w no es de la forma uv2 x
para las subpalabras u,x y v, donde x e. La definición de cadena exenta de cu­
bos es similar. La cadena w está fuertemente exenta de cubos si no contiene nin­
guna subcadena de la forma x2 a, donde x &e y a es el primer símbolo de x.
1.
2.
3.
4.
Probar que ninguna cadena de longitud mayor o igual que 4 sobre un alfa­
beto de cardinalidad 2 puede estar exenta de cuadrados.
Sea w e E ' . Una cadena w' e E* para la cual | w| = | vv' | es una inter­
pretación de w si se satisface la siguiente condición:
Sea 1 < i < | w\ y 1 <j < \ w \. Si los símbolos i-ésimo y y-ésimo de vv
son distintos, entonces los símbolos i y j de W son también distintos.
Por ejemplo, si vv = aaabab, entonces cdefgh y cdcece son interpreta­
ciones de w, sin embargo cdefgc no lo es.
Probar que si w está exenta de cuadrados, exenta de cubos o estrictamente
exenta de cubos, entonces toda interpretación de vv también lo está.
Una ©-cadena (omega cadena) es una secuencia infinita de símbolos
sobre un alfabeto. Es decir, oo-cadenas son cadenas de longitud infinita.
Sea w, una co-cadena exenta de cuadrados, exenta de cubos o estrictamente
exenta de cubos sobre E en la cual aparecen todos los símbolos de E. Su­
pongamos que E' es un alfabeto que contiene estrictamente a E (es decir,
E c E'). Probar que se puede construir una co-cadena a partir de vv, que es­
tará también exenta de cuadrados, exenta de cubos o estrictamente exenta
de cubos (como lo es vv) y que contendrá todos los símbolos de E'.
Si una cadena u co-cadena w está exenta de cuadrados, se puede espe­
rar que u- contenga dos ocurrencias de la misma subcadena x, es decir, una
subcadena de la forma xy = zx para la cual 1 < | j | = |¿| < | x | . Algunas
pruebas sencillas sugieren que la construcción de dicha w es más difícil de
lo que parece. De hecho, ¡no es posible!
Probar que si vv es una cadena o co-cadena que contiene una subcadena xy
de forma que xy = z x y 1 < |>'| = |z| < |x|, entonces vv no está exenta de
cuadrados.
www.FreeLibros.com
2
Lenguajes
regulares
2.1
LENGUAJES SOBRE ALFABETOS
No es una coincidencia el que la mayoría de los lenguajes considerados hasta
ahora hayan sido bastante sencillos. Los procesos vistos hasta ahora para deter­
minar qué cadenas pertenecen a un lenguaje sobre algún alfabeto £ resultan pe­
sados y laboriosos excepto para £* y algún otro lenguaje sencillo. Nuestro obje­
tivo a partir de ahora será la definición de lenguajes — esto es, especificar exac­
tamente qué cadenas componen un lenguaje— . Ya que todos los lenguajes sobre
£ son sublenguajes del lenguaje universal £*, tiene sentido determinar primero
cuántos sublenguajes tiene £* para un alfabeto £ en particular. Comenzaremos
estudiando el propio £*.
Como ejemplo, consideremos el alfabeto £ = [a, b}. Para todo número na­
tural n, hay sólo un número finito de palabras sobre £ cuya longitud es n.
(¿Cuántas hay?). Aún más, dichas cadenas se pueden ordenar lexicográficamen­
te. Por lexicográficamente, se entiende la forma en la que estarían ordenadas en
el diccionario. Por conveniencia, numeraremos £ como 0, después numeraremos
las palabras de longitud 1 y, en general, numeraremos las palabras de longitud
n + 1 después de las de longitud n. Así tenemos
www.FreeLibros.com
46
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
e 0
a
1
b 2
aa 3
ab 4
ba 5
bb 6
aaa 7
y así sucesivamente
De manera más general, supongamos que tenemos un alfabeto arbitrario E.
Puesto que todos los alfabetos son finitos, podemos asignar un orden arbitrario a
los caracteres pertenecientes a E. Así, sin pérdida de generalidad, podemos es­
cribir
E = {íü|, Cl2,
ÍJ/i}
Numeraremos las palabras de E* de la misma forma.
e
<31
a2
an
a\a i
0
1
2
n
n+ 1
a\ ü2 n + 2
y así sucesivamente
Esta técnica de asignar números naturales a las cadenas de un lenguaje, se
puede realizar de forma más precisa. Volviendo al ejemplo original, donde
E = {a, b}, haremos que cada cadena sobre E sea representada por un número en
binario, usando los dígitos 1 y 2 en vez de 0 y 1. Sea a el 1 y b el 2, entonces se
obtiene
8
a
b
aa
ab
abaa
0
1
2
11=3
12 = 4
1211 = 19
De esta forma, cada palabra está representada por un entero único. Esto no
ocurriría si hubiésemos usado el 0 para representar a a y el 1 a b, ya que a1 esta­
ría representada por 0, par^ todo i > 0.
www.FreeLibros.com
LENGUAJES REGULARES
47
O bsén c e que para todo número natural m, existe una única representación
:1 m isr
base n. Por eso podemos encontrar una cadena en Z* correspon­
diente a
Si m > 0, entonces debemos obtener la representación de m en base 2
sando 1
utos 1 y 2 en vez de 0 y 1). Para ello, se concatenan los caracteres
que corresponden a los dígitos que aparecen en la representación de m en base 2.
Así, si ni 3 2 , primero se convierte m a 11112 y entonces se concatenan las aes
ia bes ha.-aa obtener aaaab.
Hemos \ isto una forma de relacionar las cadenas de Z* con los números nap rales, de
na que cada cadena está representada por un único número natural
y cada mime, o natural representa a una única cadena. Esto, esencialmente, defi­
ne una función de N a Z*, con lo que, de hecho, se ha esbozado la demostración
del siguiente eorema:
Teorem a 2.1.1.
Para todo alfabeto X. X* es infinito numerable.
□
Ahora ano ya sabemos el tamaño de Z*, se puede determinar cuántos
sublenguajes dé Z* existen y, en consecuencia, cuántos lenguajes hay sobre el al­
fabeto Z.
Teoí
1.1.2.
El conjunto de todos los lenguajes sobre Z no es numerable.
Demostrc ion. S. -ngam os que el conjunto de todos los lenguajes sobre Z es numeraLian.
>s a dicho conjunto L . Puesto que L es numerable, puede ser enu:• erado de ;a ; >rma Ao, Ai, Az, ... Usaremos el método de la diagonalización para
gar a una .: ntradicción.
Sabe: 'v . que Z* es numerable y por tanto puede ser enumerado como »vo,
.......S>.;;
{vv,-1 vv/ £ A¡}. Luego B está formado por las palabras que no pertecen ;
uaje que tiene el mismo índice que las mismas. Obsérvese que B
(. un con/! ,; ! de cadenas sobre Z y que, por tanto, es un lenguaje. De aquí que
. =Ak, para algún k. Obsérvese que si
B. entonces Wk no está en A k - B .
Por tanto, ir* está y no está en Ak, lo cual es una contradicción. Por otro lado, si
a ; g B, entoaces, de la definición de B, se obtiene que
es una cadena de
= B y es;á :n B. Por tanto, Wf. está y no está en B, con lo que se llega a otra
ntradic
Dado que w* debe o estar en B o no estar en B, la suposición de
qué el conjunto de todos los lenguajes sobre Z es numerable es falsa. Luego el
conjunto no es numerable. □
El T< • na 2.1.2 proporciona una idea acerca de la magnitud del problema
de espedirán- lenguajes: hay una cantidad innumerable de lenguajes que especiar sobre un alfabeto en particular. No existe ningún método de especificación
i lenguajes que sea capaz de definir todos los lenguajes sobre un alfabeto. Esto
nifica
ado un método de representación de lenguajes, hay lenguajes que
www.FreeLibros.com
48
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
no son representabas. Por otro lado, unos métodos tienen mayor fuerza expresi­
va que otros, es decir, unos definen más lenguajes que otros. Con el estudio de
estos métodos de investigación podemos hacernos una idea de la naturaleza mis­
ma de la computación.
Ejercicios de la Sección 2.1
2.1.1. Para el alfabeto Z = [a, b] y usando la aplicación E * - 4 N dada en este aparta­
do, ¿cuántas palabras de longitud 3 hay? ¿Y de longitud 5? ¿Y de longitud kl
¿Cuál es el último número asignado a las palabras de longitud 2? ¿Y a las de
longitud 5? ¿Y a las de longitud kl
2.1.2. En el caso general de que haya n caracteres en el alfabeto Z ¿cuántas palabras
de longitud k habrá? Si ordenamos las palabras de Z en orden lexicográfico y
les asignamos números comenzando por el 0 para 8 ¿Cuál será el número asig­
nado a la última palabra de longitud k?
2.1.3. Usando los dígitos 1 y 2 en vez de 0 y 1, obtener la representación binaria del
número decimal 22. ¿Cuál es la palabra perteneciente a Z* = (a, b}* correspon­
diente al número (en base decimal) 22?
\
2.1.4. Ampliaremos la idea precedente para Z = [a, b, c) usando una representación
ternaria con los dígitos 1, 2, 3. Supongamos que a está asociado con 1, b con 2 y
c con 3. ¿Cuál será el entero decimal que corresponde a la palabra abbacca de
Z*? Encontrar la palabra de Z* correspondiente a 20.
2.2
LENGUAJES REGULARES Y EXPRESIONES REGULARES
El primer método para especificar lenguajes que vamos a estudiar define el con­
junto de lenguajes llamado lenguajes regulares sobre un alfabeto. Los lenguajes
regulares son interesantes desde el punto de vista práctico porque pueden ser
usados para especificar la construcción de analizadores léxicos —programas que
analizan un texto y extraen los lexemas (o unidades léxicas) que hay en el mis­
mo. Para un alfabeto Z dado, los lenguajes regulares sobre Z son interesantes
desde el punto de vista teórico porque ellos constituyen el menor conjunto de
lenguajes sobre Z que es cerrado con respecto a las operaciones de concatena­
ción, la cerradura de Kleene y la unión de lenguajes y además contiene el len­
guaje vacío 0 y los lenguajes unitarios {a} para a e Z.
Definición 2.2.1. Sea Z un alfabeto. El conjunto de los lenguajes regulares sobre Z se
define recursivamente como sigue:
www.FreeLibros.com
LENGUAJES REGULARES
49
(a) 0 es un lenguaje regular.
(b) {£} es un lenguaje regular.
(c) Para todo a e £, {a} es un lenguaje regular.
(d) Si A y B son lenguajes regulares, entonces A u B, A ■B y A* son len­
guajes regulares.
(e) Ningún otro lenguaje sobre Z es regular.
Por tanto, el conjunto de los lenguajes regulares sobre E está formado por el
lenguaje vacío, los lenguajes unitarios incluido {£} y todos los lenguajes obteni­
dos a partir de la concatenación, unión y cerradura de estrella de lenguajes.
Ejemplo 2.2.1
Dado £ = {a, b}, las siguientes afirmaciones son ciertas:
0 y {£} son lenguajes regulares.
{a} y {b} son lenguajes regulares.
{a, b} es regular jorque es la unión de {a} y {&}.
[ab] es regular.
[a, ab, b] es regular.
{a'|/ > 0} es regular.
{a1b>\ i > 0 y j > 0} es regular.
{(ab)‘| / > 0} es regular.
¿El lenguaje de todas las cadenas sobre [a, b, c} que no tienen ninguna sub­
cadena ac es un lenguaje regular? Para responder a esta pregunta, consideremos
que A es ese lenguaje. Si A es regular, entonces puede ser escrito en la forma que
se indica en la definición. Obsérvese que las unidades de construcción básica
son los lenguajes {a}, {b}, { c } , 0 y {£}. Supongamos que w es una palabra per­
teneciente a A. Entonces vv comienza por 0 ó más ces. Si las suprimimos obtene­
mos una subcadena w que no empieza por ningún carácter c. Ésta subcadena es­
tará constituida por aes, bes y ces, donde cualquier bloque de ces sigue a las bes.
Es más, no puede haber ningún bloque de ces al principio de vv'. Por eso se tiene
w 'e ({a} u {¿>} {c}*)*
y por tanto
w e { c } * ( { a } u { b } {c}*)*
de lo cual se obtiene
Ac{c}*({a}u{fe}{c}T
www.FreeLibros.com
50
TEORIA DE AUTÓMATAS Y LENGUAJES FORMALES
Para probar la otra inclusión, obsérvese que si u es una cadena que tiene una
subcadena ac entonces
u<£ {c}*({a} u {b } { c } T
ya que no hay forma de que una c pueda seguir a una a. Por tanto
{ c } * ({ a } u { ¿ } { c } y < z A
Podemos simplificar la especificación de un lenguaje regular introduciendo
un especie de abreviatura llamada expresión regular. Convenimos en escribir a
en lugar del lenguaje unitario {a}. Por tanto
ab
denota
denota
[a, b)
{ab}
a*
denota
a+
denota
{«}*;
{a}+
Además, se establece que el orden de precedencia de los operadores *, u y •
es * primero, • el siguiente y u el último. Esto reduce la necesidad del uso de pa­
réntesis y hace que las expresiones sean más fáciles de leer. Por ejemplo, una
expresión ({ a } * { ¿ } )u {c}, se reduce a la expresión regulara*/? u c.
A continuación definiremos de forma recursiva lo que es una expresión re­
gular sobre el alfabeto X, usando la notación convenida:
1.
0 y e son expresiones regulares.
2.
a es una expresión regular para todo a e X.
3.
Si r y 5 son expresiones regulares, entonces r u s, r ■s y r* también lo
son.
4.
Ninguna otra secuencia de símbolos es una expresión regular.
Comparando esta definición con la definición de lenguajes regulares se de­
duce que toda expresión regular sobre X denota un lenguaje regular sobre X.
Por ejemplo, el lenguaje de todas las cadenas sobre {a, b, c) que no tiene
ninguna subcadena ac se denota mediante la expresión regular c* (a u be*)*.
Cuando sea necesario distinguir entre una expresión regular r y el lenguaje
denotado por la misma, usaremos L (r) para denotar el lenguaje. En cualquier
caso, si se afirma que w e r, ello equivale a decir que w e L (r). Si r y s son ex­
presiones regulares sobre el mismo alfabeto y si L (r) = L (s), entonces se dice
que r y s son equivalentes. En el caso de que r y s sean equivalentes se puede es-
www.FreeLibros.com
LENGUAJES REGULARES
51
cribir r - s. También se puede usar r c 5 en el caso de que L ( r ) c L (s). Obsér­
vese que para obtener r - s se debe demostrar que r c j c r .
/ Fíjese que de la definición de cerradura de estrella para lenguajes se obtiene
que 0* = {e}, y en términos de expresiones regulares se tiene que 0* = e. Por tan­
to, se podría omitir £ en la definición de expresiones regulares. No obstante,
como £ es una forma de abreviar 0*, se incluirá £, más por conveniencia que por
necesidad. Igualmente, abreviaremos la expresión rr por medio de r+.
Obsérvese que hay muchas expresiones regulares que denotan el mismo
lenguaje. Por ejemplo (ab)* y £ u ( í i u í ) f b denotan el mismo lenguaje: el len­
guaje de todas las cadenas con 0 ó más aes y bes, que son tanto la cadena vacía
como las que tienen una b al final. Por tanto, (a*bY = £ u ( a u l ) ) ' b. Se pueden
simplificar las expresiones regulares reemplazándolas por otras equivalentes
pero menos complejas. Por ejemplo, la expresión ab u £ u (a u b)* b puede ser
sustituida por ab u (a*b)*.
Existen muchas equivalencias con respecto a expresiones regulares basadas
en las correspondientes igualdades de lenguajes. Las resumimos en el siguiente
teorema.
Teorema 2,2.2.
tonces:
Sean r, ,v y t expresiones regulares sobre el mismo alfabeto Z. En-
1.
r u í = juc.
2.
r u 0 = r = 0 u r.
3.
r u r= r.
4.
( r u i ) u í = r u (.v u t).
5.
/■£ = £r = r.
6
i'0 = 0 r ~ 0 .
.
7.
(rs) t = r (st).
8.
r ( s U í ) = rs u rt y ( r u s ) l ~ t 1 u st.
9.
r* = /•*” = r V = (e U r)* ~ r* ( r u e ) = ( r u £) r = £ u r r .
10.
(r u s)* - (r u s Y = (r s*)* = (r'sf r = r* (,sr*)*.
11.
r (sr)' = (rs)* r.
12.
(r*s)* = £ U ( r u s)a s.
13.
(rs*)* = e u r (rus)*,
14.
s (r U £)* (r u £) u s = sr*.
15.
www.FreeLibros.com
52
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Muchas de estas igualdades se pueden demostrar mediante reasociación.
Como muestra, consideremos la igualdad 11, r (.sr)* = (rs)* r. Si vv e r (sr)*, en­
tonces vv = ro (.si n ) ... (sn r„) para algún n > 0. Puesto que la concatenación es
asociativa, se puede reasociar la última expresión, con lo que se obtiene
w = (ro s i) (ri 52 ) • • • (rn - 1 sn) rn e (rs)* r. De aquí se obtiene que r (sr)* c
(rs)* r [o L (r (sr)*) c L ((rs)* r)]. Igualmente se puede probar que ( r s ) * r c
r (jr)* con lo que se demuestra la igualdad.
Para probar igualdades también se puede hacer uso de las igualdades ya co­
nocidas. Por ejemplo, si r = s*t, entonces
r = / í = ( e u 5+) t
ya que s’ = e u j +
= ( e u ss*) t
= £í u ss*t
por (8)
= t u sr
por (5)
= iruí
por(l)
lo cual prueba que r = s*t, implica que r = í r u í .
/
Ejercicios de ia Sección 2.2
2.2.1. Verificar, aplicando la definición de lenguaje regular, que los siguientes son
lenguajes regulares sobre Z = [a, b}:
(a) {«'l» > 0).
(b) {a11i > n } para un n > 0 fijado.
(c)
{vv e Z* | vv termina con a }.
2.2.2. Verificar que el lenguaje de todas las cadenas de unos y ceros que tienen al me­
nos dos ceros consecutivos, es un lenguaje regular.
2.2.3. Los identificadores de Pascal son cadenas de longitud arbitraria compuestas por
caracteres alfabéticos y por dígitos. Los identificadores de Pascal deben empe­
zar por un carácter alfabético. ¿Es este lenguaje un lenguaje regular?
2.2.4. Obtener una expresión regular que represente el lenguaje de los identificadores
de Pascal.
2.2.5. (a)
(b)
Probar que (r u £)* = r*.
Probar que (b u aa*})) u (b u aab) (a u ba’b)* (a u bab) y
a*b (a u ba'b)* son equivalentes.
2.2.6. Sobre
[a,b,c) ¿son equivalentes las parejas de expresiones regulares de
cada apartado?
www.FreeLibros.com
LENGUAJES REGULARES
53
(a) (a u b)* a* y ((a u b) a)*.
(b) 0** y e.
(c) ((a u b) c)* y (ac u be)*.
(d) b (ab u ac) y (ba u ba) (b u c).
2.2.7. Simplificar:
(a) 0 * u a * u l) ’ u ( a u 6)’(b) ((aV)* • (b*a*)*)*.
(c) (a*b)* u (b*a)*.
(d) (a u b)* a(a'U b)*.
2.2.8. Probar que (aa)* a = a (aa)*.
2.2.9. Simplificar las siguientes expresiones regulares:
(a) (e u aa)*.
(b) (£ u aa) (e u aa)*.
(c) a (e u aa)* a \ j£ .
(d) a (e u aa)* (£ u aa) u a.
(e) (a u e) a*b.
(f)
(£ u aa)* (£ u aa) a v j a.
(g) (£ u aa) (£ u aa)* (£ u aa) u (£ u aa).
(h) (£ u aa) (£ u aa)* (ab u b) u (ab u b).
(i)
(■a u b) (£ u aa)* (£ u aa) u f o u b).
(i)
(aa)* a kj (aa)*.
i
\
(k) a*b ((a u b) a*b)* u a*b.
(1)
a*b ((a u b) a*b)* (a u b) (aa)* u a (aa)* u a*b ((a u b) a*b)*.
AUTÓMATA FINITO DETERMINISTA
Consideremos el lenguaje regular A representado por c* (a u be*)*. Si dada una
cadena vv se nos pregunta si vv pertenece a A, debemos analizar no sólo los carac­
teres que aparecen en vv, sino también sus posiciones relativas. Por ejemplo, la
cadena abc 5ciab está en A, sin embargo cabac’bc no lo está. Podemos construir
un diagrama que nos ayude a determinar los distintos miembros del lenguaje.
Tal diagrama tiene la forma de un grafo dirigido con información adicional aña­
dida, y se llama diagrama de transición. Los nodos del grafo se llaman estados
y se usan para señalar, en ese momento, hasta qué lugar se ha analizado la cade-
www.FreeLibros.com
54
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
na. Las aristas del grafo se etiquetan con caracteres del alfabeto y se llaman
transiciones. Si el siguiente carácter a reconocer concuerda con la etiqueta de al­
guna transición que parta del estado actual, nos desplazamos al estado al que nos
lleve la arista correspondiente. Naturalmente, nosotros debemos comenzar por
un estado inicial, y cuando se hayan tratado todos los caracteres de la cadena co­
rrespondiente, necesitamos saber si la cadena es “legal”. Para ello se marcan
ciertos estados como estados de aceptación o estados finales. Si cuando ha sido
tratada la cadena en su totalidad terminamos en un estado de aceptación, enton­
ces la cadena es “legal”. Marcaremos el estado inicial con una flecha (—») y alre­
dedor de los estados de aceptación trazaremos un círculo.
Por ejemplo, el diagrama de la Figura 2.1 acepta todas las cadenas que están
formadas por 0 ó más aes seguidas por una única b. Obsérvese que para toda ca­
dena de la forma ak b, para k > 0, el recorrido del diagrama termina en un estado
de aceptación. El recorrido del mismo con cualquier otra cadena de aes y bes
(incluida la cadena vacía) termina en cualquier otro estado, pero éste no es de
aceptación.
a
a, b
cá
■-
'4'
6
a, b
Figura 2.1
Considérese el lenguaje A = {{ab)L\i > 1}, el cual está representado por la
expresión regular (ab)+. Obsérvese que una cadena de este lenguaje ha de tener
al menos una copia de ab. Por tanto, si se construye un diagrama de transición
para este lenguaje, el estado inicial no puede ser también estado de aceptación.
Es más, si estando en el estado inicial se encuentra el carácter b, esto indica que
la cadena no puede ser aceptada. Por tanto, hay dos transiciones a partir del esta­
do inicial, una para a y otra para b. La transición correspondiente a , nos lleva a
un estado en el que se espera encontrar como siguiente carácter de la cadena,
una b. Si se obtiene b, entonces nos desplazaremos a un estado de aceptación.
Luego, si no hay más caracteres a considerar, se habrá identificado una cadena
legal. Si no se han agotado los caracteres de la cadena, tomaremos la transición
apropiada que parta de dicho estado. El diagrama de transición para A es el que
se muestra en la Figura 2.2.
~”7
Obsérvese que se tiene un único estado de aceptación. Si el análisis termina
en cualquier otro estado, la cadena no está correctamente construida: Obsérvese,
www.FreeLibros.com
LENGUAJES REGULARES
55
a, b
a.
a
Figura 2.2
también, que una vez que se identifica un prefijo incorrecto, se realiza un des­
plazamiento a un estado que no es de aceptación y se permanece en el mismo.
Consideremos el lenguaje (ab)*. En este caso si se acepta la cadena vacía.
Por tanto, el estado inicial también es de aceptación. El diagrama de transición
correspondiente se muestra en la Figura 2.3.
b
a
tr
a, b
Figura 2.3
Vamos a etiquetar los estados del último diagrama de transición con las le­
tras q¡, para i = 0, 1,2. Obtendremos la Figura 2.4.
Podemos representar el diagrama de la Figura 2.4 por medio de una tabla
que indica el siguiente estado al que desplazarse, desde un estado combinado
con un símbolo de la entrada (Figura 2.5).
b
a
a, b
www.FreeLibros.com
F ig u ra 2.4
56
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Obsérvese que la tabla para nuestro diagrama de transición tiene, para cada
par estado actual-entrada, un único estado siguiente. Por tanto, para cada estado
actual y símbolo de entrada, se puede determinar cuál será el estado siguiente.
Se puede pensar que el diagrama representa la acción de alguna máquina. Esta
máquina puede pasar por diferentes estados. El cambio de estado depende de la
entrada y del estado en que se encuentre. Dicha máquina se llama autómata fin i­
to, una computadora ideal. El autómata finito se define en términos de sus esta­
dos, la entrada que acepta y su reacción ante la misma. Hay autómatas finitos de
dos tipos, deterministas y no deterministas, dependiendo de cómo se defina la
capacidad para cambiar de estado. El autómata que corresponde a la Figura 2.5
para (ab)* es determinista.
EstadcAEntrada
a
b
Ct\
92
<?2
(lo
<72
<72
Formalmente, un autómata finito determinista M es una colección de cinco
elementos.
1.
Un alfabeto de entrada Z.
2.
Una colección finita de estados Q.
3.
Un estado inicial 5.
4.
Una colección F de estados finales o de aceptación.
5.
Una función 5: Q x Z —» Q que determina el único estado siguiente
para el par (g¡, o) correspondiente al estado actual y la entrada.
Generalmente el término autómata finito determinista se abrevia como
AFD. Usaremos M = (Q, Z, s\ F, 8) para indicar elconjunto deestados, el alfabe­
to, el estado inicial, el conjunto de estados finales y lafunción asociada con el
AFD M.
Por ejemplo, el AFD correspondiente al ejemplo anterior se representa me­
diante M - (Q, Z, s, F, 5), donde
Q = {<70, qu <7 2 }
Z —{a,b}
s = qo
F = {q o )
www.FreeLibros.com
LENGUAJES REGULARES
57
8 se define mediante la tabla de la Figura 2.6.
6
a
b
?o
<71
<?2
<7i
<¡2
qo
(¡2
Q2
<12
Figura 2.6
La característica principal de un AFD es que 6 es una función. Por tanto, 8
se debe definir para todos los pares (q¡, o) de Q x I . Esto significa que sea cual
sea el estado actual y el carácter de la entrada, siempre hay un estado siguiente y
éste es único. Por tanto, para un par (q¡, a ) hay uno y sólo un valor de la función
(estado siguiente), § (q¡, 0 ). En otras palabras, el estado siguiente está totalmente
determinado por la información que proporciona el par (q¡, a).
Se puede crear un diagrama de transición a partir de la definición de un
AFD. Primero, creamos y etiquetamos un nodo para cada estado. Entonces, para
cada celda q¡ de la fila correspondiente al estado q¡, trazamos una arista desde q¡
a qj, etiquetada con el carácter de entrada asociado a qj. Finalmente, se marca el
nodo 5 con una flecha, y se trazan unos círculos en todos los nodos de F para in­
dicar' cuáles son los estados de aceptación. Por tanto, el diagrama de transición
para el AFD M - {Q, £, .y, F, 8}, donde
Q = {qo, <7 1 }
E = {a, b }
^={<70}
s = qo
y 8 representada mediante la Figura 2.7
8
a
<?0
<?o.
9i
<?i
b
<?o
Figura 2.7
se muestra en la Figura 2.8.
a
a
-------> ®—
F ig u r a 2.8
www.FreeLibros.com
58
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Consideremos otro ejemplo. El AFD M - {Q, X, s, F, 5} representado por
Q = Wo, <?i, <?2, q 3 }
Z = {a ,b }
(*) J - 9 0
F = {<70 , <?i,<?2 }
y 8 dada por la tabla de la Figura 2.9.
5
a
b
<?o
<?o
<?i
<?i
9o
<72
<?2
qo
<73
<?3
<73
<?3
Figura 2.9
El diagrama de transición correspondiente se muestra en la Figura 2.10.
a
------- »®----------£-------- >®---------- £-------->®---------£-----------b
(J%
<?2
q3
a
Figura 2.10
"T
Ejercicios de la Sección 2.3
c^
2.3.1. Obtener la expresión regular que representa al lenguaje formado por todas la
cadenas sobre {a, b} que tienen un número par de bes. Construir el diagrama de
transición para este lenguaje.
2.3.2. Construir el diagrama de transición para el lenguaje dado por c* (a u be*)*.
Convertir el diagrama en una tabla como la dada en la Figura 2.5, etiquetando
los estados qo,q\, ...
2.3.3. Sea M= {Q, Z, s, F, 5} dado por
Q = {<?0,<7l,<72,?3}
£ = {0 ,1 }
{^0 }
■5= <?0
y 8 dada por la tabla de la Figura 2.11.
www.FreeLibros.com
LENGUAJES REGULARES
5
0
1
Qo
<72
<?1
<73
qa
<73
<12
43
59
<7i
<72
Figura 2.11
Construir el diagrama de transición. Obtener la secuencia de estados por los que
se pasa para aceptar la cadena 1 1 0 1 0 1 (el carácter del extremo izquierdo es el
primero en ser analizado).
2.3.4. ¿La Figura 2.12 es un diagrama de transición correspondiente a un AFD? ¿Por
qué o por qué no?
H>®-
cr
Figura 2.12
AFD Y LENGUAJES
Para trabajar con los AFD es necesario usar ciertas definiciones y notaciones. Si
M es un AFD, entonces el lenguaje aceptado por M es
L (Ai) = {vv e L* | w es aceptada por M }
Por tanto, L (M) es el conjunto de cadenas que hacen que M pase de su esta­
do inicial a un estado de aceptación.
Por ejemplo, el lenguaje aceptado por el AFD (*), presentado en la última
sección, es
L (.M) = {vv e [a, b } | vv no contiene tres bes consecutivas}
Merece la pena hacer hincapié en que L (M ) está formado por todas las ca­
denas aceptadas por M, y no que es un conjunto de cadenas que son todas acep­
tadas por M.
Para cada (q¡, a) de Q x I . 5 (q¡, a ) es un estado perteneciente a Q, y él mis­
mo puede ser emparejado con la entrada. Este par se transforma mediante 8 en
un nuevo estado de Q. En particular, si qo es el estado inicial de M y se tiene
www.FreeLibros.com
60
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
como entrada la cadena C 1 G2 0 3 , el estado resultante se obtiene mediante la apli­
cación de 8 ( 8 (8 (qo, Ot), G2), 0 3 ). Por ejemplo, para el AFD (*) de la última
sección, se tiene 8 ( 8 ( 8 ( 8 (qo, b), b), a), b) = q\ para la cadena bbab. Obsérvese
la aplicación recursiva de M sobre la cadena. Adviértase, también, que escribir
esta expresión es un proceso bastante laborioso. Nos pondremos de acuerdo en
usar 8 (qo, bbab) para abreviar 8 ( 8 ( 8 ( 8 (qo, b), b), a), b). Para ser más precisos,
si q¡ e Q y vv es una cadena de la forma a¡ w' para algún a¡ e E y una subcadena
vv', definiremos 8 (q¡, w) como 8 (8 (q¡, a¡), w').
Diremos que dos AFD M\ y M i son equivalentes si L (M \) = L (Mi). Por
ejemplo, sean M\ y M 2 sobre el alfabeto E = {a }, representados por los siguien­
tes diagramas de transiciones
Mi:
í)
®
,
M2:
Ambos aceptan el lenguaje a+ y, por tanto, son equivalentes. Por otro lado,
sea M 3 dado por el siguiente diagrama
My.
®
no es equivalente a Mi o Mz (¿por qué?). Obsérvese que M4 dado por el diagra­
ma de transición siguiente
a
í)
Mi: ----- > ®
es equivalente a M 3 y es más “sencillo" puesto que tiene menos estados. Los
problemas del final del capítulo estudian las dificultades que existen para deter­
minar si dos AFD son equivalentes y para transformar un AFD en otro equiva­
lente que sea más sencillo.
Ejercicios de la Sección 2.4
2.4.1. Sea M un AFD. ¿Cuándo pertenecerá £ a L (Ai)?
2.4.2. Construir los AFD que aceptan cada uno de estos lenguajes sobre [a, b}:
(a)
{vv| toda a de w está entre dos bes}
(b) {w\w contiene la'subcadena abab}
www.FreeLibros.com
LENGUAJES REGULARES
(c)
61
{iv| vv no contiene ninguna de las subcadenas aaobb)
(d) {vv| vv tiene un número impar de aes y un número par de bes}
(e) {w | w tiene ab y ba como subcadenas}
2.4.3. Sea S el conjunto de todos los AFD sobre el alfabeto £. Sea R c z S x S larela­
ción definida de manera que: (Mu M2) esté en i? si y sólo si M\ esequivalente a
M2 (como autómatas finitos). Probar que R es una relación de equivalencia en S
(y, por tanto, que la definición de equivalencia de AFD es consistente con el uso
matemático habitual de los términos).
AUTÓMATA FINITO NO DETERMINISTA
Si se permite que desde un estado se realicen cero, una o más transiciones me­
diante el mismo símbolo de entrada, se dice que el autómata finito es no deter­
minista. A veces es más conveniente diseñar autómatas finitos no deterministas
(AFN) en lugar de deterministas. Consideremos el lenguaje a*b u ab*. Las cade­
nas pertenecientes a este lenguaje están formadas por algunas aes seguidas de
una b o por una a seguida de varias bes. El AFD que acepta A se representa por
medio del diagrama de transición de la Figura 2.13.
Figura 2.13
Aunque el lenguaje es relativamente sencillo, debemos detenem os en poder
determinar si este diagrama de transición corresponde al AFD de A. Primero se
debe comprobar que reconoce sólo las cadenas pertenecientes a A, y después, si
representa a un AFD. Para ello, debemos comprobar que las reglas de transición
constituyen una función, es decir, que de cada estado parte una y sólo una transi­
ción para cada símbolo del alfabeto.
Consideremos ahora el diagrama de transición de la Figura 2.14. Obsérvese
que este diagrama acepta sólo las cadenas pertenecientes a A. Fíjese también que
las reglas de transición no son una función de "Q x £ en Q porque no asigna un
estado siguiente a los pares estado-entrada (<74, a), (<73 , a), (43, b), (<72 , o) y
(q2, b). Es más, existe_más de un estado siguiente correspondiente al par (qo, a).
www.FreeLibros.com
62
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Figura 2.14
93
Este diagrama de transición representa a un AFN. Finalmente, obsérvese que en
este diagrama es más fácil determinar qué lenguaje se acepta.
Si tratamos de definir el término autómata finito no determinista, veremos
/ que la mayor parte de la definición se puede obtener a partir de la de AFD. Es
decir, tendremos un conjunto finito de estados Q, un alfabeto de entrada E, un
estado inicial o de partida s, un conjunto de estados de aceptación F y una regla
de transición. La única diferencia que existe se encuentra en las reglas de transi­
ción. En un AFN, las reglas asocian pares (q, o) con cero o más estados. Se pue­
de decir qué las reglas relacionan pares (q, a ) con colecciones o conjuntos de es­
tados. Esto significa que la regla es una relación entre Q x E y <2. o sobre
(Q x L) x Q. Por tanto, definiremos una autómata finito no determinista median­
te una colección de cinco objetos (Q, E, s, F, A), donde
1.
Q es un conjunto finito de estados.
2.
E es el alfabeto de entrada.
3.
í es nno de los estados de Q designado como estado de partida.
4.
F es una colección de estados de aceptación o finales.
5.
A es una relación sobre (Q x E) x Q y se llama relación de transición.
Obsérvese que, puesto que A es una relación para todo par (q, o) compuesto
por el estado actual y el símbolo de la entrada, A (q, o) es una colección de cero
o más estados fes decir, A (q, a ) c Q], Esto indica que, para todo estado q, se
pueden tener cero o más alternativas a elegir como estado siguiente, todas para
el mismo símbolo de entrada.
Por ejemplo, el AFN descrito anteriormente para A = a b u ab* se repre­
senta por medio de
Q = {qo, qí, <?2, <73, 94}
F = { q z , 43, 94}
s = qo
E = { a ,¿ }
www.FreeLibros.com
LENGUAJES REGULARES
63
y A dada por la tabla de la Figura 2.15.
A
a
b
9o
!<?b<?4)
(<?3)
9i
Í9 i)
92
0
0
93
0
0
94
0
{94 }
Figura 2.15
Obsérvese que en la tabla de la relación de transición las celdas son conjun­
tos. El hecho de que existan celdas con 0, indica que no existe ninguna transi­
ción desde el estado actual mediante la entrada correspondiente. Que para un par
estado actual-entrada exista más de un posible estado siguiente indica que se
puede elegir entre las distintas posibilidades. En el modelo no existe nada que
determine la elección. Por esta razón, se dice que el comportamiento del autó­
mata es no determinista.
Veamos otro ejemplo. Consideremos el AFN M = (Q .Z , s, F, A) dado por
Q= {<70, <71, <72}
5 = qo
F = k/o}
y A dada por la tabla de la Figura 2.16. Este AFN tiene el correspondiente dia­
grama de transición que se muestra en la Figura 2.17.
A
a
b
<70
í<?i)
0
9i
0
Í9o, 92 )
92
(9o)
0
Figura 2.16
Figura 2.17
Este AFN acepta el lenguaje (ab u aba)*. Obsérvese que cuando se está en
el estado q\, mediante el símbolo de entrada /?,*se puede pasar a dos posibles es­
tados siguientes. Se puede elegir entre uno de estos estados. De nuevo, la elec­
ción de un estado no está determinada por el modelo. Si para el reconocimiento
www.FreeLibros.com
64
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
de la cadena aba, se elige 4 2 como estado siguiente desde el par (q\,b) llegamos
a un estado de aceptación; sin embargo, si elegimos #0 no llegamos a un estado
' final. El análisis de cadenas mediante los AFN parece que implica ciertas conje­
turas. Esta es una característica del no determinismo: cuando se debe realizar
una elección y dicha elección no puede ser determinada por el modelo, debemos
acertar la correcta. En un modelo de computación no determinista (del cual los
AFN son una clase), asumimos que siempre se hace la elección correcta.
Como con los AFD, si M es un AFN, definimos el lenguaje aceptado por M
por medio de
L (M) - {w\ w es una cadena aceptada por M)
donde una cadena vv es aceptada por M, si M pasa de su estado inicial a un esta­
do de aceptación o final al recorrer w (vv es consumida en su totalidad).
Para determinar si una cadena pertenece a L (M), se debe recorrer el diagra­
ma de transición correspondiente a M. Debemos encontrar un camino que termi­
ne en un estado de aceptación cuando haya sido consumida toda la cadena. Du­
rante el recorrido, debemos elegir de forma no determinista la transición de un
estado a otro cuando existe más de una para el mismo símbolo. Para afirmar que
la cadena no está en L (Ai), debemos agotar todos las formas posibles de recorrer
el diagrama de transición para dicha cadena. Para diagramas de transición senci­
llos, esto puede ocasionar un problema de gasto de tiempo. El siguiente ejemplo
proporciona una forma de abordar este problema de una manera distinta, evitan­
do la búsqueda exhaustiva por el diagrama.
Ejemplo 2.5.1
....
s,
El diagrama de transición de la Figura 2.18 corresponde a un AFN que
acepta el lenguaje
(a*b*)* (aa u bb) (a b*)*
www.FreeLibros.com
LENGUAJES REGULARES
65
La tabla para A viene dada por la Figura 2.19
\
A
a
4o
{<?0> <?3)
{4o-9i)
4i
0
{4 2 }
92
{4 2 }
{4 2 }
43
( 44 }
0
<74
{94 )
{44 }
b '
Figura 2.19
La naturaleza recursiva del análisis de cadenas que vimos para los AFD se
manúene en los AFN si la notación se define con cuidado. Si X c Q, vamos a in­
terpretar A (X , a ) como el conjunto de estados { p \ q e X y p e A (q, a)}. Por
tanto, A (X, o) es el conjunto de todos los estados siguientes a los que se puede
llegar desde X con la entrada a. Obsérvese que A (X, a ) = { J 9 e x A (qr, a ) [re­
cuérdese que A (q, a ) es un conjunto para cualquier estado q\.
Por eso, en el ejemplo precedente,
A ({<70, qi, #3}, ¿0 = {?0, <7i} v {<72} U 0 = {<70, <71,42}
Ahora obsérvese que para la cadena abaab, se obtiene que A (qo, a) =
{4 0 , <7 3 }, con lo que
A (qo, ab) = A (A (qo, a), b)
= A({qo, qz},b)
= {qo,q\} U 0
= {qo, q\)
Por tanto, podemos extender la notación usada para los AFD a los AFN y
escribir A (qo, abaab) para abreviar A (A (A (A (A (<70 , a), b), a), a), b).
En el Ejemplo 2.5.1, se tiene que A (qo, abaab) = {qo, <71, q 4}. La colección
A (qo, abaab) es el conjunto de todos los estados de M a los que se llega cuando
se analiza la cadena abaab. Esta colección tienen en cuenta todos los posibles
caminos o recorridos de M con esta cadena de entrada. A (qo, abaab) contiene al
menos un estado de aceptación, ¿74, lo que indica que algún recorrido de este dia­
grama para la cadena abaab termina en un estado de aceptación. Por eso, abaab
pertenece al lenguaje aceptado por este AFN.
www.FreeLibros.com
66
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Ejercicios de la Sección 2.5
2.5.1. Construir un AFD y el diagrama de transición asociado que acepte el lenguaje
(ab u aba)*. Compararlo con el AFN del Ejemplo 2.5.1.
2.5.2. Obtener un AFN (que no sea AFD) que acepte el lenguaje ab* u alia.
2.5.3. Usar la técnica precedente para determinar si las cadenas babba y aabaaba son
aceptadas por el AFN del Ejemplo 2.5.1.
2.5.4. Sea M el AFN dado por Q = [qo, q\}, 2 = {a, b}, s = qo, F= {gi} y A dada en la
Figura 2.20. Determinar si a2b, ba y b2a están en L (M). Dibujar el diagrama de
transición para M.
A
a
b
9o
(<7o> <?i)
l<7i)
9i
0
lío .íi)
Figura 2.20
EQUIVALENCIA DE AFN Y AFD
Hemos definido la equivalencia para los AFD. Extenderemos esta definición
para la clase de todos los autómatas finitos (AFD y AFN) de forma que un autó­
mata M es equivalente a un autómata' M' si L (M ) = L (M ').
Ejemplo 2.6.1
Los autómatas representados en la Figura 2.21 son equivalentes. Obsérvese
que uno es determinista y el otro no determinista. Sin embargo, ambos aceptan
el mismo lenguaje, a f a u b)*.
. ' P )a' k
Figura 2.21
Ya que una función es un caso especial de relación (es decir, las funciones
son relaciones que poseen requerimientos adicionales), las funciones de los AFD
se consideran como relaciones en los AFN. En consecuencia, todo AFD es un
AFN. La colección de lenguajes aceptados por los AFN incluye a todos los len­
guajes aceptados por los AFD. De esto resulta que los AFN sólo aceptan los len­
www.FreeLibros.com
LENGUAJES REGULARES
67
guajes aceptados por los AFD. Por lo tanto, los AFN no son más potentes que
los AFD con respecto a los lenguajes que aceptan. Para probar esto, necesitamos
demostrar que todo lenguaje aceptado por un AFN también es aceptado por al­
gún AFD.
Sea M = (Q, £, s, F, A) un AFN. En la sección anterior presentamos una for­
ma de recorrer M, de la cual se obtenía la colección de todos los estados accesi­
bles desde el estado inicial en cada una de las etapas de análisis de una cadena.
Estas técnicas proporcionan la base para construir un AFD M' = (Q \ E', / , F \ 8)
que acepte el mismo lenguaje que Ai. Esencialmente, lo que se pretende es hacer
que cada estado de Q' se corresponda con un conjunto de estados de Q. Cuando
se analiza una cadena con M, ésta se acepta cuando la colección final de estados
contiene al menos un estado de aceptación perteneciente a F. Por tanto, haremos
que F sea el conjunto de estados de Q' que se correspondan con los conjuntos
de estados (de Q) que contienen un estado de F. Haremos corresponder a s' con
el conjunto | .y}, £ ' = £, y definiremos 5 de forma que nos desplacemos de un
conjunto de estados de M a otro, como hace A.
Ejemplo 2.6.2
Consideremos el AFN M que acepta a u (ab)*, representado por el diagra­
ma de transición de la Figura 2.22. Para este AFN, tendremos
A (qa, a) = {q\, q2)
A(qo,b) = 0
A({qi,q2},a) = 0
A ({q \,q 2}.b) = {qi]
A (0, a)=A (0, b) = 0
A (<?3, a)= {q2}
A (<73, b) = 0
A (q2, a) = 0
A (q2, b) = {<y3}
%
a
->® 9i
a
a
b
Figura 2.22
Por tanto, el diagrama de transición correspondiente al AFD M' que es
equivalente a M viene dado en la Figura 2.23. Obsérvese que cada estado de M'
www.FreeLibros.com
68
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
• [q2
0
8
a, b
Figura 2.23
corresponde a un conjunto de estados de M. Los estados de aceptación de Af se
corresponden con los conjuntos de estados de M que contienen estados de acep­
tación.
Se verifica fácilmente que la regla de transición es una función. Por tanto
M' = (Q,
i', F , 5) donde
G '={0,{® }.{92}.í«3}.{9l.ft}}
r =z
í '= {<?o}
f = { { ( ¡ 3 }, \q\, <72}}
y 8 viene dada por la tabla de la Figura 2.24.
§
a
b
0
0
0
(<7o)
{<7i><72)
0
{<7 2 }
0
{<73 }
(4 3 }
i<?2)
0
f<?i> <?2¡
0
{4 3 }
Figura 2.24
Ahora demostraremos formalmente que todo lenguaje aceptado por un AFN
es también aceptado por un AFD, con lo que probaremos que los lenguajes AFN
y los lenguajes AFD están formados por la misma colección de lenguajes.
T eorem a 2.6.1. Sea M = (Q, £, s, F, A) un AFN. Entonces existe un AFD M' =
= (Q s ' , F, 5) que es equivalente a M.
Demostración. Definamos M ' = (Q \ £ ' , F , 8) como sigue: sea s' = { 5 }, £ ' = £,
Q = 2^ (que es la colección de todos los subconjuntos de Q) y F la colección de
www.FreeLibros.com
LENGUAJES REGULARES
69
todos los subconjuntos de Q' que contienen estados de F. Téngase en cuenta que
hemos incluido en Q' y F algún objeto más que en el ejemplo anterior. Sin em­
bargo, esto no alterará la construcción de M'. Para cada conjunto \q¡v q¡2, q¡n} de
Q' y cada símbolo de entrada o de 2, definiremos 8como
8 ({<?/,, qiv
q¡„), o) = [pi,p 2 , - ,Pk}
A ({<?(,, qiv
q¡„}, o) = {pup 2 , - ,Pk}
si y sólo si
Obsérvese que 8, definida de esta forma, es una función de Q' x Z' en Q',
puesto que está bien definida para todos los elementos de Q' x
Para probar que L (M) —L (M'), debemos demostrar que para toda cadena
w, 8 (/, vv) = {pup 2 , ...,pj } si y sólo si A (.y, w) = [p\,p% ...,pj }, con lo cual M'
acepta vv si y sólo si M acepta vv. Probaremos esto por inducción sobre la longi­
tud de vv. Si la longitud de w es 0 (es decir, w= e), entonces
A (5 , vv) = A (5 , e) = {.y} = 8 (.y', vv)
Ahora supongamos que para toda cadena w de longitud menor o igual que m
se tiene que A (s , vv) = 8 (/, vv). Supongamos que u es una cadena de longitud
m + 1. Entonces, existirá algún oe Z, de forma que se obtiene que u = wo, don­
de w es una cadena de longitud m. En este caso, 8 (/, vvo) = 5(8 (s\ vv), o).
Ahora, por la hipótesis de inducción, dado que vv tiene longitud m, 8 (/, w) =
ÍP\,P2, -•,Pj} si y sólo si A (s, vv) = [p\,p 2 , •••,Pj }• Pero por la forma en la que
hemos definido 8, tendremos que
8
({pi,jp2, -;P j}, O) = {ru r2, ..., rk}
si y sólo si
A ({puP 2 , - ,Pj }, o) = {ru r2, ..., rk]
Por lo que 8 (/, vva) = {rt, r2, n } si y sólo si A (s, wo) = {n, n, >'k}- Es
decir, la igualdad se cumple para cadenas de longitud m + 1 si se cumple para
cadenas de longitud m. Entonces por lo anterior tenemos que 8 (5', vv) es unesta­
do de F si y sólo si A (5 , vv) contiene algún estado de F. Por tanto, M' acepta vv
si y sólo si M acepta w. □
Obsérvese que, en la demostración, el AFD M' correspondiente al AFN M
contiene muchos estados que no son accesibles desde el estado inicial. En la
práctica, es una buena idea empezar con s' y añadir estados sólo cuando son el
resultado de una transición desde un estado previamente añadido.
www.FreeLibros.com
70
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Ejercicios de la Sección 2.6
2.6.1. Construir el AFD correspondiente al AFN dado en la Figura 2.25. ¿Qué lengua­
je es aceptado por dicho autómata?
a
t
b
— ------------ > ®'<P>
_£>___________ |
Figura 2.25
2.6.2. Encontrar un AFN que acepte (ab u aab u aba)*. Convertir este AFNen un
AFD.
2.6.3. Encontrar un AFN para (a u b'faabab. Convertirlo en un AFD.
2.6.4. Supongamos que M es un AFN que ya es determinista. ¿Qué se obtendrá siapli­
camos a M la construcción dada en el Teorema 2.6.1 ?
8-TRANSICIONES
Podemos ampliar la definición de autómata finito no determinista para incluir
transiciones de un estado a otro que no dependan de ninguna entrada. Tales tran­
siciones se llaman 8-transiciones porque al realizarse no consumen ningún sím­
bolo de la entrada. Por ejemplo, los AFN de las Figuras 2.26 y 2.27 contienen etransiciones.
En el AFN de la Figura 2.26, el autómata puede cambiar su estado de cjo a
q\ sin consumir nada en la^entrada. Obsérvese que q\ es el único estado de acep­
tación de este AFN. Si w es cualquier cadena de 0 o más aes, este autómata cicla
sobre qo hasta que consume las aes. Una vez que la cadena se vacía, se desplaza
a q\ y lo acepta.
Figura 2.26
El AFN de la Figura 2.27 puede moverse del estado q 2 al estado qo sin con­
sumir nada en la entrada. En ambos AFN, la decisión de elegir una e-transición
se realiza de la misma forma que la de cualquier otra transición con elección
múltiple que exista en un AFN — basándose en algo que no determina el mode­
lo. Por tanto, las e-transiciones son consistentes con el matiz no determinista de
nuestra versión previa de AFN.
www.FreeLibros.com
LENGUAJES REGULARES
71
V
Figura 2.27
Si un AFN tiene e-transiciones, la relación de transición A asocia pares de
< 2 x ( E u { e})x (2 con subconjuntos de Q. Es decir, A es una relación sobre
Q x (E u {e}) x Q. Se puede añadir una columna en la tabla de A para colocar
los pares de la forma (q¡, e). jQuando hay e-transiciones en un AFN es conve­
niente suponer que cada estadoj tiene una 8-transición que cicla en ese estadoj
Usaremos esto para sistematizar el cálculo de los AFN. Es decir, el AFN de la
Figura 2.27 tendría la tabla de transición de la Figura 2.28.
A
a
b
e
<?o
í<7i)
0
0
<?i
0
i<?2Í
0
<72
{<7ol
0
í<?o)
Figura 2.28
Para tratar de calcular el conjunto de los estados siguientes de un AFN que
contiene e-transiciones, debemos tener en cuenta las e-transiciones “anteriores”
y “posteriores” a la transición etiquetada con o. Por ejemplo, consideremos el
AFN M dado en la Figura 2.29.
%
Figura 2.29
Como se ve en la Figura 2.29, el conjunto de estados siguientes al estado qo
mediante la entrada a es el conjunto {q\,qn} debido a la 8-transición que hay
después de la transición con a. Igualmente, el conjunto de estados siguientes
siendo q\ el estado actual y b la entrada, es el conjunto [qo, q2, qs} debido a la etransición que existe antes de tomar la transición con b. Obsérvese que
A (qo, ahubbb) - {qo, q s } con lo que ababbb es aceptada por M.
www.FreeLibros.com
72
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Se puede sistematizar el proceso para calcular el conjunto de los estados si­
guientes en un AFN con £-transiciones. Para todo estado q e Q, definimos la ecerradura de q como
e - c (q) = [p \p es accesible desde q sin consumir nada en la entrada}
Ampliaremos está definición para todo el conjunto de estados de la siguiente
manera
71
({?/]»q¡2> •••>q¡„}) —i_J e—c iq¡k)
k= 1
Por ejemplo, para el AFN de la Figura 2.30, se tiene que
e -c f e ) = {4 3 }
Figura 2.30
ya que cada estado es accesible desde sí mismo sin consumir ningún carácter de
la entrada. También se obtiene
e -c (qo) = {qo, q \ ,q 7 )
e -c (4 4 ) = {<7 1 , <72 , <74 }
Para q e Q y o 6 X se define
d (q, a ) = {p | hay una transición de q a p etiquetada con o}
La colección d (q, a ) es la colección de estados que “siguen” directamente a
q pasando por la transición etiquetada con a. Ampliaremos la definición de d a
los conjuntos como sigue
www.FreeLibros.com
LENGUAJES REGULARES
73
d{{q¡v q¡2,.... q¡„}, C) 'J d(q¡k, a)
k; - I
Por tanto, en el ejemplo precedente se tiene que
d O/o, a) = {(¡i]
dUto,b) = 0
d({cjy, < } ,b ) = \qfí,qi)
Obsérvese que e -c (d (q, o)) es el conjunto de todos los estados accesibles
desde q, primero mediante una transición con es y después mediante una o más
e-transiciones. Por otro lado, d i(q), o)
el conjunto de todos los estados
accesibles desde q tomando primero una o más e-transiciones y después una
transición con i-.
Finalmente, obsérvese que e -c id (e-c O/i a)) es el conjunto de todos los
estados accesibles desde q tonua. . primero ;a o más e-transiciones, después
una transición con a y, por último, una o más ¿-transiciones. Téngase en mente
que permanecer en un estado es como ,o; ir una e-transición. Por tanto,
e -c (d (e -c (q), a)) es el conjunto
todos i
nados siguientes al actual q me­
diante la entrada a . Esto sister
el cál;
;e conjuntos de estados siguien­
tes. Primero se obtiene e -c (q). ; o se c; \ -i:, d (e-c (q), o) y después se ob­
tiene la e-cerradura del conjunto do estados : -.antes.
Ejemplo 2.7.1
Considérese el AFN c, í-transicioncs dado en la Figura 2.31. Usando la
fórmula anterior, obtendremos el conjunto ee los estados siguientes al estado q
por medio del símbolo de la entrada a:
F ig u ra 2.31
www.FreeLibros.com
74
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
£-c(<7o) = {<70, <71 }
d (e-c (q0), a) = {q^, <74}
e-c ({<73, <?4}) = {^i, <73,<74,<75}
Así, mediante la entrada a, el conjunto de los estados siguientes es
[quq-i, <74, qs)-Es decir, A (<70, a) = {<71 , <73, <74, 9 5 }A partir de un AFN M = (Q, E, 5 , F, A) que tiene e-transiciones, se puede
construir un AFN sin e-transiciones que acepte el mismo lenguaje. Se define
M' = (Q, E, s, F , A') como
F = F u {q \& -c(q )n F * & )
y A' (q, a ) = e - c (d (e -c (q), a)), como antes.
Obsérvese que el autómata transformado M' no contiene e-transiciones.
Ejemplo 2.7.2
El AFN de la Figura 2.31 se transforma en el AFN de la Figura 2.32, cuan­
do todas las e-transiciones son eliminadas mediante el proceso anterior.
b
Entonces, se deduce que la colección de lenguajes aceptados por los AFN
con e-transiciones es la misma que la aceptada por los AFN sin e-transiciones.
Se ve fácilmente que la proposición inversa también es cierta. Por tanto, todos
nuestros autómatas aceptan la misma colección de lenguajes. Para construir un
autómata tendremos tres alternativas a elegir. Como veremos posteriormente, el
uso de e-transiciones es conveniente para unir autómatas finitos.
www.FreeLibros.com
LENGUAJES REGULARES
75
Ejercicios de la Sección 2.7
2.7.1. Calcular A (qo, abb) y A (c/o, abcrb) para el AFN de la Figura 2.29.
2.7.2. Obtener £-c ({<7 1 , ¿74}) para el AFN de la Figura 2.30.
2.7.3. Obtener e-c (el (<73, /»)) en el AFN de la Figura 2.30.
2.7.4. Usar la técnica estudiada para calcular A Ui¡, b) en el Ejemplo 2.3. i .
2.7.5. Para el AFN dado en la Figura 2.33; (a) obtener la tabla de transición
para A,(b)
obtener la ¿-cerradura (q¡) para i - 0, 1,2, y (c) calcular A (qo, a), A (qo, b) y
A (qo, c) para la Figura 2.33.
a
—
b
a
p a
q0
Q,
e
p a *
» • ---------------- > • ---------------- >®
q2
Figura 2.33
2.7.6. Para el AFN del Ejercicio 2.7.5, obtener el AFN que se obtiene al eliminar las
e-transiciones. Dar la tabla para A'.
AUTÓMATAS FINITOS Y EXPRESIONES REGULARES
Hasta ahora, hemos tratado de la relación entre autómata finito y expresiones re­
gulares de una forma intuitiva. En esta sección, formalizaremos dicha relación
por medio del teorema de Kleene (Teorema 2.8.4). De momento, vamos a ver al­
gunas propiedades de los lenguajes aceptados por autómatas finitos.
Para un alfabeto I se pueden construir los AFN (y los AFD) que acepten
palabras unitarias. Por ejemplo, el AFN de la Figura 2.34 acepta el lenguaje uni­
tario {«}. Para ello se puede construir, incluso, una AFN que acepte el lenguaje
vacío 0. Dicho AFN se muestra en la Figura 2.35. Obsérvese que este autómata
no acepta ninguna cadena.
------- --------------------- f----------------- >®
Q,
%
Figura 2.34
------ >.
Figura 2.35
Supongamos que M\ - (Qj, I i , .vi, F¡, Ai) y M 2 = (Q 2, E 2 , i'2 ,'^ 2 , A2) son
AFN. Podemos unir Mi y M i en un nuevo AFN que acepte L ( M í ) k j L ( M 2),
añadiendo un nuevo estado inicial s y dos e-transiciones, una de s a íj y otra de s
a s2. La construcción formal de este nuevo AFN M = (Q ,Z , s, F, A) viene dado
por X = I i u £ 2, F = F\ u F i y Q = Qi u £>2 u {5 }, donde 5 es el nuevo estado
www.FreeLibros.com
76
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
inicial y A se define de forma que se incluyan todas las transiciones de Ai, A2 y
las dos nuevas e-transiciones de s a si y s2. Conviene considerar las relaciones
de transición Ai y A2 como colecciones de ternas ordenadas á t Q \ X 'L y .Q \ y
f t x l x Q2, donde (q, a, p) significa que existe una transición de q a p median­
te el carácter a (es decir, p e A, (q, a)). Usando esta notación se puede definir
A = Ai u A 2 u {(i, 8 , ¿ 1 ), (s, e, 5 2)}
Por ejemplo, los AFN de la Figura 2.36, los cuales aceptan ab* y (ab)*, res­
pectivamente, se pueden unir formando el autómata con e-transiciones de la Fi­
gura 2.37, el cual acepta ab* u (ab)*.
®■
qy
-»•
q-2'
Figura 2.36
b
Figura 2.37
Sean M\ = (Q\, I i , 5 j, F\, Ai) y
= (Qi, I 2, s2, F2, A2) dos AFN. Podemos
unirlos para formar un AFN que acepte L (M\) L (M2). Se necesita un AFN que
reconozca una cadena de L (M¡) y después reconozca una de L (M2). Es decir, un
recorrido hasta un estado de aceptación para admitir la cadena en su totalidad,
primero debe pasar por un estado de aceptación de M\ y después pasar (y term i­
nar) en un estado de aceptación de M 2. Esto se realiza de forma no determinista
www.FreeLibros.com
LENGUAJES REGULARES
77
pasando del estado final de M\ al estado inicial de Mj_ por medio de una e-transición.
Por ejemplo, los AFN de la Figura 2.38 aceptan los lenguajes {a} y {¿},
respectivamente. Uniéndolos como hemos dicho, se obtiene un AFN que acepta
el lenguaje {ab} (véase la Figura 2.39).
----- » . ----------- ---------- » ®
q;
----- > . ---------- - --------- > ®
q;
qy
q?
Figura 2.38
®
ay
Qf
Figura 2.39
Obsérvese que el autómata que se obtiene tiene como estado inicial el esta­
do inicial de M\ y como estado(s) final(es) el(los) estado(s) final(es) de M2. Por
tanto, el AFN M = (Q, Z, s, F, A) que acepta L (M \) L (M2) viene dado por
Q = Q\ u Qi
S = S\
F = F2
A = Ai u A 2 u (F\ x {e} x {í2})
La relación de transición A incluye todas las transiciones presentes en los
dos AFN junto con todas las ternas de la forma (q, £, ¿2 )* donde q es un estado
de aceptación de M \ . Es decir, s2 e A (q, £) para todo q e F\,
Se puede deducir un procedimiento para construir una AFN que acepte
L (A/)* para el AFN M = (Q, £, s, F, A), como sigue. Primero, se añade un nuevo
estado inicial / ; se hará que este estado sea además un estado de aceptación con
el fin de que £ sea aceptada. Entonces, se permite una £-transición desde s a el
antiguo estado inicial s. Por tanto, M comenzará una vez que M' se encuentre en
s'. Se tendrá además, una £-transición desde todos los estados de aceptación has­
ta el estado inicial s'. Una vez que la cadena de-L(M) ha sido agotada, el análisis
puede continuar a partir del estado inicial de Af o terminar en s'. El autómata re­
sultante será Af = (Q Z, s', F , A'), donde
www.FreeLibros.com
78
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Q' = Q v { s ' }
A' = A u { ( / , e ,.v ) } u ( F x {e} x {5'})
Obsérvese que en la definición de A' se incluyen las e-transiciones necesa­
rias además de las del AFN M original.
De la discusión anterior se obtiene el siguiente teorema.
Teorema 2.8.1. El conjunto de lenguajes aceptados por un autómata finito sobre el al­
fabeto Z contiene 0 y los lenguajes unitarios {fl} para todo a e Z. Este conjunto
es cerrado con respecto a la unión, concatenación y la cerradura de estrella.
Dada una expresión regular r para construir un AFN (con e-transiciones en
todos los casos excepto para expresiones regulares triviales), podemos aplicar
las técnicas precedentes a los términos de las expresiones regulares. Por tanto,
todo lenguaje regular es aceptado por un autómata finito. Lo recíproco también
es cierto, como veremos en el Lema 2.8.3. Es decir, todo lenguaje aceptado por
una autómata finito es también un lenguaje regular. Por lo tanto, el conjunto de
los lenguajes regulares es el mismo que el conjunto de los lenguajes aceptados
por un autóm ata finito (Teorema 2.8.4).
Consideremos el autómata finito M = (Q, Z, ,v, F, A) y supongamos que
s = qo es el estado inicial. Para todo estado q¡, sea
A¡ = {vt> e Z*| A (q\, vv) n F ^ 0}
Es decir, A¡ es el conjunto de las cadenas sobre Z que hacen que M pase des­
de q¡ hasta un estado de aceptación. Se dice que A¡ es el conjunto de las cadenas
aceptadas por el estado q¡. Obsérvese en que /Ao = L (M). Adviértase, también,
que es posible que A¡ = 0. Si qt e F, entonces se obtiene que £ e A¡.
Como ejemplo, consideremos el autómata finito de la Figura 2.40. En el
mismo, se tiene que
A5 = 0,
A2- e
A 4 = e,
A i= b
A¡ = a,
Ao = a b u ba
Supongamos que q¡ e A (q¡, a). Entonces A¡ contiene a oAj. De hecho, se
tiene que
A; = u {oAj\qj e A (q¡, o ) }
www.FreeLibros.com
LENGUAJES REGULARES
79
->®
^4
Figura 2.40
Esto proporciona las técnicas recursivas básicas para obtener una expresión
regular a partir de un autómata finito. Como muestra, consideremos el ejemplo
anterior. Obsérvese que
Ao = aA¡ u M 3 ,
A3 - Í 1A4 U M
A 1 = bÁ 2 u C1A.5,
A 4 = £ u aAs u bA$
A 2 = £ u aAf¡ u bA 5 ,
A5 = 0
5
Por tanto, se tiene un sistema de ecuaciones que se cumplen para L (Ai). Se
puede resolver por sustitución obteniendo que L (M) = a b u ba.
Considérese el autómata finito dado por la Figura 2.41. Del mismo modo se
obtiene que
Ao = «Ao u bA i
A] = £
•> ®
Figura 2.41
Resolviéndolo por sustitución, resulta que A q = üA q kj b y es imposible sim­
plificarlo más. El siguiente lema muestra cómo resolver esto para obtener
Ao = a b (que es lo que se espera tras inspeccionar el diagrama de transición).
Lema 2.8.2. (Lem a de A rden) Una ecuación de la forma X = A X u B, donde £ g A,
tiene una solución única X = A*B.
Demostración. Obsérvese que A~B = (A+ u £.) B = A +B U :B = Á (Á'B) u B. Por tanto,
A*B está contenida en toda solución. Supongamos que X - Á fB u C e s una solu­
ción, donde C n Á B = 0. Si se sustituye la expresión anterior en la ecuación
X = A X u B, se obtiene
www.FreeLibros.com
80
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
A * 5 u C = A (A * B u C )u 5
= A +B u AC u £
= A+B u S u AC
= (A+u e ) B u A C
= A*B u AC
Realizando en ambos lados la intersección con C se obtiene C = A C n C
(los otros términos son 0). Por tanto, C c A C . Pero, como £ £ A, la cadena más
corta de A C debe ser más larga que la cadena más corta de C. Esto contradice
que C c / l C a menos que C = 0. Luego se debe tener que C = 0 y, por tanto, A*B
es la única solución. □
Consideremos el autómata finito de la Figura 2.42. Aquí se tiene
Ao = aA i
A\ = aAi u bA$
A i —aA 3 u bAá,
A3 = £U ClAj U ¿A4
Figura 2.42
Sustituyendo y aplicando el lema de Arden cuando sea necesario, se obtiene
A4 = b*
A3 = (7A3 u b+ u £
í: 7Íí
=a b
A 2 = a+b * u b+
A 1 = a (a+&* u ¿>+) u b+
—aa+b* u ab+ u b+
Ao = üA\
= a1 a+b* u a2 b+ u ab+
Entonces se deduce el siguiente lema.
www.FreeLibros.com
«■
LENGUAJES REGULARES
81
Lema 2.8.3. Sea M un autómata finito. Entonces existe una expresión regular r para la
cual L (/•) = L (M).
Del Lema 2.8.3 junto con las observaciones anteriores al Teorema 2.8.1, se
obtiene el teorema de Kleene.
Teorema 2.8.4. (Kleene)
mata finito.
Un lenguaje es regular si y sólo si es aceptado por un autó­
Ejercicios de la Sección 2.8
2.8.1. Obtener un AFN que acepte e.
2.8.2. Obtener un AFN que acepte {a}. Obtener otro AFN que acepte {/>}. Usar las
técnicas vistas en esta sección para unir estos AFN en uno que acepte el lengua­
je [a, b}.
2.8.3. Obtener un AFN que acepte (a u b)* kj (abá)+■
2.8.4. Obtener un AFN que acepte todas las cadenas de la forma bowwow, bowwowwow, bowwowwowwowwow,... Conseguir un AFN que acepte todas las cadenas
de la forma ohmy, ohmyohmy, ohmyohmyohmy, ... Unir los dos AFN para que
se acepte la unión de los dos lenguajes. Téngase en cuenta que los símbolos de
un alfabeto no tienen por qué ser caracteres de longitud uno.
2.8.5. Sea M\ dado por la Figura 2.43 y M2 dado en la Figura 2.44. Obtener un AFN
que acepte L (Mi) L (Mi). Obtener un AFN que acepte L (Mi) L (Mi).
r
®q2
<7,
-> ®q4
^3®
t
Figura 2.43
Pa
Figura 2.44
2.8.6. Sean M, = ({^j, q2, qi), {a, b}, [qi\, {#i}, Ai) y M 2 = ({p\,pi,pi,p4},{0, 1},
ÍPíK [p\,pi\, Ai), donde Ai y A2 vienen dados en las tablas de la Fi­
gura 2.45. Obtener un AFN que acepte L(M\) L(Mi). Obtener un AFN que
www.FreeLibros.com
82
t e o r ía d e a u t ó m a t a s y l e n g u a j e s f o r m a l e s
acepte L{Mi) L(M\) L{M\). Obtener finalmente, un AFN que acepte
(L(M,))2u L (M ,).
0
1
A
A
a
b
P\
\Pl\
0
<7i
(42, <?3)
0
P2
0
[P)>P4}
<72
0
{?i}
P3
{P2}
0
<73
lí3l
(<?3)
P*
Íí>3}
0
Figura 2.45
2.8.7. Obtener un AFN para (ab)* a partir de los AFN que aceptan {a} y {b}.
2.8.8. Obtener un AFN para (aa u b)* (bb u a)* a partir de los AFN que aceptan {a}
y [b).
2.8.9. Obtener un AFN para
((a u b) (a u b))* u ((a u b) (a u b) {a u b))*
a partir de los AFN para {a} y {£>}.
2.8.10. Si M = (Q,?,, s, F, 8) es un autómata finito determinista, entonces el comple­
mento de L (M) [es decir, £* - L (M)) es aceptado por el autómata M (<2, Z, s, Q - F, 8). [M' es un AFD o un AFN? Obtener un AFD que acepte
ab*ab. Obtener un autómata finito que acepte {a, b}* - ah"ab.
2.8.11. Demostrar que A¡ =
{aAj| q¡ e A (q¡, a)}.
2.8.12. Obtener una expresión regular para el lenguaje aceptado por el autómata finito
de la Figura 2.46.
->
Figura 2.46
www.FreeLibros.com
83
LENGUAJES REGULARES
2.8.13. Obtener una expresión regular para el AFD de la Figura 2.47.
a
-> ®
0
a, b
Figura 2.47
2.8.14. Obtener una expresión regular para los lenguajes aceptados por cada uno de los
autómatas de la Figura 2.48.
a, b
a. )
®
-
________I í_
a, b
ft
-» ®
b. )
c. )
<?3
d. )
r
o
a'
b
a, b
. -----—-----> ® í ^
,Q4
<h
a
Figura 2.48
www.FreeLibros.com
84
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
PROPIEDADES DE LOS LENGUAJES REGULARES
Los resultados de la última sección establecen la conexión entre autómata finito
y expresión regular. Todo lo que es verdad para lenguajes regulares también es
verdad para lenguajes aceptados por un autómata finito y viceversa. Así, por
ejemplo, la colección de lenguajes regulares es cerrada con respecto a la conca­
tenación, unión y cerradura de estrella porque los lenguajes aceptados por un au­
tómata finito también lo son (Teorema 2.8.1).
Es importante preguntarse si, dado un lenguaje L, ¿L es regular? Desde lue­
go, si L es finito, es regular y se podrá construir un autómata finito o una expre­
sión regular para ellos de forma sencilla. También, si L es especificado ya sea
por medio de un autómata finito o por una expresión regular, la respuesta es ob­
via. Por desgracia, hay relativamente pocos lenguajes que sean regulares y, en el
caso de un lenguaje infinito, la búsqueda exhaustiva de una expresión regular o
un autómata finito puede resultar inútil. En este caso, se necesita obtener algunas
propiedades que compartan todos los lenguajes regulares infinitos y que no estén
presentes en los lenguajes no regulares.
Supongamos que un lenguaje es regular y que, por tanto, es aceptado por un
AFD M = (Q, Z, s, F, 5), donde Q contiene n estados. Si L (M) es infinito, podre­
mos encontrar cadenas cuya longitud sea mayor que n. Supongamos que
w = o\ a 2 ... a,, + i es una de las cadenas de longitud n + 1 que pertenece a L (Ai).
Si tuviéramos
q\ = 8 (.?, a \)
<72 = 8
(^ 1 , ai)
y así sucesivamente, obtendríamos los n + 1 estados, q\, q i , ..., <?„+ j. Puesto que
Q contiene sólo n estados, los q¡ no serán todos distintos. En consecuencia, para
algunos índices j y k, con 1 < j < k < n + 1, se obtendrá que q j-q k - Por lo tanto,
tendremos un ciclo en el camino que parte de s hasta un estado de aceptación,
según se muestra en la figura 2.49.
www.FreeLibros.com
LENGUAJES REGULARES
85
Figura 2.49
Puesto que j < k, se tiene que la “parte central”, es decir, aj+ i ...
tiene al
menos longitud 1. Obsérvese además que la cadena w' = a i ... a¡ ci^ + i ... an+\
debe pertenecer también a L (M). Por esto, se puede dar vueltas en el ciclo tantas
veces como se quiera, de forma que a\ ... aj(aj+ i ... cik)m cik+\ ... an+\ estará
en L (M) para todo m > 0. Es decir, se puede “bombear” cero o más veces la par­
te central y seguir teniendo una cadena que sea aceptada por el autómata. For­
malizaremos esto en el siguiente lema, conocido como lema de bombeo.
Lem a 2.9.1. Sea L un lenguaje regular infinito. Entonces hay una constante n de forma
que, si w es un cadena de L cuya longitud es mayor o igual que n, se tiene que
w = uvx, siendo uvl x e L para todo i > 0, con | v| > 1 y | uv\ <n.
El lema de bombeo presenta una propiedad que debe tener todo lenguaje re­
gular y nos facilita una forma de determinar si un lenguaje no es regular. Para
demostrar que un lenguaje no es regular, se mostrará que, para cualquier valor n
lo bastante grande, se tendrá al menos una cadena de longitud n o mayor que fa­
lle al ser “bombeada”.
Por ejemplo, considérese el lenguaje
L = \ a ? \ i > 1}
Toda cadena de L debe tener una longitud que sea un cuadrado perfecto. Su­
pongamos que L es regular y sea n la constante dada en el lema de bombeo. Ob­
sérvese que a'r e L y que, por el lema de bombeo, tenemos a" = uvx de forma
que 1 < | v| < n y u v l x e L para todo i > 1. Entonces se obtiene que
n2 - \uvx\
< I uv2x I »
< n2 + n
< (n + l) 2
www.FreeLibros.com
86
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Es decir, la longitud de uv2x se encuentra, estrictamente, entre cuadrados
perfectos consecutivos y, por tanto, no es un cuadrado perfecto. Luego uv2x no
puede pertenecer a L. Es decir, L no puede ser regular.
Ejemplo 2.9.1
Consideraremos otro ejemplo. Sea el lenguaje L - {a"'bm\m >Q}. Se ve
claramente que L es infinito y, si L es regular, podremos aplicar el lema de bom­
beo. Sea n la constante del lema y consideremos anbn, cuya longitud es mayor
que n. Tendremos por tanto, que anbn = uvx para las cadenas u, v y x con | v| > 1
y \uv\ <n. Nos centraremos en v, teniendo en cuenta que \uv\ < n fuerza a
que v esté formado sólo por aes. Supongamos que v = as para ,v> 1. Entonces,
si u = ar, se tiene que x= an~<
'r+s)b". De lo que se deduce que u ^ x ara 2sa”~l'r+^bn = an+sbn. Dado que s> 1, la cadena no puede pertenecer a L.
Por tanto, L no puede ser regular ya que no satisface el lema de bombeo.
Que {anbn \ n > 0) no sea regular y, por tanto, no sea aceptado por un autómata
finito saca a la luz las propiedades comunes a todos los lenguajes regulares. Du­
rante el análisis de una cadena por medio de un autómata finito, sólo tenemos a
nuestra disposición, en cada paso, el estado y el símbolo actual. Cuando analiza­
mos las bes no tenemos información sobre cuántas aes han sido analizadas.
Otra forma de decirlo es que la cantidad de memoria necesaria para aceptar
o rechazar una cadena debe ser limitada. Si consideramos los estados como me­
moria, el hecho de que el conjunto de estados sea finito provoca dichas limita­
ciones. Podríamos construir un autómata de estados no finito, que aceptara dicho
lenguaje. Podría estar formado por un estado inicial que también fuera estado de
aceptación, con un camino para cada a”bn, para todo n > 0. Véase la Figura 2.50.
Obsérvese que hay un número infinito de estados, por lo que la memoria en esta
clase de autómatas no está limitada.
www.FreeLibros.com
LENGUAJES REGULARES
87
Además de ser una herramienta que determina si un lenguaje es regular, el
lema de bombeo proporciona los medios necesarios para determinar si un autó­
mata finito acepta cualquier lenguaje no vacío y si el lenguaje aceptado es finito
o infinito.
Teorem a 2.9.2.
Sea M un autómata finito con k estados.
1.
L (M)
0 si y sólo si M acepta una cadena de longitud menor que k.
2.
L (M) es infinito si y sólo si M acepta una cadena de longitud n, donde
k < n < 2k.
Demostración. 1. Si M acepta una cadena de longitud menor que k. entonces
L (M) * 0 . A la inversa, supongamos que L (M) * 0. Entonces existirá algún
w e L (M). Necesitamos probar que L (M) contiene una cadena de longitud me­
nor que k. Si | w\ <k, quedará probado. Sin embargo, supongamos que | w\ >k.
Gracias a lo expuesto con anterioridad al Lema 2.9.1, sabemos que debería haber
un ciclo en el camino que se recorre para aceptar w y por tanto, se puede poner
que w —uvx para algunas cadenas u, v y x, donde u es la parte anterior al ciclo, v
es la parte del ciclo y x es posterior al ciclo. Por tanto, | v¡ > 1 y se tiene que
u v lx e L (M ) para todo ?>(). En particular, u x e L(M ). Si |mx| <k, quedaría
probado. Apliquemos ahora el proceso anterior a u x Obsérvese que
| mjc| < | iivx | , de modo que de aplicaciones repetidas del proceso precedente,
eliminando cada vez la subpalabra “central”, siempre que la cadena siga pertene­
ciendo a L (M), podrá obtenerse una cadena de L (M) cuya longitud será menor
que k.
2.
Supongamos que w e L ( M ) con k < \ w \ <2k. En lo visto antes del
Lema 2.9.1, se estableció que M debe tener un ciclo en el camino que acepta w
y, por tanto, w - uvx para algunas cadenas u, v, x con | v j > 1. En consecuencia,
uv'x e L (M) para todo i, con lo que L (M ) es infinito. Al contrario, supongamos
que L (M) es infinito. Entonces no todas las cadenas pueden tener longitud me­
nor que k, y por tanto existirá alguna cadena w e L (M) cuya longitud sea al me­
nos k. Si | w | < 2k, quedaría probado. Si no, aplicando a w la construcción ante­
rior al Lema 2.9.1, se obtiene w - u v x , donde | vj > 1 y \uv\ <k, con lo que
| v| <k. Ahora tenemos que |w¡ > 2 k y que | v | <k, lo que produce que
\ux\ >k. Como en la parte 1, si \ux\ < 2 k, quedaría probado. De lo contrario,
aplicaremos repetidamente este proceso a u x hasta encontrar unir cadena cuya
longitud se encuentre entre k y 2 k - 1. □
v
El Teorema 2.9.2 nos proporciona un procedimiento para decidir si L (M) es
vacío y si L (M) es finito o infinito. Dado que los alfabetos son colecciones fini­
tas, podemos realizar dichos procedimientos en tiempo finito, con lo que pode-
www.FreeLibros.com
88
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
mos afirmar que los mismos nos facilitan algoritmos para resolver dichos pro­
blemas. Sin embargo, dichos algoritmos no son particularmente eficientes. Para
los AFD hay una forma más rápida de poderlo realizar, eliminando los estados
que, para cualquier entrada, no sean alcanzables desde el estado inicial. L (M) no
será vacío si queda algún estado final. Entonces, si se eliminan todos los estados
no finales desde los cuales no pueda ser alcanzado ningún estado no final y com­
probamos los ciclos, se puede determinar si L (M) es finito o infinito.
Los problemas del final del capítulo tratan otro problema de decisión, la
equivalencia de lenguajes regulares.
Una vez que hemos visto algunos ejemplos de lenguajes no regulares, hay
otras técnicas para comprobar la regularidad además de usar el lema do bombeo.
Supongamos que L y K son lenguajes sobre X. De las leyes de De Morgan
para conjuntos se obtiene que
(X* - L) u (X* - K) = X* - (L n K)
Por tanto, se tiene que
L n K = X* - (X* - ( L n K ) )
= r - ((X* - L ) \ j (I* - K))
Entonces, por el Ejercicio 2.8.10, sabemos que, si L y K son aceptados por
un AFD, entonces X* - L y X - K también lo son. Por tanto, si L y K son regula­
res; entonces X* - L y X* - K también lo son. También sabemos que la unión de
lenguajes regulares es regular, así que (X" - L) u (X* - K) es regular y su com­
plemento X* - ((X' - L) u (X* - K)) también es regular. Por tanto, L n K e s re­
gular cuando L y K lo son.
La intersección es una técnica muy usada para determinar la regularidad de
los lenguajes. Por ejemplo, sea X = {0. 1, 2, 3, 4, 5, 6, 7, 8, 9}. Entonces, el len­
guaje de los enteros no negativos viene dado por L ¡ = 0 u {1,2, ...,9} X*. El
lenguaje de todas las cadenas de dígitos terminadas en 0, 2, 4, 6, u 8 viene dado
por L 2 = X* {0, 2, 4, 6, 8}. Obsérvese que ambos son regulares. El lenguaje de
todos los enteros no negativos divisibles por 2, vendrá dado por L = L\ n Lz y
también será regular.
Ejemplo 2.9.2
Sea £ = { « , b}. Usaremos la intersección para probar que el lenguaje
L = {h’vv7Jir e X’} no es regular. Primero, fíjese que por el lema de bombeo
L\ = {a"b2ka"\n, k>()} no es regular. Segundo, Li = {akb"am\k, n, m> 0} es re­
gular (se denota mediante la expresión regular ab*a). Finalmente, obsérvese
www.FreeLibros.com
LENGUAJES REGULARES
89
que Lo in L = L\. Si L fuera regular, entonces L\ sería regular. Por tanto, L no
puede ser regular.
Ejercicios de la Sección 2.9
2.9.1. Probar que {ap\p es primo) no es un lenguaje regular.
2.9.2. Probar que {a"bd"bam*" | n, m > 1} no es un lenguaje regular.
2.9.3. Determinar si los siguientes lenguajes son regulares y decir o probar por qué si
o
por qué no.
(a)
{cfb2i\i> 1}
(b)
{(<*)'|i a i}
(c)
{aln\n> {}
(d)
{a"b"‘a" + | ;¡, m > \ ]
(e)
{¿i2”| /z > 0}
(0
{w\w = w' para w e {a,b}*}
(g)
{wxw'\w, r e [a, b}+]
2.9.4. Usar el procedimiento del Teorema 2.9.2 para decidir si L (M) es finito o infini­
to según el autómata de la Figura 2.51.
b
. -------i ------ > ¿. ----------- I£--------- > ® -------------- i ------ > .i ------- b------ > .
T
a
t
]
a
i
Figura 2.51
2.9.5. Usar las afirmaciones posteriores alTeorema2.9.2 paradeterminar
si el AFD
de la Figura 2.52 acepta un lenguaje no vacío. Siel lenguajeno es vacío, deter­
minar si'el lenguaje aceptado es finito o infinito.
2.9.6. Sea l = { a ,b ] .
(a)
Construir los AFD que acepten a 'b y ab'.
(b) A partir de los AFD de la parte (a),construir los AFDque acepten X* - a b
y 2* - ab*.
(c) A partir de los AFD de la parte (b), construir un AFD que acepte la unión
(£* - a b ) u (L* -ab*).
(d) Usar el resultado de la parte (c) para construir un AFD que acepte el len­
guaje a*b n ab*.
www.FreeLibros.com
90
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
a
a,
a, b
b
Figura 2.52
2.9.7. La construcción del Ejercicio 2.9.6, aunque efectiva, no es particularmente efi­
ciente. En la parte (c) se obtiene un AFN a partir de la unión y después se trans­
forma en un AFD para la intersección de lenguajes regulares sobre el mismo al­
fabeto haciendo uso del producto cartesiano. Sean M\ = (Q¡, Z, sj,
8 i) y
M2 = (Q2, £, í 2 , F2, 62 ) dos AFD. Definir M = (Q¡ x Q2, I , (su s2), F\ x F2, 5),
donde (sj, 52 ) denota los pares ordenados de estados. La función de transición 5
se define para todos los pares ordenados (q¡, p¡) 6 Q\ 'X Qi y para todo a e X,
por medio de
8
((<?,-, qj), a) = (81 (<7,, a),
82
(pj, a))
(a) Construir los AFD correspondientes a a b y ab* sobre Z = ¡a. /;}.
(b) Usar esta técnica para construir directamente un AFD que acepte
a b n ab*.
2.9.8. Usar el lema de bombeo para probar que no es regular el lenguaje L\ dado en el
Ejemplo 2.9.2.
2.9.9. Probar que {ww\ w e {a,b)*\ no es regular.
2.10
APLICACIONES DE LAS EXPRESIONES REGULARES
Y LOS AUTÓMATAS FINITOS
Los autómatas finitos se usan frecuentemente en los problemas que implican el
análisis de cadenas de caracteres. Tales problemas incluyen problemas de bús­
queda e identificación, tales como la búsqueda de la existencia de una cadena en
un fichero o el reconocimiento de cadenas de entrada que satisfagan ciertos cri­
terios. Un autómata finito es, él mismo, un modelo de un procedimiento parareconocimiento de cadenas por medio de la expresión regular asociada. Por tanto,
en la búsqueda de una cadena en un fichero, podemos aplicar el autómata finitc
www.FreeLibros.com
LENGUAJES REGULARES
91
de forma sistemática a las cadenas del fichero hasta que se acepta la cadena o se
termina el fichero.
Un problema común en la programación de computadoras es el de tener la
seguridad de que los datos de entrada de un programa son correctos. Por ejem­
plo, si se espera un entero sin signo como dato de entrada y el usuario confunde
uno de los dígitos con un carácter no numérico, se puede dar todo tipo de resul­
tados impropios, desde una terminación anormal hasta el cálculo de resultados
incorrectos (basura dentro, basura fuera). La programación cuidadosa pretende
construir un programa a “prueba de balas”, incluyendo unas rutinas de entrada
que analicen la información introducida por el usuario y, de alguna forma, pre­
venir que se aplique información incorrecta al programa. Si pudiéramos cons­
truir un autómata finito que aceptara solamente las cadenas que representan in­
formación correcta, entonces tendríamos un modelo para dicha rutinr. de entrada.
Puesto que los autómatas finitos se corresponden con las expresiones regulares,
el problema se reduce a especificar la información correcta por medio de expre­
siones regulares.
En el caso de que la entrada esté formada por enteros sin signo, el lenguaje
vendrá dado por / = {1, 2, 3 ,4 , 5, 6, 7, 8, 9} ■{0, 1, 2, 3 ,4 , 5, 6, 7, 8,9}*. Es fá­
cil construir un autómata finito que acepte / (véase Figura 2.53).
1, 2,
9
a
Cualquier
carácter
Figura 2.53
También es sencillo traducir el autómata finito a un código en un lenguaje
de programación; sólo se necesita seguir el rastro de la posición actual en la ca­
dena y del estado actual. A la vez que se recorre la cadena, se cambia de estado
según corresponda y, cuando se acaba la cadena, se comprueba a qué estado se
ha llegado y, según eso, se acepta o se rechazadla cadena.
Las expresiones regulares se pueden usar para especificar las unidades léxi­
cas presentes en un lenguaje de programación. Los autómatas finitos asociados
www.FreeLibros.com
92
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
se usan para reconocer dichas unidades (llamadas componentes léxicos). Dicho
análisis es una etapa importante en la compilación de programas de ordenador.
Por ejemplo, sea S el conjunto de caracteres de algún lenguaje de programación,
es decir, todos los caracteres que debe reconocer un compilador para dicho len/ guaje. Sea L c E el subconjunto de todas las letras y D c Z el subconjunto de to­
dos los dígitos. Supongamos que un comentario en dicho lenguaje comienza pol­
los caracteres
y termina con el símbolo de final de línea, el cual se denota
mediante eol. Entonces una expresión regular para el componente léxico conoci­
do como comentario es - -(L-eol)*eol.
Los identificadores del lenguaje pueden estar compuestos por letras, dígitos
y subrayados, deben empezar con una letra y deben terminar con una letra o un
dígito. Una expresión regular para estos componentes léxicos vendrá dada por
L ( ¿ u D u J * (L u D). Se puede construir un autómata fin io que reconozca
este lenguaje regular y, por tanto, escribir un código apropiado para el reconoci­
miento de identificadores.
En la etapa de análisis léxico de un compilador, hay un aspecto que'no
estaba presente en el ejem plo de los enteros como entrada y es el hecho de
que al tratar de reconocer un lexema se tienen distintas posibilidades. Por
ejem plo, si la cadena actual fracasa como comentario, nos gustaría com pro­
bar si puede ser un identificador y, si fracasa tam bién aquí, si puede ser cual­
quier otro com ponente léxico. Generalmente, en un compilador, el autómata
finito que reconoce todos los componentes léxicos está ordenado de alguna
manera y, sistem áticam ente, se aplica a la cadena hasta que se tiene éxito o
falla en todo. Si falla, la cadena no puede formar parte de un programa cons­
truido correctam ente.
Ejercicios de la Sección 2.10
2.10.1. Escriba un código, en su lenguaje de programación favorito, para implementar
el autómata finito de la Figura 2.53.
2.10.2. Escriba un programa, en su lenguaje de programación favorito, para implemen­
tar e! autómata finito que acepta enteros con signo y sin signo.
2.10.3. Escriba una rutina, en su lenguaje de programación favorito, que identifique nú­
meros reales con y sin signo (para simplificar, suponemos que los números re­
ales no vienen representados en notación exponencial, es decir, 1.23e-9).
2.10.4. Escriba una rutina, en su lenguaje de programación favorito, que identifique
una cadena como un entero con y sin signo, un numero real con y sin sigho,
un comentario o un identificador (mire el ejemplo que precede a los ejer­
cicios).
www.FreeLibros.com
LENGUAJES REGULARES
93
PROBLEMAS
2.1. El algoritmo de Moore. Sabemos que si L\ y Z,2 son lenguajes regulares sobre
X, entonces X* - L\ y 2T - L2 son lenguajes regulares y por consiguiente
L\ n (Z‘ - La) y ¿ 2 í" 1 (X* - L\) también lo son.
Sea L - {L\ n (X* - LO) u (¿ 2 ^ (X* - ¿ 1)) y obsérvese que, puesto que L
es regular, es aceptado por una autómata M. Por el Teorema 2.9.2, podemos de­
terminar si M acepta alguna cadena (es decir, si L = 0 o no). Pero obsérvese que,
si M acepta una cadena, entonces L contiene una cadena y, por tanto,
L\ n (X* - ¿ 2) y ¿ 2 ^ (2* - L\) no pueden ser ambos vacíos.
Supongamos que tenemos L\ n (X* - ¿ 2) s*0- Entonces existirá alguna ca­
dena que esté en L\ y no en ¿ 2, y por tanto L\ * Li. Igualmente, si ¿ 2 n (X* - L\) * 0 , también llegaremos a que L\ ■£¿ 2 - Por otro lado, si M no acepta nin­
guna cadena, entonces L = 0 y, por tanto, L\ n (X* - Li) y Li n (X* - L\) serán
ambos vacíos. Es decir, no hay ninguna cadena en L\ que no lo esté en ¿ 2, y vi­
ceversa, y así L| = La.
Hemos probado que hay un algoritmo para determinar si dos lenguajes re­
gulares son el mismo. Sin embargo, nuestro algoritmo no es particularmente efi­
ciente, ya que primero tenemos que construir el lenguaje L, obtener un AFD
para él y después determinar si dicho AFD acepta alguna cadena. A continua­
ción veremos un algoritmo mucho menos complejo que el de Moore.
Supongamos que M y M' son dos AFD sobre el alfabeto X. Para que la pre­
sentación sea lo más sencilla posible, supondremos que X= {a, b}. Primero re­
nombraremos los estados de M y M' para que todos los estados sean distintos.
Supongamos que q\ y q{ son los estados iniciales de M y M \ respectivamente.
Construiremos una tabla de comparación que (en este caso) consta de tres
columnas. Las entradas de cada columna son pares de estados (q, q'), uno de M
y otro de M’. La entrada de la columna 1 indica el par de estados que será trata­
do en la fila correspondiente. La entrada de la columna 2 es el par de estados
que sigue a los de la columna 1 mediante una transición con a. Del mismo
modo, la entrada de la columna 3 es el estado siguiente por medio de una transi­
ción con b.
Por tanto, si (q, q ) están en una entrada de la columna 1 y (p, //) y (r, r)
son las entradas de la columna 2 y la columna 3 para la misma fda, entonces
8 (q, a) = p, 8' (q a ) = p', 8 (q, b) = r y 8' (q\ b) = r son las transiciones de M y
M'. Construiremos la tabla fila por fila empezando por {q\, q f) como entrada de
la columna 1 y primera fila. En general, si (<7 , q ) está en la columna I de cual­
quier fila, rellenaremos la columna 2 y la columna 3 de fornp apropiada. Si
cualquiera de las entradas de la columna 1 y la columna 2 no están ya en la co­
lumna 1 se añadirán antes de seguir con la fila siguiente.
Siempre que en la tabla (y para cualquier columna) encontremos un par
(j), p') en el cual p es un estado final de M, pero p no es un estado final de M’ (o
viceversa), se parará el proceso ya que habremos llegado a la conclusión de que
www.FreeLibros.com
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
M y M' no son equivalentes. De otro modo, el proceso parará cuando no quede
ninguna fila por completar. En este caso, M y M' son equivalentes.
Por ejemplo, los AFD de la Figura 2.54 no son equivalentes porque su ta­
bla es (parcialmente) como sigue:
Columna 1
transición a
columna 2
transición b
columna 3
(<7 i.<7 i')
(quqi')
{qi,qí)
(<?2 , q i )
(<73. <?/)
(<7 1 . 93 ')
a
a
—>®
•
\<k
q3
Figura 2.54
Aunque la tabla no se ha completado, el proceso termina porque q\ es un
estado final del primer AFD, pero <73' no es un estado final del segundo. Por tan­
to, dichos AFD no son equivalentes.
El algoritmo de Moore se puede ampliar apropiadamente para cualquier al­
fabeto £. Simplemente se incluirá una columna para cada símbolo de X.
1.
¿Son equivalentes los AFD de la Figura 2.55 de la página 95?
2.
¿Son equivalentes los AFD de la Figura 2.56 de la página 95?
:.2. Considérese el AFD dado en la Figura 2.57 de la página 96. Obsérvese que cier­
tos estados se comportan de la misma forma para toda cadena de entrada. Por
ejemplo, si estamos en el estado q2 o q%y analizamos cualquier cadena de entra­
da no vacía, llegamos al mismo estado. De alguna forma la presencia de <72 y q%
es redundante.
www.FreeLibros.com
LENGUAJES REGULARES
a
®
a
3
- » ® i—
95
~—
ü / i b
a[
• <-
la
(J
Figura 2.55
-» •
-> ®
(7
a, fc>, c
Figura 2.56
Conviene obtener un AFD para un lenguaje que sea el AFD mínimo, en el
sentido de que tenga un número mínimo de estados. Esencialmente, lo que hare­
mos será eliminar todos los estados redundantes (según vimos anteriormente).
Sea M = (Q, 2, s, F, 8) un AFD. Los estados p y q son distinguibles si para
alguna cadena x de £*, se tiene que 8 (p, x) e F y 8 (q, x) & F, o viceversa. Si
todos los pares de estados son distinguibles, M no tiene estados redundantes y,
por tanto, ya es un AFD mínimo. Por otro lado, si M contiene uno o más con­
juntos de estados no distinguibles, se puede eliminar la redundancia reempla­
zando cada conjunto por un único estado.
www.FreeLibros.com
96
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Figura 2.57
Los pares de estados equivalentes (no distinguibles) se pueden encontrar
por medio de una tabla en la cual cada fila y columna corresponden a un estado.
Inicialmente, se marcan como distinguibles las entradas correspondientes a un
estado final y a un estado no final. Entonces, para cada par de estados que no se
conocen como distinguibles, se considera p(¡ = 8 (p, a) y qa = 8 {q, a) para todo
a e E. Si pa y qa son distinguibles por medio de la cadena x, entonces p y q son
distinguibles por medio de la cadena ax.
Así, si la celda correspondiente a p¡, y q„ está marcada para alguna a, mar­
caremos la celda para p y q. Si para todo a e X, no está marcada la celda corres­
pondiente a /?„ y q„. introduciremos (/;. q) en una lista asociada con (p„, qa) para
todo a. Si posteriormente se obtiene que p„ y q„ son distinguibles, se marcarán
también p y q. Puesto que las celdas simétricas con respecto a la diagonal co­
rresponden a los mismos pares de estados, necesitamos menos de la mitad de la
tabla. Es más, las celdas correspondientes a la diagonal son no distinguibles.
La tabla siguiente corresponde al AFD del ejemplo precedente.
<72
A'
<73
X
X
<74
X
X
X
X
X
<75
X
<76
X
X
X
<77
X
X
X
X
X
X
<78
X
X
X
X
X
X
<?3
<74
<?5
í/6
<77
q\
<72
X
www.FreeLibros.com
LENGUAJES REGULARES
97
Las colecciones de estados no distinguibles son {q\, q¡}, {q2, <?«}. {<y4, q6),
{ } y {<77}. En el AFD reducido que obtenemos reemplazaremos cada colec­
ción de estados no distinguibles por un único estado. Por tanto, el AFD reducido
para nuestro ejemplo es el de la Figura 2.58.
1.
3.
Obtener los AFD mínimos que correspondan a los AFD de la Figura 2.59.
Sea E = {(a, b, c) | a, b, c e {0, 1}} el alfabeto formado por todas las 3-tuplas de
ceros y unos. Trataremos cada 3-tupla como un vector columna, es decir,
Entonces, una suma binaria tal como
0011
+ 0101
1000
se puede interpretar como la cadena
1.
2.
1
0
v0
sobre X.
V/ \
Probar que el lenguaje L\ sobre Z, compuesto por todas las cadenas que
representan sumas binarias “correctas”, es un lenguaje regular.
Usar el lema de bombeo (Lema 2.9.1) para probar que el lenguaje L¿ for­
mado por todas las cadenas que representan productos binarios correctos
no es un lenguaje regular.
Hay muchas formas de tratar la adición. Cuando realizamos una
suma, generalmente sumamos los pares de dígitos correspondientes y un
valor previo para obtener un dígito resultante y un resto. Consideremos la
suma binaria donde el valor de entrada es un 0 ó un 1. Si el valor previo es
un 0, entonces se obtiene un resto sólo si el par de dígitos son dos unos. Si
www.FreeLibros.com
98
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Figura 2.59
el valor previo es un 1, entonces la única forma de que un resto no sea un 1
es que el par de dígitos a sumar sean dos ceros.
Vamos a usar la notación (x, y)/z para denotar el par de dígitos (x, y)
que representan a los sumandos y z para indicar el dígito que resulta al su­
mar x + y + (valor existente). Entonces, la suma binaria puede ser repre­
sentada mediante el diagrama de la Figura 2.60. Obsérvese que este diagra­
ma es muy semejante a un diagrama de transición de un autómata finito.
De hecho, tendremos dos estados distintos que corresponden a los valores
previos, y unas transiciones entre los estados que dependen de los dígitos a
sumar (entrada), así como de los valores actuales (estado), y de un estado
www.FreeLibros.com
LENGUAJES REGULARES
99
inicial (el valor es inicialmente 0). La única diferencia entre este diagrama
y el diagrama de transición de un autómata finito es que en éste la salida se
representa como el resultado de una suma.
( 1, 0)/0
(0,1 )/1
(0, 1)/0
(1 ,1)/1
( 0 , 0)/0
(1,0)/1
____ _______________________ (1.D /0
estado = 0 t ______________________(0, 0)/1
Q
-> •
__ l estado = 0
Figura 2.60
Un transductor de estados finito determinista (autómata que produce
una salida) es una 6-tupla M - (Q, Z, F, s, 8, x), donde Q es un conjunto fi­
nito de estados que contiene un estado inicial distinguible i ; E y F son alfa­
betos, siendo Z el alfabeto de entrada y F el alfabeto de salida; 8 es la fun­
ción de transición, donde 8: Q X X —> Q\ y x es la función de salida, donde
t ! ¡2 x e —^ r.
Obsérvese que, al igual que en los autómatas finitos vistos en este ca­
pítulo, 8 depende del estado actual y del símbolo de entrada actual, x tam­
bién depende del estado y la entrada actual y proporciona una salida.
Es importante notar que no hay ningún conjunto de estados finales.
Los transductores no se ocupan de aceptar la entrada, sino de transformarla
• en una salida. En este sentido, los transductores transforman cadenas de
entrada en cadenas de salida. Es decir, computan una función de Z” en F'.
3.
Considérese una máquina expendedora de latas de soda. Por sencillez, su­
ponemos que hay un botón de selección y que la soda cuesta 0.30 dólares.
También suponemos que, una vez que se han introducido 0.30 dólares en
la máquina, cualquier moneda que se introduzca posteriormente será de­
vuelta. Crear un transductor de estados finito determinista que modele el
comportamiento de la máquina expendedora.
4.
¿Cómo se debería construir el transductor de estados finito determinista
para que acepte un lenguaje?
2.4. Caracterización de los lenguajes regulares. L c cí. En la Sección 2.9 y en sus
ejercicios, vimos lenguajes no regulares de la forma
{a' | i satisface alguna condición}
Por otro lado, muchos lenguajes que son de esta forma son regulares, por
ejemplo, los lenguajes Li = {«A+' | i > 0} pafó k = 0 ,1 ,... Es razonable pregun­
tarse bajo qué condiciones es regular un lenguaje de estas características. En
este problema obtendremos un resultado que responderá a dicha pregunta.
www.FreeLibros.com
100
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Una progresión aritmética es una secuencia de números naturales igual­
mente espaciados. Por ejemplo. {4,7,10,...} es una progresión aritmética.
Toda progresión aritmética tiene dos parámetros que la determinan completa­
mente: el punto de partida p y la diferencia común q. Se puede definir una pro­
gresión aritmética en términos de esos dos parámetros:
Ap(/ = {x|x = p + nq para algún n e N}
Obsérvese que, según esta definición, un conjunto que contenga un único
número natural es una progresión aritmética con q - 0. Así, por ejemplo, {3} es
la progresión aritmética A30.
1.
Sea Ap(¡ una progresión aritmética. Probar que el lenguaje L dado a conti­
nuación es regular.
L= {a'\i e Apq}
Un conjunto X de números naturales es finalmente periódico si X es
finito o si hay dos números naturales «<j > 0 y t > 1 para los cuales, si
x > n 0, entonces x e X si y sólo si x + t e X. Por ejemplo, el conjunto
{2, 3, 7, 14, 103. 109. 115, 121, ...} es finalmente periódico con n0 = 103 y
t = 6 . Fíjese en que cualquier progresión aritmética Al>tl es finalmente perió­
dica ya que, si .v > p, entonces x e A,,(¡ si y sólo si x = p + nq para algún n,
si y sólo si x + q = p + (n + 1) q e Apq. Es decir, se puede tomar no - p y
t —<?•
2.
Probar que la unión de dos progresiones aritméticas es un conjunto final­
mente periódico.
3.
Probar que la unión de un conjunto X finalmente periódico con una progre­
sión aritmética Ai>t, es un conjunto finalmente periódico.
Obsérvese que los Ejercicios 2 y 3 implican que la unión finita de pro­
gresiones aritméticas es un conjunto finalmente periódico.
4.
Probar que todo conjunto finalmente periódico es la unión finita de progre­
siones aritméticas. Indicaciones: Obviamente, si X es finito queda probado.
Supongamos que X es infinito. El conjunto {*|,v < no) es finito. ¿Qué rela­
ción existe entre el conjunto finito {.v|no¿A'<«o + í! y el conjunto
{*|. í > « o + M?
El resultado de los Ejercicios 3 y 4 es que un conjunto X es finalmente
periódico si y sólo si es unión finita de progresiones aritméticas.
5.
Probar que si L e a * y {/Ifl'e L) es finalmente periódico, entonces L es
regular.
6.
Probar que si L c a* es regular, entonces {/1a' e L] es finalmente periódi­
co. Indicación: Aplicar el Ejercicio 4 y el lema de bombeo.
7.
Usar los Ejercicios 5 y 6 para probar que el lenguaje
www.FreeLibros.com
LENGUAJES REGULARES
101
L = {a"2|/i> 1)
no es regular. Indicación: Considere el conjunto
X= [n2\n > 1 }
¿Es finalmente periódico?
8.
Aplicar los Ejercicios 5 y 6 para probar que los siguientes lenguajes no son
regulares:
(a)
{ar \ n > \}
(b) {ap\p es un primo}
(c)
[an'\n > 1 }
2.5. Homomortismos y sustitución. El Teorema 2.8.1 demuestra algunas propieda­
des de cierre de lenguajes regulares: el conjunto de lenguajes regulares es cerra­
do respecto a la unión, concatenación y cerradura de estrella. En este problema
estudiaremos otras dos propiedades de esta clase de lenguajes.
Sean los alfabetos Ej y £ 2 . Una sustitución asocia cada símbolo a e I | con
un lenguaje SeX $. Formalmente, definiremos una sustitución como una fun­
ción / : Li —> 2Zi tal quef(a¡) =S¡, donde a¡ e £| y S¡ e 1%. Extender la sustitu­
ción a cadenas y lenguajes sobre £¡ dé forma que
/(£ ) = £
f(w a )= f(w )f(a )
donde w e Z’í y a s Zi.
Por ejemplo, sea I i = {a, b] y Z2 = {0, 1}. Se definen f(á ) = {011 }* y
f(b) = {1001, 01101}. Entonces
fia ba) = {011 }* {1001, 01101) {011 }*
<X>
f(ab*)
= |J
;=o
QO
O
O
f{atí) = \ J f ( a ) f ( b ') = (J
1=0
= {011}4 U
1=0
{011 }* {1001, 01101 }¡
{1001,01101}* = {011}'' {1001,01101}*
1=0
1.
Sean los alfabetos X | y £2 y /u n a sustitución, donde, para todo a e Z 1,
f(a ) —R„ c Li es un lenguaje regular. Sean a y b elementos de £).
(a) Probar q u c/(a u b) =f(a) <Jf{b).
(b) Probar que / (a") = / (a)*.
www.FreeLibros.com
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
(c) Sea /? c £| un lenguaje regular. Probar que f(R ) es un lenguaje regu­
lar. Indicación: Aplique inducción sobre el número de operadores en
una expresión regular para R.
Supongamos que/es una sustitución en la cual, para todo a e Zj,/(« )
contiene sólo una cadena. Dicha sustitución se llama homomorfismo. Si
L c £ 1 , se dice que f (L) es la imagen homomórfica del lenguaje L.
Si L e Z 2, se dice que/ “' (L) es la imagen homomórfica inversa del len­
guaje L.
Por ejemplo, sea / : {a, b, c) —> {a, b}* definida como f ( a ) - a ,
f{b) = ba y f(c ) = a. Entonces, si L\ = a* {b kj c)*, se obtiene que
/ (L]) = a*\ba u a)*. Si L2 = (aba u a)*, entonces la imagen inversa es
/ “' (L2) = {(a u c) a u (a u c))*. [Obsérvese que/(a) = /(c ) = a por lo que
/ ”’ (a) = a u c.] En este caso, L2 es un lenguaje regular y / - 1 (¿ 2) también
lo es. Esto, como se verá en el Ejercicio 2, no es una coincidencia.
2.
Probar que, si L es un lenguaje regular y / e s un homomorfismo, entonces
/~ ' (L) es un lenguaje regular.
La afirmación anterior se puede generalizar. Si / es una sustitución,
entonces/ “' (L) es regular si L es regular. Uniendo los ejercicios 1 y 2, se
tiene que la clase de lenguajes regulares es cerrada con respecto a la ima­
gen homomórfica y la imagen homomórfica inversa.
Puesto que los homomorfismos y sus inversas “preservan” la regulari­
dad, se pueden usar para determinar si un lenguaje es regular o no. La idea
es tomar un lenguaje que no se sabe si es regular y tratar de transformarlo
por medio de homomorfismos en un lenguaje regular o no regular cono­
cido.
Por ejemplo, se sabe que el lenguaje {anbn\n > 1} no es regular. Con­
sidere el lenguaje L = {a"ba" | n > 1}. Aunque el lema de bombeo se puede
aplicar para deducir que L no es regular, por medio de homomorfismos lle­
garemos a la misma conclusión. Supongamos que L es regular. Sea
/ : [a, b, c} —» {a, b}* el homomorfismo definido previamente y considere­
mos L\ = / " ' (L) = /~ ' ({anba"\n > 1}). Ya que/ “* (a) = a kj c, se obtiene
que
/ - ' (a"ban) = {a'daVba'c'a'c"\i+j + k + l = n
y r + s-f-f+M +l=/z}
Por tanto
/ -l (L) = {a'dakclba’csa 'c "\ i+ j + k + l = r + s + t + u + 1}
Entonces
/ “' (L) n a”be" = {a"bcn~ 11n > 1}
Ya que a’bc* es, claramente, regular y ya que suponemos que L es re­
gular y que / - 1 (L) es regular, debemos obtener que (anbc>'~ 1 1 n > 1 } tam-
www.FreeLibros.com
LENGUAJES REGULARES
103
bién es regular. Ahora sea g: {a ,b ,c J -¥ {a, b}* el homomorfismo defini­
do mediante g (a) - a y g (b) = g (c) = b. Entonces se tiene
g ( / " ' (L) n abe*) = g ({d'bc" ~ 11n > 1}) = {a"b" ¡n > 1}
Puesto que g es un homomorfismo, tendremos que {a"b"\n> 1} es
regular, lo que es una contradicción. Por tanto, no puede ser que
{a"ban\ n > 1} sea regular.
Probar que {a'b’c11i > /> 1} no es regular.
Probar que {a'ba' \ i ¿ j e i,j > 1} no es regular.
www.FreeLibros.com
Lenguajes independientes
del contexto
GRAMÁTICAS REGULARES
Las expresiones regulares y los autómatas finitos nos proporcionan dos medios
para especificar o definir lenguajes. Las expresiones regulares nos proporcionan
una plantilla o patrón para las cadenas del lenguaje. Todas las cadenas se corres­
ponden con un patrón en particular y dichas cadenas serán las únicas que forma­
rán dicho lenguaje. Igualmente, un autómata finito especifica un lenguaje como
el conjunto de todas las cadenas que lo hacen pasar del estado inicial a uno de
sus estados de aceptación. También se podría intexpretar un autómata como un
generador de cadenas del lenguaje, según se plantea a continuación. Un símbolo
se genera al recorrer el camino etiquetado con dicho símbolo y que parte del es­
tado actual al siguiente. Se empieza con la cadena vacía y se obtiene una cadena
del lenguaje cuando el recorrido llega a un estado de aceptación.
Por ejemplo, se considera el autómata finito dado por el diagrama de tran­
sición de la Figura 3.1. Este autómata finito acepta el lenguaje regular
a (a u bv) b. Imaginemos que se comienza en el estado inicial y se atraviesa el
diagrama de alguna forma. Cuando un camino va de un estado a otro, la “salida"
es el símbolo que etiqueta dicho camino. Por tanto se podría obtener la cadena
de salida aa2b pasando por los estados c¡\ - <72 - 1/3 - (¡3 - qj - <75 . Se ve fácilmente
que las cadenas generadas de esta forma serán aceptadas por este autómata fini­
to. Es más, cualquier cadena aceptada por este autómata puede ser generada por
este método.
www.FreeLibros.com
106
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
a
n
a
b
Figura 3.1
Obsérvese que todas las cadenas del lenguaje precedente estarán formadas
por una a seguida de alguna “parte final” . Si hacemos que E represente la parte
final, lo dicho se puede representar simbólicamente mediante S —>aE. La flecha
—> se puede interpretar como “puede ser” o “se compone de”. La parte final de
una cadena estará formada por una de las dos listas de aes o bes. Por tanto, para
indicar las múltiples posibilidades que hay para E podemos escribir E —»A y
E —> B. Las dos listas de aes y bes se pueden expresar como A —» aA junto con
A —>b para indicar que una cadena de aes va seguida de una b o como B ~ ^b B
junto con B —>b, para indicar que una cadena de bes va seguida de otra b.
En resumen, tendremos las siguientes expresiones
S —^ aE
E -^A
E ^B
A -> b
A —> aA
B ^b
B -^bB
Estas expresiones pueden ser consideradas como reglas de sustitución para
la generación de cadenas. El símbolo que se encuentra a la izquierda de la flecha
se puede sustituir por la cadena de la derecha.
Por ejemplo, podemos generar aab empezando por S, sustituyéndola por aE,
sustituyendo la E por aA y finalmente sustituyendo la A por b. Tendremos una
secuencia de cadenas comenzando por S y terminando con aab. En cada paso,
las letras mayúsculas (S, E y A) representan la parte de la cadena final que* toda­
vía no se ha generado. Bajo estas circunstancias tiene sentido interpretar la fle­
cha en las expresiones precedentes como “es sustituido por".
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
107
Finalmente, introduciremos el símbolo | que será interpretado como “o”. Si
se usa este símbolo, las dos reglas E —>A y £ —>B, se pueden unir en E —>A \B.
La colección precedente de reglas para generar cadenas puede volverse a escri­
bir como sigue:
1.
S —» aE
2.
E -* A \B
3.
A —> ciA | B
4.
B -$ b B \b
La cadena cr’b se puede generar a partir de 5 aplicando primero la regla 1
para obtener aE. Entonces, aplicando la reglí1 2 se obtiene aA y aplicando la re­
gla 3 se obtiene aaA y aaaA\ finalmente, se puede aplicar la segunda parte de la
regla 3 para obtener aaab. Podremos escribir una descripción del proceso de ge­
neración como
S => aE => aA => aaA => aaaA => aaab
donde la doble flecha => se interpreta como “deriva”, “produce” o “genera”.
Usaremos la notación E ^ > w para indicar que la cadena w se deriva a partir de 5
en 0 o más etapas.
Obsérvese que en este modelo hemos introducido una colección de nuevos
símbolos para representar las porciones de cadena que no han sido generadas.
Cuando las cadenas han sido completamente generadas, estarán formadas en su
totalidad por símbolos del alfabeto £, pero antes de llegar a esto se obtendrán ca­
denas formadas por símbolos del alfabeto y por nuevos símbolos. Los nuevos
símbolos se llaman no terminales, para indicar que deben ser sustituidos por
símbolos del alfabeto antes de que la cadena haya sido totalmente generada. Por
otro lado, los símbolos del alfabeto £ se llaman terminales, para indicar que no
es posible que sean sustituidos. Obsérvese, también, que el símbolo usado para
representar a una cadena que no ha comenzado a generarse, debe ser necesaria­
mente un no terminal. Finalmente, observemos que hemos generado las cadenas
del lenguaje de izquierda a derecha — en las cadenas de las etapas intermedias
por las que se pasa al aplicar las reglas, los no terminales deben aparecer sola­
mente en el extremo derecho. Esto refleja la forma en la que un autómata finito
reconocería una cadena del lenguaje.
Daremos la siguiente definición:
Definición 3.1.1. Una gramática regular G es una 4-tupla G = (£, N, S, P). donde £ es
un alfabeto, N es una colección de símbolos no terminales, S es un no terminal
llamado símbolo inicial, y P es una colección de reglas de sustitución, llamadas
www.FreeLibros.com
108
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
producciones, y que son de la forma A —>w, donde A e N y w es una cadena so­
bre l u N que satisface lo siguiente:
1.
w contiene un no terminal como máximo.
2.
Si w contiene un no terminal, entonces es el símbolo que está en el ex­
tremo derecho de w.
El lenguaje generado por la gramática regular G se denota por L (G).
Por ejemplo, considérese la gramática regular G = (Z, N, S, P), donde
1 = {a, b}
N = { S ,A }
P :S ^b A
A —^ aaA | b 18
Obsérvese que L (G) contendrá todas las cadenas de la forma ba2nb y ba2".
Es decir, L (G) = b (a2)* (b u e). Se puede demostrar, por inducción sobre n, que
todas las cadenas de la forma ba2"b o ba2" están en L (G) y, por inducción sobre
la longitud de una derivación, se demuestra que L (G) está contenido en
b {a2)* (b u £). (La etaba base es para una derivación de longitud 2).
De la definición se deduce que el lado derecho de una producción es una
cadena de I ’ ( N u £). Obsérvese que £ puede ser el lado derecho de una pro­
ducción. En el ejemplo precedente, la producción A —> £ acaba con la generación
de una cadena (al igual que la producción A -> b) ya que se “borra” el no ter­
minal A.
Dado que las producciones emparejan no terminales de N con cadenas de
I (/V u £), conviene representarlas como pares ordenados de iVx X* (N u £).
Por tanto, el par (x, y) de N x I* (N u £) representa a la producción x —>y. Las
producciones de P del ejemplo anterior se podrían representar mediante
P = { ( S ,b A ) ,( A ,a a A ) ,( A ,b ) ,( A ,e ) }
Si se llega al acuerdo de escribir los no terminales con letras mayúsculas y
los terminales con letras minúsculas y además se conviene que S se use como
símbolo inicial, entonces una gramática regular puede ser completamente espe­
cificada por medio de sus producciones. Por ejemplo, S —> a 5 | b especifica com­
pletamente la gramática regular que genera el lenguaje a b.
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
109
Ejercicios de la Sección 3.1
3.1.1. Usar las reglas de la Figura 3.1 para derivar ab, ab3, aa b. ¿Es posible derivar
ababl
3.1.2. Supongamos que tenemos las reglas S —>aS\bT y 7" —>aa. Dar una derivación
para abaa, aabaa y aaabaa. Probar como se deriva akba2 para k > \ . ¿Es posible
derivar las cadenas baa, b o aal
3.1.3. Obtener una gramática regular para los siguientes lenguajes:
(a) a*b u a
(b) a*b\jb*a
(c) (a*bUb*a)’
3.1.4. La gramática regular dada por
(.
S —^ bA | flfíle
A —»abaS
B —>babS
genera un lenguaje regular. Obtener una expresión regular para este lenguaje.
3.1.5. En nuestra definición de gramáticas regulares se dijo que si en el lado derecho
de una producción hay un no terminal, éste debe estar situado en el extremo de­
recho. Esto corresponde a la generación de cadenas de izquierda a derecha. Por
esta razón, una gramática regular también puede llamarse gramática regular
por la derecha. Una gramática regular por la izquierda es aquella cuyas cade­
nas son generadas por la derecha, es decir, las producciones son pares de
iV x (N u E ) X*.
(a) Obtener una gramática regular por la izquierda para el lenguaje
{anbaa | n > 0).
(b) Obtener las gramáticas regulares por la derecha y por la izquierda para
{w e {a,b, c}* | iv termina en b y toda c va seguida por una a]
(c) Para toda gramática G = (X, N, S, P) que sea regular (por la izquierda o pol­
la derecha), se puede definir la inversa de G como G1 = (X, N, S. P'), donde
P '= { (A ,x ') \( A ,x ) e P]
Por tanto, s i A - ^ a B es una producción de G, entonces A —í>Ba es una pro­
ducción de G1.
Supongamos que G es una gramática regular por la derecha.
www.FreeLibros.com
110
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
i.
Probar que G1 es una gramática regular por la izquierda.
ii.
Probar que w e L (G) si y sólo si w1 e L (G1) por inducción sobre el
número de producciones usadas para obtener w.
Se puede deducir de la parte (c) que la clase de los lenguajes genera­
dos por gramáticas regulares por la izquierda es la misma que la clase de
los lenguajes generados por gramáticas regulares por la derecha. Por eso
habitualmente, el término gramática regular se aplica para referirse a cual­
quier gramática ya sea regular por la izquierda o regular por la derecha.
3.2
GRAMÁTICAS REGULARES Y LENGUAJES REGULARES
Supongamos que L es un lenguaje regular. Se puede obtener una gramática regu­
lar que genere L por medio de un AFD M = (Q, £, s, F, 8) para el cual L - L (M).
Definimos G = (N, X, S, P) por
N-Q
I =Z
S =s
P = {(q, ap)\§ (q, a) p} u {{q, e)|<?e F]
Es decir, q —> ap siempre que 8 (q, a ) - p y q —^> zú q es un estado de acep­
tación del AFD.
Por ejemplo, el AFD dado en la Figura 3.2 acepta el lenguaje a*b. La gra­
mática regular correspondiente tiene las producciones
q\ ~ ^ a q \\b q 2
q 2 -> aq 3 \ bq 3 1 8
qi
aq?, | bq-i
En esta gramática los q¡ son no terminales (una ruptura con la notación
usual, la cual puede ser restablecida sólo con renombrar los q¡ y cj\ como símbo­
lo inicial).
Obsérvese que w e L (M) para w = a i 02 ... o„ significa que
8 (s, c?i 02 •••
—p
a
a
a. b
Q2
t ) a, b
Figura 3.2
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
111
para algún p e F. Si escribimos q¡ + 1 = 8 (q,, o¡) con q\ = s, entonces se obtiene
8 (s, Oí
02
... 0„) = b (q i,O i 02 ... o„)
= 8 (<?2> 02 ... On)
= 8 (#3, 03 ... 0„)
= 8 (<7», 0/j)
= /? e F
Ahora, puesto que q¡+ i = 8 (<?,•, 0 ;), se obtiene que q¡ -»
G y, por tanto, (ya que = <yi)
0
/ g,+ i pertenece a
5 = q\ => 0 | q 2
=> 0 l 0 2 q 3
=> 0] 02 ... On p
=> 01 02 ... On
Así que w e L (M) implica que w es generada por G; es decir,
¿ (M )c L (G ).
A la inversa, si w es generada por G, mediante la derivación siguiente
q\ => 0i qi
=> 0i 02 <73
=> 0 1 02 ... 0« p
=> 01 02 ... 0«
entonces en M tendremos
8(5, 01 02 ... 0„) = 8(qi,0i 02 ... o„)
- 8 (<72, 02 •• • 0,i)
= 8(q3, 03 ... On)
= 8 (<7h, 0»)
-p g F
\
(ya que 5 = q i). Asi, que w e L (G) implica que w e L (M ), con lo que se tiene
que L (G) c L (M). Entonces se deduce que L (G) = L (M).
www.FreeLibros.com
112
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
También es posible partir de una gramática regular G y construir un AFN M
de forma que L (G) = L (M). Sea G = (N, X, S, P) una gramática regular; se defi­
ne M - (Q, X, .y, F, A) mediante
Q = N u {/},
donde/ es un símbolo nuevo
s-S
F = \f}
y A se construye como se indica a continuación, a partir de las producciones
de P:
1.
Si A —» a i ... a n B es una producción de P con A y fí como no termina­
les, entonces se añadirán a Q los nuevos estados q i, <72 ,
<?«- 1 y las
transformaciones siguientes
A (A,
2.
ai ... a„) = A(<?i,a2 ... a„) = ... =A(^,;_i,a„) = B
Si A —>a i ... c„ es una producción de P, entonces se añadirán a Q los
nuevos estados q\, <72,
qn- 1 y a A, las transiciones siguientes
A (A, a i ...
a„) = A (¡yi, a2 ... a,;) —... —A (q„ _ 1 , a(í) —f
La construcción de A se puede concebir a partir de cómo estén etiquetadas
las aristas del diagrama de transición correspondiente a M y entonces se añadi­
rán los estados necesarios para cada uno de los símbolos de la cadena. Por tanto,
si A —> a i ... a„ S, primero podríamos etiquetar las aristas entre A y B con
a i ... G„ y después añadir n - 1 estados nuevos, en la arista resultante:
Q]
02
O,,
9 ------------ > • ------------ > O 9 • * ------------ > •
A
B
Por ejemplo, la gramática regular
S —> aB | bA | e
A —> abaS
B —> babS
daría como resultado el AFN cuyo diagrama de'transición se muestra en la Fi­
gura 3.3.
»
Si G es una gramática regular y w e L (G) con vv = a i ... a,„ entonces para
los no terminales Aj, A2, ..., A , 1 , se tiene la derivación
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
113
S =» a i A\ => ... => 01 ... Gn- l A n - l => 01 ... 0,¡
y entonces en el AFN resultante de esta construcción se tendrá
A (s,
01
... G„) = A (Ai, 0 2 ••• 0 n) =
= A(A„_ i, 0„) = /
Por lo tanto, w e L ( M ) . A la inversa, si A (s, 0 i ... 0„) = /, entonces
5 => 0 1 ... 0,„ con lo que w e L (G). Luego L (G) = L (M).
Aunque hemos demostrado las técnicas de construcción más usuales, en re­
alidad hemos demostrado mucho más:
Figura 3.3
T eorem a 3.2,1.
L es regular si y sólo si es generado por una gramática regular.
Por tanto, tenemos tres métodos generales de especificación de lenguajes:
las expresiones regulares, los autómatas finitos y las gramáticas regulares.
Ejercicios de la Sección 3.2.
3.2.1. Construir una gramática regular para el lenguaje regular aceptado por el autó­
mata finito de la Figura 3.4.
3.2.2. Construir un AFN para la gramática regular
S-> aS\bB\b
B —^ cC
C —^ üS
www.FreeLibros.com
114
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
3.2.3. Construir un autómata finito para la gramática regular
S —>abA | B | baB \ e
A -> b S \b
B —^ ciS
3.2.4. Obtener una gramática regular para el lenguaje
L= jiv e {a, &¡* | w no contiene la subcadena cía i
3.2.5. Obtener una gramática regular para L = {a"b" \ n > 0}.
3.2.6. Una producción regular por la izquierda es una producción de la forma
A —>Bw, donde A y B son no terminales y w es una cadena de terminales. Una
producción regular por la derecha es una producción de la forma A —> wB. Por
tanto, las gramáticas regulares por la izquierda (véase Ejercicio 3.1.5) y las gra­
máticas regulares por la derecha contienen solamente producciones regulares
por la izquierda y producciones regulares por la derecha, respectivamente. Pro­
bar que una gramática regular no puede contener ambos tipos de producciones.
GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO
Recordaremos que en nuestra definición de gramáticas regulares se requiere que
el lado derecho de todas las producciones contenga al menos un no terminal. Es
más, cuando un no terminal está presente, debe aparecer al final de la cadena
(final izquierdo o final derecho, dependiendo de sr es una gramática regular por
la izquierda o por la derecha). Para expresar esto formalmente, se requiere que
las producciones satisfagan P c W x I 4 (N u e) (o, en el caso de la regularidad
por la izquierda, P c /V x (N u e) X*). Este requerimiento restringe en gran me-
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
115
dida la manera en la que se pueden formar las producciones y, en consecuencia,
restringe las clases de lenguajes que se pueden especificar.
Supongamos que se permite que P q N x ( N kj Z)*, de forma que las pro­
ducciones puedan tener cero, uno o más no terminales que aparezcan en cual­
quier lugar del lado derecho de las mismas. Por ejemplo, la gramática dada por
5 —> afi | M
A H> a\aS\bA A
B —> b \b S \a B B
es una gramática de este tipo. Observe que, en definitiva, esta gramática no es
una gramática regular. Por otro lado, todas las gramáticas regulares satisfacen
este nuevo requerimiento en lo que respecta a la forma en la que se construyen
las producciones y, por tanto, son gramáticas de este tipo. De esta forma, tendre­
mos más de un tipo general de gramáticas.
Definición 3.3.1.
Una gramática independiente del contexto (GIC) es una 4-tupla
G ^ÍK X ^P l
donde N es una colección finita de no terminales, £ es un alfabeto (también co­
nocido como conjunto de terminales), 5 es un no terminal determinado que se
llama símbolo inicial y P c A 'x (N u X)* es un conjunto de producciones.
>El lenguaje generado por la GIC G se denota por L (G) y se llama lenguaje
independiente del contexto (LIC).
Por ejemplo, puesto que toda gramática regular es una GIC, se tiene que
todo lenguaje regular es un LIC.jy
Al igual que una gramática regular, una GIC es una forma de probar cómo
se generan cadenas en un lenguaje. Como con las gramáticas regulares, usare­
mos la notación => para indicar el acto de generar como opuesto a — el cual es
parte de una regla de producción. Cuando derivamos una cadena, los no termina­
les representan la parte de la cadena que todavía no se ha generado. En el caso
de las gramáticas regulares, la parte de la cadena no generada siempre aparece al
final. En las GIC que no son gramáticas regulares, puede haber más de un trozo
no generado y pueden aparecer en cualquier lugar de la cadena. Cuando la deri­
vación se completa, todos los trozos no generados habrán sido sustituidos por
cadenas (posiblemente vacías) de símbolos terminales.
Consideremos la GIC dada por
*
www.FreeLibros.com
116
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
La inducción sobre n prueba que esta gramática independiente del contex­
to genera el lenguaje independiente del contexto {a"bn\ n > 0 } . Por el Capítulo
2 sabemos que este lenguaje no es regular. Por tanto, hay lenguajes inde­
pendientes del contexto que no son lenguajes regulares. Es decir, el conjunto de
los lenguajes independientes del contexto contiene al conjunto de los lenguajes
regulares.
Dedicaremos bastante tiempo al estudio de las gramáticas independientes
del contexto y los lenguajes independientes del contexto. Sin embargo, antes de
continuar, debemos mencionar otras formas de expresar las gramáticas regula­
res. Al generalizar, las gramáticas independientes del contexto, debemos elimi­
nar todas las restricciones con respecto al lado derecho de las producciones, per­
mitiendo que el mismo pueda estar formado por cualquier cadena sobre N u~ L .
Lo único que debemos tener en cuenta en la generalización es la parte izquierda
de las reglas de producción. Una gramática de estructura de frase es aquella en
la que los lados izquierdos de las reglas de producción pueden estar formados
por cualquier cadena no vacía sobre i V u ! , las cuales contienen algún no termi­
nal. Por tanto, para una gramática de estructura de frase, la colección de reglas
de producción P satisface
P c ( A f u 1)*N (N u 2)*
x(Wu I)*
Las gramáticas de estructura de frase se conocen como de tipo 0 o gramáti­
cas no restringidas.
El término independiente del contexto, cuando se aplica a gramáticas, su­
giere que debería haber gramáticas que dependieran del contexto. Las gramáti­
cas dependientes del contexto son gramáticas de estructura de frase, en las cua­
les las producciones se restringen a a —> P, tal que I a l < I f}|. Hay una forma
normal para estas gramáticas, en la cual toda producción es de la forma
« i A (X2 —> a i (3 a i con (3 ^ e . Tales producciones permiten que el no terminal
A sea reemplazado por la cadena P, sólo cuando A aparezca en el “contexto” de
a , y a 2.
Las gramáticas dependientes del contexto no pueden generar tantos lengua­
jes como las gramáticas de estructura de frase, aunque permiten que las deriva­
ciones se realicen de forma predecible. Sin embargo, obsérvese que, puesto que
|S | = 1 y leí = 0 , es imposible derivar la cadena vacía en una gramática que sea
verdaderamente dependiente del contexto. A menudo, los lenguajes de progra­
mación se crean para ser dependientes del contexto con el fin de simplificar el
proceso de la compilación.
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
117
Ejercicios de la Sección 3.3
3.3.1. Dada la siguiente gramática independiente del contexto
S^A A
A -» AAA \a\bA\Ab
(a) Obtener una derivación para la cadena b2aba2ba.
(b) Probar cómo puede obtenerse una derivación para
bm' ab"'2a ... b'"2" ab'”2"* para todo n > 0 y m¡, m2..... m2n+ 1 > 0 .
3.3.2. La gramática G independiente del contexto dada por
S —>aSb| aSa| bSa\bSb 16
no es una gramática regular, aunque L (G) es un lenguaje regular! Obtener una
gramática regular G' tal que L (G') = L (G).
3.3.3. Obtener una gramática independiente del contexto para cada uno de los siguien­
tes lenguajes independientes de contexto:
(a)
{a"’b" | m > n }
(b) {w c {a, b }*| w tiene el doble de aes que de bes}
(c)
{ánbn\n < m < 2n}
(d) {a!"b"cpd q\m +n> p + q)
ÁRBOLES DE DERIVACIÓN O DE ANÁLISIS Y AMBIGÜEDAD
Cuando una cadena se deriva mediante una gramática independiente del contex­
to, el símbolo inicial es sustituido por alguna cadena. Los no terminales de esta
cadena son sustituidos uno tras otro por otra cadena, y así sucesivamente, hasta
que se llega a una cadena formada sólo por símbolos terminales. No se puede re­
alizar ninguna sustitución más, puesto que no hay no terminales que puedan ser
sustituidos. A veces, es útil realizar un gráfico de la derivación, que indique de
qué manera ha contribuido cada no terminal a formar la cadena final de símbo­
los terminales. Tal gráfico tiene forma de árbol y se llama árbol de derivación (o
árbol de análisis).
Un árbol de derivación para una derivación dada se construye creando un
nodo raíz que se etiquetó con el símbolo inicial. El nodo raíz tiene unos nodos
hijos para cada símbolo que aparezca en el lado derecho de la producción usada
para reemplazar el símbolo inicial. Todo nodo etiquetado con un no terminal
también tiene unos nodos hijos etiquetados con los símbolos del lado derecho de
www.FreeLibros.com
118
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
la producción usada para sustituir ese no terminal. Los nodos que no tienen hijos
deben ser etiquetados con símbolos terminales.
Consideremos la gramática independiente del contexto
S-> A B
A a A \ a
B -> b B \b
La cadena aabbb puede ser derivada mediante
S => A B => AbB=> AbbB => Abbb=> aAbbb => aabbb
En la Figura 3.5 se presenta un árbol de derivación para esta derivación. Co­
menzamos en la raíz S y generamos los hijos A y B. A y B son raíz del subárbol
correspondiente a la parte de la cadena final que ellos generan. Obsérvese que
todos los nodos hoja están etiquetados con símbolos terminales. Si se leen las
hojas de izquierda a derecha, se obtiene la cadena aabbb.
Figura 3.5
b
Finalmente, obsérvese que hay muchas derivaciones posibles para la cadena
aabbb, las cuales también tienen el árbol de derivación anterior. Por ejemplo,
S =$ A B => aAB=> aaB => aabB => aabbB => aabbb
y
S => A B => aAB=$ aAbB => a A bbB => aAbbb => aabbb
Para esta cadena y esta gramática, todas las derivaciones de aabbb tienen el
mismo árbol de derivación. Sin embargo, no tiene porque cumplirse siempre.
Para verlo, considérese esta gramática
*
S->SbS\ScS\a
Podemos derivar la cadena abaca de dos formas distintas como sigue:
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
1.
S=> SbS=> SbScS => SbSca => Sbaca => abaca
2.
S => S c S => SbScS => abScS => abacS => abaca
119
El árbol de derivación para la derivación 1 es
I
a
mientras que el árbol para la derivación
a
2
(
a
es
a
Obsérvese que los dos árboles son distintos, aunque las cadenas producidas
son la misma. (La cadena derivada corresponde a los nodos hoja y se llama pro­
ducto del árbol de derivación).
Una gramática se dice que es ambigua si hay dos o más árboles de deri­
vación distintos para la misma cadena. Una gramática en la cual, para toda cade­
na w, todas las derivaciones de w tienen el mismo árbol de derivación, es no am­
bigua.
La ambigüedad puede ser un problema para ciertos lenguajes en los que su
significado depende, en parte, de su estructura, como ocurre con los lenguajes
naturales y los lenguajes de programación. Si la estructura de un lenguaje tiene
más de una descomposición y si la construcción parcial determina su significa­
do, entonces el significado es ambiguo. Consideremos la sentencia “Juan vio a
un hombre con un telescopio”. El significado de esta sentenciares ambiguo debi­
do a que “con un telescopio” puede describir al hombre que vio Juan o a la téc­
nica que Juan empleó para ver al hombre. *
Consideremos otro ejemplo de ambigüedad que obscurece el significado de
las expresiones. Sea la siguiente gramática de asignaciones de expresiones:
www.FreeLibros.com
120
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
A ^I]= E
Ia _ \b \c
e
-* e ±
e \e
*
e
\W _ \i
Los símbolos terminales han sido subrayados.
La cadena a := b + c * a es una cadena de este lenguaje de sentencias de
asignación. Hay dos árboles de derivación distintos para ella (véase Figura 3.6)
A
A
b
I
c
I
a
I
I
b
e
a
Figura 3.6
Si pretendemos determinar cómo se calcula el valor de la derecha del opera­
dor de asignación (el símbolo :=), se obtienen dos resultados posibles, b + (c * a)
o (b + c) * a. En general, estos resultados no son iguales.
En algunos casos, si la gramática es ambigua, se puede encontrar otra gra­
mática que produzca el mismo lenguaje pero que no sea ambigua. Por ejemplo,
la gramática
S ^ A \B
A —^ a
B —^ ci
es ambigua porque tiene dos árboles de derivación para la cadena a. Una gramá­
tica equivalente que no es ambigua es
S —^ ci
Si todas las gramáticas independientes del contexto para un lenguaje son
ambiguas, se dice que el lenguaje es un lenguaje independiente del contexto in­
herentemente ambiguo. El lenguaje
'
L - {alb->ck | i - j o j = k}
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
121
es inherentemente ambiguo. Intuitivamente, una gramática para L debe tener una
clase de árbol de derivación para generar las cadenas para las cuales i = j y otro
para las cadenas en las cuales j = k. Si una cadena tiene i = j - k, tendrá dos deri­
vaciones.
Vimos anteriormente que una* cadena dada no puede tener más de una deri­
vación igual en una gramática independiente del contexto no ambigua. Las deri­
vaciones distintas corresponden a la elección de distintos no terminales a expan­
dir. Por convención, dos formas de generar una cadena tienen una única salida.
En una derivación por la izquierda el no terminal que se expande es, siempre, el
del extremo izquierdo. Por tanto para la gramática
S —>SbS\ScS\ a
una derivación por la izquierda de abaca será
S => ScS=> SbScS => abScS => abacS => abaca
Una derivación por la derecha es aquella en la cual el no terminal que se
expande es el del extremo derecho. Por tanto
S => ScS=> Sea => SbScá => Sbaca => abaca
es una derivación por la derecha de la cadena dada. Obsérvese que las dos deri­
vaciones tienen el mismo árbol de derivación:
a
a
Este árbol de derivación también es compartido por otras derivaciones. En
esta gramática
S => S b S => abS => abScS => abacS => abaca
■*
es una derivación por la izquierda distinta de la precedente. La presencia de dos
derivaciones por la izquierda distintas se corresponde con la existencia de dos
árboles de derivación distintos. Por tanto, una gramática ambigua se caracteriza
por tener dos (o más) derivaciones por la izquierda para la misma cadena.
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
123
Nos gustaría establecer las restricciones necesarias para que las produccio­
nes se formen de manera que el árbol de derivación resultante no sea necesaria­
mente complejo o inútilmente sencillo. A la vez, no se pretende constreñir la
formación de producciones hasta el punto de que no se pueda generar ningún
lenguaje independiente del contexto a partir de los conjuntos de producciones
que cumplan las restricciones. Pretendemos encontrar un modelo formal están­
dar (o una forma normal) para las producciones.
Como primer paso en el desarrollo del modelo, necesitamos limpiar las gra­
máticas para eliminar las producciones y símbolos inútiles. Consideremos la
gramática independiente del contexto del ejemplo siguiente:
Ejemplo 3.5.1
S ^A a \B \D
B -> b
A —» aA\bA\B
C —>abel
Obsérvese que C nunca formará parte de una derivación que parta del sím­
bolo inicial, es decir, no existe S => aC(3 para toda cadena a y p de (WuZ)*.
Por consiguiente, el símbolo C y la producción
C ¡U abd
son inútiles en el sentido de que nunca podrán contribuir a la generación de una
cadena de L (G). El símbolo D se obtiene a partir de S pero nunca deriva una ca­
dena de símbolos terminales y, por tanto, nunca formará parte de una derivación
de una cadena de terminales. Por tanto, D también es inútil, aunque por distinta
razón. Por otro lado, el símbolo B es, en cierto modo, redundante, ya que deriva
únicamente un símbolo terminal; por tanto, las derivaciones S => B => b y
A
B ==>b podrían ser reducidas de forma que S => b y A => b, y eliminándose
B. Finalmente, obsérvese que si se elimina la producción C -» abd, el símbolo
terminal d no puede aparecer en ninguna cadena de terminales generada me­
diante la gramática resultante.
Por tanto, hemos identificado muchos aspectos en los que las gramáticas in­
dependientes del contexto pueden ser depuradas. Cualquiera de e,sos problemas
pueden ser eliminados sin afectar a la capacidad de generación de la gramática.
Primero se eliminarán los no terminales que no deriven cadenas de terminales,
tales como D en el Ejemplo 3.5.1.
Sea G = (N, Z, S, P) una gramática independiente del contexto. Transforma­
remos G en G' = ( N \ Z, S, P') de forma que L (G) = L (G') y, para todo A e N ',
www.FreeLibros.com
124
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
se obtenga que A ==> w para algún w e 2T. Para realizarlo, construiremos iterati­
vamente el nuevo conjunto de no terminales N ' y el nuevo conjunto de produc­
ciones P' como sigue:
Algoritmo 3.5.1.
1.
Inicializar N ' con todos los no terminales A para los que A —> w, es una
producción de G, con w e X*.
2.
Inicializar P' con todas las producciones A —> vv para las cuales A e N '
y w e 1 *.
3.
Repetir
Añadir a N ' todos los no terminales A para los cuales A —» vv, para
algún vv e (/V' u £)* que sea una producción de P y añadirla a P'.
hasta que no se puedan añadir más no terminales a N '.
Obsérvese que el bucle del paso 3 termina, ya que N y P son finitos. Esen­
cialmente, lo que estamos haciendo es recorrer hacia arriba todos los posibles ár­
boles de análisis a partir de las cadenas de terminales, anotando los no termina­
les (y las producciones) que se encuentren. Todo no terminal (y producción) que
no aparezca en N ', no contribuirá a formar una subcadena de cualquier cadena
“final’" de terminales que sea generada por la gramática. Por tanto, su elimina­
ción no altera el lenguaje generado.
Por ejemplo, en la gramática del Ejemplo 3.5.1, esperábamos eliminar el no
terminal D. Después de aplicar el Algoritmo 3.5.1 a esta gramática, obtendremos
la siguiente:
iS —^ Aci ¡B
A ^ a A \b A \B
B —>b
C —> abd
•
Las gramáticas independientes del contexto se han definido de forma que
se permite que existan producciones que tengan e en el lado derecho. El Algorit­
mo 3.5.1 trata e como una cadena de un terminal. Por tanto, al transformar la
gramática
...
•. . . ■•
■
••
f .'
S —^ üA I£
*
A -> aA | bB | £
B -^bB
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
125
se obtendrá la gramática
S —> ciA | £
A -> aA 18
Las producciones de la forma A —>e se llaman producciones e. A veces son
necesarias, pero otras no son ni necesarias ni deseables. Podremos eliminarlas
cuando no sean necesarias.
A menudo, tras la transformación de una gramática, nos quedan produccio­
nes como C —>abd que no se usan. La razón por la cual dicha producción se en­
cuentra en la gramática transformada es que, de la aplicación de dicha produc­
ción, se obtiene una cadena de terminales. Sin embargo, su presencia no es de­
seable ya que nunca se podrá derivar una cadena a partir del símbolo S que
contenga el no terminal C. Es más, puesto que el símbolo terminal d sólo apare­
ce en una cadena que se obtenga a partir de dicha producción, puede ser elimina­
do del alfabeto sin que el lenguaje generado sea alterado. El siguiente algoritmo
elimina aquellos terminales y no terminales que no aparezcan en las cadenas que
se deriven a partir de S. La gramática transformada resultante garantiza que un
símbolo X será un terminal o no terminal de dicha gramática si y sólo si
S => C/.X P para algunas cadenas a y (3 sobre (N u Z)*.
Sea G = (N , Z, S, P) una gramática independiente del contexto. Transforma­
remos G en la gramática G' = (N ', Z', S, P') de forma que L (G) = L (G') y para
todo X e i V ' n l ' , se tenga que S => a X P para las cadenas a y p de (N ' n Z ')'.
Para realizarlo, se construirán iterativamente los conjuntos de terminales, no ter­
minales y producciones de la manera siguiente:
Algoritmo 3.5.2.
1.
Inicializar N ' de forma que contenga el símbolo inicial S, e inicializar
P' y l ' a 0.
2.
Repetir
Para A e N ', si A —> w es una producción de P, entonces:
1.
2.
3.
Introducir A —» w en P'.
Para todo no terminal B de w, introducir B en N'.
Para todo no terminal 0 de w, introducir a en Z'.
hasta que no se puedan añadir nuevas producciones.
Obsérvese que, puesto que P, N y Z son finitos, el bucle de la etapa 2 siem­
pre termina. El algoritmo ha sido diseñado para tener en cuenta todos los termi­
nales y no terminales que sean accesibles desde S. Si un terminal o un no termi­
nal no puede ser conseguido a partir de S, nunca será incluido en N ' o Z'. Si un
www.FreeLibros.com
126
TEORÍA DÉ AUTÓMATAS Y LENGUAJES FORMALES
no terminal no es accesible, entonces todas las producciones que lo tengan en su
lado izquierdo serán también excluidas.
Consideremos la gramática del Ejemplo 3.5.1 que fue transformada median­
te el Algoritmo 3.5.1 en
S -* A a \B
B -*b
A ^ a A \b A \B
C —» abd
La gramática obtenida al aplicar el Algoritmo 3.5.2 es
S -> A a \B
' A —> a A | bA | B
B -> b
Obsérvese que la producción C —>abd ha sido eliminada, junto con el no
terminal C y el terminal d.
Hay que tener en cuenta que es importante el orden en el que los dos algo­
ritmos precedentes son aplicados a una gramática. Consideremos la gramática
S —>AB | a
A —^ £7
Si aplicamos el Algoritmo 3.5.1 antes que el Algoritmo 3.5.2 obtendremos
un resultado distinto al que obtendríamos si aplicamos primero el Algoritmo
3.5.2 y después el Algoritmo 3.5.1.
S —^ AB j ci
A —^ a
Alg. 3.5.1
S
AB | (2 |
A —>a
j
Alg. 3.5.2.
Alg. 3.5.2
5 —> AB | Cl
A —>a
j
Alg. 3.5.1
S —) Cl
A ^a
Ahora dirigiremos nuestra atención a las producciones s. Dichas prodicio­
nes son de la forma A —» £. Indudablemente, si £ e L (G), no podremos eliminar
tales producciones para que e pueda ser generado por la gramática. De esto se
deduce que, si £ no está en L (G), todas las producciones £ pueden ser elim i­
nadas.
Se dice que un no terminal A es anulable si A =^> £. Para la eliminación de
las producciones £, es crucial identificar los no terminales anulables. El siguien-
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
127
te algoritmo identifica el conjunto 5\£, de todos los no terminales anulables en
una gramática independiente del contexto G = (N, Z, S, P).
Algoritmo 3.5.3.
1.
Inicializar
con todos los no terminales A para los cuales existe una
producción e, A —» e.
2.
Repetir:
Si B —> w para algún w e ( J V u I ) " y todos los símbolos de w están
en íAÍ, añadir B a
hasta que no se añadan más no terminales a
.
Por ahora, sólo nos ocuparemos de las gramáticas independientes del con­
texto G = (N , Z, S, P), para las que L (G) no contiene a e. Una vez que han sido
identificados los no terminales anulables, se modifican las reglas de producción
con el fin de poder eliminar las producciones e. Esto se realiza sustituyendo pro­
ducciones de la forma B ^ > X \ X 2 ... X„ por las producciones que se formen al
eliminar los subconjuntos de X¡ que son anulables. Se debe tener cuidado en no
incluir B -» e, incluso si todos los X¡ son anulables.
Se crea el nuevo conjunto de producciones P' como sigue:
Si B —>X\ X 2 ■■■ X,¡ es una producción de P, entonces en P' introducire­
mos todas las producciones de la forma B -» Y\ Y2 ... Y„, donde las Y¡
satisfagan:
Y¡ = X¡ si X, no es anulable.
Y¡ = X¡ o
8
si X¡ es anulable.
Y¡ no es e para todo i (es decir, no se introduce en P' ninguna
producción de la forma B —»e)
Es importante señalar que a partir de una producción B —> X\ X 2 ... X„ de P,
se pueden conseguir nuevas producciones en P'. Por ejemplo, si B —»X¡ X 2 y
tanto X\ como Xj son anulables, se podrían obtener las producciones
B ^ > X x\X 2 \X x X 2
Consideremos la gramática G:
*
S —> aA
A —> aA I e
www.FreeLibros.com
*
128
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Obsérvese que A es el único no terminal anulable (y que e £ L (G)). Si con­
sideramos la producción S —> aA, tendremos que X\ = a y X 2 =A. Por tanto, aña­
diremos a la nueva colección las producciones S —>a\aA. La gramática que re­
sulta, tras considerar todas las producciones originales, será
5 —» aA | a
A
aA | a
Obsérvese que se ha eliminado la producción e, A —> £.
En una gramática independiente del contexto, si L (G) contiene e, se pueden
eliminar todas las producciones £ de G menos una. Primero, se eliminan todas
las producciones £ de G. Esto transformará la gramática G en G' para la cual
L (G') = L (G) - {£}. Después se añade la producción S —>£, la cual restituirá £
al lenguaje generado.
Las producciones de la forma A —» B, donde A y B son no terminales, se lla­
man producciones unitarias o no generativas. La presencia de producciones uni­
tarias no indica, necesariamente, que un símbolo es inútil. Sin embargo, las pro­
ducciones unitarias hacen que la gramática independiente del contexto sea inne­
cesariamente compleja.
Por ejemplo, la aplicación de una producción de la forma A —>B simple­
mente renombra un no terminal y añade un paso más a la derivación. Cualquier
cadena que sea derivable a partir de B también lo será a partir de A. Por tanto, se
puede eliminar ese paso extra saltando por encima de B. Por ejemplo, si las pro­
ducciones de A y B son
A -^B
B —^ wj ¡ C
donde C e N y w\ e (/V u L ) \ podemos eliminar la producción A —> B e incluir
la producción A —» vvi | C. Obsérvese que, al eliminar la producción unitaria
A —>B, se introduce la producción unitaria A —>C. Se podría repetir este proce­
so hasta que no existiera ninguna producción unitaria en la gramática, pero se
podría realizar otro planteamiento con el fin de eliminar la circularidad de este
proceso.
Obsérvese que, en el proceso precedente, la producción unitaria A —» C se
obtiene como resultado de las producciones A —»B y B -» C de la gramática ori­
ginal. Si conocemos todos los no terminales X tales que A =?> X, solamente me­
diante producciones unitarias, se podría entonces evitar introducirlas repetida­
mente e ir eliminando dichas producciones unitarias una a una. Para ver cómo se
puede realizar este proceso, supongamos que tenemos las producciones
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
A
129
B
B —> C \ w\
C
D
D —> W'2
Entonces se tiene que A => B => C => D. Obsérvese que las producciones
A —>vv1 1W2 permiten que de A se deriven las mismas cadenas que se derivaban
con las cinco producciones originales. Las nuevas producciones se obtienen a
partir de las producciones no unitarias del conjunto de producciones original,
creando una producción A —» y para toda producción no unitaria X —» y, donde
X e { B ,C ,D } . A continuación presentaremos esta técnica de una forma más
precisa.
Primero, para A e N se define
Unitario (A) = {B e /V| A =^> B usando solamente producciones unitarias}
(Obsérvese que A e Unitario (A) puesto que A =^> A mediante 0 produccio­
nes). Sea G = (N, E, 5, P) una gramática independiente del contexto que no ten­
ga producciones e. Construiremos una gramática independiente del contexto
equivalente G' = (N, Z, S, P') en la que P' no contenga producciones unitarias,
como se describe a continuación:
1. Inicializar P' de forma que contenga todos los elementos de P.
2. Para cada A e N, obtener el conjunto Unitario (A).
3. Para cada A para el cual Unitario (A) ^ {A}
Para cada B e Unitario (A)
Para cada producción no unitaria B —> w de P
añadir A - ) w a P /.
4.
Eliminar todas las producciones unitarias que haya en P'.
Por ejemplo, en la gramática
S —» A | A a
A -+ B
B
*
C \b
C —^ D | cib
D ^b
tenemos
www.FreeLibros.com
130
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Unitario (S)= {S,A, B, C, D}
Unitario (A) = {A, B, C, D}
Unitario (B) = {B, C, D}
Unitario (C) = {C, D]
Unitario (£>) = {D}
El algoritmo introduce primero las producciones
S —> b|ab
A -^b \a b
B —>ab\b
C -* b \a b
y entonces se eliminan las producciones S —>A, A —
gramática resultante es
B —> C y C -» D. La
5 —> b \a b \A a
A
b\ab
B —> ab\b
C —> b | ab
D -*b
Esta gramática puede simplificarse más, por medio de las otras técnicas.
En lo visto anteriormente, hemos realizado la eliminación de producciones
en gramáticas independientes del contexto de una forma bastante incómoda.
Como última etapa en la simplificación de gramáticas independientes del con­
texto, presentaremos un modelo o forma normal para las producciones. Se dice
que una gramática independiente del contexto está en forma normal de Chomsky
si no contiene producciones e y si todas las producciones son de la forma A —» a,
para a e Z, o de la forma A —» BC, donde B y C son no terminales. Es decir, en
la forma normal de Chomsky el lado derecho de cada producción contiene un
único símbolo terminal o una par de no terminales. Obsérvese que, para una gra­
mática en forma normal de Chomsky, el árbol de derivación para cualquier deri­
vación está bastante bien construido ya que, excepto en las hojas, ¡el árbol es bi­
nario!
Si G es una gramática independiente del contexto y 8
(G), G puede ser
transformada en una gramática en forma normal de Chomsky. Para ello, primero
se eliminan todas las producciones 8 , los símbolos inútiles y las producciones
unitarias de G. Obsérvese que, una vez que se ha realizado lo anterior, si A —> w
es una producción de G, se puede asegurar que | w\ > 1. Es más, si | vr| - ], en­
tonces w es un símbolo terminal de Z, puesto que no hay producciones unitarias.
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
131
Por otro lado, si |h>| > 1, entonces w puede contener tanto terminales como no
terminales. Ahora transformaremos G convirtiendo tales w en cadenas que con­
tengan sólo no terminales.
Supongamos que tenemos una producción de la forma A —> w, donde
w = X\ X 2 ... Xn. Si X¡ es un símbolo terminal, llamado a , sustituiremos X¡ por
un nuevo no terminal C0 y añadiremos la producción C„ —» a. Una vez que se
aplica a G está conversión, todas las producciones son de la forma A —> w, don­
de vv es un símbolo terminal o una cadena formada sólo por no terminales.
La última etapa para la transformación de G en forma normal de Chomsky,
consiste en eliminar las cadenas con más de dos no terminales que se encuentren
en el lado derecho de una producción. Para ello, si A —> B\ B 2 ... Bn es una pro­
ducción con n > 2 , la reemplazaremos por n - 1 producciones
A -> B\ D\
D\ —>B 2 D 2
D„~ 2 —> Bn - 1 Bn
En ellas, los D¡ serán nuevos no terminales. En la gramática transformada
resultante, el lado derecho de cada producción está compuesto por un único ter­
minal o por una cadena de dos no terminales. Por lo tanto, todo lenguaje inde­
pendiente del contexto que no contenga £ puede ser generado mediante una gra­
mática independiente del contexto en forma normal de Chomsky.
Por ejemplo, consideremos la GIC
S - > b A \ aB
A —^ bAA j ciS \ a
B ^ > a B B \b S \b
Obsérvese que esta gramática no contiene producciones £, producciones
unitarias ni símbolos inútiles. Después de la primera transformación, la gramáti­
ca se convierte en
S - > C bA \ C a B
A -» Ch A A \C a S \a
B -> Ca B B \C h S \b
Ca —^ o,
Cb —> b
www.FreeLibros.com
132
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
En esta versión, el lado derecho de todas las producciones está formado por
un único símbolo terminal o por una cadena de dos o más no terminales. Des­
pués de la última conversión, la forma normal de Chomsky de la gramática será
S - > C hA \ C aA
A —> Cfr D l | Ca 5 1Cl
D \-* A A
B
—>
Ce, D'i | C¡) S | b
D2 —> BB
Si L es un lenguaje independiente del contexto que contiene 6 , se puede ob­
tener un gramática independiente del conter.to en forma normal de Chomsky
para L - {£} y después añadir a la misma, la producción S —> e. La gramática re­
sultante estará en forma normal de Chomsky exceptuando la producción e.
Ejercicios de la Sección 3.5
3.5.1. Aplicar el Algoritmo 3.5.1 a las siguientes gramáticas:
(a)
S aAb\cEB\CE
A —> clBE\eeC
B ^ ff\D
C —) gFB | ae
D -^h
(b)
S -> aB
/I ->bcCCC\dA
B —» e
C —>fA
D —» Dgh
3.5.2. Aplicar el Algoritmo 3.5.1 a la siguiente gramática:
S —^ ci | oA | B j C
A■
—>ciB!£ ».
B —>Aci
C —» bCD
D -» ccc
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
133
3.5.3. Aplicar el Algoritmo 3.5.2 a la siguiente gramática independiente del contexto:
5 —»aAb
A —» ccC
B —> dd\D
C —^ cíe
O —» /
3.5.4. Aplicar el Algoritmo 3.5.2 a la siguiente gramática independiente del contexto:
S a\aA\B
A
aB\e
B —»Aa
D —» ¿Wd
3.5.5. Eliminar los símbolos inútiles de la siguiente gramática por medio de los Algo­
ritmos 3.5.1 y 3.5.2:
S->A\AA\AAA
A —> A5a| ACa | a
B ABa\Ab\z
C —» Cab | CC
£) —» C£>| C<¿| CEa
E -> b
3.5.6. Obtener la colección de no terminales anulables que pertenecen a la siguiente
gramática:
S -» aA | bA | a
A -» aA | bAb 18
3.5.7. Obtener, para la siguiente gramática, el número de no terminales anulables:
S —>ABaC
A AB
B —>b ¡£*
C-H>Z?|e
n ^d
www.FreeLibros.com
134
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
3.5.8. Eliminar las producciones E de la gramática:
S -» aA [bA | a
A -» aA | bAb I£
3.5.9. Eliminar de la siguiente gramática las producciones £:
S —>AB
A
aA IabB \ aCa
B^>bA\BB\z
C —> £
D -^dB \B C B \
3.5.10. Eliminar de la siguiente gramática las producciones e:
S —^ ü | ciA | B
A —>üB I£
B —^ Aci
3.5.11. Eliminar las producciones £ de la gramática siguiente:
S ->
C
/i —^ AZ?
fí -» ¿le
C -> Z)le
D -> d
3.5.12. Simplificar la siguiente gramática tanto como sea posible
S —>atí\aaB
A -» £
B —> bA
B —> e
3.5.13. El lenguaje asociado con la siguiente gramática independiente del contexto con­
tiene e. Eliminar las producciones e excepto S £.
S —^ AB \ aB Ie
A —>BBB | aB | a Ie
B —^ a | úA t £
%
3.5.14. Realizar una algoritmo para construir Unitario (A) siendo A un no terminal de
una GIC.
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
135
3.5.15. Eliminar todas las producciones unitarias de la siguiente gramática inde­
pendiente del contexto:
CBa\D
5
/I
bbC
B Se |ddd
C e A \f\C
D E\SABC
E —»gh
3.5.16. Eliminar todas las producciones unitarias de la siguiente gramática inde­
pendiente del contexto:
S —>Aa|Ba | B
A -> Afile
B -* a A \B B \z
[Obsérvese que e e L (G)].
3.5.17. Convertir las siguientes gramáticas a forma normal de Chomsky:
(a)
S->AB\CA
A -> a
B —> BC\AB
C —^ ciB | b
(b)
S->aAb\cHB\CH
A —» dBH\eeC
B -* ff\D
C —» gFB | ah
D —> i
E —*jF
F —> dcGGG \ cF
G ^kF
H —> Hlm
3.5.18. Probar que, al realizar la conversión a forma normal de Chomsky, se puede ele­
var al cuadrado el número de las producciones de una gramática independiente
del contexto.
www.FreeLibros.com
136
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
PROPIEDADES DE LOS LENGUAJES INDEPENDIENTES
DEL CONTEXTO
Las gramáticas en forma normal de Chomsky nos permiten obtener la relación
que existe entre la longitud de una cadena y el número de pasos de su deriva­
ción. Si se deriva £, se obtiene a partir de una única producción S —> £. Se puede
probar, mediante inducción, que si se puede derivar w y | w\ > 0 , entonces la de­
rivación tiene exactamente 2\w \ etapas. Por etapa, entendemos una sustitución.
Escribir el símbolo inicial es una etapa, así como lo es sustituir a él o a cualquier
otro terminal por el lado derecho de una producción.
Supongamos que G es una gramática independiente del contexto en forma
normal de Chomsky y consideremos el árbol de derivación para una cadena
cualquiera de L (G). Si un nodo tiene dos hijos, entonces los nodos hijos serán
etiquetados con un no terminal y podremos tener al menos dos hijos más del
mismo. (Esto es debido a que G está en forma normal de Chomsky). Es decir, el
nodo raíz puede tener dos hijos, cada uno de sus hijos puede tener dos hijos y así
sucesivamente. En cada nivel se pueden duplicar el número de nodos con res­
pecto al anterior. Por tanto, en el nivel k podremos tener 2k nodos. (El nivel 0 es
el nivel del nodo raíz).
Por otro lado, si un nodo tiene un único hijo, entonces dicho nodo hijo será
etiquetado mediante un terminal, debido nuevamente, a que la gramática está en
forma normal de Chomsky. Por tanto, todo símbolo terminal que etiquete a un
nodo hoja corresponde a dos nodos, la hoja y su padre.
Supongamos que el camino más largo desde la raíz a las hojas consta de
m + 2 nodos (y m + 1 arcos). Entonces, el árbol de derivación tiene m + 2 niveles
(es decir, los niveles 0 , 1 ,..., m + 1 ) y los nodos del último nivel (las hojas) son
hijos únicos de sus nodos padre. En el nivel m hay, como máximo, 2'" nodos pa­
dre. Por tanto, si el camino más largo de un árbol de derivación consta de m + 2
nodos, entonces 2"' es la longitud máxima de la cadena derivada. Otra forma de
decirlo es que, si la cadena derivada tiene longitud mayor que 2 '", entonces el ca­
mino más largo debe contener más de m + 2 nodos.
Ahora, cada nodo del árbol de derivación de una cadena se corresponde con
la aplicación de una producción. Por lo tanto, la relación que existe entre el nú­
mero de producciones que comprende cada etapa y la longitud de la cadena de
terminales resultante sugiere que una gramática independiente del contexto en
forma normal de Chomsky, genera un promedio de un terminal por cada dos
producciones.
El conocimiento de la relación existente entre la longitud de la cadena y su
derivación en una gramática independiente del contexto, nos permite demostrar
el siguiente lema de bombeo para los lenguajes independientes del contexto.
www.FreeLibros.com
LENGUAJES. INDEPENDIENTES DEL CONTEXTO
137
Lem a 3.6.1. Sea L un lenguaje independiente del contexto que no contiene e. Entonces
existe un entero k para el cual, si z e L y | z | >k, entonces z se puede volver a
escribir como z = uvw xy con las propiedades siguientes:
1
.
| vwx | <k.
2.
Al menos o v o x no es 8 .
3.
uv'wx'y e L para todo i > 0.
Demostración. Supongamos que G = {N,Y,,S,P) es una gramática independiente
del
contexto en forma normal de Chomsky con L = L (G ). Sea n el número de no
terminales de N y sea k = 2n. Supongamos que z e L con | z | > k.
Vamos a considerar el camino más largo del árbol de derivación correspon­
diente a z■Puesto que |z | > 2”, este camino debe contener más de n + 2 nodos.
De los n + 2 últimos nodos del camino, el último corresponderá a un terminal.
Por tanto n + 1 de dichos nodos están etiquetados con no terminales. Puesto que
sólo hay n no terminales en N, alguno se repetirá. Supongamos que A está repeti­
do en el camino. Entonces se tiene que
S =>
uvAxy => u v w x y - z
para algunas subcadenas u, v ,i v ,x e y. Puesto que sólo hemos considerado los
n + 2 últimos nodos de este camino, el camino de A a vwx puede tener como má­
ximo n + 2 nodos. Por tanto
| vwx | < 2"
según las observaciones previas a este teorema.
Además, puesto que A ==>vAx, debemos obtener que A => v 'A jí para algún
i > 0. Por tanto, S => uv 'wx'y para todo i > 0.
Finalmente, obsérvese que, puesto que A =>v/bc y puesto que G está en for­
ma normal de Chomsky, se debe tener que
A => 6 C=> vAx=$ vwx
para algunos no terminales B y C. Entonces B =4 v y C=^> A x o si no B
vA y
C => x. Ya que v y x son cadenas de terminales y no hay producciones 8 , en el
primer caso se tiene que | v| > 1 con lo que v ^ 8 y, en el segundo c§so, |x | > 1
con lo que x ^ 8 . En cualquier caso al menos uno de ellos no es 8 . □
Al igual que el lema de bombeo para lenguajes regulares, el lema de bom­
beo para lenguajes independientes del contexto nos proporciona la posibilidad
de probar si ciertos lenguajes no son independientes del contexto. Para ello, usa-
www.FreeLibros.com
138
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
remos esencialmente el mismo planteamiento que en el caso de los lenguajes re­
gulares.
Por ejemplo, el lenguaje L = {albJ \j = i2} no es independiente del contexto.
Supongamos que L es independiente del contexto. Probaremos que es imposible.
Si L es independiente del contexto, entonces se puede aplicar el lema de bombeo
y por tanto habrá un k que satisfaga las condiciones del Lema 3.6.1. Conside­
remos z = akbk . Desde luego, z e L y \z\ > k. Por tanto, z se puede descompo­
ner en
z = uvwxy
y se puede asegurar que uv'wx'y e L para todo / > 0 , tal que | vx | > 1 y
| vwx | < k. Obsérvese que, si v = arbs para algún r y s, entonces V = (arbs)‘ y, por
tanto, u v lw ¿y tiene bes antes de aes con lo que no puede pertenecer a L. Defor­
ma similar, si x = arbs, tampoco pueden ser
bombeados. Por lo que debemos ob­
tener que
v-a r
y
x~as
v = br
y
x-b 5
v = a'
y
x-b s
o
o también
para algún valor de r y s. En el primer caso se tiene
u v 2wx2y = ak +r+sbk~
En el segundo caso tenemos
u v 2wx2y = akbk~+r+s
En ambos casos, cuando al menos uno de los dos r o s son mayores o igua­
les a 1 (como se requiere en el lema de bombeo), la cadena resultante no puede
pertenecer a L. En el tercer caso, se obtendrá
u v iwxiy = cik+{i- x)rbkl +{i- {)s
el cual no pertenece a L para toda i a excepción de un número finito. Por tanto, L
no puede ser independiente del contexto puesto que para él no se cumple el lema
de bombeo.
El lema de bombeo tiene otros usos además de demostrar que un lenguaje
no es independiente del contexto. Primero vamos a considerar el siguiente pro­
blema: para una GIC G arbitraria, ¿L (G) es finito?
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
139
Supongamos que G = (N, X, S, P) es una GIC arbitraria que está en forma
normal de Chomsky. Se supone que N tiene n elementos. Entonces, de la demos­
tración del Lema 3.6.1, se sabe que, si una cadena de L (G) tiene una longitud
mayor que 2" ~ ', entonces L (G) es infinito. A la inversa, puesto que la colección
de terminales de G es finita, si L (G) es infinita, entonces alguna cadena de L (G)
contiene más de 2 n ~ 1 símbolos. Supongamos ahora que z e L (G ) es la cadena
más corta de L (G) con la propiedad de que | z | > 2" ~ 1. Pediremos que
2”- 1
< \z | < 2 " - ‘ + 2 "
Para verlo, supongamos que |z | > 2 "- 1 + 2". Entonces, de la demostración
del Lema 3.6.1, se deduce que 2 = uvw xy y u w y e L (G), para las subcadenas u,
v, w, x, e y apropiadas. Entonces, puesto que | uwx\ < 2", se obtiene que | uwy\ >
\z\ - 2 '1> 2 " - 1.
Por otro lado, | uwy\ < \ uvwxy \ = | z | . Pero se había supuesto que z era la
cadena más corta de longitud mayor que 2 '' ~ 1 y, por tanto, se llega a una contra­
dicción. Por consiguiente,
2« - i < j-j <2»- > + 2 '¡
En consecuencia, L (G) es infinito si y sólo si existe un z e L (G) para el
cual
2 " ~ ' < |s | < 2 " ~ ] + 2 "
Hay un número finito de cadenas sobre
y, si es necesario, podremos
comprobar si pertenecen a L (G). De aquí que tengamos un algoritmo para com­
probar si un lenguaje independiente del contexto es finito o no.
Obsérvese que, en la eliminación de estados inútiles, proporcionamos de
forma inadvertida un algoritmo que responde a otras cuestiones sobre un lengua­
je especificado por una gramática independiente del contexto. L (G) es no vacío
si y sólo si su símbolo inicial genera una cadena de terminales. Tenemos un al­
goritmo para eliminar los no terminales que no generan cadenas de terminales.
Por tanto, L (G) - 0 si el símbolo inicial no pertenece a la colección de no termi­
nales de la gramática transformada.
Otra cuestión a tratar sobre los lenguajes independientes del contexto, hace
referencia a sus miembros: Dado un lenguaje independiente del contexto L sobre
el alfabeto X y una cadena w e X*, ¿vv e L o no?
L em a 3.6.2. Sea G - (N . X, 5, P) una gramática independiente del contexto que no tie­
ne producciones £ y que está en forma normal dé Chomsky. Sea x una cadena de
X*. Se puede determinar, para cada A e N y para cada subcadena w de x, si
A => vv.
www.FreeLibros.com
140
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Demostración. Sea n = \x | . Puesto que hay muchas subcadenas de x, las nombraremos
mediante su posición inicial y su longitud. Sea w¡j la subcadena que comienza en
la posición i y tiene una longitud j. Probaremos que el lema se cumple para todo
w¡j. Lo realizaremos por inducción sobre la longitud de la subcadena, es decir,
sobre j.
Supongamos que / = 1. Entonces | w¡j\ = 1 y, por tanto, wy es un símbolo
terminal. Como la gramática está en forma normal de Chomsky, para algún no
w¡j si y sólo si existe una producción A —> w¡j en P.
terminal A se tiene que A
Es posible determinarlo, ya que P es finito.
Ahora supongamos que j > 1 y que la afirmación se cumple para toda subca­
dena de longitud menor que j. Obsérvese que A
w¡j si y sólo si A —>BC para
algún par B y C de no terminales para los cuales B => w¡k y C=> w¡ +k ,j-k para
algún k entre 1 y j - 1. Entonces tanto w¡k como w¡ +k j - k tienen longitud menor
*
£
que j y, por la hipótesis de inducción, es posible determinar si B ==> w¡k y si
C =5> Wj +k j- k - Además podemos determinar si A =4 w¡j para cada i entre 1 y n y
cada j entre 1 y n - i + 1 . □
En la demostración anterior se observa que si j = n entonces se puede deter­
minar si
S ==> w\j —w\n —x
Es decir, se puede determinar si x
6
L (G) para cada x e I “.
Se cumple que .v s L (G) si y sólo si S => x y, por el Lema 3.6.2, sabemos
que es posible determinar si S => .v. Naturalmente, no es lo mismo saber que algo
es posible, que hacerlo. Se conocen varios algoritmos para determinar si
x e L (G). Vamos a presentar uno llamado algoritmo de CYK y que se debe a
Cocke, Younger y Kasami. El algoritmo de CYK simplemente construye con­
juntos N¡j de no terminales que generan las subcadenas w¡j de x. Una vez hecho,
si S e N\„, entoncesx e L (G) (donde |jc[ = n). Obsérvese que se elimina mucho
trabajo por el hecho de que no pueden existir subcadenas de longitud mayor que
n - i + 1 que empiecen en la posición i.
El algoritmo de CYK, se enuncia como sigue:
1
.
Para cada i = 1 , 2 ,..., n, sea
Mi = {A \A —>w¡\} »
♦
Es decir, N¡\ es el conjunto de todos los no terminales que producen el
/-ésimo símbolo de x
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
2.
141
Para j = 2, 3,..., n, hacer lo siguiente:
Para i = 1, 2 , n - j + 1, hacer lo siguiente:
a. Inicializar N ¡j = 0.
b. Para k = 1, 2,
1, añadir a N¡j todos los no terminales A para
los cuales A —» BC, con B e Nik y C e N¡+k,j-k-
3.
Si S e N \n, entoncesx e L (G).
Obsérvese en que el algoritmo de CYK requiere que se tenga una gramática
independiente del contexto en forma normal de Chomsky. El algoritmo para la
construcción de los conjuntos de no terminales N ¡j sigue la idea de la demostra­
ción del Lema 3.6.2. En la etapa 2b, que es en la que se construyen los N¡¡, se
emparejan los no terminales de N¡k con los de N¡+k,j-k, y se trata de encontrar­
los en el lado derecho de las producciones. Cuando se obtienen tales lados dere­
chos, se añade a N¡j el no terminal que está en el lado izquierdo de la producción
dada.
Ejemplo 3.6.1
Consideremos la gramática independiente del contexto
A —^ 3 A jci
B
CC| b
C ^A B \a
Para la cadena x= bbab, se tiene la siguiente tabla donde cada casilla rep­
resenta al conjunto N¡j:
j~
1
7= 2
7=3
/= 4
s ,c
b
j=
1
B
0
A
b
j -2
B
A, S
S, C
a
7
A, C
s,c
=3
•V
II
B
Ya que S está en N i4, x se genera a partir del símbolo inicial 5. Por tanto, x
está en el lenguaje generado por esta gramática.
-
www.FreeLibros.com
142
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Supongamos que Gy = (Ni, Xj, Si, P\) y G 2 = (iV2 , 1 2 , S2 , P 2) son dos gra­
máticas independientes del contexto para las cuales N\ y N 2 son disjuntos. Defi­
niremos la gramática independiente del contexto G = (N , X, S, P), donde
N = N i u N 2 u {S}
Z = Zi u l 2
/> = />, u /> 2 u { ( S ,S ,) , (S, S2) }
siendo S un nuevo símbolo. Es decir, P contiene las producciones de P\ y P 2,
además de dos nuevas producciones S —> Si | S2. Se ve fácilmente que L (G) '=
L (G i) u L (G2). Primero, si w e L (Gi), entonces se tiene que Si =4 w, con lo
que S => Si => w y, por tanto, se tiene que w e L (G). De forma similar, si
w g L (G2), entonces se tiene que w e L (G ) y, por tanto, L (Gi) u L (G2) c
L (G). Por otro lado, si w e L (G), entonces S => w. Pero S —>S 1 1S2 son las úni­
cas producciones que tienen en su lado izquierdo el símbolo S. Entonces o bien
S => Si =$ vv
o
S =$ S2 ==> w
Ahora bien, como Ni n N 2 = 0, sólo se pueden usar
en Si => w, con lo que si S => Si
w, se deduce que w e
similar, si S => S 2
w, se obtiene que w e L (G2).
L (Gi) u L (G 2 ). Con lo que hemos demostrado el siguiente
producciones de P\
L (G \). De un modo
Por tanto, L (G) c
teorema:
Teorema 3.6.3. Si L\ y L 2 son lenguajes independientes del contexto, entonces L\ u
es un lenguaje independiente del contexto.
¿2
Es decir, el conjunto de los lenguajes independientes del contexto es cerra­
do con respecto a la unión. Este conjunto también es cerrado con respecto a la
cerradura de estrella.
Teorema 3.6.4.
lo es.
Si L es un lenguaje independiente del contexto, entonces Ü también
Demostración. Sea L - L (G) para G = (N, X, S, P). Constituiremos una gramática inde­
pendiente del contexto G' = (N \ I , S', P') que genere L*, de forma que
N' - N u ¡S', T), donde S' y T son nuevos símbolos, y añadiremos las produc­
ciones S' —» S T I e y T —> S T I e. Obsérvese que si w¡, W2, ..., wn e L (G), se tiene
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
143
S '= * S T = * S S T
=4S . . . S T
( h térm in o s)
=> S ... S e
==> W l W 2 . . . w n
Por tanto, L * c L (G').
□
Teorema 3.6.5. La concatenación de lenguajes independientes del contexto es inde­
pendiente del contexto.
Demostración.
Véase el Ejercicio 3.6.5.
□
En los Teoremas 3.6.3, 3.6.4 y 3.6.5 hemos enunciado tres propiedades de
cierre de los lenguajes independientes del contexto. Desgraciadamente, los len­
guajes independientes del contexto no son cerrados con respecto a la intersec­
ción. El lenguaje
L - {í/7?'c'|í >0}
no es independiente del contexto, como se demostró en la aplicación del lema de
bombeo (Lema 3.6.1). Obsérvese que L\ = {a‘b ^ c ^ \i,j> 0 } es generado por la
gramática independiente del contexto
A -» aAI £
C —^ bCc I£
y el lenguaje Lo = {a‘b'cJ \ i, j > 0 } es generado por
S^A C
A —>aAb\e
C —^ cCl £
y, por tanto, son lenguajes independientes del contexto. Pero se tiene que
L - L \ n L 2 , y con lo que, la intersección de lenguajes independientes del con­
texto no es necesariamente un lenguaje independiente del contexto.”
Además, los lenguajes independientes del contexto no son cerrados con res­
pecto a la complementación. Si denotamos Z* - L¡ mediante L. entonces
L\C\L2- (¿i u Li)
www.FreeLibros.com
144
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
Ya que la unión de lenguajes independientes del contexto produce un len­
guaje independiente del contexto, obsérvese que, si al complementar lenguajes
independientes del contexto siempre se obtuvieran lenguajes independientes del
contexto, la intersección anterior debería haber sido independiente del contexto.
Ejercicios de la Sección 3.6
3.6.1. Probar que cada uno de los siguientes lenguajes no son independientes del con­
texto.
(a)
{a‘b'c'\ i > 1}
(b) {a‘b'cj \j> i}
(c)
{a‘b^ck\ i < j < k ]
(d) {a'| / es primo}
(e)
{w e [a, ¿>, c}*| w tiene el mismo número de aes que de bes y ces }
(f)
{a"b"c'"\n < m < 2n)
(g) {ww| w e {a, b }*}.
3.6.2. Determinar si el lenguaje generado por
S —>ciciA ¡B
BaA\b
A —> ríS 16 1£
es finito o infinito.
3.6.3. Determinar si bba, bab y babba están en L (G) correspondiente a la gramática G
del Ejemplo 3.6.1, usando el algoritmo de CYK.
3.6.4. Sea G = (N, X, S, P) una G1C. Al igual que en la demostración del Teorema
3.6.4,construir G’ - (Ar . X. S, P'). Demostrar que L (G’) c V\
3.6.5. Demostrar el Teorema 3.6.5.
AUTÓMATA DE PILA
Hemos visto que las gramáticas independientes del contexto amplían la capaci­
dad para especificar lenguajes al incluir algunos lenguajes que no son reconoci­
dos por un autómata finito. En esta sección consideraremos un autómata que
será capaz de reconocer todo lenguaje independiente del contexto.
Intuitivamente, el problema que se plantea con los autómatas finitos es que
sólo tienen capacidad para una “memoria” finita. Lenguajes independientes del
contexto tan sencillos como {anb"\n > 0} necesitan guardar gran cantidad de in-
www.FreeLibros.com
LENGUAJES INDEPENDIENTES DEL CONTEXTO
145
formación; se debe verificar no solamente que todas las aes preceden a las bes,
sino que además se tienen que contar las aes. Puesto que el número de aes es arbi­
trario, necesitamos establecer una limitación sobre el número de aes que se pueden
contar.
El lenguaje independiente del contexto {wcw'^we { a ,b ,c } } necesita algo
mas que una capacidad sin límites para contar los símbolos. Además se deben guar­
dar los símbolos de la cadena w para compararlos con los símbolos de la cadena w'.
En esta sección definiremos un autómata que cuenta con un mecanismo que
permite almacenamiento ilimitado y opera como una pila. Este autómata se lla­
ma autómata de pTícL)En la siguiente sección, se estudiará la conexión que existe
entre los autómatas ée pila y los lenguajes independientes del contexto.
<Qin autómata de pila se comporta de forma similar a como lo hacen los autó­
matas finitós/del Capítulo 2. En todo momento se encuentran en un estado y el
cambio de estado depende del estado actual y de una información adicional. En
el caso de los autómatas finitos del Capítulo 2, la “información adicional” con­
siste en el símbolo de entrada actual. En el caso de los autómatas de pila, se in­
cluyen el símbolo de entrada actual y el símbolo que está en ese momento en la
cima de la pila. Además de cambiar de estado, el autómata de pila cambia, tam­
bién, la cima de la pila.
Definición 3.7.1. Un autómata de pila no determinista (ADPND) es una 7-tupla,
M - (£>, Z, T, A, s, F, z) donde
Q es un conjunto finito de estados
Z es un alfabeto de entrada
r es un alfabeto llamado alfabeto de la pila
A es una regla de transición
se. Q es el estado inicial o de partida
z e r es el símbolo inicial de la pila
F c Q es el conjunto de estados finales o de aceptación.
De nuestra descripción anterior se deduce que una regla de transición, para
obtener el siguiente estado y la acción a realizar sobre la pila, debe conocer el
estado actual, el símbolo de entrada actual y la cima actual de la pila. Por consi­
guiente, A se define por medio de ternas de la forma (q, a , y), donde q es un es­
tado de Q, a es un símbolo de E u {£} y y e T. El resultado de aplicar A a dicha
terna es una colección de pares (p, w), donde "p e Q es el estado siguiente y
>v e T * es la cadena que se introducirá (o apilará) en la pila en lugar del símbolo
Yque estaba antes allí. Por tanto, se puede definir la relación A como
www.FreeLibros.com
146
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
AC 2
X (E U
{£}) X T X <2 X r*
Ya que estamos definiendo un autómata de pila no determinista, cabe espe­
rar que A no tiene por qué ser una función. Por tanto, si aplicamos A a la terna
(<7 i, a, b) se obtiene el conjunto {(<72 , cd), {qi, dcé), (9 3 , efe)}, del cual se elige de
forma no determinista uno de los pares, de manera que el autómata de pila cam ­
bia para reflejar dicha elección. Obsérvese que, puesto que los pares resultantes
pertenecen a g x T y y a que £ e P , se puede tener que de A (q, a, b) se obtenga
(p, £). Esto indica que el estado siguiente es p y que el símbolo b se elimina (o se
desapila) de la cim a de la pila.
Al definir A c Q x (E u {£}) x T x Q x T*, se fuerza a que A deba conside­
rar un símbolo de la pila en todos sus movimientos. Es decir, no es posible nin­
gún movimiento si la pila está vacía. Por esta razón, se supone que inicialmente
la pila contiene algún símbolo z, que es el símbolo inicial de la pila. Por otro
lado, un movimiento tal como
A (q, £, a) = {(pf aa)}
indica que el ADPND puede cambiar a un estado p y apilar una a en la pila
sin consumir ningún símbolo de la entrada. Finalmente, obsérvese que si
A (q, 0 , y) = 0 , no es posible ningún movimiento desde el estado q con el símbo­
lo de entrada <3 y con el símbolo de la pila y. En este caso, el ADPND parará su
ejecución.
Consideremos el autómata de pila no determinista definido por
Q = {q\,qi, 23, <?4}
I = { a ,b }
r= { A ,B }
Z= A
F = {q,}
s = q\
y A dado por la siguiente tabla:
A
{a, A )
q\
{(q2, BA), (q4,A )}
<?2
<73
ib, A )
(a,B)
0b ,B )
f e BB)}
{(<?3,£)}
(£ ,A )
{(?4, £)}
i
(£, B)
*
{(<74, ¿)}
www.FreeLibros.com
{(<73, £)}
*
Descargar