Atlasingeniería

Teoría de la computaciónAutómatas y lenguajesTema 5

Lema de bombeo: probar que algo no se puede

Demostrar que un lenguaje no es regular no se hace mostrando que ningún autómata funcionó. El lema de bombeo convierte la memoria finita de la máquina en una propiedad que se puede contradecir.

Para este tema conviene tener claro:Autómatas finitos deterministas y no deterministas

Probar que algo se puede es fácil: se muestra la máquina. Probar que no se puede es otra cosa, porque hay infinitos autómatas posibles y no alcanza con fracasar unas cuantas veces. El lema de bombeo es la herramienta que convierte esa imposibilidad en una contradicción concreta.

La intuición es el principio del palomar

La intuición sale del principio del palomar. Un autómata tiene una cantidad finita de estados, digamos pp. Si procesa una cadena más larga que pp, forzosamente repite un estado.

Entre las dos visitas al mismo estado hay un tramo que forma un ciclo. Y si hay un ciclo, se puede recorrer cero veces, una, o mil: el autómata no distingue. Todas esas cadenas terminan en el mismo estado final y, por lo tanto, todas se aceptan o todas se rechazan.

Acepta: las cadenas de aes cuya cantidad es múltiplo de tres

Escribí una palabra con a y seguila paso a paso.

Tres estados, un ciclo de largo tres. Escribí «aaa» y vas a volver al inicio; escribí «aaaaaa» y vas a dar la vuelta dos veces por el mismo camino. Ese camino repetido es exactamente la y del lema: se puede recorrer cero veces, una o mil, y la máquina no tiene forma de notar la diferencia. Por eso el lema no es un truco: es leer el dibujo.

Antes de seguir, predecí

Encontraste una palabra del lenguaje que no se puede bombear. ¿Qué demostraste?

El enunciado y sus tres condiciones

Formalmente: si LL es regular, existe un pp tal que toda cadena wLw \in L con wp|w| \ge p se puede partir en w=xyzw = xyz cumpliendo tres condiciones: y>0|y| > 0, xyp|xy| \le p, y xyizLxy^{i}z \in L para todo i0i \ge 0.

Las dos primeras condiciones son las que dan fuerza a la demostración. y>0|y|>0 dice que el tramo bombeable no es vacío; xyp|xy| \le p dice que está cerca del principio, y eso permite controlar qué símbolos contiene.

Usarlo es jugar un juego con turnos fijos

Se usa por contradicción, y conviene pensarlo como un juego con turnos fijos. El adversario elige pp. Uno elige la cadena ww, en función de pp. El adversario elige la partición. Uno elige el ii que rompe todo.

El error más común es elegir la partición uno mismo: hay que refutar todas las particiones posibles. Por eso la elección de ww es lo único que realmente se decide, y hay que elegirla de modo que la condición xyp|xy| \le p deje al adversario sin opciones útiles.

El caso clásico, paso por paso

El caso clásico: L={anbn}L = \{a^n b^n\}. Se elige w=apbpw = a^p b^p. Como xyp|xy| \le p, el tramo yy está formado únicamente por aes, cualquiera sea la partición.

Bombear con i=2i=2 agrega aes sin agregar bes, y la cadena resultante tiene más aes que bes: no está en LL. Contradicción, así que LL no es regular. Toda la demostración cabe en un párrafo, y la clave fue elegir una cadena donde el prefijo de largo pp fuera homogéneo.

Dos cuidados que invalidan media demostración

Hay dos cuidados importantes. El lema es una condición necesaria, no suficiente: un lenguaje puede cumplir la propiedad de bombeo y aun así no ser regular. Sirve para refutar, nunca para confirmar.

Y muchas veces hay un camino más corto. Como los regulares son cerrados bajo intersección y complemento, se puede probar que un lenguaje no es regular intersecándolo con uno que sí lo es y llegando a un lenguaje ya conocido como no regular. El teorema de Myhill-Nerode da otra vía, y a diferencia del lema es una caracterización exacta.

La versión para libres de contexto

Existe la versión para lenguajes libres de contexto, con la misma idea aplicada al árbol de derivación: si el árbol es lo bastante alto, una variable se repite en un camino, y el tramo entre las dos apariciones se puede repetir.

Ahí la cadena se parte en cinco, w=uvxyzw = uvxyz, y se bombean dos tramos a la vez. Con eso se prueba que anbncna^n b^n c^n no es libre de contexto, que es el resultado que separa ese nivel del siguiente.

Cómo se usa, y qué no prueba

PasoQuién eligeQué se hace
La longitud pel adversariose acepta que existe, sin saber cuánto vale
La cadena wvoselegir una difícil, que dependa de p
La partición xyzel adversariohay que cubrir todas las particiones válidas
El exponente ivoselegir el que rompa: 0 y 2 suelen alcanzar
El único paso donde hay libertad real es el segundo, y ahí se gana o se pierde la demostración: con una cadena mal elegida, alguna partición sobrevive y el argumento no cierra.

La estructura es un juego contra un adversario, y escribirla así evita el error más común. Para anbna^nb^n, la cadena que funciona es apbpa^pb^p: como xyp|xy| \le p, el tramo bombeable está enteramente dentro de las aes, y bombearlo desbalancea la cantidad. Elegir en cambio (ab)p(ab)^p deja particiones que sobreviven, y la demostración no sale.

Lo que preguntan sobre esto

Cierre

El lema de bombeo traduce “la máquina tiene memoria finita” en “toda cadena larga tiene un ciclo repetible”. La demostración es un juego donde lo único que se elige es la cadena, y hay que refutar todas las particiones. Sirve para refutar, no para confirmar.

Autoevaluación

¿Lo entendiste?

¿De qué principio sale la intuición del lema?
¿Para qué sirve la condición |xy| ≤ p?
En el «juego» de la demostración, ¿qué elige uno y qué elige el adversario?
El lema de bombeo se cumple para un lenguaje. ¿Se puede concluir que es regular?