Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Semana 3 Expresiones Regulares y Automatas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 50

LENGUAJES Y TRADUCTORES

Expresiones Regulares
Y
Automatas

Lic. Carlos A. Ruiz De La Cruz Melo


Correo: cruizdelacruzm@unmsm.edu.pe
EXPRESIONES REGULARES

DEFINICIONES

❑ Las expresiones regulares (e.r) son un


metalenguaje para describir los elementos
léxicos de un lenguaje.

❑ Las expresiones regulares representan a los


lenguajes regulares.

❑ Una expresión regular es una regla que


permite definir un conjunto de secuencias
llamada conjunto regular. A este conjunto
también se le suele llamar Lenguaje regular
EXPRESIONES
REGULARES
Si Σ es un alfabeto y O es un conjunto de
operadores, podemos afirmar que una expresión
regular r esta constituida de operandos y
operadores

Cada operando puede ser:

❑ Una expresión regular simple.- sus


operandos son elementos del alfabeto.

❑ Una expresión regular compuesta.- sus


operandos son otras expresiones
regulares
EXPRESIONES
REGULARES
Ejemplo

Σ = { a, b } y O={ * , / }

a*, a*b , aa/b son expresiones regulares

r= a* genera l(r)= { secuencias de 0 o mas a’s}


r=a*b genera l(r)= { secuencia de 0 o mas a’s juntas a una b}
r= aa/b genera l(r)= { secuencia de aa o b}
EXPRESIONES REGULARES
DEFINICIÓN
Sea  un alfabeto. Una e.r sobre  se define de forma inductiva como sigue:

1. : es una e.r que denota el lenguaje regular que


contiene la cadena vacia { }
2. a, a es una e.r que denota el lenguaje regular
que contiene la cadena a, {a}
3. Sea r una e.r que denota el lenguaje Lr,
entonces (r) es también una e.r para el mismo
lenguaje.
4. r/s : es una e.r que denota la unión de los
lenguajes denotados por r y s.
4. rs : es una e.r que denota la concatenación de los
lenguajes denotados por r y s
5. r* es una e.r que denota la clausura del lenguaje
denotado por r.
EXPRESIONES REGULARES
Construcción:

Operaciones

▪ Unión
▪ Concatenación
▪ Clausura de Kleene

Símbolo de alternación ( / ) separa las alternativas

Cuantificación. Un cuantificador tras un carácter


especifica la frecuencia con la que este puede
ocurrir.

▪ + indica 1 o mas repeticiones


▪ * indica 0 o mas repeticiones

Agrupación( paréntesis)
Definen el ámbito y precedencia de los demás
operadores
EXPRESIONES
REGULARES
Prioridad de los operadores

❑ La máxima prioridad la tienen los paréntesis


❑ La clausura(*) tiene mayor prioridad que la
concatenación y la unión
❑ La concatenación(.) tiene mayor prioridad que la
unión
❑ La unión (+ o / )tiene prioridad mínima

Por ejemplo :
aa*  (aa)*
EXPRESIONES
REGULARES EN JAVA

Ejemplo
import java.util.regex.*;
class Ejemplo1{
public static void main(String args[]){
Pattern regla = Pattern.compile("a*b");
Matcher encaja = regla.matcher("aabUNMSMaabUNMSMabUNMSMb");
String resultado = encaja.replaceAll("-");
System.out.println(resultado);
}
}

Salida

-UNMSM-UNMSM-UNMSM-

Process completed.
EXPRESIONES REGULARES EN JAVA

Ejemplo
import java.util.regex.*;
class Ejemplo1{
public static void main(String args[]){

String cadena="b";
boolean cumplePatron = Pattern.matches("a*b", cadena);
if(cumplePatron)
System.out.println("si cumple");
else System.out.println("NO cumple");
}
}

Salida si cumple

Process completed.
EXPRESIONES REGULARES

Observación

❑ Una expresión regular(e.r) reconoce


el mismo lenguaje que reconoce una
gramática regular (GR)

❑ Una expresión regular (e.r) reconoce


el mismo lenguaje que un autómata
finito (M)
L(GR)
❑ Un autómata finito (M) reconoce el
mismo lenguaje que reconoce una
gramática regular (GR)
L(M) L(er)
DIAGRAMA DE
TRANSICION
DEFINICIÓN

❑ Un diagrama de transición es una


representación gráfica que detalla el
comportamiento de un sistema donde
tenemos un conjunto de estados, los cuales
pueden tener una o más salidas hacia otro
estado.

❑ Consta de dos elementos:


▪ Estados
▪ Transiciones
DIAGRAMA DE
TRANSICION
Estado
Un estado Identifica un periodo de tiempo del
Estado inicial
objeto (no instantáneo) en el cual el objeto esta
esperando alguna operación o estímulo.
Estado intermedio

Estado final
Transición

Los estados se relacionan entre sí con


flechas con un nombre (el caracter o conjunto
de caracteres que provoca la transición de un
estado a otro).
DIAGRAMA DE
TRANSICION
Puede haber mas de un estado inicial, así
como mas de un estado final en un
diagrama de transición

inicio
inicio
...

...

inicio
DIAGRAMA DE
TRANSICION
Ejemplo
Diagrama de transición para
reconocer un identificador

Tabla de transición
La información en un diagrama de
transición puede representarse por
medio de una tabla. Así en el ejemplo
anterior su tabla de transición es la
siguiente:
L: letra
d:dígito
g:guión L d g o
o:otro 0 1
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4
4
AUTOMATAS FINITOS
(A.F.)

❑ El autómata finito es un modelo


matemático de un sistema que trabaja
con entradas y salidas discretas.

❑ Se representa a traves de un diagrama


de transición.

❑ Los autómatas modelizan una de las


familias de lenguajes de la jerarquía
de Chomsky, la familia de los
lenguajes regulares.
AUTOMATAS
FINITOS

Los AF se clasifican en :

❑ Autómata Finito Determinista ( AFD)


❑ Autómata Finito No Determinista (AFN)
AFD
Un autómata finito determinista (AFD) es una
5-tupla de la siguiente forma A=(Q, , , q0,
F), siendo:
❑ Q es un conjunto finito de estados
❑  es un conjunto finito de símbolos llamado
alfabeto
❑ : Qx→Q es una función de transición
❑ q0  Q , q0 es el estado inicial
❑ F  Q , F es el conjunto de estados finales
AFN
Un AFN es un modelo matemático o
también llamado 5-tupla A=( Q, , , q0,
F) que consiste de:

❑ Q es un conjunto finito de estados


❑  es un conjunto finito de símbolos llamado
alfabeto
❑ q0  Q es el estado inicial
❑ F  Q es el conjunto de estados finales
❑ : Qx→2Q es la función de transición (2Q
denota el conjunto potencia o de las partes de
Q)
GENERAN EL MISMO LENGUAJE

e.r: (0/1)*10

G =(Vn, Vt, P, p )
Vn={ p, q, r } Vt={ 0, 1}
P= { p→0p | 1q

0 q→0r | 1q
r→0p | 1q
1 0 q→0 }
inicio
p q r G =(Vn, Vt, P, p )

1 Vn={ p, q, r } Vt={ 0, 1}
0 1 P= { p→0p | 1q
q→0r | 1q
r→0p | 1q
r→ }
AF Y GRAMATICA REGULAR

Osea dado un autómata M = (Q,  ,,q0,F),


obtenemos una gramática G=(Vn, Vt, P,S) tal que
L(M) = L(G), tomando

❑ Vn =Q
❑ Vt =
❑ S= q0
❑ Para cada transición del autómata
a(p) = q, añadimos a P la regla p →
aq
❑ Para cada estado q F añadimos a P
la regla q→, o alternativamente,
tantas reglas de la forma p→a como
transiciones del tipo a(p)=q con qF
tenga el AFD
AFN
Ejemplo

Diagrama que representa la expresión (a|b)*abb

a
a b b
inicio
0 1 2 3

b
CONVERTIR AFN →AFD
Método de Thompson

Para convertir un AFN


a un AFD, el cual
contempla la
construcción de un
AFN a partir de una e.r
AFN a partir de una e.r
1. La expresión regular r se
representa como dos nodos r
conectados a través de una arista
llamada r . 0 1

2. La concatenación de r1 con r2 se
representa uniendo el nodo final de r1 r2
r1 con el nodo inicial de r2.
0 1 2

3. Para la expresión regular r1/r2 r1


1 3 

5
0
 2 4 
r2
AFN a partir de una e.r
4. Para la expresión regular ( r1/r2 )+

r1
1 3 

5
0
 2 4 
r2
AFN a partir de una e.r
5. Para la expresión regular ( r1/r2 )*

r1
2 4 

 6
 7
0 1
 3 5 
r2


AFD a partir de un AFN
❑ Entrada. Un AFN
❑ Salida, Un AFD que acepta el mismo
lenguaje.

❑ Método. El algoritmo construye una tabla


de transiciones, tal que cada estado del
AFD es un conjunto de estados del AFN.
AFD DESDE UN AFN
Se utilizan las operaciones siguientes para
localizar los conjuntos de los estados del AFN
(s representa un estado del AFN, y T, un
conjunto de estados del AFN).

❑ Cerradura-(s).-Conjunto de estados del AFN


alcanzables desde el estado s del AFN con
transiciones  solamente

❑ Cerradura-(T).-Conjunto de estados del AFN


alcanzables desde algun estado s en T con
transiciones  solamente

❑ Mover(T,a).- Conjunto de estados del AFN hacia los


cuales hay una transición con el símbolo de entrada a
desde algún estado s en Tdel AFN
AFD a partir de un AFN
Ejemplo

Generar un AFD a partir de la e.r:

(a/b)*ab
AFD a partir de un AFN

Paso 1
Cerradura_(0)= {0 1 7 2 3 } CONJUNTO ..0
Mover( {0 1 7 2 3 },a ) = {4 8 }
Cerradura_ ( { 4 8 } ) = { 4 6 1 7 2 3 8 } CONJUNTO . 1
Mover( {0 1 7 2 3 },b ) = {5 }
Cerradura_ ( { 5 } ) = { 5 6 1 7 2 3 } CONJUNTO .... 2

Paso 2
Mover( {4 6 1 7 2 3 8 },a ) = {4 8 }
Cerradura_ ( { 4 8 } ) = { 4 6 1 7 2 3 8 } CONJUNTO ..1
Mover( {4 6 1 7 2 3 8 },b ) = {5 9 }
Cerradura_ ( { 5 9 } ) = { 5 6 1 7 2 3 9 } CONJUNTO . 3
AFD a partir de un AFN

Paso 3
Mover( {5 6 1 7 2 3 },a ) = {4 8 }
Cerradura_ ( { 4 8 } ) = { 4 6 1 7 2 3 8 } CONJUNTO..1
Mover( {5 6 1 7 2 3 },b ) = {5 }
Cerradura_ ( { 5 } ) = { 5 6 1 7 2 3 } CONJUNTO ....2

Paso 4
Mover( {5 6 1 7 2 3 9 },a ) = {4 8 }
Cerradura_ ( { 4 8 } ) = { 4 6 1 7 2 3 8 } CONJUNTO..1
Mover( {5 6 1 7 2 3 9 },b ) = {5 }
Cerradura_ ( { 5 } ) = { 5 6 1 7 2 3 } CONJUNTO ....2
AFD a partir de un AFN

(a/b)*ab

a b
0 1 2
1 1 3
2 1 2
3. 1 2
MINIMIZACION DE ESTADOS
b

b b
AFD
C
a
a b b
A B D E
a
a a

b E b
a
a b
A B D
a
b a

AFD EQUIVALENTE
MINIMIZADO
MINIMIZACION DE ESTADOS

ENTRADA
Un AFD M con un conjunto de estados S, un
conjunto de entrada ,transiciones definidas para
todos los estados y las entradas, un estado de
inicio s0 y un conjunto de estados de aceptación
F.

SALIDA
Un AFD M’ que acepta el mismo lenguaje que M y
tiene el menor numero de estados posibles.
ALGORITMO DE MINIMIZACION
DE ESTADOS

Para cada grupo de P hacer


Partición de G en subgrupos tales que dos
estados s y t

de G están en el mismo subgrupo si, y solo


si, para todos los símbolos de entrada a, los
estados s y t tienen transiciones en a hacia
estados del mismo grupo de P;

/*en el peor caso un estado estará


solo en un subgrupo*/

Sustituir G en Pnueva por el conjunto de


todos los subgrupos formados
finpara
MINIMIZACION DE ESTADOS

1. Constrúyase una partición P del conjunto de


estados con dos grupos: los estados de
aceptación F y los estados de no aceptación S-F.

2. Aplíquese el algoritmo anterior P para construir


una nueva partición Pnueva

3. Si Pnueva = P, hacer Pfinal = P y continuar con el


paso 4, sino, repetir el paso 2 con P ahora igual
a Pnueva

4. Escójase un estado en cada grupo de la partición


Pfinal como representante de este grupo.

5. Si M’ tiene un estado inactivo, es decir, un


estado d que no es de aceptación y que tiene
transiciones hacia el mismo con todos los
símbolos de entrada, elimínese d de M’
MINIMIZACION DE ESTADOS

Se construye una partición P del conjunto


de estados con los estados de aceptación
F y los estados de no aceptación

b
b C b
a
a b b
A B D E
a
a a

P = [E A B C D]
MINIMIZACION DE ESTADOS
Para cada grupo de P hacer
Aplicando el algoritmo formamos Partición de G en subgrupos tales que
una nueva partición dos estados s y t

de G están en el mismo subgrupo


si, y solo si, para todos los
símbolos de entrada a, los estados
b s y t tienen transiciones en a hacia
estados del mismo grupo de P;
b C b
/*en el peor caso un estado estará
a solo en un subgrupo*/

a b b Sustituir G en Pnueva por el


A B D E conjunto de todos los subgrupos
formados
a finpara
a a

Pnueva= [E] [A B C D]
P = Pnueva
MINIMIZACION DE ESTADOS
❑ En el grupo ABCD , con la
entrada a, cada uno de estos
estados tiene una transición a B.

❑ Con la entrada b, A,B y C van a


miembros del grupo ABCD de P.
b

b b ❑ D va a E, un miembro de otro
C grupo.
a
a b b
A B D E
a
a a

P= [E] [A B C D]
MINIMIZACION DE ESTADOS
Para cada grupo de P hacer
Partición de G en subgrupos tales que
dos estados s y t

de G están en el mismo subgrupo


si, y solo si, para todos los
símbolos de entrada a, los estados
b s y t tienen transiciones en a hacia
estados del mismo grupo de P;
b C b
/*en el peor caso un estado estará
a solo en un subgrupo*/

a b b Sustituir G en Pnueva por el


A B D E conjunto de todos los subgrupos
formados
a finpara
a a

Pnueva= [E] [A B C] [ D]
P = Pnueva
MINIMIZACION DE ESTADOS
❑ En la entrada b, A y C tienen
ambas una transición a C.

❑ B tiene una transición a D, un


miembro de un grupo de la
partición distinto del de C.
b

b b ❑
C
a
a b b
A B D E
a
a a

P= [E] [A B C] [ D]
MINIMIZACION DE ESTADOS
Para cada grupo de P hacer
Partición de G en subgrupos tales que
dos estados s y t

de G están en el mismo subgrupo


si, y solo si, para todos los
símbolos de entrada a, los estados
b s y t tienen transiciones en a hacia
estados del mismo grupo de P;
b C b
/*en el peor caso un estado estará
a solo en un subgrupo*/

a b b Sustituir G en Pnueva por el


A B D E conjunto de todos los subgrupos
formados
a finpara
a a

Pnueva= [E] [A C] [B] [ D]


P = Pnueva
MINIMIZACION DE ESTADOS
Escójase un estado en cada grupo
b de la partición Pfinal como
b b representante de este grupo.
C
a
a b b
A B D E
a
a a

Pfinal= [E] [A C] [B][ D]


MINIMIZACION DE ESTADOS

b E b
a
a a b
b
A B D A B A
a
b B B D
a
D B E
E B A

AFD EQUIVALENTE
MINIMIZADO
Ejercicios
1. Encuentre la expresion regular para los siguientes diagramas de
transicion:

A) B) b
b
inicio a a
0 1 inicio a 2
0 1

C) D)
b
inicio a b b
0 2

inicio a a
b a 0 1 2
1
b a
Ejercicios
2. Encuentre el AFD para las siguientes expresiones regulares:

a) a*b(b/a)*b
b) ab*b(ab /c)*a
c) (ab)*c(a/b)*
d) a(b/a)c(abb/b)*

3. Encuentre el AFD usando Thompson

a) ab(aa/b)+b(ab)*b
b) (a/b)*b(ab/b)*a

4. Programe en java o C++ cada uno de los AFD encontrados en la


pregunta 3
Ejemplo
bool reconocedor(char x[]){
strcpy(vector,x);
int e=0;
int j=0;
while(j<strlen(vector)){
switch(e){
b case 0:if(vector[j]=='a') e=1;
else e=4;
inicio a 1 2
break;
0 case 1:if(vector[j]=='b') e=2;
b c b else if(vector[j]=='c') e=0;
c else e=4;
3 break;
case 2: if(vector[j]=='b') e=1;
else if(vector[j]=='c') e=3;
a else e=4;
break;
case 3: if(vector[j]=='b') e=3;
else if(vector[j]=='a') e=0;
else e=4;
#include "iostream.h" break;
#include "conio.h“ }
class ARREGLO{ j++;
char vector[100]; }//fin de while
public: if(e==1 || e==3) return true;
void VisArreglo(){ else return false;
cout<<" "<<vector; }
} };
Ejemplo inicio a
b
0 1 2
c b c b
int main(int argc, char *argv[]){
char cadena[100]; 3
char op;
int a;
strcpy(cadena,"abbbbca"); // verdadero
a
// strcpy(cadena,"abcbbba"); // falso
// strcpy(cadena,"abcaaca"); // verdadero
// strcpy(cadena,"acacabc"); // verdadero
ARREGLO tira;
if(tira.reconocedor(cadena))
cout<<"\n verdadero";
else cout<<"\n falso";
getch();
}
LABORATORIO
❑ Escriba un programa en java o C++ Su programa debe
que le permita obtener un AFD(tabla
de transición del AFD) a partir de un aceptar cualquier
AFN. AFN,…por ejemplo un
❑ El programa debe ser capaz de AFN de entrada podría
aceptar como entrada cualquier AFN. ser el del ejemplo
❑ El programa se trabajara en grupo.

❑ El programa debe enviarse a lo mas


hasta las 12 de la media noche del día
sábado 27 de junio.

❑ El programa se enviara al correo


cruizdelacruzm@unmsm.edu.pe
SOLUCION
1. Encuentre la expresion regular para los siguientes diagramas de
transicion:

A) B) b
b
inicio a a
0 1 inicio a 2
0 1

ab* ab*a
b b
C) inicio a D) b
0 2
inicio a a
b 0 1 2
a
1
a
b

ab* /bb*ab* ab*ab*(ab*ab*)*


SOLUCION
b) ab*b(ab /c)*a
2. Encuentre el AFD para las siguientes
expresiones regulares:
a b
a b a
a) a*b(b/a)*b
a b c
b
inicio b b

c) a(b/a)c(abb/b)*
a
c) (ab)*c(a/b)*
b
a a b a
a c b
b
b
c a b

También podría gustarte