4.2. PROPIEDADES DE CLAUSURA 71Ejemplo 63 Sea f(0) = a y f(1) = b ∗ , entonces f(010) = ab ∗ a. También, si L = 0 ∗ (0 + 1)1 ∗ entoncesf(L) = a ∗ (a + b ∗ )(b ∗ ) ∗= a ∗ b ∗ ✷Teorema 13 La clase <strong>de</strong> los conjuntos regulares es cerrada bajo sustitución por conjuntos regulares.Demostración : Sea R ⊆ Σ ∗ un lenguaje regular y por cada a ∈ Σ sea R a ⊆ ∆ ∗ un lenguaje regular.Sea f : Σ −→ 2 ∆∗ una sustitución <strong>de</strong>finida por f(a) = R a , para todo a ∈ Σ.Seleccione expresiones regulares <strong>de</strong>notando R y cada R a , reemplace cada ocurrencia <strong>de</strong> un símbolo a enla expresión regular para R por la expresión regular para R a . Claramente, el resultado es otra expresiónregular.Para probar que dicha expresión <strong>de</strong>scribe f(R), basta observar que la sustitución <strong>de</strong> una unión, concatenacióno clausura, es la unión, concatenación o clausura <strong>de</strong> la sustitución. Es <strong>de</strong>cir, por ejemplo,f(L 1 ∪ L 2 ) = f(L 1 ) ∪ f(L 2 ). Una simple inducción en el número <strong>de</strong> operadores <strong>de</strong> la expresión regularcompleta la <strong>de</strong>mostración.Un tipo <strong>de</strong> sustitución especial es el homomorfismo. Un homomorfismo h es una sustitución tal que paracada símbolo a ∈ Σ, h(a) contiene sólo un string. Generalmente se consi<strong>de</strong>ra que h(a) es el string mismomás que el conjunto que sólo lo contiene a él.Es también útil <strong>de</strong>finir la imagen homomórfica inversa <strong>de</strong> un lenguaje L comoh −1 (L) = {x/h(x) ∈ L}y también para un string wh −1 (w) = {x/h(x) = w}Ejemplo 64 Sea h(0) = aa y h(1) = aba.Entonces h(010) = aaabaaa. Si L 1 = (01) ∗ entonces h(L 1 ) = (aaaba) ∗ .Sea L 2 = (ab + ba) ∗ a, entonces h −1 (L 2 ) = {1}. Obsérvese que un string en L 2 que comienza con una bno pue<strong>de</strong> ser h(x) para ningún x ∈ {0, 1} ∗ ya que h(0) y h(1) comienzan con a. Por lo tanto si h −1 (w) noes vacío y w ∈ L 2 , entonces w comienza con a. Ahora, w = a en cuyo caso h −1 (w) = ∅; o w es abw ′ paraalgún w ′ en (ab + ba) ∗ a. Se concluye que cada palabra en h −1 (w) comienza con un 1 y, ya que h(1) = aba,w ′ <strong>de</strong>be comenzar con a. Si w ′ = a se tiene w = aba y h −1 (w) = {1}. Si w ′ ≠ a entonces w ′ = abw ′′ y porlo tanto w = ababw ′′ . Pero ningún string x en {0, 1} ∗ tiene h(x) comenzando con abab. Es <strong>de</strong>cir, el únicostring en L 2 que tiene una imagen inversa bajo h es aba y, por lo tanto, h −1 (L 2 ) = {1}.Obsérvese que h(h −1 (L 2 )) = {aba} ≠ L 2 . Es fácil probar que h(h −1 (L)) ⊆ L y L ⊆ h −1 (h(L)) para todolenguaje L.Teorema 14 La clase <strong>de</strong> los conjuntos regulares es cerrada bajo homomorfismos y el inverso <strong>de</strong> un homomorfismo.Demostración : La clausura bajo homomorfismos es inmediata <strong>de</strong> la clausura bajo sustitución por conjuntosregulares, ya que todo homomorfismo es una sustitución por un conjunto regular en que cada h(a) tiene unsolo elemento.Para probar la clausura bajo el inverso <strong>de</strong> un homomorfismo, sea M = (Q, Σ, δ, q 0 , F ) un AFD que acepteL y sea h un homomorfismo <strong>de</strong> ∆ → Σ ∗ . Se construye un AFD, M ′ , que acepte h −1 (L) leyendo un símboloa ∈ ∆ y simulando M en h(a). Formalmente, sea M ′ = (Q, Σ, δ ′ , q 0 , F ) y se <strong>de</strong>fine δ ′ (q, a), para todo q ∈ Qy a ∈ ∆, como δ(q, h(a)). Nótese que h(a) pue<strong>de</strong> ser un string largo o ε, pero δ está <strong>de</strong>finida sobre todos losstrings por extensión. Es fácil mostrar, por inducción en |x|, que δ ′ (q 0 , x) = δ(q 0 , h(x)); es <strong>de</strong>cir, M ′ aceptax si y sólo si M acepta h(x). Esto es, L(M ′ ) = h −1 (L(M)).✷✷
72 CHAPTER 4. PROPIEDADES DE LOS LENGUAJES REGULARESEjemplo 65 Como se vio en un ejemplo anterior, {a N b N /N ≥ 1} no es un lenguaje regular. Intuitivamente,{0 N 10 N /N ≥ 1} no es regular por las mismas razones. Si se tuviera un AF, M, que aceptara {0 N 10 N /N ≥ 1},se podría aceptar {a N b N /N ≥ 1} simulando M en 0 por cada a, al ver la primera b, simular M en 10 y luegosimular M en 0 por cada b. Sin embargo, es necesario probar que {0 N 10 N /N ≥ 1} no es regular. Esto sepue<strong>de</strong> hacer aplicando el lema <strong>de</strong> bombeo, pero es más simple utilizar operaciones que conservan regularidadpara convertir {0 N 10 N /N ≥ 1} en {a N b N /N ≥ 1}. Por lo tanto {0 N 10 N /N ≥ 1} no pue<strong>de</strong> ser regular.Sean h 1 y h 2 los homomorfismosh 1 (0) = 0 h 2 (0) = ah 1 (1) = 10 h 2 (1) = bh 1 (2) = 0 h 2 (2) = bEntoncesporqueh 2 (h −11 ({0N 10 N /N ≥ 1}) ∩ 0 ∗ 12 ∗ ) = {a N b N /N ≥ 1}h −11 ({0N 10 N /N ≥ 1}) = (0 + 2) ∗ 1(0 + 2) ∗en que el número <strong>de</strong> símbolos <strong>de</strong>spués <strong>de</strong>l 1 es uno menor que los anteriores al 1.Por lo tantoh −11 ({0N 10 N /N ≥ 1}) ∩ 0 ∗ 12 ∗ = {0 N 12 N−1 /N ≥ 1}Si {0 N 10 N /N ≥ 1} fuera regular, dado que el homomorfismo inverso <strong>de</strong> homomorfismos e interseccióncon un conjunto regular preservan la propiedad <strong>de</strong> ser regular, se concluiría que {a N b N /N ≥ 1} es regular,lo que es una contradicción. Por lo tanto {0 N 10 N /N ≥ 1} no pue<strong>de</strong> ser regular.✷✷4.3 Algoritmos <strong>de</strong> DecisiónEl tipo <strong>de</strong> pregunta que nos preocupa incluye: ¿es un lenguaje regular dado vacío, finito o infinito?, ¿esun conjunto regular igual a otro?, etc. Para estos propósitos se supondrá que los lenguajes regulares están<strong>de</strong>scritos por autómatas finitos.Teorema 15 El conjunto <strong>de</strong> strings aceptado por un autómata finito M con N estados es• No vacío, si y sólo si M acepta un string <strong>de</strong> largo inferior a N.• Infinito, si y sólo si M acepta un string <strong>de</strong> largo l, con N ≤ l < 2N.Por lo tanto existe un algoritmo para <strong>de</strong>terminar si un autómata finito acepta cero, un número finito oun número infinito <strong>de</strong> sentencias.Demostración : Suponga que M acepta un conjunto no vacío. Sea w un string tan corto como cualquierotro aceptado. Por el lema <strong>de</strong> bombeo, |w| < N, porque si fuera |w| ≥ N, entonces w = uvy y uy sería aúnmás corto y estaría en el lenguaje. Una contradicción con el hecho que w es el string más corto. La otradirección es obvia.Si w ∈ L(M) y N ≤ |w| < 2N, por el lema <strong>de</strong> bombeo L(M) es infinito. Esto es, w = w 1 w 2 w 3 y paratodo i ≥ 0, w 1 w2 i w 3 ∈ L. Por el otro lado, si L(M) es infinito, entonces existe w en L(M) con |w| ≥ N;si |w| < 2N no hay problemas. Si ninguna palabra tiene longitud entre (N) y (2N − 1), sea w <strong>de</strong> largoal menos 2N, pero tan corta como cualquiera <strong>de</strong> longitud mayor o igual a 2N. Por el lema <strong>de</strong> bombeo, se