Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingenierı́a de la Computación Pontificia Universidad Javeriana Cali 28 de marzo de 2008 Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Lenguajes No Regulares Algunos lenguajes no pueden ser reconocidos mediante autómatas finitos. Por ejemplo: L = {0n 1n | n ≥ 0} Se observa que el autómata debe recordar una cantidad ilimitada (de ceros) mediante un número limitado de estados y eso no es posible. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Lenguajes No Regulares Sin embargo, tampoco significa que todos los lenguajes que requieren conteo estén por fuera de los lenguajes regulares. Por ejemplo: D = {w | w tiene igual número de ocurrencias de 01 y 10 como subcadenas} Es decir, que se necesita un método riguroso para determinar si un lenguaje es regular o no, ya que la mera intuición puede llevar a conclusiones equivocadas. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Lema de Bombeo Lema Si A es un lenguaje regular, existe un número p tal que si s ∈ A y |s| ≥ p, entonces s puede dividirse en tres partes s = xyz de manera que se satisfacen las siguientes condiciones: 1 Para cada i ≥ 0, xy i z ∈ A 2 |y | > 0 3 |xy | ≤ p Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Demostración del Lema de Bombeo Preliminares: Sea M = {Q, Σ, δ, q0 , F } un DFA que reconoce A, y p el número de estados de M. Sea s = s1 , s2 , . . . , sn ∈ A y |s| = n y n ≥ p. Sea también r = r1 , r2 , . . . , rn+1 la secuencia de estados que se recorre en M al aceptar la cadena s, es decir, ∀i , 0 ≤ i ≤ n, ri +1 = δ(ri , si ) Entre los primeros p + 1 elementos de la secuencia r , hay dos que tienen que corresponder al mismo estado (por el principio de las palomas), sea rj la primera ocurrencia del estado repetido y rl la segunda, notar que l ≤ p + 1 Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Demostración del Lema de Bombeo Demostración. Sea x = s1 , . . . , sj−1 , y = sj , . . . , sl−1 y z = sl , . . . , sn . Como x lleva la máquina desde el estado inicial r1 hasta el estado rj , y leva la máquina desde rj hasta rj y z la lleva desde rj hasta el estado de aceptación rn , entonces M tiene que aceptar xy i z para i ≥ 0. Sabemos que j 6= l , |y | > 0 y l ≤ p + 1 ası́ que |xy | ≤ p por lo que se satisfacen todas las condiciones del lema. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Uso del lema para probar que un lenguaje no es regular Se realiza la demostración por contradicción: Se supone el que lenguaje si es regular Se aplica el lema que garantiza que existe un valor p. Finalmente se muestra que no es posible dividir la cadena en tres partes xyz de manera que las cadenas xy i z para i ≥ 0 pertenezcan también al lenguaje. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Ejemplo 1. Sea B = {0n 1n | n ≥ 0}, mostrar que B no es un lenguaje regular. Demostración. Sea p la longitud de bombeo y sea s = 0p 1p ∈ B y |s| > p. Por el lema de bombeo ∃xyz = s tal que xy i z ∈ B∀i , i ≥ 0. Surgen entonces los siguientes casos: Si y contiene únicamente ceros ó únicamente unos, la cadena xyyz no pertenece al lenguaje, por tener mayor cantidad de elementos de un sı́mbolo que del otro. Si y contiene ceros y unos, la cadena xyyz no pertenece al lenguaje por no tener todos los ceros juntos y todos los unos juntos. Por lo tanto, B no es un lenguaje regular. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Ejemplo 2. Sea C = {w | w tiene el mismo número de unos y ceros}, mostrar que C no es un lenguaje regular. Demostración. Sea p la longitud de bombeo y sea s = 0p 1p ∈ C y |s| > p. Por el lema de bombeo ∃xyz = s tal que xy i z ∈ C ∀i ≥ 0. Sea x = ε y z = ε, en este caso, xyz efectivamente pertenece a C , sin embargo, la condición 3 requiere además que |xy | ≤ p y esa condición no se cumple. Por lo tanto, C no es un lenguaje regular. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Ejemplo 3. Sea F = {ww | w ∈ {0, 1}∗ , mostrar que F no es un lenguaje regular. Demostración. Sea p la longitud de bombeo y sea s = 0p 10p 1 ∈ F y |s| > p. Por el lema de bombeo ∃xyz = s tal que xy i z ∈ F ∀i ≥ 0. La condición 3 implica que y sólo puede contener ceros y de ese modo xyyz no pertenecerı́a a F . Por lo tanto, F no es un lenguaje regular. Computabilidad y lenguajes formales: Sesión 18. Lema de bombeo (Pumping lemma) Ejemplo 4. 2 Sea D = {1n | n ≥ 0}, mostrar que D no es un lenguaje regular. Demostración. Por la condición 3, tenemos que |xy | ≤ p por lo tanto |y | ≤ p. Tenemos que |xyz| = p 2 y |xyyz| = P 2 + p, pero p 2 + p < (p + 1)2 , como la condición 2 requiere que |y | > 0, entonces |xyyz| > p 2 . Por lo tanto: p 2 < |xyyz| < (p + 1)2 y xyyz 6∈ D. De donde se deduce que D no es un lenguaje regular.