25
EXPRESIONES REGULARES Lenguajes Regulares Infinitos Fundamentos de Computación II

EXPRESIONES REGULARES Lenguajes Regulares Infinitos

  • Upload
    others

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

EXPRESIONES REGULARES

Lenguajes Regulares Infinitos

Fundamentos de Computación II

Page 2: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

Expresiones Regulares para Lenguajes infinitos

Los lenguajes regulares infinitos se caracterizan porque tienen por lo menos un carácter o

un grupo de caracteres que se repite un número indeterminado de veces.

Se incorpora el operador llamado “Estrella de Kleene” o “clausura de Kleene” o “estrella”

o “clausura” representado por un asterisco (*) colocado como supraíndice de un carácter o

una expresión y tiene mayor prioridad que los operadores “concatenación” y “unión”.

El operador “clausura de Kleene” genera la cadena vacía y todas las cadenas que se forman

con la repetición de su operando un número de veces a elección.

Ejemplos:

1. La expresión regular a * representa a la expresión infinita ε + a + aa + aaa + …. denota

el lenguaje regular infinito L = { a n / n >= 0) que se describe mediante la frase:

“ la palabra vacía y cualquier palabra formada solo por aes”

Page 3: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

2. La expresión regular aa* corresponde a la expresión infinita a + aa + aaa+… y denota el

lenguaje regular infinito L= { a n / n >= 1) que se describe con la frase “Todas las palabras

formadas solo por aes”

La diferencia que hay entre las expresiones regulares a* y aa*: una sola palabra.

El lenguaje representado por a * contiene la palabra vacía que es la única palabra que no

está en el lenguaje aa*; las restantes palabras están en ambos lenguajes.

Nuevo operador

El operador “clausura positiva” se representa mediante un símbolo + ubicado como supraíndice

a + . Se utiliza para simplificar la escritura de expresiones como aa* pudiéndose escribir como

a+ por lo que a+ = aa* = a*a

El operador “clausura de Kleene” garantiza la existencia de la palabra vacía mientras que el

operador “clausura positiva” la elimina excepto un caso que se verá mas adelante. (EJ 5)

Los operadores “clausura positiva” y “clausura de Kleene” tienen la misma prioridad.

Page 4: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

3. Las siguientes expresiones regulares son equivalentes:

ε = ε* = ε +

4. Las expresiones a * y a + se pueden comprobar fácilmente las siguientes equivalencias:

(1) a* a* = a* ya que a * a* = (ε + a + aa + …) (ε + a + aa+ ..) = ε + a + aa + …= a*

(2) a+ = aa* = a*a = aa*a * = a* a+ = a * a *aa*, entre otras.

5. Si la expresión regular a “clausurar” fuera ε + a entonces : (ε + a) * = (ε + a) + = a *

porque la palabra vacía pertenece al lenguaje original.

6. Sea la expresión regular ab*. Las tres palabras de menor longitud son: a, ab y abb.

Esta expresión denota el lenguaje infinito “ todas las palabras que comienzan con una a, la

que será seguida de cierto numero de bes (si las hay )”.

Page 5: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

La expresión b * ( “b clausura de Kleene” o “ b estrella”) representa que para cada palabra

se debe elegir la cantidad de bes que la formarán, o ninguna b, es decir que b* es la forma

abreviada de la expresión infinita ε + b + bb + bbb + …

En consecuencia ab* = a (ε + b + bb + …) = a ε + ab + abb + …= a + ab + abb + … que se

lee “ palabra a o palabra ab o palabra abb o…”

7. Sea la expresión regular ab+ . Esta expresión solo se diferencia en que la palabra vacía no

es representada por la “clausura positiva“ de b y por lo tanto la palabra a no pertenece a este

lenguaje.

En consecuencia las tres palabras de menor longitud son: ab, abb y abbb.

Page 6: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

8. La expresión regular ab*a denota el lenguaje: ” todas las palabras que comienzan con una a,

terminan con otra a y en medio puede haber bes”.

Las tres palabras de menor longitud son: aa, aba y abba.

Si consideramos ahora a la expresión regular ab+a que representa el lenguaje;: “ todas las

palabras que comienzan con una a, terminan con otra a en medio deben tener bes”.

Las tres palabras de menor longitud son: aba, aba y abbba.

La diferencia entre estas dos expresiones radica en el uso del operador “clausura de Kleene” en

la primera y el uso del operador “clausura positiva” en la segunda expresión, diferencia que esta

claramente expuesta en el empleo de los términos “deben” y “pueden” en las frases elaboradas

para describir los respectivos lenguajes.

Page 7: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

9. La expresión regular a*b* denota el lenguaje “ todas las palabras de aes y bes en las que un

bloque de aes (si hay alguna) precede a un bloque de bes (si las hay )”.

Recordar que el operador “clausura de Kleene” representa también a la palabra vacía por lo que

la palabra vacía pertenece a este lenguaje (ya que ε • ε = ε ), las palabras que solo tienen aes

pertenecen a este lenguaje y las palabras que solo tienen bes también pertenecen a este

lenguaje, en consecuencia, la expresión a*b* es equivalente a la expresión :

ε + a+ + b+ + a+b+. El lenguaje regular asociado a esta expresión es por comprensión:

{ a n b r / n >= 0, r > = 0}.

Las seis palabras de menor longitud son :

ε ( cuando n = 0 y r = 0 ) , a ( n= 1 y r = 0) , b (n=0 y r=1), aa ( n= 2 y r = 0), bb ( n = 0 y R = 2) y

ab ( n =1 y R = 1).

Nota: en este ejemplo se usan dos supraíndices n y r con lo que se afirma que las longitudes de los bloques

de aes y bes no tienen relación entre si. Si hubiera una relación entre estas dos longitudes, y como el

lenguaje es infinito, entonces no seria regular.

Page 8: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

10. La expresión regular (ab)* parece equivalente a la expresión a*b* pero no lo es porque

el operador “clausura de Kleene” no es distributivo respecto a la “concatenación”.

El lenguaje denotado por (ab)* es “ la palabra vacía y todas las palabras formadas por

secuencias del par ab”. Las tres palabras de menor longitud son ε , ab y abab.

11. La expresión regular a* + b* representa un lenguaje infinito; las cinco palabras de menor

longitud son ε , a, b, aa y bb.

12. La expresión regular b*ab*ab* representa el lenguaje “Todas las palabras sobre el

alfabeto {a,b} con exactamente dos aes”. Algunas palabras de este lenguaje son: aa, babba,

bbaabbb, aba.

13. La expresión regular (1+0) 1* representa el lenguaje “ Todos los números binarios que

comienzan con un 1 o con un 0, el cual puede estar seguido de una secuencia de 1s”.

Los cuatro números binarios de menor longitud que pertenecen a este lenguaje son:

1, 0, 11 y 01.

Page 9: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

14. Sea la expresión regular 1*0+ (1 + ε ) + 11 que está formada por la unión de dos

expresiones: 1* 0+ (1 + ε ) y 11.

La primera expresión: 1* 0+ (1 + ε ) esta constituida por la concatenación de tres sub-

expresiones, cada una de la cuales proporciona una cadena a la formación de una palabra.

La concatenación de estas tres cadenas producirá una palabra del lenguaje.

El lenguaje asociado a la expresión regular 1*0+ (1 + ε ) + 11 puede ser : “ El número

binario 11 y lodos los números binarios que contienen 0s, los cuales pueden estar

precedidos por 1s y pueden estar seguidos por un 1”.

Algunas palabras de este lenguaje son: 11, 0 , 10, 0001.

Page 10: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

La Expresión Regular Universal y su aplicación

Se llama expresión regular universal a la expresión regular que represente el lenguaje universal

sobre un alfabeto dado. Denota el lenguaje que contiene la palabra vacía y todas las palabras

que se pueden formar con símbolos del alfabeto dado.

Ejemplo 1:

Si el alfabeto es {a,b}, la ERU es (a+b)*. Algunas palabras son: ε, a, bbbabaa.

Si el alfabeto es {0,1} la ERU es (0+1)*. Algunas palabras son: 000110101, 00000.

Si el alfabeto es {a,b,c} la ERU es (a+b+c)*. Algunas palabras son: cbaabbcca, bbbbbb.

Page 11: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

Las Expresiones Regulares Universales tienen una aplicación muy importante en la

construcción de Expresiones Regulares que denotan a un gran número de Lenguajes

Regulares Infinitos.

Ejemplos:

1. El lenguaje “ todas las palabras sobre el alfabeto {a,b} que comienzan con a”, se

representa mediante la siguiente expresión regular: a (a+b)*.

Si el lenguaje fuera “ todas las palabras que comienzan con a, sobre el alfabeto {a,b,c} “ la

expresión regular que lo denota seria: a ( a + b + c)*.

2. Dado el alfabeto Σ = {a,b}, el lenguaje “ Todas las palabras que terminan con aa o con

bb” se denota mediante la Expresión Regular (a+b)* (aa + bb).

3. Dado el alfabeto Σ = {a,b}, el lenguaje “ Todas las palabras que contienen como mínimo

dos aes” se representa mediante la Expresión Regular (a + b)* a (a+b)*a (a+b) *.

Page 12: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

4. Otra Expresión Regular que denota el mismo lenguaje del ej 3 sería b* ab* a (a +b) *.

¿Se puede afirmar que estas dos expresiones son equivalentes porque denotan el mismo

lenguaje. Por lo tanto: (a + b) * a (a+b) * a (a+b) * = b* ab* a (a +b) * ?

DEFINICION: un lenguaje formal es Regular si existe una Expresión Regular que lo represente

✓A cada Expresión Regular le corresponde un único Lenguaje Regular.

✓Un lenguaje regular puede ser denotado por muchas expresiones regulares.

✓Dos expresiones regulares son equivalentes si representan el mismo lenguaje.

Page 13: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

5. El lenguaje “Todas las palabras sobre el alfabeto {a,b} que tienen por lo menos una a y por

lo menos una b” puede ser representado por la siguiente expresión regular:

(a+b)* a ( a +b) * b (a+b) * + (a +b)* b ( a+b) * a ( a + b)*

O por:

(a+b)* [a ( a +b)* b + b ( a+b)* a] ( a + b)*

6. El lenguaje “ Todos los números binarios que comienzan con un numero impar de 1s” se

puede representar mediante la Expresión Regular 1 (11)* (0+1)* o mediante ( 1 + 111)

(0+1)* + 111 (11) * (0+1)*.

Page 14: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

Definición formal de las Expresiones Regulares

Las Expresiones Regulares se construyen utilizando los operadores de unión (+) , concatenación

(•) y clausura de Kleene (*).

Se define formalmente de la siguiente manera recursiva:

1) Todo símbolo de un alfabeto puede representar una Expresión Regular.

Ejemplo: si Σ = {a,b} entonces a es una Expresión Regular que denota el lenguaje {a} y b es una

expresión regular que denota el lenguaje {b}.

2) Ɛ es una Expresión Regular que denota el lenguaje que solo contienen la palabra vacía {ɛ}

3) Si R1 y R2 son Expresiones Regulares, entonces R1 + R2 es una Expresión Regular

Ejemplo: si R1=a y R2 = Ɛ entonces a + Ɛ es una Expresión Regular.

4) Si R1 y R2 son Expresiones Regulares, entonces R1 • R2 es una Expresión Regular

Ejemplo: si R1=a y R2 = b entonces a • b es una Expresión Regular.

Page 15: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

5) Si R1 es una Expresión Regular , entonces R1*es una Expresión Regular

Ejemplo: si R1=a entonces a* es una Expresión Regular.

6) Si R1 es una Expresión Regular , entonces (R1)es una Expresión Regular

Ejemplo: si R1=a entonces (a) es una Expresión Regular.

NOTA: a los tres operadores “oficiales” se agregan dos operadores que

simplifican la escritura de algunas expresiones: el operador clausura

positiva y el operador potencia.

7) Si R1 es una Expresión Regular , entonces R1+ es una Expresión Regular

Ejemplo: si R1=a entonces a+ es una Expresión Regular.

Page 16: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

8) Si R1 es una Expresión Regular, entonces R1n ( siendo n >=0 y entero ) es una Expresión Regular

Ejemplo: si R1=a entonces a 216 es una Expresión Regular.

RECORDAR:

✓ Los operadores “clausura de Kleene”, “clausura positiva” y “potencia” tienen

prioridad máxima.

✓ El operador “concatenación” tiene prioridad media

✓ El operador “ unión” tiene prioridad mínima

9. La Expresión Regular a 10 b*( a+b)+ utiliza todos los operadores descriptos.

Page 17: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

➢ R1 + R2 = R2 + R1, porque el operador “unión” es conmutativo

➢ (R1 + R2) + R3 = R1 + (R2 + R3) = R1 + R2 + R3

➢ (R1 R2) R3 = R1 (R2 R3) = R1 R2 R3

➢ R1 R2 + R1 R3 = R1 (R2 + R3) (simplificación por ”concatenación” a izquierda)

➢ R1 R3 + R2 R3 = (R1 + R2) R3 (simplificación por ”concatenación” a derecha)

➢ (R1*)* = R1*

➢ ( + R1)* = R1*

➢ (R1* R2*)* = (R1 + R2)* [por ejemplo: (a*b*)* = (a + b)* ]

➢ R1 R1* = R1* R1 = R1+

➢ + R1+ = R1*

➢ R1+ + R1* = R1*

➢ (R1+)* = R1*

➢ (R1*)+ = R1*

➢ R1* R1* = R1*

Equivalencias útiles Sean R1,R2 y R3 Expresiones Regulares

Page 18: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

Equivalencias que corresponden a las Expresiones Regulares Universales ejemplificadas

sobre un alfabeto particular:

Sea el alfabeto = {a, b}; entonces, el LU sobre este alfabeto está representado por la ER

(a+b)*, y se verifican las siguientes equivalencias:

➢ (a + b)* + (a + b)* = (a + b)*

➢ (a + b)* (a + b)* = (a + b)*

➢ (a + b*)* = (a + b)*

➢ (a*b*)* = (a + b)*

Page 19: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

Resumen

✓ Un lenguaje es Regular si existe una Expresión Regular que lo represente

✓ Toda expresión regular se forma con símbolos de un alfabeto, ciertos operadores

especiales , el símbolo ɛ y paréntesis.

✓ La Expresión regular ɛ denota el lenguaje {ɛ}

✓ Los operadores “oficiales” son: clausura de Kleene, concatenación y unión.

✓ Se incorporan dos operadores para facilitar la escritura y comprensión de ciertas

Expresiones Regulares: la clausura positiva y la potencia.

✓ La “concatenación” no es en general, conmutativa, mientras que la unión siempre lo es.

✓ La clausura de Kleene, la clausura positiva y la potencia NO son distributivas

✓ Dada una Expresión Regular su Lenguaje Regular asociado es único

✓ Un lenguaje Regular puede tener varias Expresiones Regulares que lo describan

✓ La Expresión Regular Universal es la expresión que describe al Lenguaje Universal sobre

un alfabeto dado.

Page 20: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

Ejercicios

1. Describa, mediante una frase al lenguaje representado por la ER ab10( a + b) 6.

2. Explique por que las Expresiones Regulares a * y a + no son equivalentes.

3. Verifique si el lenguaje asociado a la expresión a + es un subconjunto del lenguaje asociado a

la Expresión Regular a*.

4. Describa, mediante una frase al lenguaje representado por la Expresión Regular a + b + y

escriba sus tres palabras de menor longitud.

5. Describa, mediante una frase al lenguaje representado por la Expresión Regular a + a y

escriba sus tres palabras de menor longitud.

6. Escriba una Expresión Regular que representa al lenguaje “todas las palabras sobre el

alfabeto {0,1} que tienen exactamente tres 0s”.

Page 21: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

7. Escriba una Expresión Regular que represente al lenguaje “todos los números binarios que

comienzan con una cantidad impar de 1s y terminan con un 0”.

8. Escriba una Expresión Regular que represente al lenguaje “todas las palabras sobre el

alfabeto {a,b,c} que comienzan con aa y terminan con cc, o que comienzan con un numero

impar de bes o que solo tienen ces”.

9. Escriba una Expresión Regular que represente al lenguaje “todas las palabras sobre el

alfabeto {a,b,c} que termine con doble letra o que comienzan con a y tiene un número

impar de aes en total”.

10. Escriba una Expresión Regular que represente al lenguaje “todos los números

binarios que terminan con doble 1 o que terminan con un triple 0 o que comienzan con

una cantidad de 1s que es múltiplo de cuatro y terminan con 010”

Page 22: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

“Todos los números binarios que comienzan con una cantidad impar de 1s y terminan con

un 0”.

Respuestas

1 (11)* (0+1)* 0

Page 23: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

“Todas las palabras sobre el alfabeto {a,b,c} que comienzan con aa y terminan con cc,

o que comienzan con un numero impar de bes o que solo tienen ces”.

aa (a+b+c)* cc + b(bb)* + b(bb)* (a+c)(a+b+c)* + c+

Page 24: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

“Todas las palabras sobre el alfabeto {a,b,c} que termine con doble letra o que

comienzan con a y tiene un número impar de aes en total”.

aa + bb + cc + (a+b+c)*((b+c)aa + (a+c)bb + (a+b)cc) +

a((b+c)*a(b+c)*a(b+c)*)*

Page 25: EXPRESIONES REGULARES Lenguajes Regulares Infinitos

“Todos los números binarios que terminan con doble 1 o que terminan con un triple 0

o que comienzan con una cantidad de 1s que es múltiplo de cuatro y terminan con

010”

(0+1)*11 + (0+1)*000 + (1111)+010 + (1111)+0(0+1)*010