






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Teoria de Automatas y Lenguajes Formales
Tipo: Esquemas y mapas conceptuales
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Expresiones regulares y lenguajes
Las expresiones regulares son un equivalente algebraico para un aut´omata. Utilizado en muchos lugares como un lenguaje para describir patrones en texto que son sencillos pero muy ´utiles. Pueden definir exactamente los mismos lenguajes que los aut´omatas pueden describir: Lenguajes regulares. Adem´as, ofrecen algo que los aut´omatas no: Manera declarativa de expresar las cadenas que queremos aceptar.
Sirven como lenguaje de entrada a muchos sistemas que procesan cadenas tales como:
De forma m´as precisa, Las expresiones regulares denotan lenguajes. Por ejemplo, la expresi´on regular: 01 ∗^ + 10∗^ denota todas las cadenas que son o un 0 seguido de cualquier cantidad de 1’s o un 1 seguida de cualquier cantidad de 0’s.
Comunmente existen tres operadores de las expresiones regulares: Uni´on, concatenaci´on y cerradura. Si L y M son dos lenguajes, su uni´on se denota por L ∪ M e.g. L = {001,10,111}, M ={,001}, entonces la uni´on ser´a L ∪ M = {,10,001,111}.
La concatenaci´on de lenguajes se denota como LM o L.M e.g. L = {001,10,111}, M ={,001}, entonces la concatenaci´on ser´a LM ={001,10,111,001001,10001,111001}.
Finalmente, la cerradura (o cerradura de Kleene) de un lenguaje L se denota como L∗. Representa el conjunto de cadenas que puede que pueden formarse tomando cualquier n´umero de cadenas de L, posiblemente con repeticiones y concatenando todas ellas e.g. si L = { 0 , 1 }, L∗^ son todas las cadenas con 0’s y 1’s. Si L = { 0 , 11 }, entonces L∗^ son todas las cadenas de 0’s y 1’s tal que los 1’s est´an en pareja. Para calcular L∗^ se debe calcular Li^ para cada i y tomar la uni´on de todos estos lenguajes. Li^ tiene 2i elementos. Aunque cada Li^ es finito, la uni´on del n´umero de terminos de Li^ es en general un conjunto infinito e.g. ∅∗^ = {} o ∅^0 = {}. Generalizando, para todo i mayor o igual que uno, ∅i^ es el conjunto vac´ıo, no se puede seleccionar ninguna cadena del conjunto vac´ıo.
Si E es una expresi´on regular, entonces L(E) denota el lenguaje que define E. Las expresiones se construyen de la manera siguiente:
Si se necesita demostrar que para cada expresi´on regular, existe un aut´omata finito que acepta el mismo lenguaje. Se selecciona el aut´omata m´as apto − N F A. Si por el contrario, se necesita demostrar que por cada aut´omata finito, hay una expresi´on regular definiendo su lenguaje se selecciona el aut´omata con mayores restricciones: DFA. Los lenguajes aceptados por DFA, NFA, -NFA, RE son llamados lenguajes regulares.
Para convertir expresiones regulares a -NFA se realizan pruebas por inducci´on en los diferentes operadores (+, concatenation, *) en la expresi´on regular. Siempre se construye un aut´omata de una forma especia. Se mostrar´a que un NFA con transiciones- puede aceptar el lenguaje de una RE. Despu´es, se mostrar´a que un RE puede describir el lenguaje de un DFA (la misma construcci´on funciona para un NFA). Los lenguajes aceptados por DFA, NFA, -NFA, RE son llamados lenguajes regulares.
Teorema 1 Si L = L(A) para alg´un DFA A, entonces existe una expresi´on regular R tal que L = L(R).
Prueba: Suponiendo que A tiene estados { 1 , 2 ,... , n}, n finito. Tratemos de construir una colecci´on de RE que describan progresivamente conjuntos de rutas del diagrama de transiciones de A
Examinar el DFA A y encontrar los s´ımbolos de entrada a tal que hay una transici´on del estado i al estado j con el s´ımbolo a
INDUCCI ON: Suponemos que hay una ruta del estado´ i al estado j que no pasa por ning´un estado mayor que k. Se consideran 2 casos.
Figure 1: DFA que acepta todas las cadenas que tienen al menos un 0.
Las etiquetas de estas rutas se representan con la RE: R( ikk −1)(R( kkk− 1))∗R( kjk−1)
(k−1) ij +^ R
(k−1) ik (R
(k−1) kk )
∗R(k−1) kj para todas las etiquetas de las rutas del estado i al j que no pasan por estados mayores que k.
Ejemplo 3 Un DFA que acepta todas las cadenas que tienen al menos un 0. Ver Figura 1.
Inicialmente sustituimos para la base: (i) R(0) ij = , (ii) R(0) ij = + a y (iii) R(0) ij = + a 1 + a 2 +... + ak
R(0) 11 = + 1
R(0) 12 = 0
R(0) 21 = ∅
R(0) 22 = ( + 0 + 1)
Ahora para el paso de inducci´on: R(1) ij = R(0) ij + R(0) i 1 (R(0) 11 )∗R(0) 1 j Por sustituci´on directa Simplificado R(1) 11 = + 1 + ( + 1)( + 1)∗( + 1) 1 ∗ R(1) 12 = 0 + ( + 1)( + 1)∗ 0 1 ∗ 0 R(1) 21 = ∅ + ∅( + 1)∗( + 1) ∅ R(1) 22 = + 0 + 1 + ∅( + 1)∗ 0 + 0 + 1 R(2) ij = R(1) ij + R(1) i 2 (R(1) 22 )∗R(1) 2 j Por sustituci´on directa Simplificado R(2) 11 = 1 ∗^ + 1∗0( + 0 + 1)∗∅ 1 ∗ R(2) 12 = 1 ∗0 + 1∗0( + 0 + 1)∗( + 0 + 1) 1 ∗0(0 + 1)∗ R(2) 21 = ∅ + ( + 0 + 1)( + 0 + 1)∗∅ ∅ R(2) 22 = + 0 + 1 + ( + 0 + 1)( + 0 + 1)∗^ (0 + 1)∗ ( + 0 + 1) Para la construcci´on de un RE final se puede utilizar la uni´on de todas las expresiones donde el primer estado es el estado inicial y el segundo el estado de aceptaci´on.
Figure 2: Ejemplo de DFA a RE por eliminaci´on de estados.
Figure 3: Eliminaci´on de estados.
Figure 4: Construcci´on del aut´omata.
Figure 5: Construcci´on del aut´omata.
Figure 7: Caso base.
Figure 8: Induccion (a).
Entre las aplicaciones de expresiones regulares se encuentran:
Existen un conjunto de leyes algebraicas que se pueden utilizar para las expresiones regulares:
NOTA: La concatenaci´on no es conmutativa, es decir LM 6 = M L
Figure 9: Induccion (b).
Una identidad para un operador es un valor tal que cuando el operador se aplica a la identidad y a alg´un otro valor, el resultado es el otro valor. Por ejemplo, 0 es la identidad de la suma, ya que 0+x = x+0 = x, la identidad para la multiplicaci´on es 1 debido a que 1x = x1 = x. Un aniquilador para un operador es un valor tal que cuando el operador se aplica al aniquilador y alg´un otro valor, el resultado es el aniquilador. 0 es el aniquilador para la multiplicaci´on: 0 × x = x × 0 = 0. No hay aniquilador para la suma.
Estas leyes las utilizamos para hacer simplificaciones: ∅ es la identidad para la uni´on: ∅+L = L+∅ = L. es la identidad para la concatenaci´on: L = L = L. ∅ es el aniquilador para la concatenaci´on: ∅L = L∅ = ∅.
Como la concatenaci´on no es conmutativa, tenemos dos formas de la ley distributiva para la concatenaci´on:
Se dice que un operador es idempotente (idempotent) si el resultado de aplicarlo a dos argumentos con el mismo valor es el mismo valor. En general la suma no es idempotente: x + x 6 = x (aunque para algunos valores s´ı aplica como 0 + 0 = 0). En general la multiplicaci´on tampoco es idempotente: x × x 6 = x. La uni´on e intersecci´on son ejemplos comunes de operadores idempotentes. La ley idempotente para la uni´on: L + L = L.
Las leyes involucradas con la propiedad de cerradura:
Se puede proponer una variedad infinita de leyes para expresiones regulares. El problema se reduce a probar la igualdad de dos lenguajes espec´ıficos:
Ejemplo 5 Probar que (L + M )∗^ = (L∗M ∗)∗
Es necesario probar que las cadenas que est´an en (L + M )∗^ tambi´en est´an en (L∗M ∗)∗, y probamos que las cadenas que est´an en (L∗M ∗)∗^ tambi´en est´an en (L + M )∗.
Cualquier RE con variables se puede ver como una RE concreta sin variables, viendo cada variable como si fuera un s´ımbolo diferente. La expresi´on (L + M )∗^ se puede ver como (a + b)∗. Utilizamos esta forma como una gu´ıa para concluir sobre los lenguajes. Podemos analizar el lenguaje que nos describe: (a + b)∗^ y analizar el lenguaje que nos describe: (a∗b∗)∗.