1 Curso Básico de Computación 3 Propiedades de los conjuntos regulares 3.1 Lema de Bombeo para conjuntos regulares El lema de bombeo es una herramienta poderosa para probar que ciertos lenguajes son no regulares. Si un lenguaje es regular, éste es aceptado por un AFD M = (Q, Σ, δ, q0 , F ) con algún número particular de estados, dijamos n. Considere una entrada con n o más sı́mbolos a1 a2 · · · am , m ≥ n, y para i = 1, 2, ..., m, sea δ(q0 , a1 a2 · · · ai ) = qi . Ası́ existen dos enteros j y k, 0 ≤ j < k ≤ n, tal que qj = qk . El camino etiquetado a1 a2 · · · am en el diagrama de transición de M se ilustra en la siguiente figura. Como j < k, la cadena aj+1 · · · ak tiene longitud al menos 1, y como k ≤ n su longitud no es más que n. aj + 1... ak ak+1 ... am a1 ... a j q 0 q = q j k qm Si qm está en F , es decir, a1 a2 · · · am está en L(M ), entonces a1 a2 · · · aj ak+1 ak+2 · · · am está en L(M ), luego existe un camino de q0 a qm que pasa por qj pero no alrededor del lazo etiquetado por aj+1 · · · ak . Formalmente: δ(q0 , a1 · · · aj ak+1 · · · am ) = δ(δ(q0 , a1 · · · aj ), ak+1 · · · am ) = δ(qj , ak+1 · · · am ) = δ(qk , ak+1 · · · am ) = qm Ası́, a1 · · · aj (aj+1 · · · ak )i ak+1 · · · am está en L(M ) para cualquier i ≥ 0. Con lo anterior, se probó que para cualquier cadena suficientemente grande aceptada por un AF, se puede encontrar una subcadena cerca del inicio de la cadena que pueda ser “bombeada”, es decir, repetida tantas veces como uno quiera, y la cadena resultante es aceptada por el AF. Formalmente el lema de Bombeo dice: Lema 3.1: Sea L un conjunto regular. Entonces existe una constante n tal que si z es cualquier palabra en L, y |z| ≥ n, se puede escribir z = uvw de tal forma que |uv| ≤ n, |v| ≥ 1, y para toda i ≥ 0, uv i w está en L. Además, n no es más grande que el número de estados del AF más pequeño que acepta L. Feliú Sagols Troncoso Matemáticas-Cinvestav 2 Demostración: En el parrafo anterior sea z = a1 a2 · · · am , u = a1 a2 · · · aj , v = aj+1 · · · ak y w = ak+1 · · · am . Ejemplo: 2 Sea L = {0i | i es un entero, i ≥ 1}, que consiste de todas las cadena de 0’s cuya longitud es un cuadrado perfecto, no es regular. Supongamos que 2 L es regular y sea n el entero en el Lema de Bombeo. Sea z = 0n . Por 2 el Lema de Bombeo, 0n puede escribirse como uvw, donde 1 ≤ |v| ≤ n y uv i w está en L para toda i. En particular, sea i = 2. Sin embargo, n2 < |uv 2 w| ≤ n2 + n < (n + 1)2 . Es decir, la longitud de uv 2 w está entre n2 y (n + 1)2 , y ası́ esto no es un cuadrado perfecto. Por lo tanto, uv 2 w no está en L, contradicción. Se concluye que L no es regular. 3.2 La propiedad de cerradura para conjuntos regulares Existen muchas operaciones en lenguajes que preservan conjuntos regulares, en el sentido que al aplicar operaciones a conjuntos regulares resultan conjuntos regulares. Por ejemplo, la unión de dos conjuntos regulares es un conjunto regular, al igual la operación concatenación de conjuntos regulares es un conjunto regular y la cerradura de Kleene de un conjunto regular es un conjunto regular. Si una clase de lenguajes es cerrado bajo una operación en particular, se dice que tiene la propiedad de cerradura. En particular nos interesa la propiedad de cerradura efectiva, es decir, si existe un algoritmo para construir una representación para los lenguajes que resultan al aplicar las operaciones a estos lenguajes. Por ejemplo: podemos dar un algoritmo para construir una expresión regular para la unión de dos lenguajes denotados por expresiones regulares, ası́ la clase de conjuntos regulares es cerrada efectivamente bajo la unión. Teorema 3.1: Los conjuntos regulares son cerrados bajo unión, concatenación y cerradura de Kleene. Demostración: Inmediato de la definición de expresiones regulares. Operaciones booleanas Teorema 3.2: La clase de conjuntos regulares es cerrada bajo complementación. Es decir, si L es un conjunto regular y L ⊆ Σ∗ , entonces Σ∗ − L es un conjunto regular. Demostración: Sea L = L(M ) para el AFD M = (Q, Σ1 , δ, q0 , F ) y sea 3 Curso Básico de Computación L ⊆ Σ∗ . Podemos suponer que Σ1 = Σ, si hubieran sı́mbolos en Σ1 − Σ, se pueden borrar todas las transiciones de M con sı́mbolos que no están en Σ. El hecho que L ⊆ Σ∗ nos asegura que por eso no hay que cambiar el lenguaje de M . Si existen sı́mbolos en Σ−Σ1 , entonces ninguno de estos sı́mbolos aparecen en palabras de L. Por lo tanto, podemos introducir un “estado muerto” d en M con δ(d, a) = d para toda a ∈ Σ y δ(q, a) = d para toda q ∈ Q y a ∈ Σ − Σ1 . Ahora, para aceptar Σ∗ − L, se complementan de los estado finales de M . Es decir, sea M 0 = (Q, Σ, δ, q0 , Q − F ). Entonces M 0 acepta una palabra w si y sólo si δ(q0 , w) ∈ Q − F , es decir, w ∈ Σ∗ − L. Note que es esencial para la demostración que M sea determinı́stico y sin movimientos. Teorema 3.3: Los conjuntos regulares son cerrados bajo intersección. Demostración: L1 ∩ L2 = L̄1 ∪ L̄2 , la cerradura bajo intersección se sigue de la cerradura bajo unión y complementación. Substitución y homomorfismo La clase de conjuntos regulares tiene la propiedad de ser cerrada bajo substitución en el siguiente sentido: para cada sı́mbolo a en el alfabeto de algún conjunto regular R, sea Ra un conjunto regular particular. Suponga que reemplazamos cada palabra a1 a2 · · · an en R por un conjunto de palabras de la forma w1 w2 · · · wn , donde wi es una palabra arbitraria en Rai . Entonces el resultado es siempre un conjunto regular. Formalmente, una substitución f es una transformación de un alfabeto Σ en un subconjunto de ∆∗ , para algún alfabeto ∆. Ası́ f asocia un lenguaje a cada sı́mbolo de Σ. La transformación f se extiende a palabras en Σ∗ : 1) f () = 2) f (xa) = f (x)f (a) La transformación f se extiende a un conjunto regular L con la definición: [ f (L) = f (x) x∈L Ejemplo: Sea f (0) = a y f (1) = b∗ . Es decir, f (0) es el lenguaje {a} y f (1) es el lenguaje de todas las cadenas de b’s. Entonces f (010) es el conjunto regular ab∗ a. Si L es el lenguaje 0∗ (0 + 1)1∗ , entonces f (L) es a∗ (a + b∗ )(b∗ )∗ = a∗ b∗ Teorema 3.4: La clase de conjuntos regulares es cerrada bajo substitución. Demostración: Sea R ⊆ Σ∗ un conjunto regular y para cada a ∈ Σ sea Ra ⊆ ∆∗ un conjunto regular. Sea f : Σ → ∆∗ la substitución definida por f (a) = Ra . Seleccione una expresión regular denotada por R. Reemplace cada Feliú Sagols Troncoso Matemáticas-Cinvestav 4 ocurrecia del sı́mbolo a en la expresión regular R por la expresión regular Ra . Para probar que el resultado f (R) es una expresión regular, observe que la substitución de la unión, producto, o cerradura es la unión, producto, o cerradura de la substitución. [Ası́, por ejemplo, f (L1 ∪ L2 ) = f (L1 ) ∪ f (L2 )]. Una simple inducción en el número de operadores en la expresión regular completa la demostración. Un tipo de substitución de especial interés es el homomorfismo. Un homomorfismo h es una substitución tal que h(a) contiene una sola cadena para cada a. La imagén del homomorfismo inverso de un lenguaje L es: h−1 (L) = {x | h(x) está en L} y para la cadena w h−1 (w) = {x | h(x) = w} Ejemplo: Sea h(0) = aa y h(1) = aba. Entonces h(010) = aaabaaa. Si L1 =(01)∗ , entonces h(L1 ) es (aaaba)∗ . Sea L2 = (ab + ba)∗ a. Entonces h−1 (L2 ) consiste sólo de la cadena 1. Observe que h(h−1 (L2 )) = {aba} 6= L2 . Por otro lado, es fácil demostrar que h(h−1 (L)) ⊆ L y h−1 (h(L)) ⊇ L para cualquier lenguaje L. Teorema 3.5: La clase de conjuntos regulares es cerrada bajo homomorfismos y homomorfismo inverso. Demostración: La cerradura bajo homomorfismos se sigue de la cerradura bajo substitución, porque cada homomorfismo es una substitución. Para demostrar la cerradura bajo homomorfismo inverso, sea M = (Q, Σ, δ, q0 , F ) un AFD que acepta a L, y sea h un homomorfismo de ∆ a Σ∗ . Construimos un AFD M 0 que acepte h−1 (L) leyendo un sı́mbolo a ∈ ∆ y simulando M en h(a). Formalmente, sea M 0 = (Q, ∆, δ 0 , q0 , F ) donde δ 0 (q, a) = δ(q, h(a)) para q ∈ Q y a ∈ ∆. Es fácil demostrar por inducción sobre |x| que δ 0 (q0 , x) = δ(q0 , h(x)). Por lo tanto, M 0 acepta a x si y sólo si M acepta a h(x). Es decir, L(M 0 ) = h−1 (L(M )). Tarea: Resolver el ejercicio 2.8 inciso b) del Capitulo 2 del libro de Hopcroft. Cocientes de lenguajes Definimos el cociente de los lenguajes L1 y L2 , escrito L1 /L2 , como: {x | existe y en L2 tal que xy está en L1 } 5 Curso Básico de Computación Ejemplo: Sea L1 = 0∗ 10∗ y L2 = 10∗ 1. Entonces L1 /L2 es vacı́o: como cada y en L2 tiene dos 1’s y cada cadena xy en L1 tiene sólo un 1, no existe x tal que xy este en L1 y y en L2 . Sea L3 = 0∗ 1. Entonces L1 /L3 = 0∗ , porque para cualquier x en 0∗ se puede escoger y = 1. Claramente xy está en L1 = 0∗ 10∗ y y está en L3 = 0∗ 1. Otro ejemplo, L2 /L3 = 10∗ , porque para cada x en 10∗ se puede escoger y = 1 de L3 y xy está en L2 = 10∗ 1, si y sólo si x está en 10∗ . Teorema 3.6: La clase de conjuntos regulares es cerrada bajo cociente con conjuntos arbitrarios. Demostración: Sea M = (Q, Σ, δ, q0 , F ) un autómata finito que acepta algún conjunto regular R, y sea L un lenguaje arbitrario. El cociente R/L es aceptado por un autómata finito M 0 = (Q, Σ, δ, q0 , F 0 ), el cual funciona como M excepto que los estados finales de M 0 son todos los estados q de M tales que existe y ∈ L para el cual δ(q, y) ∈ F . Entonces δ(q0 , x) ∈ F 0 si y sólo si existe y tal que δ(q0 , xy) ∈ F . Ası́, M 0 acepta a R/L. Esta construcción es no efectiva. 3.3 Algoritmos de decisión para conjuntos regulares Vacı́o, finito e infinito Los algoritmos para determinar cuando un conjunto regular es vacı́o, finito, o infinito se basan en el siguiente Teorema: Teorema 3.7: El conjunto de cadenas aceptadas por un autómata finito M con n estados es: 1) No vacı́o si y sólo si el autómata finito acepta una cadena de longitud menor que n. 2) infinito si y sólo si el autómata acepta alguna cadena de longitud l, donde n ≤ l ≤ 2n. Ası́, existe un algoritmo para determinar cuando un autómata finito acepta cero, o un número finito, o un número infinito de cadenas. Demostración: 1) (⇒) Suponga que M acepta un conjunto no vacı́o. Sea w una palabra tan corta como cualquier otra palabra aceptada. Por el Lema de Bombeo |w| < n: si w es la más corta y |w| ≥ n, entonces w = uvy, y uy es la palabra más corta Feliú Sagols Troncoso Matemáticas-Cinvestav 6 en el lenguaje. 2) (⇐) Si w ∈ L(M ) y n ≤ |w| < 2n, entonces por el lema de Bombeo, L(M ) es infinito. Es decir, w = w1 w2 w3 , y para toda i, w1 w2i w3 ∈ L. (⇒) Si L(M ) es infinito, entonces existe w ∈ L(M ), donde |w| ≥ n. Si |w| < 2n no se hace nada. Si no hay palabras cuya longitud este entre n y 2n − 1, sea w de longitud al menos 2n, pero tan corta como cualquier palabra en L(M ) con longitud más grande o igual a 2n. Por el Lema de Bombeo, se puede escribir a w como w = w1 w2 w3 con 1 ≤ |w2 | ≤ n y w1 w3 ∈ L(M ). O w no es la palabra más corta de longitud 2n o más, o |w1 w3 | está entre n y 2n − 1, en cualquier caso es una contradicción. Equivalencia Ahora demostraremos que existe un algoritmo para determinar si dos autómatas finitos aceptan el mismo conjunto. Teorema 3.8: Existe un algoritmo para determinar si dos autómatas finitos son equivalentes (es decir, si aceptan el mismo lenguaje). Demostración: Sean M1 y M2 autómatas finitos que aceptan L1 y L2 , respectivamente. Por el teorema 3.1, 3.2 y 3.3, (L1 ∩ L̄2 ) ∪ (L̄1 ∩ L2 ) es aceptado por algún autómata finito, M3 . Es fácil ver que M3 acepta una palabra si y sólo si L1 6= L2 . Por lo tanto, por le teorema 3.7, existe un algoritmo para determinar si L1 = L2 . 3.4 El Teorema de Myhill-Nerode y la minimización de autómatas finitos A cada lenguaje arbitrario L le asociamos una relación de equivalencia RL ; xRL y si y sólo si para cada z, xz e yz están ambos en L o ambos no están en L. En el peor de los casos, cada cadena es una clase de equivalencia ası́ que en principio pueden existir muchas clases. En particular, el ı́ndice (número de clases de equivalencias) es siempre finito si y sólo si L es un conjunto regular. Existen también relaciones de equivalencia similares sobre cadenas asociadas con autómatas finitos. Sea M = (Q, Σ, δ, q0 , F ) un AFD. Para x e y en Σ∗ sea xRM y si y sólo si δ(q0 , x) = δ(q0 , y). La relación RM es reflexiva, simetrica y transitiva. RM divide al conjunto Σ∗ en clases de equivalencia. De hecho, si xRM y, entonces xzRM yz para toda z en Σ∗ . Una relación de equivalencia R tal que xRy implica xzRyz se dice invariante por la derecha (con respecto a la concatenación). 7 Curso Básico de Computación Teorema 3.9 (Teorema de Myhill-Nerode): Los siguientes tres enunciados son equivalentes: 1. El conjunto L ⊆ Σ∗ es aceptado por algún AF. 2. L es la unión de algunas de las clases de equivalencia de una relación de equivalencia invariante por la derecha con ı́ndice finito. 3. Sea RL una relación de equivalencia definida por: xRL y si y sólo si para toda z ∈ Σ∗ , xz ∈ L exactamente cuando yz ∈ L. Entonces RL es de ı́ndice finito. Demostración: (1) → (2) Suponga que L es aceptado por algún AFD M = (Q, Σ, δ, q0 , F ). Sea RM la relación de equivalencia xRM y si y sólo si δ(q0 , x) = δ(q0 , y). RM es invariante por la derecha ya que, para cualquier z, si δ(q0 , x) = δ(q0 , y), entonces δ(q0 , xz) = δ(q0 , yz). El ı́ndice de RM es finito, ya que el ı́ndice es a lo más el número de estados en Q. Además, L es la unión de estas clases de equivalencias que incluye una cadena x tal que δ(q0 , x) ∈ F , es decir, las clases de equivalencia corresponden a los estados finales. (2) → (3) Demostraremos que cualquier relación de equivalencia E que satisface (2) es un refinamiento de RL ; es decir, cada clase de equivalencia de E está enteramente contenida en alguna clase de equivalencia de RL . Ası́ el ı́ndice de RL no puede ser más grande que el ı́ndice de E y ası́ es finito. Suponga que xEy. Entonces como E es invariante por la derecha, para cada z ∈ Σ∗ , xzEyz y ası́ yz ∈ L si y sólo si xz ∈ L. Ası́ xRL y, y por lo tanto la clase de equivalencia de x en E está contenida en la clases de equivalencia de x en RL . Se concluye que cada clase de equivalencia de E está contenida dentro de alguna clase de equivalencia de RL . (3)→ (1) Primero demostraremos que RL es invariante por la derecha. Suponga que xRL y y sea w ∈ Σ∗ . Se debe probar que xwRL yw; es decir, para cualquier z, xwz ∈ L exactamente cuando ywz ∈ L. Pero como xRL y, y conocemos por definición de RL que para cualquier v, xv ∈ L exactamente cuando yv ∈ L. Tomando v = wz se prueba que RL es invariante por la derecha. Ahora sea Q0 el conjunto finito de clases de equivalencias de RL y [x] el elemento de Q0 que contiene a x. Se define δ 0 ([x], a) = [xa]. La definición es consistente, ya que RL es invariante por la derecha. Escogemos y en lugar de x de la clase de equivalencia [x] y obtenemos δ 0 ([x], a) = [ya]. Pero xRL y, ası́ xz ∈ L exactamente cuando yz ∈ L. En particular, si z = az 0 , xaz 0 ∈ L exactamente cuando yaz 0 ∈ L, ası́ xaRL ya, y [xa] = [ya]. Sea q00 = [] y sea F 0 = {[x] | x ∈ L}. El autómata finito M 0 = (Q0 , Σ, δ 0 , q00 , F 0 ) acepta a L, ya que δ 0 = (q00 , x) = [x], y ası́ x ∈ L(M ) si y sólo si [x] ∈ F 0 . Feliú Sagols Troncoso Matemáticas-Cinvestav 8 Ejemplo: Sea L el lenguaje 0∗ 10∗ . L es aceptado por el autómata siguiente: 0 Start a b 0 1 1 c d 1 0 0 1 e f 1 0,1 0 Considere la relación RM definida por M . Todos los estados son alcanzables desde el estado inicial, RM tiene 6 clases de equivalencias: Ca = (00)∗ , Cd = (00)∗ 01 Cb = (00)∗ 0, Ce = 0∗ 100∗ Cc = (00)∗ 1, Cf = 0∗ 10∗ 1(0 + 1)∗ L es la unión de Cc , Cd , y Ce . La relación RL para L es xRL y si y sólo si: i) x e y no tienen 1’s o ii) x e y tienen un 1 o iii) x e y tienen más de un 1. Por ejemplo: si x = 010 y y = 1000, entonces xz ∈ L si y sólo si z = 0∗ . Pero yz ∈ L exactamente bajo las mismas condiciones. Se puede denotar las tres clases de equivalencia de RL por C1 = 0∗ , C2 = 0∗ 10∗ , y C3 = 0∗ 10∗ 1(0 + 1)∗ . L es el lenguaje que consiste de sólo una de esas tres clases, C2 . La relación de Ca , · · · Cf con C1 , C2 , C3 se ilustran en la siguiente figura: C1 Cb Cc C2 Cd Ca Ce C = C 3 f Por ejemplo Ca ∪ Cb = (00)∗ + (00)∗ 0 = 0∗ = C1 De RL se puede construir el AFD como sigue: Se escogen cadenas representativas para C1 , C2 , C3 , dijamos , 1 y 11. Entonces M 0 es el siguiente autómata: 9 Curso Básico de Computación 0 0 1 Start 0,1 1 [1] [e] [11] Por ejemplo: δ 0 ([1], 0) = [1], porque si w es cualquier cadena en [1], digamos 0i 10j , entonces w0 = 0i 10j+1 , que también está en C1 = 0∗ 10∗ . Minimización de Autómatas Finitos Teorema 3.10: El autómata con número mı́nimo de estados que acepta un conjunto L es único salvo isomorfismo y está dado por M 0 en la demostración del Teorema 3.9. Demostración: En la demostración del Teorema 3.9 se ve que cualquier AFD M = (Q, Σ, δ, q0 , F ) que acepta L define una relación de equivalencia que es un refinamiento de RL . Ası́ el número de estados de M es más grande o igual que el número de estados de M 0 del Teorema 3.9. Si se tiene la igualdad, entonces cada uno de los estados de M puede ser identificado con uno de los estados de M 0 . Es decir, sea q un estado de M . Existe algún x ∈ Σ∗ tal que δ(q0 , x) = q, en otro caso se puede quitar q de Q, y encontrar un autómata más pequeño. Identificar a q con el estado δ 0 (q00 , x) de M 0 . Esta identificación es consistente. Si δ(q0 , x) = δ(q0 , y) = q, entonces por la demostración del Teorema 3.9, x e y están en la misma clase de equivalencia de RL . Ası́ δ 0 (q00 , x) = δ 0 (q00 , y). Algoritmo de minimización Existe un método simple para encontrar el AFD con número mı́nimo de estados M 0 del Teorema 3.9 y 3.10 equivalente a un AFD M = (Q, Σ, δ, q0 , F ). Sea ≡ la relación de equivalencia en los estados de M tal que p ≡ q si y sólo si para cada entrada x, δ(p, x) es un estado de aceptación si y sólo si δ(q, x) es un estado de aceptación. Si p ≡ q, decimos que p es equivalente a q. Decimos que p es distinguible de q si existe un x tal que δ(p, x) ∈ F y δ(q, x) ∈ / F , o viceversa. Ejemplo: Sea M el siguiente autómata 1 0 Start a 0 1 b 0 1 1 0 1 f d 1 0 e 0 c 1 0 g 1 0 h Feliú Sagols Troncoso Matemáticas-Cinvestav 10 Se tiene que construir una tabla con una entrada para cada par de estados. Se coloca una X en la tabla cada vez que un par de estados no son equivalentes. Inicialmente se coloca una X en cada entrada correspondiente a un estado final y un estado no final. En el ejemplo, colocamos una X en las entradas (a, c), (b, c), (c, d), (c, e), (c, f ), (c, g) y (c, h). Para cada par de estados p y q que no se han identificado como distinguibles, consideramos el par de estados r = δ(p, a) y s = δ(q, a) para cada entrada a. Si se demuestra que los estados s y r son distinguibles para alguna cadena x entonces p y q son distinguibles para cualquier cadena ax. Ası́, si la entrada (r, s) en la tabla tiene una X, se coloca también una X en la entrada (p, q). Si la entrada (r, s) no tiene X, entonces el par (p, q) es colocado en una lista asociada con la entrada (r, s). Continuando se tienen que si la entrada (r, s) recibe una X entonces cada par en la lista asociada con la entrada (r, s) también recibe una X. En el ejemplo, colocamos una X en la entrada (a, b), porque la entrada (δ(b, 1), δ(a, 1)) = (c, f ) ya tiene una X. Similarmente, la entrada (a, d) recibe una X. Ahora consideremos la entrada (a, e) que con la entrada 0 va a dar al par (b, h), ası́ (a, e) es colocado en la lista asociada con (b, h). Observe que con la entrada 1, a y e van al mismo estado f y por lo tanto no hay cadena con 1 que pueda distinguir a de e. Para el ejemplo, la tabla completa es: b c d e f g h X X X X X X X X X X X X X X X X X X X X X X X X X a b c d e f g Se concluye que los estados equivalentes son a ≡ e, b ≡ h, y d ≡ f y el autómata con número mı́nimo de estados es el siguiente: Start [a,e] 0 0 [b,h ] 1 0 1 [g ] 0 1 1 [c ] 1 0 [d,f ] 11 Curso Básico de Computación Lema 3.2: Sea M = (Q, Σ, δ, q0 , F ) un AFD. Entonces p es distinguible de q si y sólo si la entrada correspondiente al par (p, q) es marcada por el procedimiento begin 1) for p ∈ F y q ∈ Q − F do marcar (p, q); 2) for cada par de estados distintos (p, q) ∈ F × F ∪ (Q − F ) × (Q − F ) do 3) if para alguna entrada a, (δ(p, a), δ(q, a)) está marcada then 4) 5) 6) 7) begin marcar (p, q); recursivamente marcar todos los pares no marcados en la lista para (p, q) y en la lista de otros pares que son marcados en este paso end else for toda entrada a do poner (p, q) en la lista de (δ(p, a), δ(q, a)) a menos que δ(p, a) = δ(q, a) end Demostración: ⇒) Suponga que p es distinguible de q, y sea x la cadena más chica distinguible de p a q. Se prueba por inducción sobre la longitud de x que la entrada correspondiente al par (p, q) es marcada. ⇐) Por inducción sobre el número de pares marcados se demuestra que si la entrada (p, q) es marcada entonces p y q son distinguibles. Un estado q es accesible en un autómata M = {Q, Σ, δ, q0 , F } si existe una cadena x ∈ Σ∗ tal que δ(q0 , x) = q. Si q no es accesible decimos que es inaccesible. Teorema 3.1: El AFD construido por el algoritmo del Lema 3.2, sin estados inaccesible, es el AFD con número mı́nimo de estados para ese lenguaje. Demostración: Sea M = (Q, Σ, δ, q0 , F ) el AFD para el cual se le aplica el algoritmo y M 0 = (Q0 , Σ, δ 0 , [q0 ], F 0 ) el AFD construido. Es decir: Q0 = {[q] | q es accesible desde q0 }, F 0 = {[q] | q ∈ F } δ 0 ([q], a) = [δ(q, a)]. Es fácil demostrar que δ 0 está bien definida, también es fácil demostrar que δ 0 ([q0 ], w) = [δ(q0 , w)] por inducción sobre |w|. Ası́ L(M 0 ) = L(M ). Feliú Sagols Troncoso Matemáticas-Cinvestav 12 Para terminar sólo se tiene que demostrar que M 0 no tiene más estados que el ı́ndice de RL donde L = L(M ). Ası́ M 0 es el AFD con el número mı́nimo de estados para L.