Sie sind auf Seite 1von 21

Universidad Tcnica del Norte

FICA- EISIC

Teora de Lenguajes y ER
CONTENIDO
LENGUAJES
TIRAS Y LENGUAJES
LENGUAJES RACIONALES Y AUTOMATAS FINITOS
ESPECIFICACION DE UN LENGUAJE RACIONAL O REGULAR EXPRESIONES REGULARES (ER)
TIRAS Y LENGUAJES

LENGUAJES

En este captulo se define y estudia la clase de mquinas


tericas conocidas como autmatas finitos. Aunque su
poder es limitado, se encontrar que estas mquinas
son capaces de reconocer numerosos patrones de
smbolos, los cuales identificamos con la clase de
lenguajes regulares.
TIRAS Y LENGUAJES

TIRAS Y LENGUAJES

Alfabeto o clase de carcter denota cualquier


conjunto finito de smbolos que forman las
sentencias del lenguaje.
Ej:
El conjunto {0,1} es el alfabeto binario.
A={A,B,C,.Z}
N={0,1,2,3,4,5,6,7,8,9}
TIRAS Y LENGUAJES

Smbolo es un tem elemental del vocabulario del


lenguaje que se emplea para formar las tiras del
lenguaje, que se llaman sus sentencias.

Tira, cadena, palabra, frase, sentencia del lenguaje, es


una secuencia finita ordenada de smbolos tomados de
ese alfabeto, es decir, esta formada por la concatenacin
de caracteres.

Ej. Si tenemos un alfabeto o vocabulario {a, b}, algunas


tiras de l son: , a, b, ab, aaa, ba, aab, aba, ....
TIRAS Y LENGUAJES

X* son todas las posibles palabras sobre el alfabeto


X.
Lenguaje se refiere a cualquier conjunto de tiras de
un alfabeto fijo, es decir, es una parte sobre X*,
La "longitud" de una tira s, que suele escribirse |s|,
es el nmero de apariciones de smbolos en s. La tira
o cadena "vaca" representada por , es una cadena
especial de longitud cero.

Ej. |a| = 1, |aaa| = 3, || = 0


TIRAS Y LENGUAJES

Emplearemos las primeras letras minsculas del abecedario


como smbolos o caracteres que forman el alfabeto de un
lenguaje L, y por tanto tambin sus tiras o sentencias. Las
ltimas letras minsculas del abecedario, se emplean para
designar las tiras del lenguaje.

Ej. x = abc y = deac

Cuando "x" e "y" son tiras, su concatenacin "xy" es la tira


obtenida escribiendo los smbolos de "y" despus de los de "x".

Ej. xy = abcdeac

La concatenacin de dos tiras, si una de ellas es nula, deja


inalterada a la concatenacin

Ej. x = x = x = abc
TIRAS Y LENGUAJES

Si z = xy es una tira, entonces "x" es la "cabeza" e "y" la


"cola" de "z".

Finalmente "x" es una "cabeza propia" si "y" no est


vacia; mientras que "y" es una "cola propia" si "x" no est
vacia.

Ej. si t = abc =>


cabeza (t) = ; a; ab; abc cabeza propia (t) = ; a; ab
cola (t) = ; c; bc; abc cola (t) = ; c; bc

Todas las cabezas y colas son propias, excepto las dos


ltimas respectivas abc
TIRAS Y LENGUAJES

Potencia de una Tira que se forma concatenando una tira consigo


mismo tantas veces como indica el exponente.

Ej. si x = abc => x0 = x1 = abc x2 = abcabc ....

Si se tienen dos conjuntos de tiras de caracteres A y B, se


puede realizar su producto cartesiano AB, considerando los pares
de tiras del producto resultante como concatenados, es decir:
AB = { xy | (x A) and (y B) }

Ej. si A = { a, b, cn }, B = { d, e } =>AB = { ad, ae, bd, be, cnd,


cne }
Se mantiene que A {} = {} A = A
TIRAS Y LENGUAJES

Potencias de Conjuntos realizando el producto del conjunto consigo


mismo:
A0 = { }; A1 = A; A2 = AA; A= AA.. para n>0
Ej. si A = { a, b }, entonces
A0 = { }
A1 = A = { a, b }
A2 = { aa, ab, ba, bb }
A3 = { aaa, aab, aba, abb, baa, bab, bba, bbb }
Cierre Transitivo de un conjunto A, que denominamos A+, como la
unin de sus potencias crecientes, "comenzando con la potencia
unidad", ser pues:

A+ = A1 unin A2 unin A3 unin ... ... =


A1 U A2 U A3 U .... U ..... =
TIRAS Y LENGUAJES

Ej. A ={a, b}

A+ = {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb,
.... }

Cierre Transitivo y Reflexivo de un Conjunto A*, que es la unin de sus


potencias crecientes de A, pero comenzando con la potencia 0, es decir:

A* = A0 U A1 U A2 U A3 U ....U An ...
por tanto se forma A* aadiendo al conjunto A+:

A* = A+ U A 0 = A+ U { }

Ej. del ejemplo anterior sera

A* = {, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa,


bab, bba, bbb, .... }
Advirtase que: A+ = AA* = (A*)A
TIRAS Y LENGUAJES

Ej:
Si A={a,b}
Hallar
A0 = { }
A1 = {a , b }
A2 = {aa , ab, ba, bb }
A3 = {aaa , aab, aba, abb, baa , bab, bba, bbb }
A4 = {
A5 = {
TIRAS Y LENGUAJES

Sean x=01, y=2, z=011

Desarrollar:

xy=012
yxz=201011
cabezas propias (xy)={ ,0 ,01}
colas propias (xy)={ ,2 ,12}
TIRAS Y LENGUAJES

FORMAS DE DESCRIBIR UN LENGUAJE

1. "La enumeracin" de todas las tiras de smbolos que constituyen el lenguaje.


Ej. L1= {ab, ac, ba, ca}
Esta descripcin es muy pobre, ya que slo sirve para lenguajes formados por
un nmero limitado de tiras.

2. "Descripcin Algebraica". Ahora el lenguaje se describe con una frmula


algebraica, empleando la notacin abreviada de que an es la concatenacin
formada por n letras a concatenadas.
L = {an / n es elemento de Z+ }
por lo tanto las tiras del Lenguaje sera = { a, aa, aaa, aaaa, }

3. "Conjunto con una Propiedad". La propiedad servir para decidir si una tira
pertenece o no al lenguaje.
Ej. Dado el vocabulario V= {a, b, c, d}, se puede definir el lenguaje L4 formado
por tiras de caracteres de V, que tengan una longitud de 3 caracteres de la
forma siguiente:
L4= {x | (|x| <= 2) and (xV*)}
LENGUAJES RACIONALES Y AUTOMATAS FINITOS

LENGUAJES RACIONALES Y AUTOMATAS FINITOS.


EXPRESIONES REGULARES (ER)

Otra notacin equivalente a la de un lenguaje regular o a un autmata


es la expresin regular, que permite definir un conjunto de tiras de
caracteres, llamado conjunto regular. Cada expresin regular r
representa un lenguaje L(r). Las reglas de definicin especifican cmo
se forma L(r) combinando de varias maneras los leguajes
representados por las subexpresiones de r.

Las siguientes son las reglas que definen las expresiones regulares del
alfabeto X:
1. denota al conjunto vacio
2. es una expresin regular denotando al conjunto regular {}
3. Si aX, entonces a es una expresin regular designada por {a}
4. Suponiendo que r y s sean expresiones regulares representadas
por los lenguajes L(r) y L(s), entonces:
LENGUAJES RACIONALES Y AUTOMATAS FINITOS

a) (r)|(s) es una expresin regular representada por


L(r)UL(s)
b) (r) . (s) es una expresin regular representada por
L(r)L(s)
c) (r)* es una expresin regular representada por (L(r))*
d) (r) es una expresin regular representada por L(r)
esta regla establece, si se desea, se pueden poner
pares de parntesis adicionales entorno a las expresiones regulares.

Si dos expresiones regulares r y s representan al mismo


lenguaje, se dice que r y s son equivalentes y se escribe r=s. Por
ejemplo, (a|b)=(b|a)

Son varias las leyes algebraicas que obedecen las


expresiones regulares y pueden ser utilizadas para transformar las
expresiones regulares a formas equivalentes, a continuacin vemos
algunas leyes que se cumplen para las expresiones regulares r,s y t.
LENGUAJES RACIONALES Y AUTOMATAS FINITOS

AXIOMA DESCRIPCION
Se pueden evitar los
r|s = s|r | es conmutativo parntesis innecesarios en las
r|(s|t) = expresiones regulares si se
| es asociativo
adoptan las convenciones:
(r|s)|t
1. el operador
(rs)t = r(st) la concatenacin es
asociativa
unario * tiene mayor
precedencia y es asociativo
por la izquierda.
r(s|t) = rs|rt la concatenacin distribuye
sobre | 2. la
(s|t)r = sr|tr concatenacin tiene segunda
r = r es el elemento identidad mayor precedencia y es
para la concatencin asocitiva por la izquierda.
r = r
3. | tiene la menor
r* = (r|)* la relacin entre * y
precedencia y es asociativo
r** = r* * Es idempotente por la izquierda.
Segn estas
convenciones (a)*((b)*(c)) =
a*b*c
LENGUAJES RACIONALES Y AUTOMATAS FINITOS

EJEMPLO: Sea X= {a, b}

a) La ER a|b designa el conjunto {a, b}


b) La ER (a|b)(a|b), se indica con {aa,ab,ba,bb}
y es equivalente a: aa|ab|ba|bb
c) La ER a* designa el conjunto de todas las cadenas de cero
o ms a: {, a, aa, aaa, ....}
d) La ER (a|b)* denota el conjunto de todas las cadenas que
contienen cero o ms casos de una a o b => {, a, b, aa, ab, ...}
e) La ER a|a*b designa el conjunto que contiene la cadena a y
todas las que se componen de cero o ms a seguidas de una b:
{a, b, ab, aab, aaab, ....}
f) La ER (ab)* designa el conjunto que contiene todos los
pares de ab cero o ms veces: {, ab, abab, ...}
Ejemplos de Expresiones Regulares

dgito d = 0|1|2|3|4|5|6|7|8|9
entero_sin_signo = d+
entero = (+|-|)d+
real = d+ | d+(|e(+|-|) d+)
letra = a|...|z|A...|Z
identificador = letra(letra|dgito)*
LENGUAJES RACIONALES Y AUTOMATAS FINITOS

ABREVIATURAS EN LA NOTACION

1. Uno o ms casos.
Ej.
a+, representa al conjunto de todas las cadenas de una
o ms a: {a, aa, aaa, aaaa, ...}
El operador + tiene la misma precedencia y asociatividad que el
operador *.

2. Cero o un caso. El operador unitario postfijo ? significa "cero o un


caso de". La notacin r? es una abreviatura de r|.

3. Clases de caracteres. La notacin [a..z], donde a,b,.. z son


smbolos del alfabeto, designa la expresin regular a|b|c|...|z
LENGUAJES RACIONALES Y AUTOMATAS FINITOS

CONJUNTOS NO REGULARES

Algunos lenguajes no se pueden describir con ninguna expresin


regular. {wcw| w es una cadena de smbolos a y b} <==>
{wcw/w{a, b}*}

Las expresiones regulares se pueden utilizar para designar slo un


nmero fijo de repeticiones o un nmero no especfico de
repeticiones de una determinada construccin.
Ej.
{ | n>=0, m>n}

Das könnte Ihnen auch gefallen