Cap´ıtulo 8 Propiedades de los Lenguajes Regulares
Transcripción
Cap´ıtulo 8 Propiedades de los Lenguajes Regulares
Capı́tulo 8 Propiedades de los Lenguajes Regulares Definición 1 (Lenguaje regular) Un lenguaje L se denomina regular si y sólo si existe un autómata finito determinista A tal que L = L(A). Se pueden dar definiciones equivalentes, utilizando expresiones regulares o gramáticas regulares, ya que, como hemos visto en temas anteriores, estos formalismos definen la misma clase de lenguajes. Preguntas 1 ¿Existe algún método para saber si un lenguaje dado es regular o no?. ¿Son los lenguajes que se obtienen al aplicar determinadas operaciones a lenguajes regulares también regulares?. ¿Cómo se puede decidir (de forma automática) si un lenguaje regular tiene ciertas propiedades: si es finito, vacı́o, o infinito?. 8.1. Identificación de lenguajes no regulares Teorema 2 (Lema de Bombeo o Pumping Lemma) Sea L un lenguaje regular. Entonces existe una constante n ∈ N tal que para toda palabra x ∈ L con |x| ≥ n, existe una descomposición de x en tres subcadenas, x = uvw verificando las siguientes propiedades: a) |uv| ≤ n b) |v| > 0 c) uvi w ∈ L, para todo i ∈ N. 1 CAPÍTULO 8. PROPIEDADES DE LOS LENGUAJES REGULARES 2 Demostración.– Si L es finito, basta con tomar n > máx{|x| | x ∈ L}. Por tanto, a partir de ahora, y en toda la demostración, supondremos que L es infinito. Como L es regular, existe un autómata finito determinista mı́nimo A = (Q, Σ, q0 , f, F ) tal que L(A) = L. Definimos n := |Q|. Sea x = a1 a2 a3 . . . am ∈ L una palabra arbitraria del lenguaje, con m ≥ n. Como x ∈ L, se sigue que el autómata A acepta x. Consideremos la sequencia de transiciones que recorre A para aceptar x: a1 a2 a3 am q0 −→ q1 −→ q2 −→ · · · −→ qm , con q0 , . . . , qm ∈ Q, y qm ∈ F . Esta cadena tiene m+1 estados. Como A tiene n estados distintos, y m + 1 > n, se sigue que en dicha secuencia de transiciones existe un estado repetido, esto es, existen dos enteros j, k, 0 ≤ j < k ≤ n tal que qj = qk . Consideremos ahora las siguientes palabras: u := a1 · · · aj v := aj+1 · · · ak w := ak+1 · · · am Obviamente se tiene que x = uvw. Veamos que se verifican el resto de las propiedades: a) |uv| ≤ n, pues |uv| = k ≤ n. b) |v| > 0, pues |v| = k − j > 0. c) uvi w ∈ L, para todo i ∈ N, pues, como se ve en el esquema de abajo, la cadena v = aj+1 · · · ak puede eliminarse, o bien “bombearse” sin que cambie el estado al que se llega al finalizar la palabra: v = aj+1 , . . . , ak u = a1 , . . . , aj q0 w = ak+1 , . . . , am qj = qk qm Ası́, uvi w = a1 · · · aj (aj · · · ak )i ak · · · am ∈ L, ∀i ∈ N. 8.1.1. Aplicación del Lema de Bombeo El lema de bombeo se puede utilizar para demostrar que ciertos lenguajes no son regulares. Para demostrar que un lenguaje no es regular basta probar que no lo cumple. Estas demostraciones son siempre por contradicción y siguen el siguiente esquema: 1. Se supone que L es regular y, por tanto, debe cumplir el lema de bombeo. CAPÍTULO 8. PROPIEDADES DE LOS LENGUAJES REGULARES 3 2. Se elige un valor genérico n (no especificado) para la constante. 3. Se selecciona una palabra x ∈ L (en función de n) con |x| ≥ n. 4. Se descompone x en uvw, tal que |uv| ≤ n y |v| > 0, de todas las formas posibles. 5. Se demuestra que para todas estas descomposiciones, existe siempre i ∈ N tal que uvi w 6∈ L. 6. Si se consigue demostrar que para todas estas descomposiciones existe siempre un tal i ∈ N, tal que uvi w 6∈ L, entonces L no cumple el lema y, por tanto, no es regular. Veamos, por ejemplo, que el lenguaje L = {am b2m | m ∈ N} no es regular. Supongamos que L es regular. Sea n = N ∈ N la constante del lema de bombeo, y elegimos la palabra x := aN b2N . Se tiene que x ∈ L, y además |x| = 3N ≥ n. Por el Lema de Bombeo, existen palabras u, v, w tales que x = uvw, y tales que |uv| ≤ n y |v| > 0. Por la forma de la palabra x y por con estas dos propiedades, podemos concluir que la descomposición tiene la siguiente forma: u := ai con i ∈ N j v := a con j > 0 N −i−j 2N w := a b y además, i + j ≤ N . Lo más importante es que, necesariamente, v tendrá la forma v = aj para cierto j ∈ N, 0 < j ≤ N . Ası́ pues, uv0 w = uw = aN −j b2N . Por tanto uv0 w 6∈ L (ya que 2(N − j) 6= 2N ), en contradicción con la última propiedad del Lema de Bombeo. Por tanto, el lenguaje no es regular. Ejemplo 1 ¿Es el lenguaje L := {xx−1 | x ∈ {0, 1}∗ } regular?. Sea el lenguaje L := {an bm cm | m, n ≥ 1}. Demuestra que L cumple el lema de bombeo. ¿Es L un lenguaje regular?. P ¿Es el lenguaje L := {am |m = ni=0 i , n ≥ 0} regular?. Sea Σ = {−, ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} y sea x ∈ R un número real. Sea Lx el lenguaje de las cadenas que son las truncaciones de la expansión decimal de x. Por ejemplo, L256 = L−15.7 = Lπ = L 943 = 990 L√2 {λ, 2, 25, 256, 256., 256.0, 256.00, 256.000, . . .} {λ, −, −1, −15, −15., −15.7, −15.70, −15.700, . . .} {λ, 3, 3., 3.1, 3.14, 3.141, 3.1415, . . .} {λ, 0, 0., 0.7, 0.72, 0.725, 0.7252, 0.72525, 0.725252, 0.7252525, 0.72525252, 0.725252525, . . .} = {λ, 1, 1., 1.4, 1.41, 1.414, , 1.4142, 1.41421, 1.414213, . . .} CAPÍTULO 8. PROPIEDADES DE LOS LENGUAJES REGULARES 4 Demuestra que Lx es regular si y sólo si x es un número racional. Este ejemplo indica lo limitado que es (computacionalmente) la noción de lenguaje regular. Demuestra que el lenguaje HTML no es un lenguaje regular. 8.2. Operaciones sobre Lenguajes Teorema 3 Dados dos lenguajes regulares L1 y L2 , los lenguajes L1 ∪ L2 , L1 L2 y L∗1 también son regulares. Demostración.– Si L1 y L2 son regulares, existen dos expresiones regulares α1 y α2 tales que L1 = L(α1 ) y L2 = L(α2 ). Utilizando la definición de las operaciones de cierre, concatenación y suma de expresiones regulares: L1 ∪ L2 = L(α1 ) ∪ L(α2 ) = L(α1 + α2 ) L1 L2 = L(α1 )L(α2 ) = L(α1 α2 ) L∗1 = L(α1 )∗ = L(α1∗ ) Es decir, existen expresiones regulares que describen los lenguajes L1 ∪ L2 , L1 L2 y L∗1 y, por tanto, estos lenguajes son regulares. Teorema 4 Dado un lenguaje regular L, su complemento L también es regular. Demostración.– Dado que L es regular, existe un AFD A = (Q, Σ, q0 , f, F ), tal que L(A) = L. Consideremos el autómata A′ = (Q, Σ, q0 , f, Q \ F ). Trivialmente, el autómata A′ únicamente acepta las palabras rechazadas por el autómata A, y por tanto L(A′ ) = Σ∗ \ L = L. Observación 5 Es imprescindible que el autómata en la demostración sea determinista. ¿Qué ocurrirı́a si fuese no determinista?. Teorema 6 Dados dos lenguajes regulares L1 y L2 , el lenguaje L1 ∩ L2 también es regular. Demostración.– Por las leyes de Morgan: L1 ∩ L2 = L1 ∪ L2 . Teorema 7 Dados dos lenguajes regulares L1 y L2 , el lenguaje diferencia L1 \ L2 también es regular. CAPÍTULO 8. PROPIEDADES DE LOS LENGUAJES REGULARES 5 Demostración.– Por las leyes de Morgan: L1 \ L2 = L1 ∩ L2 . Teorema 8 Dado un lenguaje regular L sobre un alfabeto finito Σ, su lenguaje inverso L−1 también es regular. Demostración.– Dado que L es regular, existe una expresión regular α tal que L(α) = L. Para demostrar que L−1 es regular, construiremos recursivamente a partir de α una expresión regular α−1 tal que L(α−1 ) = L−1 . Si α = ∅, o α = λ o α = a ∈ Σ, entonces α−1 := α. Si α = α1 + α2 , entonces α−1 := α1−1 + α2−1 . Si α = α1 α2 , entonces α−1 := α2−1 α1−1 . Si α = α1∗ , entonces α−1 := (α1−1 )∗ . Definición 9 (Homomorfismo) Sean Σ y Γ dos alfabetos finitos. Se llama homomorfismo a una función h : Σ → Γ∗ , tal que asigna una palabra de Γ∗ a cada sı́mbolo de Σ. Esta definición se puede extender para definir la función h sobre palabras de Σ: w = a1 a2 . . . an ∈ Σ∗ ⇒ h(w) := h(a1 )h(a2 ) · · · h(an ) ∈ Γ∗ . Definición 10 (imagen homomórfica) Dado un lenguaje L ⊆ Σ∗ y dado un homomorfismo h : Σ → Γ∗ , se llama imagen homomórfica de L respecto a h al lenguaje h(L) definido de la siguiente manera: h(L) := {h(w) | w ∈ L}. Teorema 11 Sean Σ y Γ dos alfabetos finitos, y sea L un lenguaje regular definido sobre Σ. Sea h : Σ → Γ∗ un homomorfismo. Entonces, la imagen homomórfica de L respecto a h también es regular. Demostración.– Dado que L es regular, existe una expresión regular α tal que L(α) = L. Para demostrar que h(L) es regular, construiremos recursivamente a partir de α una expresión regular α′ tal que L(α′ ) = h(L). Si α = ∅ o α = λ, entonces α′ := α. CAPÍTULO 8. PROPIEDADES DE LOS LENGUAJES REGULARES 6 Si α = a ∈ Σ, entonces r′ := (h(a)). Si α = α1 + α2 , entonces α′ := α1′ + α2′ . Si α = α1 α2 , entonces α′ := α1′ α2′ . Si α = α1∗ , entonces α′ := (α1′ )∗ . Es decir, se sustituye cada sı́mbolo a ∈ Σ en α por la cadena h(a). α′ es una expresión regular que representa h(L), por lo que h(L) es un lenguaje regular. 8.3. Algoritmos de Decisión 8.3.1. ¿Es L vacı́o? Teorema 12 Dado un lenguaje regular L, existe un algoritmo para decidir si dicho lenguaje es vacı́o. Demostración.– Considérese el autómata finito determinista mı́nimo que acepta L. Entonces L es vacı́o si y sólo si dicho autómata mı́nimo no tiene estados finales. 8.3.2. ¿Es L infinito? Teorema 13 Dado un lenguaje regular L, existe un algoritmo para decidir si dicho lenguaje es infinito. Demostración.– Considérese el diagrama de transiciones del AFD A mı́nimo tal que L(A) = L. L es infinito si y sólo si existe un ciclo en un nodo perteneciente a un camino desde el estado inicial a un estado final. 8.3.3. Pertenencia al lenguaje Teorema 14 Dado un lenguaje regular L, existe un algoritmo para decidir si una palabra w pertenece al lenguaje. Demostración.– Considérese el diagrama de transiciones del AFD A mı́nimo tal que L(A) = L. Simúlese el funcionamiento del autómata tomando como entrada la palabra w. Si el estado en el que termina la simulación es un estado final, entonces w pertenece a L; en otro caso, w no pertenece a L. CAPÍTULO 8. PROPIEDADES DE LOS LENGUAJES REGULARES 8.3.4. 7 Igualdad entre lenguajes Teorema 15 Dados dos lenguajes regulares L1 y L2 , existe un algoritmo para decidir si son equivalentes, es decir, L1 = L2 . Demostración.– L1 = L2 si y sólo el lenguaje (L1 \ L2 ) ∪ (L2 \ L1 ) es vacı́o.