UNIDAD 2. EXPRESIONES REGULARES LENGUAJES Y AUTOMATAS ISC. ROSA IMELDA GARCIA CHI, MTI
EXPRESIONES REGULARES
CONCEPTOS BASICOS
SIMBOLO CADENAS ALFABETOS LENGUAJES
Definición: Dado el alfabeto , una expresión regular será el resultado de la aplicación de algunas (o todas) de las siguientes reglas un número finito de veces:
1. El símbolo Ø es una expresión regular y denota el lenguaje vacío, 2. El símbolo ε es una expresión regular y denota el lenguaje {ε}, 3. Si a entonces a es una expresión regular que denota el lenguaje {a}, 4. Si y son expresiones regulares entonces a) + es una expresión regular que denota la unión de los lenguajes denotados por y por . b) es una expresión regular que denota la concatenación del lenguaje denotado por con el denotado por . c) * es una expresión regular que denota la clausura del lenguaje denotado por .
MTI. ROSA IMELDA GARCIA CHI
Teoremas para Expresiones Regulares
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
De Expresiones Regulares a
Lenguajes Regulares
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
DEFINICIÓN FORMAL DE
LENGUAJE REGULAR
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
Unidad 2 de Lenguajes y Autรณmatas
EXPRESIONES REGULARES
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
SIGNIFICADO DE LAS
EXPRESIONES REGULARES
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
Lodo, método, éxodo, mejora, última, odioso “od”
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
Ejemplo
MTI. ROSA IMELDA GARCIA CHI
Ejemplo:
Una solución aceptable para este tipo de problemas debe cumplir dos caracterísitcas
Corrección
Completez
Hasta aquí grupo A 13 febrero 2017 MTI. ROSA IMELDA GARCIA CHI
corrección
Las palabras que represente la ER propuesta deben satisfacer la descripción del problema (por ejemplo, para el problema del ejemplo, la solución a*(a+b)* no es adecuada porque representa algunas palabras, como abb, que no satisfacen la condición de que toda b esté inmediatamente precedida por una a;
Completez
La ER propuesta debe representar todas las palabras que satisfagan la condiciĂłn. AsĂ para el problema del ejemplo, la soluciĂłn (ab)* no es adecuada porque hay palabas tales como aab, pertenecientes al lenguaje, que no son representadas por dicha ER
METODOLOGÍA DE DISEÑO DE LAS EXPRESIONES REGULARES
MTI. ROSA IMELDA GARCIA CHI
Al tratar de encontrar una ER para un lenguaje dado, mientras más complejo sea el lenguaje es obvio que resulta más difícil encontrar por pura intuición dicha ER. En estos casos puede ser conveniente trabajar en forma metódica. Una técnica que funciona en muchos casos consiste en determinar primero la estructura de la ER, dejando unos «huecos» pendientes para resolverse luego. Estos huecos, que llamaremos contextos, son también lenguajes para los que habrá que encontrar una ER MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
Un importante elemento de metodología – que se aplicó en este ejemploconsiste en transformar los enunciados de lenguajes de manera que sean más fácilmente representables por ER
En particular, los enunciados «negativos» del tipo «…las palabras que no contengan bb» son particularmente difíciles, porque en las ER no hay ningún operador para representar «lo que no forma parte del lenguaje», sino que los operadores (como la unión o la estrella de Kleene) tienden a añadir más palabras
En consecuencia, es necesario convertir un enunciado sobre lo que no se permite en otro enunciado sobre lo que sí se permite.
MTI. ROSA IMELDA GARCIA CHI
Por ejemplo, si en un lenguaje las palabras no deben contener la cadena «bb» ¿qué es lo que sí puede contener? Aquí podemos hacer un análisis por casos, considerando que podemos tener una b sola, o también una b seguida de una a. Como hay dos casos podemos pensar en utilizar el operador «+» para combinar esos casos, y así en adelante MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
OPERACIONES CON
LENGUAJES REGULARES
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
OPERACIONES CON
EXPRESIONES REGULARES
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
PRECEDENCIA DE LAS OPERACIONES
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
EXPRESIONES REGULARES
TEOREMA
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
PROPIEDADES
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
EJEMPLOS
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
EQUIVALENCIA ENTRE EXPRESIONES REGULARES
MTI. ROSA IMELDA GARCIA CHI
EQUIVALENCIAS
MTI. ROSA IMELDA GARCIA CHI
Ejercicios
MTI. ROSA IMELDA GARCIA CHI
SOLUCIÓN
MTI. ROSA IMELDA GARCIA CHI
EJERCICIOS
MTI. ROSA IMELDA GARCIA CHI
SOLUCIÓN
MTI. ROSA IMELDA GARCIA CHI
EXPRESIONES REGULARES
ESPECIFICACIÓN DE CATEGORÍAS LÉXICAS
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
EJEMPLOS
MTI. ROSA IMELDA GARCIA CHI
DE EXPRESION REGULAR A LENGUAJE REGULAR
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
ABREVIATURAS DE LAS
EXPRESIONES REGULARES EXTENDIDAS
MTI. ROSA IMELDA GARCIA CHI
MTI. ROSA IMELDA GARCIA CHI
EJEMPLOS
MTI. ROSA IMELDA GARCIA CHI
Expresiones regulares y lenguajes obtenidos del libro de «Lenguajes Formales y Teoría de la computación» de John Martin
Ejemplos
MTI. ROSA IMELDA GARCIA CHI
EJEMPLOS LENGUAJE
L{0,1} o sea {0}{1}
EXPRESION REGULAR CORRESPONDIENTE ε 0 001 0+1
L{0,10} osea {0}{10}
0+10
L{ε} L{} L{} L{0} L{001} o sea L{0}{0}{1}
EJEMPLOS LENGUAJE
EXPRESION REGULAR CORRESPONDIENTE L{1,ε}{001} (1+ε)001 (1+)001 L{1,} {001} (1+)001 L{1,} {001} L{110}*(0,1) (110)*(0+1) L{1}*{10} 1*10 L{10,111,11010}* (10+111+11010)* L{0,10}*({11}*{001, ε}) (0+10)*((11)*+(001+ ε))
Se piensa en EXPRESIÓN REGULAR como representativa de la «cadena más característica» del lenguaje respectivo. Por ejemplo: 1*10 es una cadena consistente en la subcadena 10 precedida de cualquier número de unos. Ejemplos: 110, 1110, 11110,111110,...
MTI. ROSA IMELDA GARCIA CHI
Ejemplo: cadenas de longitud par Sea L {0,1}* el lenguaje de todas las cadenas de longitud par. Puesto que 0 es par, εL ¿Es L regular? R= Si lo es ¿cuál es la Expresión Regular que le corresponde? R= Todas las cadenas de longitud par pueden obtenerse al concatenar cero o más cadenas de longitud 2. A la inversa, toda concatenación de este tipo tiene longitud par. De ello, se sigue que: L={00,01,10,11}* De modo que una expresión regular correspondiente a L es (00+01+10+11)* Otra sería (0+1)(0+1)*
Ejemplo: cadenas con números non de 1’ss Sea L el lenguaje de todas las cadenas 0´s y 1’s que contiene un número par de 1´s. Toda cadena de l debe tener por lo menos un 1 y, por ende, ha de comenzar con una cadena de la forma 0i10j Hay un número par (posiblemente cero) de 1´s adicionales, cada uno seguido de cero o más 0´s. Ello significa que el resto de la cadena es la concatenación de cero o más elementos de la forma general 10m10n Así, una expresión regular que describe a L es: 0*10*(10*10*)*
Otra expresión levemente distinta, que podría obtenerse al interrumpir la subcadena inicial después del 1 sería 0*1(0*10*1)*0* Si se parte de considerar el último 1 de la cadena en lugar del primero, se terminaría con: (0*10*1)*0*10*
Una respuesta más complicada y todavía correcta sería:
0*(10*10*)*1(0*10*1)*0* MTI. ROSA IMELDA GARCIA CHI
Lo importante de todos estos ejemplos es que la expresión regular debe ser suficientemente general para describir toda cadena del lenguaje. Una expresión que no funcionaría satisfactoriamente sería: (10*10*)*10* Ya que no permite cadenas que comienzan con 0. Este problema se corregiría al insertar 0* al comienzo, para obtener: 0*(10*10*)*10* Ésta es una forma de mostrar explícitamente el último 1 de la cadena, un tanto diferente de la tercera expresión regular del ejemplo MTI. ROSA IMELDA GARCIA CHI
Ejemplo: cadenas de longitud 6 o menos Sea L el conjunto de todas las cadenas en {0,1} de longitud 6 o menos. Una expresión sencilla a la vez que poco elegante, que corresponde a L es: ε+0+1+00+01+10+11+000+001+…+111+…+000000+…+111111 Una expresión regular para describir el conjunto de cadenas cuya longitud sea precisamente seis, sería: (0+1)(0+1) (0+1)(0+1) (0+1)(0+1) O en la notación extendida (0+1)6 Sin embargo para reducir la longitud podría permitirse simplemente algunos o todos los factores sean ε. Así pues, podría describirse L con la expresión regular: (0+1+ ε) 6
Ejemplo: cadenas que terminan con 1 y no contienen 00 En esta ocasión sea L el lenguaje siguiente:
L={x{0,1}* x termina con 1 y no contiene la subcadena 00}
A fin de encontrar una expresión regular para L, se intenta describir de otras maneras la propiedad definitoria de las cadenas de L Afirmar que una cadena no contiene la subcadena 00 equivale a decir que ningún 0 puede ir seguido de otro 0, en otras palabras, que cada 0 aparece al final de la cadena o va seguido inmediatamente de 1
Puesto que las cadenas de L no pueden tener 0 al final, cada 0 debe ir seguido de 1 Ello implica que la cadena entera consiste en copias de las cadenas 01 y 1, por lo que cada cadena de L corresponde a la expresión regular: (1+01)* Sin embargo, esta expresión regular es demasiado general, ya que permite la inclusión de la cadena nula (o vacía) La definición afirma que las cadenas de l deben terminar con 1, lo cual es más fuerte que decir que no pueden terminar con 0. El problema no se corrige al agregar 1 al final, para obtener (1+01)*1, ya que ahora la expresión no es suficientemente general: no permite la subadena 01 Para posibilitar esta opción, se obtiene: (1+01)*(1+01), o (1+01)+ MTI. ROSA IMELDA GARCIA CHI
Ejemplo: El lenguaje de identificadores de C En este ejemplo, resulta útil un poco más de notación. Úsemos temporalmente l (de «letra») para denotar la expresión regular: a+b+c+…+z+A+B+C+…+Z Y d (de «dígito» ) para respresentar: 0+1+2+3+…+9
Un identificador en el lenguaje de programación C es toda cadena de longitud 1 o más que contiene sólo letras, dígitos o el signo de subrayado «_» y empieza con una letra o el signo mencionado. Así pues, una expresión regular para el lenguaje de todos los identificadores de C es:
(l+_)(l+d+_)* MTI. ROSA IMELDA GARCIA CHI