Professional Documents
Culture Documents
GUIA II
EXPRESIONES REGULARES Y AUTOMATAS
Tres clases hay de ignorancia: no saber lo que debiera
saberse, saber mal lo que se sabe, y saber lo que no debiera
saberse.
Faccois de la Rochefoucald
(1613-1680) Escritor francés
COMPILADORES
Para subsanar los problemas que presentan los interpretes se crean los
compiladores. El traductor de un lenguaje de programación de alto nivel a código
de maquina o ensamblador se conoce como compilador.
PROGRAMA PROGRAMA
FUENTE OBJETO
PROGRAMA FUENTE
Alto Nivel
G.C.I.
CODIGO
INTERMEDIO
G.C.
CODIGO
MAQUINA
Desventajas:
TRADUCTOR
ENSAMBLADOR
lenguaje de
bajo nivel Ensamblador Objeto
ensamblador
COMPILADOR
lenguaje código
de compilador intermedio
alto nivel (ensamblador)
INTERPRETE
Lenguaje
de Interprete
alto nivel
Estructura de un compilador
Fuente
Análisis lexicográfico
T
A Análisis Sintáctico
B
L
A Análisis Semántico
y de tipos
D
E
S Generación de código
I intermedio
M
B
O Generación de código
S
Código relocalizable
Enlazador
Objeto
Estructura del
programa fuente
Pre procesador
Programa
fuente
Compilador
programa objeto
en leng.ensamblador
Ensamblador
código de maquina
relocalizable
código de maquina
absoluto
Ejemplo 1
Ejemplo de proceso de compilación
P I + V * 10
Analizador
lexicografico
Analizador Generador de
Sintáctico código intermedio
= T1 = Ent_real(10)
Id1 + T2 = Id3 * T1
T3 = Id2 + T2
Id2 * Id1 = T3
Id3 10
Optimizador
de código
intermedio
Analizador
semántico
T1 = Id3 * 10.0
Id1 = Id2 + T1
= Generator
de código
Id1 +
Id2 *
AUTOMATAS
Un autómata finito es un modelo matemático que sirve como reconocedor de frases de un
lenguaje. Un AF se puede representar como un diagrama de transiciones –grafo dirigido-.
en el que todos los nodos son los estados y las aristas etiquetadas representan las funciones
de transición.
X Y= (X)
EXPRESIONES REGULARES
Definición.- Una expresión regular es una regla de formación, que permite definir un
conjunto de secuencias llamada conjunto regular. A este conjunto también se le suele
llamar Lenguaje regular.
- Una expresión regular simple: cuyos operandos son elementos del alfabeto
Ejemplo 2
= {a,b} O={*,/}
Si consideramos :
L(r) no es otra cosa que el conjunto de los identificadores del lenguaje Pascal.
Una expresión regular puede definirse como una composición de expresiones regulares.
- Sea : alfabeto
Si r, s son expresiones regulares con sus lenguajes L(r) y L(s) respectivamente entonces:
PROPIEDADES
Una expresión regular cumple las siguientes características:
.r = r . = r es el idéntico de r
r** Idempotencia de r
una expresión regular puede representarse mediante un grafo, en el cual las aristas están
etiquetadas con los elementos del alfabeto.
Ejemplo 3
r = ab* r = a*b
b a
a b
A B A B
Ejemplo 4
r =0*(10*10*)* r =0*10*(10*10*)*
0 0 0 0
1 1
A B A B
1 1
Definiciones regulares
Partiendo del alfabeto S de símbolos básicos, pueden crearse una definición regular como
una secuencia de definiciones :
Ejemplo 5
Si L = { ID / ID es un identificador de Pascal }
creamos una e.r. r t.q. L(r) = L
L ───> A/B/...Z/a/.../z
D ───> 0/1/...9
ID ───> L(L/D)*
Ejemplo 6
Consideremos los siguientes lenguajes definidos algebraicamente
Construya la gramática
0m1n0m+n m, n >0
1n+m0n0m m, n >0
Todas las cadenas de ceros y unos con al menos dos ceros consecutivos
(0/1)*00(0/1) *
Todas las cadenas de ceros y unos que comienzan con uno y no tienen dos ceros
consecutivos
AUTÓMATAS FINITOS
Un Autómata finito es una maquina de estados finitos que reconoce secuencias
generados por una expresión regular.
E : conjunto de estados
A : alfabeto de entrada ( alfabeto)
: función de transición
0 : estado inicial
F : conjunto de estados de aceptación
: E x E
F = { j / existe i donde ( i , a) = j
para algún a }
r M(r)
Ejemplo 7
sea r = (a/b)*ab expresión regular, construimos M(r) autómata no determinista, a
partir de la expresión regular.
a/b
a b
0 1 2
inicio
a b
0 { o,1} {o}
1 - {2}
2 - -
puede verse que las entradas en la matriz de una matriz no deterministas son conjuntos,
mientras que en un autómata deterministas son elementos de E.
Ejemplo 8
El siguiente autómata determinista corresponde a la expresión regular r = (a/b)*ab
b a
a b
0 1 2
a
b
M(E, , , 0, F)
a b
0 1 o
1 1 2
2 1 o
Método:
Se analiza la expresión regular r, descomponiéndola en subexpresiones regulares. En cada
caso se construye el autómata correspondiente, luego se acoplan en forma sistemática para
obtener el autómata M(r). M(r) es llamado Autómata generado por una expresión regular r.
i j M(r)
a
i j M(a)
i j M(r)
i j M(s)
M(r)
i j
i f
M(r)
i j
Método:
1 Se inserta un nuevo estado inicial y estado final i , f
2 El nuevo estado inicial se conecta con los estados iniciales de las maquinas.
3 Los estados finales de las maquinas se conectan con el nuevo estado final.
j f
i i M(S)
M(r)
Método:
i i j f
M(r)
Método:
AF no
determinista
AF AF no determ.
Determinista con transic.
Expresión
regular
Para toda expresión regular r, Existe M autómata finito no determinista con transiciones
tal que L(r) = L(M)
Ejemplo 9
sea r = ab(a/b)* e.r. , construimos M(r) autómata no determinista, a partir de la expresión
regular.
a
M(a)
b
M(b)
Construimos M((a/b)*)
a
b
a
a b
b
Método
Construimos una nueva matriz de transiciones ’, en donde cada estado es un conjunto de
estados del autómata inicial. Para ello hacemos uso de tres funciones:
Ejemplo 10
Consideremos la expresión regula r = (a/b)*ab. En los ejemplos 420 y 421 se mostraron los
autómatas no deterministas y determinista respectivamente. Presentaremos un nuevo autómata
no determinista , construido utilizando el método de componentes:
a
2 3
a b
0 1 6 7 8 9
4 b 5
CERRADURA_(0) : {0,1,2,4,7}=A
MUEVE(A,a) :{3,8}
CERRADURA_( MUEVE(A,a)) = CERRADURA_( {3,8}) = {1,2,3,4,6,7,8} = B
MUEVE(A,b) :{5}
CERRADURA_( MUEVE(A,b)) = CERRADURA_( {5}) = {1,2,4,5,6,7} = C
MUEVE(B,a) :{3,8}
CERRADURA_( MUEVE(B,a)) = CERRADURA_( {3,8}) = {1,2,3,4,6,7,8} = B
MUEVE(B,b) :{5, 9}
CERRADURA_( MUEVE(B,b)) = CERRADURA_( {5,9}) ={1,2,4,5,6,7,9} = D
MUEVE(C,a) :{3,8}
CERRADURA_( MUEVE(C,a)) = CERRADURA_( {3,8}) = {1,2,3,4,6,7,8} = B
MUEVE(C,b) :{5}
CERRADURA_( MUEVE(C,b)) = CERRADURA_( {5}) = {1,2,4,5,6,7} = C
MUEVE(D,a) :{3,8}
CERRADURA_( MUEVE(D,a)) = CERRADURA_( {3,8}) = {1,2,3,4,6,7,8} = B
MUEVE(D,b) :{5}
CERRADURA_( MUEVE(D,b)) = CERRADURA_( {5}) ={1,2,4,5,6,7} = C
Mientas aparezcan nuevos estados se repetirá el proceso para los nuevos estados. En el
ejemplo aparecen los estados A, B, C, D.
b
C
b b
a
a b
A B D
a a
M(E, A, , 0, F)
E={A, B, C, D} A = { a, b} F = {D}
a b
A B C
B B D
C B C
D B C
AUTÓMATAS COCIENTES
Para todo p, q E,
p R q si y solo si (p,x) R (q,x) para todo x
Esta relación R sobre E determina un conjunto cociente llamada Autómata cociente M/R,
donde el conjunto de estados es precisamente :
E/R = {[] / E}
Ejemplo 11
a b
1 0 1 0 0 0
0 0 4 0 1 0 1 0 1
1 1 0 1 0 1 0 0 0
2 2 4 R = 0 1 0 1 0 1
3 5 2 0 0 0 0 1 0
4 4 3 0 1 0 1 0 1
5 3 2
Lo mismo ocurre para las demás clases, cuando ocurre un a en la entrada. Sin embargo
cuando ocurre una b en la entrada, vemos que:
E : conjunto de estados
: alfabeto de entrada
: función de transición
0 : estado inicial
F : conjunto de estados de aceptación
:Ex E
luego si a, b E y x
a R b implica que (a, x) R (b, x)
Sea w e L(M')
'([o ],w) = [ (o ,w)] F/R
esto es para algún a E se cumple que a R (o, w)
entonces a es compatible con (o, w) en w' para w' *
Algoritmo
Método :
1 Se parte el conjunto E en dos grupos : estados finales, y estados no finales P(E) = {F,E-F}
2 Para cada grupo G de P(E) , hallar una partición P(G), de tal forma que dos estados
están en el mismo subgrupo, si para todos los símbolos del alfabeto, tienen transiciones
hacia el mismo subgrupo.
Al final se tendrá una partición, en el que cada grupo ya no se pueda subdividir. Los
elementos de esta partición son las clases de equivalencia de E. Estas clases se consideraran
como los estados de la maquina simplificada.
Ejemplo 12
b
C
b b
a
a b
A B D
a a
M(E, A, , 0, F)
E={A, B, C, D} A = { a, b} F = {D}
a b
A B C
B B D
C B C
D B C
Hallamos una partición de E , en dos conjuntos: los estados finales y los estados no finales:
E = {{D}{A,B,C}}
Nótese que :
- Estando en los estados A-C, con una a se pasa al estado B, y con una b se
queda en el estado A-C
b a
a b
[A] [B] [D]
a
b
M(E, , , 0, F)
a b
L(G) = L (M) = L( r)
Método 1 :
p : i aj
i F ( i es estado final )
Método 2 :
EJERCICIOS PROPUESTOS
1 Defina la expresión regular para
a. El conjunto de frases de ceros y unos que inician con uno
b. Conjunto de frases que inician con 1 y nunca hay dos a consecutivas
REFERENCIAS BIBLIOGRAFICAS
[AHO 2013] Aho A., Sethi R.., Ullman J. - “Compiladores, Principios, Técnicas y herramientas”. Adisson-Wesley. 2013.
Wilmington Delaware EUA
[BROOKSHEAR 1989] Brookshear J. “Teoría de la computación, lenguajes formales, autómatas y complejidad”. Adisson-
Wesley. 1989. Wilmington Delaware EUA
[CORTEZ 2013] Augusto Cortez Vásquez. “Lenguajes y traductores”. UCSS Lima Perú 2013 ISBN 978-612-4030-50-5
[CORTEZ 2011] Augusto Cortez Vásquez. “Matemáticas Discretas”. Edit San Marcos Lima Perú ISBN 20260100808
[CORTEZ 2004] Teoría de la complejidad computacional y teoría de la computabilidad
Rev. RISI 1(1), 102-105 (2004) Facultad de Ingeniería de Sistemas e Informática Universidad
Nacional Mayor de San
15-0268 (impreso)
http://sisbib.unmsm.edu.pe/BibVirtualData/publicaciones/risi/N1_2004/a14.pdf
[GRASSMANN 1997] Grassmann W., Tremblay J. “Matemática discreta y lógica”. 1997. Prentice Hall Hispanoamericana
[HOPCROFT 1993] Hopcroft J., Ullman J. “Introducción a la teoría de autómatas, lenguajes y computación”. CECSA 1993 EUA
[KOLMAN 1989] Kolman B. Busby R. “Estructuras de matemáticas discretas para la computación”. 1989. Prentice Hall
Hispanoamericana
[SETHI 1992] Sethi R. - “Lenguajes de programación, Conceptos y constructores”. Adisson-Wesley. 1992. Wilmington
Delaware EUA
[TEUFEL 1995] Teufel – Schmidt – Teufel “Compiladores Conceptos fundamentales”. Adisson-Wesley. 1995. Wilmington
Delaware EUA