Post on 26-Jun-2015
transcript
Lema de Bombeo
Bayron Rubén De León Pérez 12-0542
Josué Augusto Puntiel Mena 13-0972
Profesora Rina Familia
Lenguajes Formales y Teoría de Autómatas
Universidad Iberoamericana (UNIBE)
Santo Domingo, República Dominicana
25 de Febrero del 2014|
Índice
Introducción …………………………………………………………………………………..…...…… 3
Lenguaje Regular ………………………………………………………………………………..……… 4
Importancia de los Lenguajes Regulares ……………………………………………………………… 5
Cómo Demostrar que un Lenguaje no es Regular …………………………………………………… 5
El lema de bombeo para los lenguajes regulares ………………………………………………..…… 5
Teorema……………………………………………………………………………………………...…… 6
Demostración de que un lenguaje no es regular ……………………………………………………… 7
Ejemplo de demostración de que un lenguaje no es regular …………………………………...…… 8
El Lema de Bombeo para los Lenguajes Regulares ……………………………………….………… 9
Demostración…………………………………………………………………………………...…...…… 9
El Lema de Bombeo como un juego entre adversarios ……………………………………..……… 11
Aplicaciones del Lema de Bombeo ……………………………………………………………..…… 11
Definición de las Gramáticas Independientes del Contexto………………………………..………. 12
El Lema de Bombeo para lenguajes independientes del contexto ………………………………… 13
El Tamaño de los Árboles de Derivación……………………………………………………….…… 14
Enunciado del Lema de Bombeo ………………………………………………………………..…… 15
Demostración……………………………………………………….……………………………...…… 15
Conclusión……………………………………………………..…………………………………..…… 17
Referencias………………………………………………………………………..………………..…… 18
Introducción
La teoría de autómatas es el estudio de dispositivos de cálculo abstractos, es decir, de las
“máquinas”. En las décadas de los años cuarenta y cincuenta, una serie de investigadores
estudiaron las máquinas más simples, las cuales todavía hoy denominamos “autómatas finitos”.
Originalmente, estos autómatas se propusieron para modelar el funcionamiento del cerebro y,
posteriormente, resultaron extremadamente útiles para muchos otros propósitos.
Todos estos desarrollos teóricos afectan directamente a lo que los expertos en
computadoras hacen. Algunos de los conceptos, como el de autómata finito y determinados tipos
de gramáticas formales, se emplean en el diseño y la construcción de importantes clases de
software.
El lema de bombeo para lenguajes regulares enuncia una propiedad que cumplen todos
los lenguajes regulares infinitos (y también algunos lenguajes que no son regulares). Gracias a
este lema podremos demostrar que ciertos lenguajes infinitos no son regulares. Es importante
hacer notar que el lema de bombeo es una herramienta adecuada para demostrar que un lenguaje
no es regular, pero no lo será para demostrar que un lenguaje si es regular (por el hecho de que
existen algunos lenguajes no regulares que la cumplen). Por tanto, si un lenguaje no cumple el
lema de bombeo no es regular, pero si lo cumple no podremos decir si es o no regular.
Lenguaje Regular
Se dice que un lenguaje es regular si y sólo si se cumple cualquiera de las
siguientes proposiciones:
Tiene al menos una gramática regular G que lo produce.
Puede ser reconocido por un autómata finito A.
Existe una expresión regular Er que representa a todas las cadenas de L.
Lenguaje regular. En Lingüística, Matemáticas e Informática y en la jerarquía de
Chomsky se refiere a los lenguajes de tipo 3, aquellos que pueden representarse
mediante gramáticas regulares, autómatas finitos o expresiones regulares.
Son los lenguajes formales más simples, con los mecanismos de representación y
reconocimiento más estudiados. Su aplicación práctica en la teoría y construcción
de intérpretes y compiladores de lenguajes de programación o
de especificación o formato de información, especialmente como microcomponentes
del analizador lexicográfico que detecta los tókenes como constantes numéricas, cadenas
de texto, operadores, palabras reservadas (keywords), separadores, etc. Pero también se
puede apreciar su uso en máquinas expendedoras, teléfonos públicos, calculadoras y otros
artefactos electromecánicos.
También puede realizarse una definición recursiva-constructiva de los lenguajes
regulares mediante el álgebra de lenguajes formales.
Un lenguaje regular sobre un alfabeto T ó LR(T) es:
El lenguaje vacío {}.
El lenguaje conformado por la cadena vacía o lenguaje trivial.
Un lenguaje {x} conformado por un único símbolo x de T.
Si A y B son lenguajes regulares sobre T, entonces AB (Concatenación de
lenguajes), Archivo: A unión B.gif (Unión de lenguajes), A* (Clausura de
lenguaje o Estrella de Kleene) son también lenguajes regulares sobre T.
Cualquier otro lenguaje que pueda obtenerse a partir de 1 a 4.
Importancia de los Lenguajes Regulares
La existencia y formalización de los lenguajes regulares (LR) y su vinculación con otros
artefactos lingüísticos-matemáticos ya bien formalizados, estudiados e incluso llevados a la
práctica ha sido de vital importancia en el ulterior desarrollo de los mecanismos de
procesamiento de lenguajes de computadora, fundamentalmente en los analizadores
lexicográficos gracias a la posibilidad de derivar el reconocimiento de los LR mediante
autómatas finitos que son fáciles de implementar computacionalmente con mecanismos simples
y rápidos, óptimos en la obtención de parsers veloces y robustos que a su vez le ofrecen a los
desarrolladores información detallada de los errores léxicos, sintácticos e incluso advierten sobre
errores semánticos.
Lo mismo sucede por ejemplo con las expresiones regulares implementadas ya en
muchos Lenguaje de programación de propósito general modernos que permiten a los
desarrolladores de lenguajes mecanismos muy eficientes para la obtención intuitiva de partes de
compiladores que reconocen los tókenes o partículas lexicales del código fuente como fase del
proceso completo de interpretación o compilado, según sea el caso
Cómo Demostrar que un Lenguaje no es Regular
No todo lenguaje es un lenguaje regular. El lema de bombeo permite demostrar que
determinados lenguajes no son regulares.
El lema de bombeo para los lenguajes regulares
El lema de bombeo para lenguajes regulares enuncia una propiedad que cumplen todos
los lenguajes regulares infinitos (y también algunos lenguajes que no son regulares). Gracias a
este lema podremos demostrar que ciertos lenguaje infinitos no son regulares. Es importante
hacer notar que el lema de bombeo es una herramienta adecuada para demostrar que un lenguaje
no es regular, pero no lo será para demostrar que un lenguaje si es regular (por el hecho de que
existen algunos lenguajes no regulares que la cumplen). Por tanto, si un lenguaje no cumple el
lema de bombeo no es regular, pero si lo cumple no podremos decir si es o no regular.
Considerando el lenguaje L01 = {0n1n | n≥1}. Este lenguaje contiene las cadenas 01,
0011, 000111, etc., que constan de uno o más ceros seguidos de un número igual de unos.
Establecemos que L01 no es un lenguaje regular. El argumento intuitivo es que si L01
fuera regular, entonces L01 sería el lenguaje de algún AFD A, que tendría un
determinado número de estados, digamos k estados. Imagine que este autómata recibe k
ceros como entrada. Después de recibir los k+1 prefijos de la entrada: ε,0,00,...,0k se
encontrará en un cierto estado. Dado que sólo existen k estados distintos, el principio del
juego de las sillas nos dice que después de leer dos prefijos diferentes, por ejemplo, 0i y
0j, A tiene que encontrarse en el mismo estado, por ejemplo q.
Sin embargo, en lugar de esto, suponemos que después de leer i o j ceros, el
autómata A comienza a recibir unos como entrada. Después de recibir i unos, debe
aceptar si previamente ha recibido i ceros, pero no si ha recibido j ceros. Puesto que
estaba en el estado q cuando comenzaron a llegar unos, no puede “recordar” si había
recibido i o j ceros, por lo que podemos “engañar” a A y hacerle cometer un error: aceptar
cuando no debe hacerlo o no aceptar cuando debería hacerlo.
El argumento anterior es de carácter informal, pero puede precisarse. Sin
embargo, puede llegarse a la misma conclusión, que el lenguaje L01 no es un lenguaje
regular, utilizando un resultado general de la forma siguiente.
Teorema
El lema de bombeo para lenguajes regulares) Sea L un lenguaje regular. Existe entonces
una constante n (que depende de L) tal que para toda cadena w perteneciente a L con |w| ≥n,
podemos descomponer w en tres cadenas,
W = xyz, tales que:
y ≠ ε (o dicho de otro modo, que |y| ≥ 1),
|xy| <= n
Para cualquier k ≥ 0, la cadena xyk
z pertenece a L.
Más formalmente:
∀ lenguaje regular infinito L sobre un alfabeto Σ
∃ n ∈ N /
∀ w ∈ L / |w| ≥ n
∃ x, y ,z ∈ Σ* / w = xyz, y ≠ ε, |xy| <= n,
∀ k ≥ 0, xyk
z ∈ L
O sea que para cualquier cadena de L lo bastante larga, siempre podremos encontrar una
partición en tres subcadenas, con una no vacía en el medio (la y) que no está demasiado lejos del
comienzo de la palabra, que podremos “bombear”; es decir, que si se repite la subcadena y
cualquier número de veces, la cadena resultante también pertenecerá a L.
Demostración de que un lenguaje no es regular
Dado que para todo lenguaje regular infinito se cumple el lema de bombeo, si se da un
lenguaje infinito y se demuestra que para él no se cumple, se habra demostrado que no es un
lenguaje regular. Como el lema de bombeo es una propiedad que se cumple para todas las
cadenas de longitud mayor o igual a cierta n, bastará encontrar una cadena de ese lenguaje, de
longitud mayor o igual a esa n, que no se pueda “bombear” para demostrar que el lenguaje no es
regular. Con esta idea en mente, los pasos a dar para demostrar que un lenguaje dado no es
regular son los siguientes:
1. Elegir una palabra w que pertenezca al lenguaje dado. Podemos elegir cualquier palabra
del lenguaje, pero debe ser una cuya longitud sea mayor o igual que una constante n que
desconocemos (la constante del lema de bombeo). Como desconocemos n, lo habitual será elegir
una palabra en función de un n cualquiera y cuya longitud sea mayor o igual que n.
2. El lema de bombeo dice que si el lenguaje fuera regular, podríamos encontrar una forma
de partir esa palabra w en tres, cumpliendo ciertas restricciones, y que esa partición sería
bombeable. Como queremos demostrar que el lenguaje no es regular, tendremos que demostrar
que no hay ninguna forma de partir la palabra en tres cumpliendo las restricciones del lema, y
que después se pueda bombear siempre.
3. Finalmente bastará con encontrar una constante k ≥ 0 que haga que ninguna de las
particiones posibles de w sea bombeable.
Más formalmente, para demostrar que un lenguaje L sobre un alfabeto Σ no es regular
habrá que demostrar que:
∀ n ∈ N
∃ w ∈ L / |w| ≥ n,
∀ x, y ,z ∈ Σ* / w = xyz, y ≠ ε, |xy| <= n,
∃ k ≥ 0 / xyk
z ∉ L
Es importante hacer notar que en esta demostración, por reducción al absurdo, de que un
lenguaje no es regular, los cuantificadores existenciales “para todo” y “existe” están alternados al
revés que en el enunciado del lema. Esto es, intuitivamente, porque se esta demostrando lo
contrario que el lema de bombeo: éste enuncia una propiedad que cumplen todos los lenguajes
regulares y la demostración precedente demuestra que un lenguaje no es regular, o sea que no
cumple esa propiedad.
Ejemplo de demostración de que un lenguaje no es regular
Sea el lenguaje L = {a2nbn | n ≥ 0}. Demostrar que L no es regular.
Suponiendo que el lenguaje es regular. Si lo es, y como es infinito, para él se cumplirá el
lema de bombeo. Sea por tanto n ∈ N la constante del lema de bombeo para L (constante que no
se conoce).
Eligiendo una palabra que pertenezca a L y de longitud mayor o igual a n:
w = a2n
bn
, tenemos que w ∈ L y |w| = 3n y por tanto |w| ≥ n, sea cual sea n.
El Lema de Bombeo para los Lenguajes Regulares
Considerando el lenguaje L01 = {0n1n | n ≥ 1}. Este lenguaje contiene las cadenas 01,
0011, 000111, etc., que constan de uno o más ceros seguidos de un número igual de unos.
Establecemos que L01 no es un lenguaje regular. El argumento intuitivo es que si L01 fuera
regular, entonces L01 sería el lenguaje de algún AFD A, que tendría un determinado número de
estados, digamos k estados. Imaginar que este autómata recibe k ceros como entrada. Después de
recibir los k+1 prefijos de la entrada: ε ,0,00, . . . ,0k se encontrará en un cierto estado.
Dado que sólo existen k estados distintos, el principio del juego de las sillas nos dice que
después de leer dos prefijos diferentes, por ejemplo, 0i y 0j, A tiene que encontrarse en el mismo
estado, por ejemplo q.
Sin embargo, en lugar de esto, se supone que después de leer i o j ceros, el autómata A
comienza a recibir unos como entrada. Después de recibir i unos, debe aceptar si previamente ha
recibido i ceros, pero no si ha recibido j ceros. Puesto que estaba en el estado q cuando
comenzaron a llegar unos, no puede “recordar” si había recibido i o j ceros, por lo que podemos
“engañar” a A y hacerle cometer un error: aceptar cuando no debe hacerlo o no aceptar cuando
debería hacerlo.
El argumento anterior es de carácter informal, pero puede precisarse. Sin embargo, puede
llegarse a la misma conclusión, que el lenguaje L01 no es un lenguaje regular, utilizando un
resultado general de la forma siguiente.
Demostración
Supongamos que L es regular. Entonces L =L(A) para algún AFD A. Supongamos que A
tiene n estados. Consideremos ahora cualquier cadena w de longitud n o mayor, por ejemplo w =
a1a2 · · ·am, donde m ≥ n y cada ai es un símbolo de entrada. Para i = 0,1, . . . ,n definimos el
estado pi como _ δ (q0,a1a2 · · ·ai), donde δ es la función de transición de A y q0 es el estado
inicial de A. Es decir, pi es el estado en que se encuentra A después de leer los primeros i
símbolos de w. Observe que p0 = q0.
Por el principio del juego de las sillas, no es posible que los n+1 pi para i = 0,1, . . . ,n
sean diferentes, ya que sólo existen n estados distintos. Por tanto, podemos determinar dos
enteros distintos i y j, con 0 ≤ i< j ≤ n, tales que pi = pj . Ahora podemos descomponer w = xyz
como sigue:
1. x = a1a2 · · ·ai.
2. y = ai+1ai+2 · · ·aj .
3. z = aj+1aj+2 · · ·am.
Es decir, x lleva a pi una vez; y lleva desde pi a pi de nuevo (ya que pi también es pj) y z
es el resto de w.
Considerando ahora lo que ocurre si el autómata A recibe la entrada xykz para cualquier k
≥ 0. Si k = 0, entonces el autómata va desde el estado inicial q0 (que también es p0) hasta pi para
la entrada x. Puesto que pi también es pj , al leer la entrada z. Por tanto, A acepta xz.
Si k > 0, entonces A va desde q0 hasta pi para la entrada x, va en círculo desde pi hasta pi
k veces para la entrada yk, y luego pasa al estado de aceptación para la entrada z. Por tanto, para
cualquier k ≥ 0, A también acepta xykz; es decir, xykz pertenece a L.
El Lema de Bombeo como un juego entre adversarios
Un teorema cuya proposición implica varias alternativas de cuantificadores “para todo” y
“existe” puede interpretarse como un juego entre dos personas. El lema de bombeo es un ejemplo
importante de este tipo de teorema, ya que implica cuatro identificadores diferentes:
“para todos los lenguajes L existe n tal que para toda w perteneciente a L con |w| ≥ n
existe xyz igual a w tal que · · · ”. Podemos interpretar la aplicación del lema de bombeo como un
juego en el que:
1. El jugador 1 selecciona el lenguaje L para demostrar que no es regular.
2. El jugador 2 selecciona n, pero no revela al jugador 1 lo que vale n; el jugador 1 debe
plantear el juego para todos los n posibles.
3. El jugador 1 selecciona w, que puede depender de n y cuya longitud tiene que ser al
menos igual a n.
4. El jugador 2 divide w en x, y y z, teniendo en cuenta las restricciones que se estipulan
en el lema de bombeo; y _=ε y |xy| ≤ n. De nuevo, el jugador 2 no dice al jugador 1 qué valores
tienen x, y y z, aunque debe respetar las restricciones.
5. El jugador 1 “gana” eligiendo un valor de k, que puede ser una función de n, x,y y z, tal
que xykz no pertenezca a L.
Aplicaciones del Lema de Bombeo
Demostrar que el lenguaje Leq que consta de todas las cadenas con un número igual de
ceros que de unos (en ningún orden en particular) no es un lenguaje regular. Siendo el jugador 1
y se debe enfrentar con cualquier elección que haga el jugador 2. Suponiendo que n es la
constante que existiría si Leq fuera regular, de acuerdo con el lema de bombeo; es decir, el
“jugador 2” elige n. El jugador 1 selecciona w = 0n1n, es decir, n ceros seguidos de n unos, una
cadena que seguramente pertenece a Leq.
Ahora el “jugador 2” divide w en xyz. Todo lo que sabemos es que y _= ε y |xy| ≤ n. Sin
embargo, dicha información es muy útil y “gana” de la forma siguiente. Dado que |xy| ≤ n y que
xy procede del principio de w, se sabe que x e y constan sólo de ceros. El lema de bombeo nos
dice que xz pertenece a Leq, si Leq es regular.
Esta conclusión corresponde al caso en que k = 0 en el lema de bombeo. Sin embargo, xz
tiene n unos, ya que todos los unos de w están en z. Pero xz también tiene menos de n ceros,
porque hemos perdido los ceros de y.
Puesto que y _= ε , se sabe que no puede haber más de n−1 ceros entre x y z. Por tanto,
después de suponer que Leq es un lenguaje regular, se ha demostrado un hecho que se sabe que
es falso, que xz pertenece a Leq.
Se Tiene una demostración por reducción al absurdo del hecho de que Leq no es regular.
Definición de las Gramáticas Independientes del Contexto
Existen cuatro componentes importantes en una descripción gramatical de un lenguaje:
1. Un conjunto finito de símbolos que forma las cadenas del lenguaje que se está
definiendo. Este conjunto era {0,1} en el ejemplo de los palíndromos que acabamos de ver.
Denominamos a este conjunto alfabeto terminal o alfabeto de símbolos terminales.
2. Un conjunto finito de variables, denominado también en ocasiones símbolos no
terminales o categorías sintácticas. Cada variable representa un lenguaje; es decir, un conjunto
de cadenas. En el ejemplo anterior, sólo había una variable, P, que hemos empleado para
representar la clase de palíndromos del alfabeto {0,1}.
3. Una de las variables representa el lenguaje que se está definiendo; se denomina
símbolo inicial. Otras variables representan las clases auxiliares de cadenas que se emplean para
definir el lenguaje del símbolo inicial. En el ejemplo anterior, la única variable, P, también es el
símbolo inicial.
4. Un conjunto finito de producciones o reglas que representan la definición recursiva de
un lenguaje. Cada producción consta de:
a) Una variable a la que define (parcialmente) la producción. Esta variable a menudo se
denomina cabeza de la producción.
b) El símbolo de producción→.
c) Una cadena formada por cero o más símbolos terminales y variables. Esta cadena,
denominada cuerpo de la producción, representa una manera de formar cadenas pertenecientes al
lenguaje de la variable de la cabeza. De este modo, dejamos los símbolos terminales invariables
y sustituimos cada una de las variables del cuerpo por una cadena que sabemos que pertenece al
lenguaje de dicha variable.
Los cuatro componentes que acabamos de describir definen una gramática independiente
del contexto, (GIC), o simplemente una gramática, o en inglés CFG, context-free grammar. Se
representa una GIC G mediante sus cuatro componentes, es decir, G = (V,T,P,S), donde V es el
conjunto de variables, T son los símbolos terminales, P es el conjunto de producciones y S es el
símbolo inicial.
El Lema de Bombeo para lenguajes independientes del contexto
Si se considera el lenguaje de los palíndromos. Un palíndromo es una cadena que se lee
igual de izquierda a derecha que de derecha a izquierda, como por ejemplo, otto o
dabalearrozalazorraelabad (“Dábale arroz a la zorra el abad”). Dicho de otra manera, la cadena w
es un palíndromo si y sólo si w = wR. Para hacer las cosas sencillas, consideremos únicamente
los palíndromos descritos con el alfabeto {0,1}. Este lenguaje incluye cadenas del tipo 0110,
11011 y ε , pero no cadenas como 011 o 0101.
Es fácil verificar que el lenguaje Lpal de los palíndromos formados por ceros y unos no
es un lenguaje regular. Para ello, utilizamos el lema de bombeo. Si Lpal es un lenguaje regular,
sea n la constante asociada y consideremos el palíndromo w = 0n10n. Si Lpal es regular,
entonces podemos dividir w en w = xyz, tal que y consta de uno o más ceros del primer grupo.
Por tanto, xz, que también tendría que pertenecer a Lpal si Lpal fuera regular, tendría menos
ceros a la izquierda del único 1 que los que tendría a la derecha del mismo. Por tanto, xz no
puede ser un palíndromo. Luego hemos llegado a una contradicción de la hipótesis establecida,
que Lpal es un lenguaje regular.
Existe una definición recursiva y natural que nos dice cuándo una cadena de ceros y unos
pertenece a Lpal . Se parte de un caso básico estableciendo que unas cuantas cadenas obvias
pertenecen a Lpal , y luego se aplica la idea de que si una cadena es un palíndromo, tiene que
comenzar y terminar con el mismo símbolo. Además, cuando el primer y último símbolos se
eliminan, la cadena resultante también tiene que ser un palíndromo. Es decir,
Base. ε , 0 y 1 son palíndromos.
Paso Inductivo. Si w es un palíndromo, también lo son 0w0 y 1w1. Ninguna cadena es
un palíndromo de ceros y unos, a menos que cumpla el caso base y esta regla de inducción.
Una gramática independiente del contexto es una notación formal que sirve para expresar
las definiciones recursivas de los lenguajes. Una gramática consta de una o más variables que
representan las clases de cadenas, es decir, los lenguajes. En este ejemplo sólo necesitamos una
variable P, que representa el conjunto de palíndromos; ésta es la clase de cadenas que forman el
lenguaje Lpal . Existen reglas que establecen cómo se construyen las cadenas de cada clase. La
construcción puede emplear símbolos del alfabeto, cadenas que se sabe que pertenecen a una de
las clases, o ambos elementos.
El teorema, conocido como “lema de bombeo para lenguajes independientes del
contexto”, establece que en cualquier cadena lo suficientemente larga de un LIC, es posible
encontrar a los sumo dos subcadenas cortas y muy próximas que pueden “bombearse” en
tándem. Es decir, se puede repetir ambas cadenas i veces, para cualquier entero i, y la cadena
resultante pertenecerá al lenguaje.
El Tamaño de los Árboles de Derivación
El primer paso para obtener un lema de bombeo para los LIC consiste en examinar la
forma y el tamaño de los árboles de derivación. Una de las aplicaciones de la FNC es transformar
los árboles de derivación en árboles binarios. Estos árboles tienen propiedades interesantes y
aquí vamos a aprovechar una de ellas.
Enunciado del Lema de Bombeo
El lema de bombeo para los LIC es bastante similar al lema de bombeo para los lenguajes
regulares, pero se descomponen cada cadena z del LIC L en cinco partes y bombeamos en
tándem la segunda y la cuarta partes.
Lema de bombeo para los lenguajes independientes del contexto. Sea L un LIC. Entonces
existe una constante n tal que si z es cualquier cadena de L tal que |z| es al menos n, entonces
podemos escribir z = uvwxy, sujeta a las siguientes condiciones:
1. |vwx| ≤ n. Es decir, la parte central no es demasiado larga.
2. vx _= ε . Puesto que v y x son las partes que se van a “bombear”, esta condición
establece que al menos una de las cadenas que se van a bombear no tiene que ser vacía.
3. Para todo i ≥ 0, uviwxiy pertenece a L. Es decir, las dos cadenas v y x pueden
“bombearse” cualquier número de veces, incluyendo cero, y la cadena resultante pertenecerá a L.
Demostración
El primer paso consiste en determinar una gramática G en la forma normal de Chomsky
para L. Técnicamente, no se puede determinar tal gramática si L es el LIC /0 o {ε }. Sin embargo,
si L = /0 entonces el enunciado del teorema, que establece que una cadena z de L no puede
violarse, ya que no existe dicha cadena z en / 0. Además la gramática en la FNC G generará L−{ε
}, pero de nuevo esto no es importante, ya que sin dudas se seleccionara n > 0, en cuyo caso z no
puede ser ε de ninguna manera.
Se parte de una gramática en la FNC G = (V,T,P,S) tal que L(G) = L−{ε } y suponiendo
que G tiene m variables. Se Elige n = 2m. A continuación, se supone que z de L tiene una
longitud al menos igual a n. Un árbol de derivación así no puede tener un resultado z, porque z es
demasiado larga. Por tanto, cualquier árbol de derivación con resultado z tiene un camino de
longitud al menos igual a m+1.
La cadena w es el resultado del subárbol con raíz en Aj . Las cadenas v y x son las
cadenas a la izquierda y a la derecha, respectivamente, de w en el resultado del subárbol más
largo con raíz en Ai. Observe que, dado que no existen producciones unitarias, v y x no pueden
ser ambas ε , aunque una sí podría serlo. Por último, u e y son aquellas partes de z que están a la
izquierda y a la derecha, respectivamente, del subárbol con raíz en Ai.
Si Ai = Aj = A, entonces se puede construir nuevos árboles de derivación a partir del árbol
original. Primero se puede reemplazar el subárbol con raíz en Ai, lo que da como resultado vwx,
por el subárbol con raíz en Aj , que tiene como resultado w. La razón de poder hacer esto es que
ambos árboles tienen A como raíz.
El detalle que queda es la condición (1), que establece que |vwx| ≤ n. Sin embargo,
elegimos Ai cerca de la parte inferior del árbol; es decir, k−i ≤ m. Por tanto, el camino más largo
en el subárbol con raíz en Ai no es mayor que m+1. De acuerdo con el Teorema 7.17, el subárbol
con raíz en Ai tiene un resultado cuya longitud no es mayor que 2m = n.
Conclusión
El lema de bombeo para las expresiones regulares es una simplificación de un resultado
de los lenguajes independientes del contexto obtenido por Bar- Hillel, Perles y Shamir
Si un lenguaje es regular, entonces toda cadena lo suficientemente larga del lenguaje tiene
una subcadena no vacía que puede ser “bombeada”, es decir, repetida cualquier número de veces
siempre y cuando las cadenas resultantes pertenezcan también al lenguaje. Este hecho puede
utilizarse para demostrar que muchos lenguajes no son regulares.
El lema de bombeo. En cualquier LIC, es posible encontrar, dentro de cualquier cadena lo
suficientemente larga del lenguaje, una subcadena corta tal que los dos extremos de dicha
subcadena puedan ser “bombeados” en tándem; es decir, cada uno de ellos puede repetirse el
número de veces que se desee. Las dos cadenas que van a bombearse no pueden ser ambas ε .
Este lema, y su versión más potente, conocida como el lema de Ogden permiten demostrar que
muchos lenguajes no son independientes del contexto.
Referencias
Conocimiento con todos y para todos (S.F). Lenguaje Regular. Recuperado el 20 de Febrero del
2014 de: http://www.ecured.cu/index.php/Lenguaje_regular
Elena Jurado Málaga (2008). Teoría de Automatas. Recuperado el 22 de Febrero del 2014 de:
http://campusvirtual.unex.es/ebooks/files/file/TeoriaAutomatas.pdf
Rubén Béjar Hernández (S.F). El lema de bombeo para lenguajes regulares. Recuperado el 21 de
Febrero del 2014 de: http://webdiis.unizar.es/asignaturas/LGA
John E. Hopcroft (S.F). Teoría de autómatas, lenguajes y computación. Recuperado el 20 de
Febrero del 2014 de:
http://computacion.cs.cinvestav.mx/~efranco/docencia/teoriacomputacional/files/books/T
eoriaDeAutomatas,lenguajesYComputacion-Hopcroft.pdf