22/9/2 Sesión 2 Autómata Mínimo Propiedad esencial de los LR Teorema de Kleene: Un lenguaje es regular si y sólo si existe una ER que lo denota y un FA que lo acepta. Pero, qué tal si tenemos un lenguaje descrito de manera intuitiva?: L = { n n Σ * n > } Es este lenguaje regular? 2 2 Propiedad esencial de los LR Sabemos que si hay n clases de cadenas en L, un FA que reconozca a L debe tener cuando menos n estados: Todos los FA tienen un número finito de estados Si el número de clases de cadenas en L es finito, entonces existe un FA que lo reconoce y una RE que lo describe! 2 Las clases de cadenas Podemos definir el FA a partir de las clases de cadenas! FA para el lenguaje de cadenas que terminan en: Clase A: La cadena necesita un para pertenecer al lenguaje Class B: La cadena necesita un Class C: La cadena pertenece al lenguaje! 2 Del conjunto finito de clases al FA FA que acepta las cadenas que termina en : Clase A: La cadena necesita Clase B: La cadena necesita un Clase C: La cadena pertenece al lenguaje! A B C 2 Perdón el terreno es resbaladizo! Afortunadamente hay un algoritmo para generar el FA a partir del conjunto finito de clases del lenguaje! A B C 2
22/9/2 Las clases de cadenas! Estudiamos el lenguaje directamente: No disponemos del FA o de la RE! Clase A: Λ, o termina en Clase B:, o termina en Clase C: La cadena termina con y pertenece al lenguaje Las clases de cadenas! De modo más general: para cada clase de cadenas diferenciables respecto al lenguaje hay un conjunto de cadenas diferenciantes z, tal que cualquier z en dicho conjunto distingue a todas las cadenas de la clase con respecto a todas las otras clases: L/x = {z Σ * xz L} 2 2 Cadenas diferenciantes Sea L/x el conjunto de cadenas: L/x = {z Σ * xz L} x & y son distinguibles respecto a L si L/x L/y Cualquier cadena z tal que xz L & yz L o vice versa, diferencia o distingue a x & y con respecto a L Si L/x = L/y, x & y son indistinguibles (o equivalentes) con respecto a L 2 Las clases de cadenas! Clase A (necesita ): Λ Σ * Clase B (necesita ): Σ * Σ * Clase C (está en L): Σ * 2 Diferenciando las clases de cadenas z = & L/x = {z Σ * xz L} Λ Σ * z = & L/y = {z Σ * yz L} Σ * Σ * z = Λ & L/u = {z Σ * uz L} Σ * Λ Tenemos una Dr. zluis por Pineda, cada clase de cadenas! 2 Distinguiendo L/u de L/x Sea z = Λ L/u = {z Σ * uz L} Σ * Λ L/x = {z Σ * xz L} ΛΛ Λ Σ * Λ L/u L/x 2 2
22/9/2 Distinguiendo L/u de L/y Let z = Λ L/u = {z Σ * uz L} Σ * Λ L/y = {z Σ * yz L} Λ Σ * Λ Σ * Λ L/u L/y 2 Distinguiendo L/y de L/x Sea z = L/y = {z Σ * yz L} Σ * Σ * L/x = {z Σ * xz L} Λ Σ * L/y L/x 2 La relación de cadenas indistinguibles I L La relación de indistinguibilidad I L en Σ * se define como sigue: x I L y si y sólo si L/x = L/y I L es una relación de equivalencia en Σ * Reflexiva: xrx Transitiva: xry & yrz xrz Simétrica: Si xry yrx 2 La relación de cadenas indistinguibles I L Notación: [x] denota la clase de equivalencia de x Dos cadenas son distinguibles con respecto a L si y sólo si están en clases diferentes de I L 2 Propiedades de I L Todas las cadenas en la misma partición de I L pueden considerarse como la misma para efecto de operaciones de cadenas que involucran a I L I L es invariante por la derecha con respecto a la concatenación: Para todo x, y Σ * & cualquier a Σ, Si x I L y entonces xa I L ya Si [x] = [y] entonces [xa] = [ya] 2 El FA a partir de las clases! Sea L Σ * & Q L el conjunto de clases equivalentes de I L sobre Σ *. Si Q L es finita (cada miembro de Q L es un conjunto de cadenas) entonces M L = (Q L, Σ, q, A L, δ) es un FA que acepta a L, donde: q = [Λ] A L = {q Q L q L Φ} δ: Q L x Σ Q L es δ([x], a) = [xa] 2 3
22/9/2 El algoritmo M L es el FA con el mínimo número de estados que acepta a L Función de transición aumentada para M L : δ * ([x], y) = [xy] 2 Ahora podemos estar seguros! M L = (Q L, {, }, [Λ], {[]}, δ) donde Q L = {[Λ], [], []} [Λ] = {Λ,, Σ * } [] = {, Σ *, Σ * } [] = {Σ * } Definición de δ: δ([x], a) = [xa] δ([λ], ) = [Λ] = [] = [Λ] & δ([λ], ) = [Λ] = [] δ([], ) = [] & δ([], ) = [] = [] δ([], ) = [] = [Λ] & δ([], ) = [] = [] Se puede escoger cualquier cadena en la clase: son cadenas equivalentes en relación a L! 2 Ahora podemos estar seguros! M L = (Q L, {, }, [Λ], {[]}, δ) donde Q L = {[Λ], [], []} δ: Q L [Λ] [Λ] [] [] [] [] [] [Λ] [] [Λ] [] [] 2 Teorema de Myhill & Nerode L es un lenguaje regular sí y solo sí el conjunto de clases de cadenas equivalentes es finito La Regularidad es una propiedad esencial del lenguaje: no es una propiedad de las expresiones regulares (ER) ni del FA que acepta el lenguaje! 2 Pero... No hay de otra? Encontrar I L puede ser muy difícil! Sin embargo, si ya tenemos un FA, podemos encontrar el FA mínimo equivalente? Mucho más útil en la vida real! 2 Hay un algoritmo para encontra el FA mínimo? Λ δ(ab,c) = bc 2 4
22/9/2 Una segunda forma de particionar a las cadenas! El lenguaje consistente en el conjunto de cadenas que llegan a un estado dado a partir del estado inicial: L q = {x Σ * δ * (q, x) = q} El conjunto de todas las cadenas es la unión de estos conjuntos para todo q Q! Los estados del FA permiten definir una segunda partición del conjunto de cadenas! 2 L q = {x Σ * δ * (q, x) ) = q} q q 3 q 4 q 7 L = q 6 L [Λ] L [] L [] 2 Los lenguajes que corresponden a cada estado L q = {x Σ * δ * (q, x) ) = q} q 4 L ={Λ} L 2 ={} L 4 =Σ*{} L 3 ={} L 5 = Σ*{} L 7 = Σ*{} L [Λ] L [] q q 6 q 3 q 7 2 L 6 = L= Σ*{} L [] 2 L q = {x Σ * δ * (q, x) ) = q} La reducción... L Λ L L L Σ* L Σ* L Σ* L = L Σ* L [Λ] L [] L [] Sea (p, q) el par de estados en la misma clase de equivalencia Los lenguajes L p & L q son subconjuntos de la misma clase de equivalencia p q Las clases equivalentes determinadas por los estados del FA corresponden a una partición I L 2 2 5
22/9/2 La reducción... Por otro lado, si p & q no pertenecen a la misma partición, los lenguajes correspondientes son subconjuntos de clases de equivalencia diferentes p q El FA mínimo se puede encontrar identificando a los pares (p, q) tales que p q 2 La propiedad que necesitamos S es el conjunto de pares (p, q) tales que p q Los estados aceptores y todos los no aceptores están en particiones diferentes, y eso es todo lo que sabemos! q q 3 q 4 q 7 q 6 (q 4, q 6 ) S 2 La propiedad que necesitamos S es el conjunto de pares (p, q) tales que p q q q 3 q 7 q 4 q 6 (q 4, q 6 ) S & (, ) es tal que δ(, ) = q 4 δ(, ) = q 6 entonces (, ) S. es una cadena diferenciante entre & 2 La propiedad que necesitamos es una cadena diferenciante que lleva cadenas de L Σ* a L pero no a cadenas de L Consecuentemente, & pertenecen a particiones diferentes de I L q q 3 q 7 q 4 q 6 L L Λ L L Σ* L Σ* L Σ* L = L Σ* 2 La propiedad que necesitamos Si (p, q) es un par de estados tal que p q & δ(r, a) = p & δ(s, a) = q entonces (r, s) es también un par de estados tales que r s 2 La propiedad que necesitamos Si p q entonces hay una z tal que δ * (p, z) A o δ * (q, z) A, pero no ambas entonces, sólo uno de δ * (r, az) = δ * (δ(r, a), z) = δ * (p, z) δ * (s, az) = δ * (δ(s, a), z) = δ * (q, z) está en A! Trayectorias de estados no-equivalentes se forman por estados que no son equivalentes! 2 6
22/9/2 El algoritmo Sea S el conjunto de pares (p, q) tales que p q Para todo p & q tal que sólo uno de estos está en A, incluir (p, q) en S Para todo par (p, q) S, si (r, s) es un par tal que δ(r, a) = p & δ(s, a) = q entonces (r, s) S Estos son los únicos pares en S 2. Para todo p & q tal que sólo uno de estos está en A, incluir (p, q) en S 2. Hasta ahora sólo sabemos que los estados aceptores no están en la misma partición de los no aceptores q q 3 q 4 q 7 q 6 = L S = {(q, q 6 ), (, q 6 ), (q 3, q 6 ), (q 4, q 6 ), (, q 6 ), (q 7, q 6 )} 2 2. Para todo par (p, q) S, si (r, s) es tal que δ(r, a) = p δ(s, a) = q entonces (r, s) S. S es una relación (la relación de estados en particiones diferentes) El complemento de S es también una relación: La relación de estado en la misma partición! q 7 q 6 q 4 q 3 q S = {(q 6, q ), (q 6, ), (q 6, q 3 ), (q 6, q 4 ), (q 6, ), (q 6, q 7 )} 2 2 q 7 q 6 q 4 q 3 q q 7 q 6 q 4 q 3 q S es simétrica! 2 También sabemos que ningún estado en S se relaciona consigo mismo: S no es reflexiva! 2 7
22/9/2 q 7 q 6 q 4 q 3 q Cálculo de los pares (r, s) q 7 q 6 q 4 q 3 q Q q q 3 q 4 q 3 q 6 q 7 q 4 q 4 q 6 q 7 q 6 q 4 q 7 q 6 q 7 Si (r, s) es tal que δ(r, a) = p & δ(s, a) = q entonces (r, s) S. 2 Para calcular a (r, s) necesitamos revizar δ en reversa! 2 : viendo hacia atrás! : viendo hacia atrás! q 7 q 6 q 4 q 3 q Q q q 3 q 4 q 3 q 6 q 7 q 4 q 4 q 6 q 7 q 6 q 4 q 7 q 6 q 4 q 3 q Q q q 3 q 4 q 3 q 6 q 7 q 4 q 4 q 6 q 7 q 6 q 4 q 7 q 6 q 7 q 7 q 6 q 7 Si (r, s) es tal que δ(r, a) = q 4 & δ(s, a) = q 6 entonces (r, s) S. 2 (, ) es un par tal que: δ(, ) = q 4 & δ(, ) = q 6 entonces (, ) S. 2 : viendo hacia atrás! : viendo hacia atrás! q 7 q 6 q 4 q 3 q Q q q 3 q 4 q 3 q 6 q 7 q 4 q 4 q 6 q 7 q 6 q 4 q 7 q 6 q 7 q 7 q 6 q 4 q 3 q (, ) es un par tal que: δ(, ) = q 4 & δ(, ) = q 6 entonces (, ) S. 2 S es simétrica: (, ) S. 2 8
22/9/2 : viendo hacia atrás! : viendo hacia atrás! q 7 q 6 q 4 q 3 q q 7 q 6 q 4 q 3 q Q q q 3 q 4 q 3 q 6 q 7 q 4 q 4 q 6 q 7 q 6 q 4 q 7 q 6 q 7 S es simétrica: Sólo necesitamos buscar en una región triangular! 2 Los pares que se pueden encontrar buscando hacia atrás! 2 q 7 q 6 q 4 q 3 q q 7 q 6 q 4 q 3 q S es simétrica! 2 Los valores de la matriz de estados en clases de equivalencia diferentes 2 La relación Q L q 7 q 6 q 4 q 3 q q 7 q 6 q 4 q 3 q Cálculo de Q L El complemento: Los pares de estados en la misma partición! 2 La relación es reflexiva! 2 9
22/9/2 q 7 q 6 q 4 q 3 q Cálculo de Q L q 7 q 6 q 4 q 3 q Cálculo de Q L La relación es simétrica! 2 La relación es transitiva: Los estados q, & q 4 se relacionan entre si, pero no con ningún otro estado 2 q 7 q 6 q 4 q 3 q Cálculo de Q L q 7 q 6 q 4 q 3 q Cálculo de Q L La relación es transitiva: Los estados q 3, & q 7 se relacionan entre sí, pero no con ningún otro estado 2 La relación es transitiva: El estado q 6 se relaciona consigo mismo pero no con ningún otro estado! 2 q 7 q 3 q 6 q 4 q Cálculo de Q L q q 4 q 6 q 3 q 7 Reordenando los estados La relación es transitiva: las clases forma grupos donde las propiedades de la relación de equivalencia se pueden apreciar directamente! 2 El conjunto de clases de estados equivalentes q 7 q 3 q 6 q 4 q q q 4 q 6 q 3 q 7 q q 3 q 4 q 7 q 6 = L 2
22/9/2 El conjunto mínimo de estados: Q L L ={Λ} L 2 ={} L 4 =Σ*{} L 3 ={} L 6 = L= Σ*{} L 5 = Σ*{} L 7 = Σ*{} L [Λ] L [] L [] q 7 q 6 q 4 q 3 q Marcar los pares de estados que se encuentran buscando hacia atrás un una o más pasadas La reducción es completa! 2 Los pares encontrados buscando hacia atrás en la diágonal superior izquierda de la matriz! 2 q 7 q 6 q 4 q 3 q El algoritmo [Λ] = {(, 2), (,4), (2,4)} [] = {(3, 5), (3, 7), (5, 7)} [] = {(6, 6)} (El estado aceptor ) Los pares no marcados pertenencen a clases equivalentes Incluir los pares relacionando los estados aceptores consigo mismo 2 El algortimo. Incluir en S todos los pares que contengan un estado aceptor (sólo uno) 2. Seleccionar una región de la matriz de estados: Si (x, y) S & y < x incluir (y, x) en S (S es simétrica) 3. Definir a Q como el conjunto de pares de la diágonal superior izquierda de la matriz que no están en S 4. Para todo (x, y) Q, verificar si se puede alcanzar un par en S (con en el mismo símbolo de Σ) en una sola transición Si es el caso, eliminar (x, y) de Q e incluirlo en S 5. Repetir 4 hasta que no haya más pares a incluir en S 6. Incluir en Q todos los pares (x, x), donde x es un estado aceptor 7. Q es la relación de estados equivalente en el FA 2 Autómata mínimo Para todo FA existe un FA mínimo con n estados Muy útil para simplicar FA El FA mínimo también proveé una forma normal para los FA: todo FA se puede reemplazar for su FA mínimo correspondiente El FA mínimo permite verificar si dos FA son equivalentes Con el FA mínimo y el Teorema de Kleene podemos encontrar la forma normal de la ER correspondientes 2 El algoritmo Sea L Σ * & Q L el conjunto de clases equivalentes de I L sobre Σ *. Si Q L es finita (cada miembro de Q L es un conjunto de cadenas) entonces M L = (Q L, Σ, q, A L, δ) es un FA que acepta a L, donde: q = [Λ] A L = {q Q L q L Φ} δ: Q L x Σ Q L es δ([x], a) = [xa] 2
22/9/2 Ahora podemos estar seguros! M L = (Q L, {, }, [Λ], {[]}, δ) donde Q L = {[Λ], [], []} [Λ] = {Λ,, Σ * } = {q,, q 4 } [] = {, Σ *, Σ * } = {q 3,, q 7 } [] = {Σ * } = {q 6 } Definición de δ: δ([x], a) = [xa] δ([λ], ) = [Λ] = [] = [Λ] & δ([λ], ) = [Λ] = [] δ([], ) = [] & δ([], ) = [] = [] δ([], ) = [] = [Λ] & δ([], ) = [] = [] Se puede escoger cualquier cadena en la clase: son cadenas equivalentes en relación a L! 2 Ahora podemos estar seguros! M L = (Q L, {, }, [Λ], {[]}, δ) donde Q L = {[Λ], [], []} δ: Q L [Λ] [Λ] [] [] [] [] [] [Λ] [] [Λ] [] [] 2 Una forma normal para RE & FA FA mínimo LR LLC Lenguajes enumerables recursivos 2 2