next up previous contents
Siguiente: Propiedades, algoritmos de decisión, Subir: Lenguajes regulares Anterior: Equivalencia entre gramáticas lineales   Índice General

Lema de bombeo

Siendo $a^*b^*$ una expresión regular, podemos construir un autómata finito que acepta el lenguaje así definido, también podemos construir para cualquier $n\in\bbbn$ fijo un autómata finito adecuado ($a^nb^n$ sería una expresión regular extendida que define el lenguaje correspondiente que contiene una sola palabra).

Pero no podemos construir un autómata finito que acepte el lenguaje:


\begin{displaymath}L_{ab}=\{a^nb^n\;\vert\;n\in\bbbn \} = \{\epsilon,ab,aabb,aaabbb,\dots\} \end{displaymath}

donde el parámetro $n$ no es fijo, sino se quiere que haya tantas $a$'s como $b$'s.

¿Por qué no podemos construir tal autómata?

Observamos el comportamiento del siguiente autómata:

\fbox{afdcpl}


\begin{displaymath}
\begin{array}{lcccc}
w_0 & = & 110 & & 10 \\
w_1 & = & 110 ...
...10 \\
& \dots & & & \\
w_k & = & x & y^k & z \\
\end{array}\end{displaymath}

Lema (de bombeo para lenguajes regulares): Sea $L$ un lenguaje regular (infinito). Entonces existe un $n\in\bbbn$ de tal manera que cada palabra $w\in L$ con $\vert w\vert\geq n$ se puede dividir en tres partes, $w=xyz$ cumpliéndose las tres propiedades:

  1. $y\not=\epsilon$
  2. $\vert xy\vert\leq n$
  3. para todos los $k\geq 0: xy^kz\in L$

Comprobación (ideas principales):

Entonces, comprobamos de nuevo que $L_{ab}$ no es regular, ahora usando el lema de bombeo:

Receta para el uso del lema de bombeo:

Podemos describir dicha `receta' también como un juego para dos personas:

El lema de bombeo es el jugador 1, ¿quién es el jugador 2?

Otro Ejemplo:


\begin{displaymath}L_{quad}=\{0^m\;\vert\;m \mbox{ es n\'umero cuadrado} \} \end{displaymath}

es decir, todas las cadenas de ceros que tienen un número cuadrado de símbolos.

Dos comentarios más:

Reglas de mano:

Pero ojo, existen lenguajes regulares que tienen que ver con números:

\begin{displaymath}
L_{tres}=\{w\;\vert\;w \mbox{ es codificaci\'on de un n\'umero divisible por 3} \}
\end{displaymath}

Ejercicio: contruye un autómata finito que acepte $L_{tres}$.


next up previous contents
Siguiente: Propiedades, algoritmos de decisión, Subir: Lenguajes regulares Anterior: Equivalencia entre gramáticas lineales   Índice General
© 2006, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática