Del 19 al 26 de Abril de 2015
FÁCIL SISTEMAS
La publicación semanal didáctica y al alcance de todos los que quieren aprender sobre Ingeniería de Sistemas
Volumen 3. n°3
EQUIVALENCIA Y MINIMIZACIÓN DE AFD
En informática, específicamente en el campo de la teoría de autómatas, minimización AFD es la transformación de un autómata finito determinista dado en equivalente que tiene un número mínimo de estados En esta tercera edición de FÁCIL SISTEMAS nos
EN ESTA EDICIÓN Equivalencia y minimización
3
Comprueba la equivalencia de estados 5 Formalización del algoritmo de conversión
7
El método de los conjuntos de estados 9
concentraremos en explicar todo acerca de dichas equivalencias y minimizaciones Aquí encontrará información especializada pero fácil de entender para todo nuestro público. ¡Disfrute aprendiendo!
Se va a presentar un conjunto de definiciones que capturan los resultados Pag.7
Página 2
EDITORIAL
MINIMIZACIÓN EQUIVALENTE En informática, específicamente en el campo de la teoría de autómatas, minimización AFD es la transformación de un autómata finito determinista dado en equivalente que tiene un número mínimo de estados. Aquí, dos AFD se
dicen equivalentes si describen el mismo lenguaje regular. Varios algoritmos diferentes que llevan a cabo esta tarea se describen en las normas de los libros de texto que se ocupan de la teoría de autómatas. En esta tercera edición de FÁCIL SISTEMAS, analizaremos
CONSEJO EDITORIAL FERNÁNDEZ, JAKELIN FONGARO, GRECIA
DIAGRAMACIÓN FERNÁNDEZ, JAKELIN
EDICIÓN DE TEXTOS FONGARO, GRECIA
de forma sencilla qué son estas equivalencias, sus características y sus propiedades. Al final, incluimos unos ejercicios prácticos, para cumplir con nuestro fin: Disfrute Aprendiendo.
ÉSTA ES UNA PUBLICACIÓN DEL CURSO ESPECIAL DE GRADO DE CIENCIAS DE LA COMUPTACIÓN DE LA UNIVERSIDAD DE ORIENTE, PARA LA MATERIA: LÓGICA COMPUTACIONAL., A CARGO DE LA PROFESORA YAMILA
FÁCIL SISTEMAS Volumen 3. n°3
Página 3
LAS ALIADAS DE LA OPTIMIZACIÓN DE AUTOMATAS
EQUIVALENCIA Y MINIMIZACIÓN Si un lenguaje es vacío y la pertenencia de una cadena a un lenguaje), cuyos algoritmos han sido bastantes simples, la cuestión de si dos descripciones de dos lenguajes regulares realmente definen el mismo lenguaje implica razonamientos más complejos. En esta sección veremos cómo comprobar si dos descriptores de lenguajes regulares son equivalentes, en el sentido de que definen el mismo
lenguaje. Una consecuencia importante de esta comprobación es que existe una forma de minimizar un AFD. Es decir, podemos tomar cualquier AFD y hallar un AFD equivalente que tenga el número mínimo de estados. En realidad, este AFD es único: dados cualesquiera dos AFD con un número mínimo de estados que sean equivalentes, siempre
podemos encontrar una forma de renombrar los estados de manera que ambos AFD se conviertan en el mismo.
¿Cuando no son Equivalentes? Decimos que dos autómatas M1 y M2 son equivalentes cuando que aceptan exactamente el mismo lenguaje, es decir L(M1) = L(M2)
Cuando uno de los dos autómatas acepta una palabra que no es aceptada por el otro autómata, podemos concluir que los dos autómatas no son equivalentes
FUENTE: http://www.exa.unicen.edu.ar/catedras/ccomp1/Apunte2.pdf
EL FIN DETERMINARÁ EL TIPO DE PALABRA QUE SE DEBE UTILIZAR
¿TODAS LAS PALABRAS? Para poder decir que dos autómatas son equivalentes, debemos verificar que TODAS las palabras aceptas por uno de los autómatas son aceptadas por el otro y viceversa.
¿Cómo podemos veri-
ficar TODAS las palabras? ¿Cómo podemos encontrar una palabra que es aceptada por uno de los autómatas pero no por el otro?
ESTADOS COMPATIBLES
¿CÓMO SABER SI DOS AUTÓMATAS SON EQUIVALENTES?
Existe un algoritmo basado en la comparación de estados para saber si dos autómatas son equivalentes. Dos estados son compatibles si ambos son finales o ninguno de los dos lo es. Si uno es final y el otro no lo es, entonces se dice que son incompatibles.
CONSTRUCCIÓN DEL ÁRBOL DE COMPARACIÓN PARA DOS AUTÓMATAS
M = (Q, S, d, q0, F) y M’ = (Q’,S’, d’, q0’, F): Inicialmente la raíz del árbol es el par ordenado (q0, q0’) que contiene los estados iniciales de M y M’ respectivamente. Para cada n S se calcula qn = d(q,n) y q’n = d(q’,n). Se forma el par ordenado (qn, q’n) como hijos de (q, q’) para cada rama n, si no estuvieran ya. Si aparece en el árbol un par (q, q’) de estados incompatibles, se interrumpe la construcción del mismo, concluyendo que los dos autómatas no son equivalentes. En caso contrario se continúa a partir del paso 2 para cada nuevo nodo hijo. Si no aparecen nuevos pares (q, q’) que no estén ya en el árbol, se termina el proceso, concluyendo que los dos autómatas son equivalentes.
FUENTE: https://sites.google.com/site/arivp89/filminas/
FÁCIL SISTEMAS Volumen 3. n°3
Página 4
Página 5
COMPROUEBA LA EQUIVALENCIA DE ESTADOS Comenzamos planteándonos una pregunta sobre los estados de unAFD. Nuestro objetivo es comprender cuándo dos estados distintos p y q pueden reemplazarse por un único estado que se comporte como ambos. Decimos que los estados p y q son equivalentes si: Para toda cadena de entrada w, δ (p,w) es un estado de aceptación si y sólo si δ (q,w) es un estado de aceptación. Dicho de manera más informal, es imposible distinguir dos estados equivalentes p y q simplemente partiendo de uno de los estados y preguntando si una determinada cadena de entrada lleva o no a un estado de aceptación cuando el autómata parte de ese estado (desconocido). Observe que no requerimos que δ (p,w) y δ (q,w) sean el mismo estado, sólo que ambos sean estados de aceptación o de no aceptación. Si los dos estados no
son equivalentes, entonces decimos que son distinguibles. Es decir, el estado p es distinguible del estado q si existe al menos una cadena w tal que δ (p,w) es un estado de aceptación y δ (q,w) no, o viceversa. Para hallar estados
equivalentes, es preciso determinar pares de estados que sean distinguibles. Quizá parezca sorprendente, pero es cierto que si se aplica el algoritmo que se describe a continuación, entonces cualquier par de estados que no sean distinguibles serán equivalentes. El algoritmo al que nos referimos es el algoritmo de llenado de tabla, que consiste en un descubrimiento recur-
sivo de pares distinguibles en un AFD A = (Q, Ó,ä ,q0,F). BASE. Si p es un estado de aceptación y q es de no aceptación, entonces el par {p,q} es distinguible. PASO INDUCTIVO. Sean p y q dos estados tales que para un símbolo de entrada a, r = ä (p,a) y s = ä (q,a) son un par de estados que se sabe que son distinguibles. Entonces {p,q} es un par de estados distinguibles. La razón por la que esta regla tiene sentido es que tiene que existir alguna cadena w que distinga r de s; es decir, en concreto o _ ä (r,w) o _ ä (s,w) es un estado de aceptación. Luego la cadena aw tiene que distinguir p de q, ya que _ ä (p,aw) y _ ä (q,aw) es el mismo par de estados que _ ä (r,w) y _ ä (s,w).
DOS ESTADOS SON COMPATIBLES SI AMBOS SON FINALES O NINGUNO DE LOS DOS LO ES.
SI UNO
ES FINAL Y EL OTRO NO LO ES, ENTONCES SE DICE QUE SON INCOMPATIBLES
FUENTE Pedro Isasi, Paloma Martínez, Daniel Borrajo. LENGUAJES, GRAMATICAS Y AUTOMATAS un enfoque practico (1997)
Página 6 Algoritmo Moore
MINIMIZACIÓN AFN Mientras que los procedimientos anteriores trabajan para DFA, el método de división no funciona para autómatas finitos no determinista. Encontrar un algoritmo de tiempo polinomial que minimiza NFA es imposible a menos que P = NP..
Algoritmo Brzozowski Como se ha señalado Brzozowski, revertir los bordes de un DFA produce una NFA para la inversa de la lengua original, y la conversión de este NFA a un DFA mediante la construcción de todas las partes estándar conduce a un AFD mínimo para el mismo idioma invertida. Repetir esta operación inversa por segunda vez produce un AFD mínima para el idioma original. El peor caso de complejidad del algoritmo es exponencial Brzozowski, desde allí lenguajes regulares para los
ALGORITMOS
Moore algoritmo para minimizar AFD ha sido propuesto por Moore. Como el algoritmo del Hopcroft, mantiene una partición que se inicia la separación de los estados de aceptación de estados de rechazo, y en repetidas ocasiones refina la partición hasta que ningún otro refinamiento se puede hacer. En cada paso, que sustituye a la actual de particiones para el refinamiento de los tabiques gruesos, uno de los cuales es actual y los otros son preimágenes bajo la partición actual de funciones de transición para cada uno de los símbolos de entrada. El algoritmo termina cuando esta sustitución no cambia la partición actual. La complejidad de tiempo en el peor caso es: cada paso del algoritmo puede ser implementado en el tiempo utilizando una variante de clasificación radix para reordenar los estados tal que los estados en el mismo conjunto de la nueva partición están en orden consecutivo, y no hay en la mayoría de los pasos desde todos menos el paso final aumenta el número de grupos en la partición. Ejemplos del problema de minimización de DFA que causan el peor caso de comportamiento son los mismos que aquellos para el algoritmo Hopcroft. El número de pasos realiza el algoritmo puede ser mucho más pequeño, entonces su rendimiento promedio es de distribución uniforme o aleatoria en función de la autómata elegido para modelar el comportamiento promedio caso del algoritmo.
que el mínimo AFD inversa es exponencialmente mayor que el mínimo del idioma AFD, sin embargo por lo general el algoritmo se comporta mejor que el peor caso clínico. FUENTE: http://clickdefinicion.com/letra-m/minimizacion-afd.php
Página 7
FORMALIZACIÓN DEL ALGORITMO
DE CONVERSIÓN
Se puede definir matemáticamente de la forma siguiente: transición(q, s) = {p | (q, s, p) Î s} Sin embargo, esta definición no toma en cuenta el hecho de que a veces es posible tener transiciones que no gastan ningún caracter aquellas marcadas con e. Así, en la figura 18, se puede pasar de q2 a q0 y luego continuar de q0 a q1, por lo que en realidad se tiene que considerar a q1 como uno de los estados a los que
detalle como para que la programación en computador sea relativamente sencilla. Sin embargo, no se va a describir el algoritmo en términos de ciclos, instrucciones de asignación, condicionales, etc., que son típicos de los programas imperativos. Se va a presentar un conjunto de definiciones que capturan los resultados
mo de conversión, si se utiliza un lenguaje de programación adecuado, preferentemente de tipo funcional, como por ejemplo Scheme. Este ejemplo se va a ir presentando con las definiciones partiendo de la más
se puede llegar desde {q1, q2} gastando una a. Por lo tanto, hay que modificar la definición anterior. Se define una función auxiliar cerr-e(q) que es el conjunto de estados a los que se
sencilla, hasta llegar a la más compleja.
puede llegar desde el estado q pasando por transiciones vacías. Además, si con
Primero introducimos una función transicion(q, s), que a partir de un estado q y un
una transición vacía se llega a otro estado que también tiene transiciones vacías,
caracter dado s obtiene el conjunto de estados a los que se puede llegar desde q
hay que continuar añadiendo a cerr-e (q) los estados a los que se llegue
intermedios en el proceso de conversión de AFN a AFD. Estas definiciones
directamente gastando el caracter s.tenemos que transicion (q0, b) = {q0, q1}. Similarmente, transicion(q1, b) = {q1}, y
permiten programar en forma casi directa el algorit-
transicion(q3, a) = {}.
FUENTE: http://www.exa.unicen.edu.ar/catedras/ccomp1/Apunte2.pdf
Ahora se va a precisar el método de conversión de AFN a AFD con suficiente
hasta que no sea posible añadir nuevos
estados.
Por
ejemplo, en la figura 21, cerr -e (q1) = {q1, q2, q4}, cerr-e(q2) = {q2, q4}, y cerr-e(q0) =
Volumen 3. n°3
{q0}. cerr -e (q) se acostumbra llamar cerradura al vacío porque matemáticamente es la
2. Todo estado r tal que existe una transición (p, e, r) Î D, con p Î cerr -e (q). Es fácil extender la definición de cerradura al vacío de un estado para definir la cerradura al vacío de un conjunto de estados: La cerradura al vacío de un conjunto de estados CERR-e ({q1, ... , qn}) es
cerradura de q con la relación {(x, y) | (x, e, y) Î D}.
igual a cerr -e (q1)È, ... , È cerr-e (qn).
La función cerr-e(q) se puede definir como sigue:
Ejemplo. Sea el AFN de la figura 21. Entonces CERR-e({q1, q3}) = {q1, q2, q3, q4}.
La cerradura al vacío cerr-e(q) de un estado q es el más pequeño conjunto que contiene: 1. Al estado q;
Con la función de cerradura al vacío ya estamos en condiciones de proponer una versión de la función transición que tome en
Página 8 cuenta las transiciones vacías. Llamaremos a esta función “transición-e”, y la definimos de forma que transición-e (q, s) sea el conjunto de estados a los que se puede llegar desde q gastando s, inclusive pasando por transiciones vacías. El algoritmo es como sigue, para un estado q y un carácter s: 1. Calcular Q0 = cerr -e(q) 2. Para cada estado de Q0, obtener transición, ), y unir todos los conjuntos obtenidos, dando por resultado un conjunto Q1. 3. transición- CERR- (Q1).
(q, ) =
FUENTE: http://www.exa.unicen.edu.ar/catedras/ccomp1/Apunte2.pdf
FÁCIL SISTEMAS
Viene de la página 7
FÁCIL SISTEMAS Volumen 3. n°3
Página 9
EL MÉTODO DE LOS CONJUNTOS DE ESTADOS Dado un AFN M, consideremos la idea de man- bien a q1 (pasando por el tener un conjunto de esta- e), mientras que del q1 sólo se puede pasar a q1. dos Qi en los que sea posible estar en cada momento consumiendo las letras de una palabra
Entonces, el conjunto de estados en que se puede estar al consumir la b es Q1 =
de entrada.
{q0, q1}. Y así en adelante.
Por ejemplo, considérese el AFN de la figura 18. Se quiere analizar qué sucede
La tabla siguiente resume los conjuntos de estados por los que se va pasando
cuando este AFN recibe la palabra baaaaab. Para ello, se lleva el registro de los conjuntos de estados en los que pueda encontrarse el AFN. Inicialmente, podrá encontrarse en el estado inicial q0, pero sin “gastar” ningún caracter puede estar
para este ejemplo:
Entrada
Estados {q0,q1}
b a a a a a
{q0,q1} {q2,q4} {q0,q1,q3} {q1,q2,q4} {q0,q1,q3,q4} {q1,q2,q3,q4}
q1 también en el estado q1, o b sea que el proceso arranca con el conjunto de estados Puesto que el último conjunto de estados {q1} incluQ0 = {q0, q1}. Al consuye a un estado final, se mirse el primer caracter, b, se puede pasar de q0 a concluye que la palabra de entrada puede ser aceptaq0 o
da. Otra conclusión es que si se considera a los conjuntos de estados Qi como una especie de “mega-estados” de cierto autómata, entonces se han estado siguiendo los pasos de ejecución de un AFD con “megaestados”. Una vez se comprenda lo anterior, se cocluye que, si en vez de considerar una palabra en particular, como fue baaaaab, se considera cada posible caracter que puede llegar a estar en un “mega-estado”, entonces se puede completar un AFD, que será equivalente al AFN dado. Para poder ser exhaustivos, se necesita organizar las entradas posibles de manera sistemática.
Tomado de: Pedro Isasi, Paloma Martínez, Daniel Borrajo. LENGUAJES, GRAMATICAS Y AUTOMATAS un enfoque practico (1997)
PRACTIQUEMOS LO APRENDIDO
CONTRAPORTADA
Determinar si los siguientes AFD’s son/no son equivalentes:
A
B
C RESPUESTA : A y B sí son equivalentes. B y C no son equivalentes. A y C no son equivalentes.