Propiedades de decisi贸n de los lenguajes regulares:
conversi贸n entre s o i c i c r e j E , s e n o i c a t n e s e r p e r
No te pierdas la era tecnol贸gica
Contenido -INTRODUCCIÓN -Propiedades de decisión de los lenguajes regulares -Conversión entre representaciones -Conversión de un AFN en un AFD
EDITORIAL UNIVERSIDAD DE ORIENTE NÚCLEO DE MONAGAS ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS ÁREAS DE GRADO CSC MATURÍN / MONAGAS / VENEZUELA
-Conversión de un AFD en un AFN -Conversión de un autómata en una expresión regular -Conversión de una expresión regular en un autómata -Conversión de un autómata en una expresión regular (ejercicio) -Convertir un AFND a AFD (ejercicio) -CONCLUSION
EQUIPO PROLOG
DISEÑO David Farrera Irenes Daguar
Introducción Resulta muy natural considerar, tanto los autómatas como las máquinas secuenciales, sistemas capaces de transmitir (procesar) información. Esto es comparable, a cualquier sistema existente en la naturaleza, que recibe señales de su entorno, reacciona ante ellas y emite así nuevas señales al ambiente que le rodea.
En estos casos podemos utilizar las expresiones regulares que es como un lenguaje para poder definir exactamente qué es lo que queremos buscar o reemplazar. A continuación trataremos el tema de los autómatas finitos, máquina de estados, en particular, pero nos interesan desde el punto de vista de las propiedades de decisión de los lenguajes regulares. ooooooooooooooooooooooooooooooo
.
Lenguajes Propiedades de decisión de los Lenguajes Regulares En primer lugar, tenemos que considerar qué significa plantear una pregunta acerca de un lenguaje. El lenguaje típico es infinito, por lo que no es posible presentar las cadenas del mismo a alguien y plantear una pregunta que requiera inspeccionar el conjunto infinito de cadenas. En lugar de esto, presentamos un lenguaje proporcionando una de las representaciones finitas del mismo que hemos desarrollado: un AFD, un AFN, un AFN-ε -NFA o una expresión regular.
Propiedades de decisión de los Lenguajes Regulares Por supuesto, el lenguaje así descrito será regular y de hecho no existe ninguna forma de representar completamente lenguajes arbitrarios. Sin embargo, para muchas de las preguntas que deseamos plantear, sólo existen algoritmos para la clase de lenguajes regulares. La misma pregunta se vuelve “indecidible” (no existe ningún algoritmo que la responda) cuando se plantea utilizando notaciones más “expresivas” (es decir, notaciones que se pueden emplear para expresar un conjunto más grande de lenguajes) que las representaciones que hemos desarrollado para los lenguajes regulares.
Comenzaremos el estudio de los algoritmos para las cuestiones acerca de los lenguajes regulares revisando las formas que nos permiten convertir una representación en otra para el mismo lenguaje. En particular, deseamos observar la complejidad temporal de los algoritmos que llevan a cabo las conversiones.e lenguajes. A continuación abordaremos algunas de las cuestiones fundamentales acerca de los lenguajes. 1. ¿El lenguaje descrito está vacío?, 2. ¿Existe una determinada cadena w en el lenguaje descrito?, 3. ¿Dos descripciones de un lenguaje describen realmente el mismo lenguaje? Esta pregunta a menudo se conoce como “equivalencia” de lenguajes.
Conversión
entre representaciones Esta imagen muestra el camino para pasar de una representación a cualquiera de las otras. Aunque existen algoritmos para cualquiera de las conversiones, a veces estaremos interesados no sólo en la posibilidad de realizar una conversión, sino también en el tiempo que tardará. En concreto, es importante diferenciar entre algoritmos que tardan un tiempo que crece exponencialmente (en función del tamaño de su entrada), y que p o r t a n t o p u e d e n implementarse sólo para instancias relativamente pequeñas, y aquellos que tardan un tiempo que es lineal, siones que vamos a tratar.
Se sabe que podemos convertir cualquiera de las cuatro representaciones de los lenguajes regulares en cualquiera de las otras tres representaciones.
cuadrático o polinómico de grado pequeño en función del tamaño de su entrada. Estos últimos algoritmos son “realistas” en el sentido de que se espera de ellos que sean ejecutables para casos más grandes del problema. Tendremos en cuenta la complejidad temporal de cada una de las conversiones que vamos a tratar.
Conversión de un AFN en un AFD Un mantenimiento cuidadoso de la información y estructuras de datos bien diseñadas nos asegurarán que podemos explorar cada estado en un tiempo de O(n2). En realidad, puede emplearse un algoritmo de clausura transitivo como el algoritmo de Warshall para calcular de una vez la clausuracompleta. Una vez calculada la clausura- , podemos calcular el AFD equivalente mediante la construcción de subconjuntos. En principio, el coste dominante es el número de estados del AFD, que puede ser 2n. Para cada estado podemos calcular las transiciones en un tiempo de O(n3), consultando la información de la clausura-epsilon y la tabla de transiciones del AFN para cada uno de los símbolos de entrada.
Cuando partimos de un AFN o un AFN-ε y lo convertimos en un AFD, el tiempo puede ser exponencial en lo que respecta al número de estados del AFN. En primer lugar, el cálculo de la clausura-ε de n estados tarda un tiempo O(n3). Tenemos que buscar desde cada uno de los n estados siguiendo los arcos etiquetados con épsilon. Si existe n estados, no puede haber más de n2 arcos.
Conversión de un AFD en un AFN Esta conversión es sencilla y tarda un tiempo de O(n) para un AFD de n estados. Todo lo que tenemos que hacer es modicar la tabla de transiciones del AFD incluyendo los estados entre corchetes y, si la salida es un AFN- , añadiendo una columna para . Puesto que tratamos el número de símbolos de entrada (es decir, el ancho de la tabla de transiciones) como una constante, copiar y procesar la tabla requiere un tiempo O(n).
Conversión de un autómata en
una expresión regular Si examinamos la construcción de una expresión regular para denir el lenguaje de cualquier AFD tiene truco. Consiste básicamente en construir expresiones que describan conjuntos de cadenas que etiqueten ciertos caminos del diagrama de transiciones de un AFD. Sin embargo, estos caminos sólo pueden pasar por un subconjunto limitado de estados. En una denición inductiva de estas expresiones, partiremos de las expresiones más simples que describen caminos que no pueden pasar a través de cualquier estado (es decir, son nodos simples o arcos simples), y construiremos inductivamente las expresiones que permitan caminos que pasen a través de caminos que progresivamente recorran eliminación de estados.
conjuntos de estados más grandes. Finalmente, los caminos podrán pasar por cualquier estado; es decir, las expresiones que generemos al nal representarán todos los caminos posibles. Estas ideas están contenidas en la demostración del siguiente teorema., observaremos que en cada una de las n iteraciones (donde n es el número de estados del AFD) podemos cuadruplicar el tamaño de las expresiones regulares construidas, ya que cada una de ellas se crea a partir de las cuatro expresiones de la iteración anterior. Por tanto, simplemente escribir las n3 expresiones puede tardar O(n34n). La construcción mejorada en el método para construir las expresiones regulares que implica la eliminación de estados.
Conversión de una expresión regular en un autómata La conversión de una expresión regular en un AFN- requiere un tiempo lineal. Es preciso analizar sintácticamente la expresión de forma eciente utilizando una técnica que sólo requiera un tiempo O(n) para una expresión regular de longitud n.4 El resultado es un árbol de expresiones con un nodo para cada símbolo de la expresión regular (aunque los paréntesis no tienen que aparecer en el árbol; sólo sirven de guía para analizar la expresión).
Una vez que se dispone de un árbol de expresiones para la expresión regular, se puede trabajar sobre él, construyendo el AFN- para cada nodo. Las reglas de construcción para la conversión de una expresión regular nunca añaden más de dos estados y cuatro arcos para cualquier nodo del árbol de expresiones.
PASO INDUCTIVO
Si el estado q es alcanzable desde el estado inicial y existe un arco desde q hasta p con cualquier etiqueta (un símbolo de entrada o si el autómata es un AFN- ), entonces p es alcanzable. De este modo podemos calcular el conjunto de los estados alcanzables. Si cualquier estado de aceptación se encuentra entre ellos, la respuesta será “no” (el lenguaje del autómata no es vacío), y en caso contrario la respuesta será “sí”. Observe que el cálculo de la accesibilidad no tarda más de O(n2) si el autómata tiene n estados. De hecho, en el caso peor, será proporcional al número de arcos que haya en el diagrama de transiciones, que podría ser menor que n2, y nunca será mayor que O(n2). Si disponemos de una expresión regular que representa el lenguaje L, en lugar de un autómata, podríamos convertir la expresión en un autómata AFN- y proceder como anteriormente. Dado que el autómata que se obtiene de una Supongamos que R es una expresión regular. Hay que considerar cuatro casos, que se corresponden con las formas en que se puede construir R. 1. R = R1+R2. Entonces L(R) es vacío si y sólo si tanto L(R1) como L(R2) son vacíos. 2. R = R1R2. Entonces L(R) es vacío si y sólo si o L(R1) o L(R2) es vacío.
Ejercicio
Conversión de un
autómata en una
expresión regular
Como
podemos convertir un autómata nito en una expresión regular equivalente para esto hay técnicas que están basadas en procesos iterativos y que son útiles son útiles a la hora de programar pero si queremos realizar una conversión rápida es mejor que apliquemos un método más sencillo y lo veremos de cómo podemos trabajar en un autómata continuación
Tenemos en primer lugar unas consideraciones generales respecto a las conversiones:
-La expresión regular nal estar formada por varios ¨sumadores¨-El número de sumados dependerá de: el número de estados de aceptación y el número de caminos hasta los mismos.-Los símbolos que aparecen ¨en serie¨ en el autómata, van concatenados en la expresión regular.-Los caminos paralelos de un nodo a otra aparecen, en la expresión regular, sumados y entre paréntesis,Un * indica un bucle sobre un nodo.
Ejercicio En cuanto a las consideraciones generales lo primero es tener en cuenta que la expresión regular nal va a estar formado por varios sumandos y vamos a tener: +ER+ER+ER+----
+
+
+…….
Cada
una de e estas expresiones regulares que conforman la expresión regular nal sale de una de estas situaciones: Cada una de las expresiones regulares va a salir del número de caminos de aceptación y el número de caminos hasta los mismos. En este caso los sumandos según la gura 1 Vamos a tener un sumando desde q0 hasta q2, otra expresión regular de q0 hasta q4, otra de q0 hasta q4 pero pasando por q3 y otro desde q0 hasta q6, estos serían los caminos que tenemos, para ir desde el estado inicial hasta el nal y estos cuatro posibles caminos que nos van a dar 4 sumandos en expresión regular nal.
Nota: debemos saber que si tenemos un nodo A que con el símbolo 1 va a
otro nodo B y ese nodo con 0 va a otro al nodo C, las expresiones regulares serán 10. Tenemos una expresión regular que va desde q0 a q2…. Xy Otro camino q0 aq4….xyyx* Otro camino q0 a q4 (pero pasando por q3)…….xyxx*yx* Otro camino q0 a q6… xyxy*x(xxy*x)* Estos son los 4 sumandos y a partir de aquí lo único que tendríamos que hacer seria unirlos por los símbolos +, podríamos sacar factor común, en aquellas partes que se pueda sacar, para que la expresión regularme quede así:
Convertir un AFND a AFD Obtener un AFD equivalente a este El proceso de construcción de un AFD equivalente al anterior parte del estado inicial (1,3), pues tenemos que tener en cuenta las transiciones nulas. Desde el estado inicial se puede ir al estado 3 sin haber consumido ninguna entrada. Este estado también es nal, pues en afnd estado 1 es nal.
Ahora tenemos que determinar el conjunto de estados alcanzables con cada símbolo del alfabeto.
En el estado 1 al considerar el símbolo A este se desplaza hacia el estado 3 sin consumir ningún símbolo, y después lo consume para volver a sí mismo. El estado 3 con una A puede ir al estado 1 o a si mismo. oooooooooooooo Por lo que se hace la unión de los dos estados y obtenemos como resultado que el estado inicial con una A va a si mismo. oooooooooooooo
Hacemos lo mismo que antes pero utilizando el s铆mbolo B y obtenemos como resultado que el estado (1,3) consume una B para ir al estado 2.
Partiendo del estado 2 con una A se llega al estado (2,3), y con una B se llega al estado 3.
Como podemos ver ahora tenemos dos nuevos estados, (2,3) y 3. Estudiamos estos dos por separado siguiendo el mismo proceso utilizado anteriormente. 2--A--2,3 3--A--1,3 Se hace la uni贸n de estos dos y obtenemos un nuevo estado (1,2,3). 2 --B--3 3 --B--/ Se hace la uni贸n de los dos y se obtiene como resultado 3.
Ahora estudiamos el estado 3.
Con una B el estado 3 no se desplaza a ningĂşn otro estado, entonces se va al estado de error. El estado (1,2,3) es ď€ nal , con una A va a si mismo y con una B va a (2,3)
Y este es nuestro AFD ď€ nal.
Conclusión Los lenguajes regulares son aquellos que son reconocidos por autómatas de estados nitos, son denotados por expresiones regulares y generados por gramáticas regulares. Los lenguajes regulares contienen a todos los lenguajes nitos generados a partir de cualquier alfabeto. Los lenguajes innitos llamados como regulares poseen ciertas propiedades que lo caracterizan y distinguen de otros lenguajes más complejos y se puede ver claramente en el tema sobre las propiedades y algoritmos de decisión de los lenguajes regulares.
.
.