Gramaticas Regulares
Gramaticas Regulares
Gramaticas Regulares
REGULARES
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
INTRODUCCIN
Gramticas regulares:
Son los lenguajes formales ms simples, en la jerarqua de
Chomsky se refiere a los lenguajes de tipo 3, aquellos que
pueden representarse mediante, autmatas finitos o
expresiones regulares.
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
ALFABETOS
Definicin:
Un alfabeto es un conjunto de smbolos finito y no vaco.
Convencionalmente, utilizamos el smbolo para designar
un alfabeto.
1) = {0,1}, el alfabeto binario.
2) = { a, b, . . . , z}, el conjunto de todas las letras
minsculas.
3) El conjunto de todos los caracteres ASCII o el conjunto
de todos los caracteres ASCII imprimibles.
CADENA DE CARACTERES
Definicin:
Una cadena de caracteres es una secuencia finita de
smbolos seleccionados de algn alfabeto. Por ejemplo,
01101 es una cadena del alfabeto binario = {0,1}. La
cadena 111 es otra cadena de dicho alfabeto.
LA CADENA VACA
Definicin:
La cadena vaca es aquella cadena que presenta cero
apariciones de smbolos. Esta cadena, designada por , es
una cadena que puede construirse en cualquier alfabeto.
LONGITUD DE CADENA
Definicin:
Es la longitud de la cadena, es decir, el nmero posiciones
ocupadas por los smbolos dentro de la cadena.
Por ejemplo, 01101 tiene una longitud de 5.
LONGITUD DE CADENA
Es habitual decir que la longitud de una cadena es igual al
nmero de smbolos que contiene; esta proposicin est
aceptada coloquialmente, sin embargo, no es estrictamente
correcta. As, en la cadena 01101 slo hay dos smbolos, 0 y
1, aunque tiene cinco posiciones para los mismos y su
longitud es igual a 5.
La notacin estndar para indicar la longitud de una
cadena w es |w|. Por ejemplo: Si w = 001
|w| = 3
||
=0
POTENCIAS DE UN ALFABETO
Definicin:
Si es un alfabeto, podemos expresar el conjunto de todas
las cadenas de una determinada longitud de dicho alfabeto
utilizando una notacin exponencial. Definimos ^k para
que sea el conjunto de las cadenas de longitud k, tales que
cada uno de los smbolos de las mismas pertenece a .
POTENCIAS DE UN ALFABETO
Observe que ^0 = { }, independientemente de cul sea el
alfabeto . Es decir, es la nica cadena cuya longitud es 0.
Si = {0,1}, entonces
^1 = {0,1}
^2 = {00,01,10,11}
^3 = {000,001,010,011,100,101,110,111}
Observe que existe una ligera confusin entre y ^1. El
primero es un alfabeto; sus elementos 0 y 1 son los smbolos.
Lo segundo es un conjunto de cadenas; sus elementos son
las cadenas 0 y 1, cuya longitud es igual a 1.
POTENCIAS DE UN ALFABETO
Por convenio, el conjunto de todas las cadenas de un
alfabeto se designa mediante *. Por ejemplo,
* = { ,0,1,00,01,10,11,000, . . .}.
Expresado de otra forma,
* = ^0 ^1 ^2
En ocasiones, desearemos excluir la cadena vaca del
conjunto de cadenas. El conjunto de cadenas no vacas
del alfabeto se designa como +. Por tanto:
+ = ^1 ^2 ^3
* = + { } * = + ^0
CONCATENACIN DE CADENAS
Definicin:
Sean x e y dos cadenas. Entonces, xy denota la
concatenacin de x e y, es decir, la cadena formada por
una copia de x seguida de una copia de y. Dicho de
manera ms precisa, si x es la cadena compuesta por i
smbolos x = a1a2 ai e y es la cadena compuesta por
CONCATENACIN DE CADENAS
Ejemplo:
Sean x = 01101 e y = 110.
Entonces xy = 01101110 e yx = 11001101.
Para cualquier cadena w, tenemos que:
w = w = w
Es decir, es el elemento neutro de la concatenacin, dado
que su concatenacin con cualquier cadena proporciona la
misma cadena como resultado.
LENGUAJES
Un conjunto de cadenas, todas ellas seleccionadas de un
*, donde es un determinado alfabeto se denomina
lenguaje. Si es un alfabeto y L *, entonces L es un
lenguaje de .
LENGUAJES
Ejemplos:
LENGUAJES
Ejemplos: Si = {0,1}
LENGUAJES
Curiosidades:
LENGUAJES
Curiosidades:
LENGUAJES
Definicin del Lenguaje Mediante Descripciones de
Conjuntos:
Es habitual describir un lenguaje utilizando una descripcin
de conjuntos:
{w | algo acerca de w}
Esta expresin se lee el conjunto de palabras w tal que (lo
que se dice acerca de w a la derecha de la barra vertical).
LENGUAJES
Ejemplos:
LENGUAJES
Tambin es habitual reemplazar w por alguna expresin con
parmetros y describir las cadenas del lenguaje estableciendo
condiciones sobre los parmetros.
Ejemplo:
LENGUAJES
Ejemplo:
{0^i1^j | 0 i j }.
Este lenguaje consta de cadenas formadas por ceros (puede
ser ninguno) seguidos de al menos el mismo nmero de unos.
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
2.
3.
4.
5.
2.
3.
Por ltimo, tenemos que disear las transiciones para el estado q1.
En este estado, ya hemos ledo una secuencia 01, as que,
independientemente de lo que ocurra, nos encontraremos en una
situacin en la que hemos ledo la secuencia 01.
Es decir, (q1,0) = q1 y (q1,1) = q1.
Ha ledo ya una subcadena 01? En caso afirmativo, aceptar cualquier
secuencia de entradas futura; es decir, slo se encontrar en estados de
aceptacin.
( q0 , ) = q0.
( q0 , 1 ) = ( (q0 , ) , 1 ) = ( q0 , 1 ) = q1.
( q0 ,11 ) = ( (q0 , 1 ) ,1 ) = ( q1 , 1 ) = q0.
( q0 , 110 ) = ( (q0 , 11 ) , 0 ) = ( q0 , 0 ) = q2.
( q0 , 1101 ) = ( (q0 , 110 ) , 1 ) = ( q2 , 1 ) = q3.
( q0 , 11010 ) = ( (q0 , 1101 ) , 0 ) = ( q3 , 0 ) = q1.
( q0 , 110101 ) = ( (q0 , 11010 ) , 1 ) = ( q1 , 1 ) = q0.
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
Al igual que el AFD, un AFN tiene un conjunto finito de estados,
un conjunto finito de smbolos de entrada, un estado inicial y un
conjunto de estados de aceptacin. La diferencia entre los AFD y
los AFN se encuentra en el tipo de funcin . En los AFN, es
una funcin que toma un estado y smbolos de entrada como
argumentos, pero devuelve un conjunto de cero, uno o ms
estados (en lugar de devolver exactamente un estado como lo
hacen los AFD).
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
Ejemplo:
A continuacin se muestra un autmata finito no determinista,
cuyo trabajo consiste en aceptar todas las cadenas formadas por
ceros y unos que terminan en 01.
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
Ejemplo: Vamos a probar la cadena 00101
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
Equivalencia de un AFD y un AFN
Todo lenguaje que puede describirse mediante algn AFN
tambin puede ser descrito mediante algn AFD.
El AFD en la prctica tiene aproximadamente tantos estados
como el AFN, aunque a menudo tiene ms transiciones.
En el caso peor, el AFD puede tener 2^n estados mientras que el
AFN ms pequeo para el mismo lenguaje tiene slo n estados.
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
Ejemplo:
Sea N el autmata que acepta todas las cadenas de nmeros
binarios que terminan en 01. Dado que el conjunto de estados de
N es {q0,q1,q2}, la construccin del subconjunto de estados para
un AFD da como resultado 2^3 = 8 estados, correspondientes a
todos los subconjuntos de estos tres estados.
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
AUTMATAS FINITOS NO
DETERMINISTAS (AFN)
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
Un estado de Q y,
2.
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
EXPRESIONES REGULARES
Definicin:
Una expresin regular, es una secuencia de caracteres que
forma un patrn de bsqueda, principalmente utilizada para la
bsqueda de patrones de cadenas de caracteres u operaciones de
sustituciones.
EXPRESIONES REGULARES
Las expresiones regulares estn estrechamente relacionadas con
los autmatas finitos no deterministas y pueden considerarse
una alternativa. Pueden definir de forma exacta los mismos
lenguajes que describen los distintos tipos de autmatas. Sin
embargo, las expresiones regulares ofrecen algo que los
autmatas no proporcionan: una forma declarativa para expresar
las cadenas que deseamos aceptar. Por tanto, las expresiones
regulares sirven como lenguaje de entrada de muchos sistemas
que procesan cadenas.
EXPRESIONES REGULARES
Operaciones de las Expresiones Regulares
Unin:
La unin de dos lenguajes L y M, designada como L M, es el
conjunto de cadenas que pertenecen a L, a M o a ambos.
Ejemplo:
L = {001,10,111}
M = {,001}
entonces L M = {,10,001,111}
EXPRESIONES REGULARES
Operaciones de las Expresiones Regulares
Concatenacin
La concatenacin de los lenguajes L y M es el conjunto de
cadenas que se puede formar tomando cualquier cadena de L y
concatenndola con cualquier cadena de M. Para designar la
concatenacin de lenguajes se emplea el punto o ningn
operador.
EXPRESIONES REGULARES
Operaciones de las Expresiones Regulares
Concatenacin
Ejemplo:
L={001,10,111}
M = { ,001}
entonces L.M = {001,10,111,001001,10001,111001}
Las tres primeras cadenas de L.M son las cadenas de L
concatenadas con . las tres ltimas cadenas de L.M se forman
tomando cada una de las cadenas de L y concatenndolas con la
segunda cadena de M, que es 001.
EXPRESIONES REGULARES
Operaciones de las Expresiones Regulares
Clausura o Clausura de Kleene
La clausura de un lenguaje L se designa mediante L* y
representa el conjunto de cadenas que se pueden formar tomando
cualquier nmero de cadenas de L y concatenando todas ellas.
EXPRESIONES REGULARES
Operaciones de las Expresiones Regulares
Clausura o Clausura de Kleene
Ejemplo:
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
Conmutatividad
Esta ley establece que podemos efectuar la unin de dos
lenguajes en cualquier orden.
Por ejemplo: L + M = M + L
Asociatividad de la unin
Esta ley, establece que podemos efectuar la unin de tres
lenguajes bien calculando primero la unin de los dos primeros, o
bien la unin de los dos ltimos.
Por ejemplo: (L + M) + N = L + (M + N)
Asociatividad para la concatenacin
Esta ley, establece que podemos concatenar tres lenguajes
concatenando primero los dos primeros o bien los dos ltimos.
Por ejemplo: (LM)N = L(MN)
Leyes Distribuidas
Una ley distributiva implica a dos operadores y establece que un
operador puede aplicarse por separado a cada argumento del otro
operador.
Ley de Idempotencia
Se dice que un operador es idempotencia si el resultado de
aplicarlo a dos valores iguales es dicho valor. Por tanto, para
expresiones regulares, podemos establecer la siguiente ley:
(L*)* = L*. Esta ley dice que clausurar una expresin que ya
est clausurada no modifica el lenguaje. El lenguaje de (L*)* est
formado por todas las cadenas creadas mediante la
concatenacin de cadenas pertenecientes al lenguaje L*. Pero
dichas cadenas estn formadas a su vez por cadenas de L. Por
tanto, la cadena perteneciente a (L*)* tambin es una
concatenacin de cadenas de L y, por tanto, pertenece al lenguaje
de L*.
TEMARIO
Introduccin
Expresiones Regulares
Ejercicios
EJERCICIOS
Autmatas Finitos Deterministas (AFD)
Describa los AFD que aceptan los siguientes lenguajes con
el alfabeto {0,1}:
1.
2.
3.
4.
EJERCICIOS
Autmatas Finitos No Deterministas (AFN)
1.
2.
3.
EJERCICIOS
Expresiones Regulares
Escriba expresiones regulares para los siguientes lenguajes:
1.
2.
3.
4.
EJERCICIOS
Expresiones Regulares
Proporcione las descripciones informales de los lenguajes
correspondientes a las siguientes expresiones regulares:
1.
(1+ )(00*1)*0+
2.
(0*1*)*000(0+1)*
3.
(0+10)*1*
EJERCICIOS
Algebra de Expresiones Regulares
Demuestre si cada una de las siguientes proposiciones
acerca de expresiones regulares es verdadera o falsa.
1.
(R+S)* = R*+S*
2.
(RS+R)*R = R(SR+R)*
3.
(RS+R)*RS = (RR*S)*
4.
(R+S)*S = (R*S)*
5.
S(RS+S)*R = RR*S(RR*S)*