En la aritmética, podemos usar las operaciones + y x para
montar expresiones tales como (5 + 3) x 4. Similarmente, podemos usar las operaciones regulares para montar expresiones describiendo lenguajes, que son llamadas expresiones regulares. Por ejemplo: (0 1)0* El valor de una expresión aritmética es un número. En el ejemplo es 32. El valor de una expresión regular es un lenguaje. En el ejemplo: El lenguaje de las cadenas binarias que comienzan con 1 o 0 seguido por un número cualquiera de 0s. Expresiones Regulares
¿Como obtenemos el valor de (0 1)0* ?
Primero, los símbolos 0 y 1 son abreviaciones para los conjuntos {0} y {1}. De esa forma, (0 1) significa ({0} {1}). El valor de esa parte es el lenguaje {0,1}. Segundo, como el símbolo en álgebra, el símbolo de la concatenación frecuentemente está implícito en las expresiones regulares. Por consiguiente, (0 1)0* es, en realidad, una abreviación de (0 1).0* La concatenación junta las cadenas de las dos partes para obtener el valor de la expresión entera. Expresiones Regulares
Genéricamente, si fuera un alfabeto cualquiera, la
expresión regular describe el lenguaje consistiendo de todas las cadenas de tamaño 1 sobre ese alfabeto. * describe el lenguaje consistiendo de todas las cadenas sobre ese alfabeto. Expresiones Regulares
¿Cual es el lenguaje *1?
Es el lenguaje que contiene todas las cadenas que terminan en 1. ¿Y el lenguaje (0 *) (* 1) ? Consiste de todas las cadenas que comienzan con 0 o terminan con 1. Expresiones Regulares Precedencia de operadores La operación estrella es hecha primero, seguida por concatenación, y finalmente unión, a menos que paréntesis sean usados para cambiar el orden usual. Expresiones Regulares Definición Formal Decimos que R es una expresión regular si R fuera: a para algún a en el alfabeto , , , (R1 R2), donde R1 y R2 son expresiones regulares, (R1 . R2), donde R1 y R2 son expresiones regulares, o (R1*), donde R1 es una expresión regular. En los items 1 y 2, las expresiones regulares a y representan los lenguajes {a} y {}, respectivamente. Expresiones Regulares Notación R+ = RR* R* = R+ {} RK : concatenación de k’s Rs. Cuando queremos distinguir entre una expresión regular R y el lenguaje que ella describe, escribimos L(R) como siendo el lenguaje de R. Expresiones Regulares Ejemplos donde ={0,1} 0*10* {w | w contiene un único 1}. *1* {w | w tiene por lo menos un símbolo 1}. 1*(01+)* {w | todo 0 en w es seguido por al menos un 1}. ()* {w | w es una cadena de tamaño par}. 01 10 {01, 10} Expresiones Regulares Ejemplos donde ={0,1} 0*0 1*1 0 1 {w | w comienza y termina con el mismo símbolo}. (0 )1* 01* 1* (0 )(1 ) {, 0, 1, 01}. 1* * {} Equivalencia entre AF y Expresiones Regulares
Cualquier expresión regular puede ser convertida en
un autómata finito que reconoce el lenguaje que la expresión regular describe, y viceversa. Equivalencia entre AF y Expresiones Regulares Teorema: Un lenguaje es regular si y solamente si alguna expresión regular la describe. Ese teorema tiene dos direcciones. Enunciamos y probamos cada una de las direcciones como un lema separado. Lema 1.55: Si un lenguaje es descrito por una expresión regular entonces él es regular. Lema 1.60: Si un lenguaje es regular entonces él es descrito por una expresión regular. Ejemplo: De Autómata a Expresión Regular Bibliografía
[1] M. Sipser, Introduction to the Theory of Computation
Third Edition, Cengage Learning, 2013 [2] J. E. Hopcroft, R. Motwani and J. D. Ullman, Teoría de autómatas, lenguajes y computación, Addison Wesley, 2007. [3] D. Kelley, Teoría de Autómatas y lenguajes formales, Prentice Hall, 1995.