1 lenguajes y expresiones regulares 2 definiciones básicas alfabeto: conjunto no vacío de...

32
1 Lenguajes y Expresiones Regulares

Upload: delfina-floria

Post on 06-Jan-2015

6 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

1

Lenguajesy

Expresiones Regulares

Page 2: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

2

Definiciones básicas• Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un

alfabeto.Ejemplos: {0, 1}, {a, b, c}, {0, 11}, {(0, 0), (0, 1), (1, 0), (1, 1)}.

• Palabra o cadena: es una secuencia de símbolos del alfabeto,es decir, s = a1a2...an, donde ai .

Por lo general se utilizan las primeras letras del alfabeto, a, b, c, d, e, para denotar símbolos del alfabeto y las últimas letras, s, t, u, v, w, x, y, z, para denotar palabras.

• Longitud de una palabra: es el número de símbolos en s. Se denota por |s|.

• Palabra nula o vacía : es la palabra de longitud cero. Algunos autores utilizan para denotarla.

• Concatenación: si s = a1a2...an y t = b1b2...bn, entoncesst = a1a2...anb1b2...bn; s2 = ss; s3 = sss. La concatenación es asociativa, es decir, s(tu) = (st)u, pero no es conmutativa.

Page 3: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

3

...Definiciones básicasDado un alfabeto , definimos: k = {x | x es una palabra sobre y |x| = k}

Ejemplo: = {0, 1} 0 ={} 1 ={0, 1} 2 ={00, 01, 10, 11} 3 ={000, 001, 010, 011, 100, 101, 110, 111}– ...

* = 0 1 2 3 ... es el conjunto de todas las palabras que pueden ser formadas con letras del alfabeto , incluyendo a . A * se le llama la Cerradura de Kleene de .

+ = 1 2 3 ... es el conjunto de todas las palabras no-vacías que pueden ser formadas con letras de , es decir, + = * {}.

• Ejercicio en clase: Sea = {a, b, c}. Obtener 0, 1, 2 y 3.

Page 4: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

4

Definición recursiva de *

• Base: *

• Paso recursivo: si w * y a , entonceswa *.

• Cerradura: w pertenece a * sólo si puede ser obtenida a partir de mediante un número finito de aplicaciones del paso recursivo.

• Nota: definiciones recursivas son una buena herramienta para definir las palabras o cadenas que componen un lenguaje.

Page 5: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

5

Lenguajes

• Lenguaje sobre un alfabeto es un conjunto finito o infinito de palabras sobre , es decir, es un subconjunto de *.

• Lenguajes interesantes no consisten de conjuntos arbitrarios de cadenas sino de cadenas que cumplen ciertas condiciones las cuales definen la sintaxis del lenguaje.

• Un lenguaje finito puede ser definido por extensión, a menos que sea “demasiado extenso”.

• Lenguajes infinitos con requerimientos sintácticos simples pueden definirse recursivamente.

Page 6: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

6

Ejemplos• Lenguaje L sobre ={0, 1} que consta de cadenas que terminan en 1

– Base: 1 L– Paso recursivo: si u L y a , entonces au L.– Cerradura: una cadena u pertenece a L sólo si puede ser obtenida a partir del

elemento base mediante un número finito de aplicaciones del paso recursivo.

• Lenguaje L sobre ={a, b} que consta de cadenas que inician con a y tienen longitud par– Base: aa, ab L– Paso recursivo: si u L, entonces uaa, uab, uba, ubb L.– Cerradura: una cadena u pertenece a L sólo si puede ser obtenida a partir de los

elementos base mediante un número finito de aplicaciones del paso recursivo.

Page 7: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

7

... Ejemplos

• Lenguaje L sobre ={a, b} que consta de cadenas en las que cada ocurrencia de b es inmediatamente precedida por una a. Por ejemplo , a, abaab están en L pero no así bb, bab, abb. – Base: L– Paso recursivo: si u L, entonces ua y uab L.– Cerradura: una cadena u pertenece a L sólo si puede ser

obtenida a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

Page 8: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

8

…Ejemplos

• Sea L el lenguaje sobre el alfabeto = {0, 1} definido recursivamente por

1. L

2. Si u L entonces 0u y 0u1 L.

3. Cualquier elemento en L puede ser obtenido a partir de la regla 1. y utilizando la regla 2. un número finito de veces.

– Defina L por intención.

L = {0m1n | m n 0

Page 9: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

9

…Ejemplos: Palíndromos• Palíndromos: palabra o frase que se lee igual de derecha

a izquierda, que de izquierda a derecha– anilina

– dábale arroz a la zorra el abad

– anita lava la tina

• Defina recursivamente al conjunto P que consiste de todos los palíndromos sobre el alfabeto .

1. P

2. Si u P entonces aua P para cualquier a .

3. Cualquier palíndromo sobre {a, b} puede ser obtenido a partir de la regla 1. y utilizando la regla 2. un número finito de veces.

Page 10: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

10

…Ejemplos

• Defina recursivamente al lenguaje L sobre el alfabeto = {a, b} que consiste de las palabras que tienen más as que bs.

1. a L

2. Si u L entonces au P.

3. Si u y v L entonces buv, ubv y uvb P.

4. Cualquier palabra en L puede ser obtenido a partir de la regla 1. y utilizando las reglas 2. y 3. un número finito de veces.

Page 11: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

11

¿Es suficiente la recursividad?

• Hay muchos lenguajes que se pueden definir recursivamente, sin embargo, hay muchos otros, como lenguajes computacionales o matemáticos, cuyos requerimientos sintácticos no pueden ser definidos de manera recursiva.

• Operaciones de conjuntos se pueden aplicar a lenguajes simples para definir lenguajes más complejos.

• Otro enfoque para definir lenguajes “interesantes” es especificando un procedimiento algorítmico que reconoce si una palabra pertenece o no al lenguaje.

Page 12: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

12

Concatenación de lenguajes

• L1L2 = {w | w = xy, x L1 y y L2}

• Para un lenguaje L:– L0 = {}– L1 = L– L2 = L L– L3 = L L L– ...– L* = L0 L1 L2 L3 ... (Cerradura de Kleene)– L+ = L1 L2 L3 ... = LL*

Page 13: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

13

Ejemplo de concatenación

• X = {a, b, c}; Y = {abb, ba}– XY ={aabb, aba, babb, bba, cabb, cba}– X0 = {}– X1 = {a, b, c}– X2 = XX = {aa, ab, ac, ba, bb, bc, ca, cb, cc}– X3 = X2X = {aaa, aab, aac, aba, abb, abc, aca,

acb, acc, baa, bab, bac, bba, bbb, bbc, bca, bcb, bcc, caa, cab, cac, cba, cbb, cbc, cca, ccb, ccc}

Page 14: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

14

Ejemplos de Cerradura de Kleene• L = {0, 11}

– L0 = {}– L1 = {0, 11}– L2 = {00, 011, 110, 1111}– L3 = {000, 0011, 0110, 01111, 1100, 11011, 11110, 111111}– L4 = {0000, 00011, 00110, 001111, 01100, 011011, 011110,

0111111, 11000, 110011, 110110, 1101111, 111100, 1111011, 1111110, 11111111}

– L* son todas las que se pueden formar concatenando cualquier número de veces (excepto ) palabras de L. Las palabras pueden ser iguales o distintas.

– ¿Cuántos elementos tiene Ln}: 2n

– Independientemente del lenguaje, ¿Ln tiene siempre 2n elementos?

Page 15: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

15

Contraejemplo

• L = {0, 00}– L0 = {}

– L1 = {0, 00}

– L2 = {00, 000, 0000}

– L3 = {000, 0000, 00000, 000000}

– L4 = {0000, 00000, 000000, 0000000, 00000000}

– L* es la palabra vacía y todas las palabras finitas formadas con ceros.

Page 16: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

16

Más ejemplos• L = {a, b}*{bb} {a, b}*

– Consiste de las cadenas sobre {a, b} que contienen la subcadena bb.

• Lenguaje que consiste de todas las cadenas que empiezan con aa o terminan con bb.– L = {aa}{a, b}* {a, b}*{bb}

• L1 = {bb} y L2 = {, bb, bbbb}. L1* = ¿?, L2

* = ¿?– Tanto L1

* como L2* consisten de cadenas que tienen un número par de

b’s.

• {aa, bb, ab, ba}*

– Consiste de todas las cadenas sobre {a, b} de longitud par.

• {a, b}*- {aa, bb, ab, ba}*

– Es el lenguaje que consiste de las cadenas de longitud non.– ¿Es regular este lenguaje?– Este lenguaje también está dado por {a, b}{aa, bb, ab, ba}*,por lo tanto

el lenguaje sí es regular.

Page 17: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

17

Conjuntos regulares• Un conjunto es regular si

1. Es el conjunto vacío, , ó el conjunto cuyo elemento es la palabra vacía, {}, ó es un subconjunto simple (sólo un elemento) del alfabeto.er generado a partir

2. Puede ser generado a partir de ó de {} ó de un subconjunto simple utilizando las operaciones de unión, concatenación y cerradura de Kleene.

Nota: no se puede utilizar la diferencia de conjuntos.• Definición recursiva de conjunto regular.

Sea un alfabeto. Los conjuntos regulares sobre se definen recursivamente de la siguiente manera:

– Base: , {} y {a}, para toda a , son conjuntos regulares sobre .– Paso recursivo: Si X y Y son conjuntos regulares sobre , entonces los

conjuntos X Y, XY y X* también lo son.– Cerradura: X es un conjunto regular sobre sólo si puede ser obtenido

a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

Page 18: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

18

Ejemplos de conjuntos regulares

• {a, b}*{bb}{a, b}* es regular sobre {a, b}– Consiste del conjunto de cadenas que contienen

a la subcadena bb.

• El conjunto de cadenas que empiezan y terminan con una a y contienen al menos una b es regular sobre {a, b}.– {a}{a, b}*{b}{a, b}*{a}

Page 19: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

19

Expresiones regulares• Las expresiones regulares se utilizan para abreviar la

descripción de conjuntos regulares.– El conjunto regular {a} es representado por a.– Las operaciones de unión, concatenación y cerradura de Kleene son denotadas

por +, yuxtaposición y *, respectivamente.

• Definición recursiva de una expresión regular.Sea un alfabeto. Las expresiones regulares sobre se definen recursivamente de la siguiente manera:– Base: , y a, para toda a , son expresiones regulares sobre .– Paso recursivo: Si u y v son expresiones regulares sobre , entonces las

expresiones (u+v), (uv) y (u*) también lo son y representan a los conjuntos {u} {v}, {u}{v} y {u}*, respectivamente.

– Cerradura: u es una expresión regular sobre sólo si puede ser obtenido a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

Page 20: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

20

EjemplosLenguaje Expresión regular{} {0} 0{001} = {0}{0}{1} 001{0, 1} = {0}{1} 0 + 1{0, 10} = {0}{10} 0 + 10{1, }{001} (1 + )001{110}*{0, 1} (110)*(0 + 1){1}*{10} 1*10{10, 111, 11010}* (10 + 111 + 11010)*

{0, 10}*({11}*{001, }) (0 + 10)*((11)* + 001 + )(00 + 01 + 10 + 11)* ((0 + 1)(0 + 1))*

Page 21: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

21

...Expresiones regulares• Tomando en cuenta que la unión y la concatenación son asociativas, además

conviniendo en que la precedencia u orden de ejecución de las operaciones está dada por:– Paréntesis– Cerradura de Kleene– Concatenación – Unión

las expresiones se pueden simplificar aún más reduciendo el número de paréntesis.– {a, b}*{bb}{a, b}* = (a + b)*bb(a + b)*

– {a}{a, b}*{b}{a, b}*{a} = a(a + b)*b(a + b)*a

• Notación– u+ = uu*

– u2 = uu, u3 = u2u, ...

Page 22: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

22

Ejemplo

• El conjunto {bawab | w {a, b}*} es regular sobre {a, b}Demostración:Conjunto Expresión Justificación1. {a} a Base2. {b} b Base3. {a}{b}={ab} ab Concatenación de 1 y 24. {a} {b}={a,b} a+b Unión de 1 y 25. {b}{a}={ba} ba Concatenación de 2 y 16. {a,b}* (a+b)* Cerradura Kleene de 47. {ba}{a,b}* ba(a+b)* Concatenación de 5 y 68. {ba}{a,b}*{ab} ba(a+b)*ab Concatenación de 7 y 3

Page 23: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

23

Lenguajes regulares

• Definición: Un lenguaje es regular si se puede representar por una expresión regular o conjunto regular.

Page 24: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

24

...Más ejemplos• (a+b)*aa(a+b)*+(a+b)*bb(a+b)*:

– Representa al conjunto de cadenas sobre {a, b} que contienen a la subcadena aa o a la subcadena bb o a ambas subcadenas.

• Expresión regular que represente al conjunto de cadenas sobre {a, b} que contienen exactamente dos b’s:– a*ba*ba*

• a*ba*b(a+b)*, (a+b)*ba*ba*, (a+b)*b(a+b)*b(a+b)*

– representan al conjunto de cadenas sobre {a, b} que contienen dos o más b’s.

• a*(a*ba*ba*)* y a*(ba*ba*)*

– Representan cadenas con un número par de b’s.

• Expresión regular para el lenguaje sobre {a, b} en cuyas palabras inmediatamente antes de toda b aparece una a:– (a+ab)*.

• Expresión regular que representa a las palabras que contienen exactamente una vez dos b’s contiguas:– (ba+bc+a+c)*bb(a+c+ab+cb)*

Page 25: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

25

Ejercicio en clase

• Escriba una expresión regular para el lenguaje sobre {0 ,1} que consiste de las palabras en las que no hay dos símbolos iguales contiguos, es decir, los 0’s y los 1’s se alternan.– (01)* + (10)* + 0(10)* + 1(01)*

– ( + 1)(01)*( + 0)– ( + 0)(10)*( + 1)

Page 26: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

26

Equivalencias• Una expresión regular define un patrón; una

palabra pertenece al lenguaje definido por esa expresión regular si y sólo si sigue el patrón.

• Una expresión regular que represente un lenguaje debe cumplir dos condiciones:– Correcta: todas las palabras representadas por la

expresión regular deben ser parte del lenguaje.– Completa: toda palabra del lenguaje debe ser

representada por la expresión regular.• Concatenación indica orden de los símbolos, la

cerradura de Kleene permite repeticiones y + indica selección.

• Dos expresiones que representan al mismo conjunto son llamadas equivalentes.

Page 27: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

27

Identidades u = u = u = u = u * = * = • u+v = v+u• u+ = u• u+u = u• u* = u* u* = (u*)*

• u(v+w) = uv + uw• (u+v)w = uw+vw• (uv)*u = u(vu)*

• (u+v)* = (u*+v)* = u*(u+v)* = (u+vu*)* = (u*v*)* = u*(vu*)* = (u*v)*u*

• u*(u + ) = u*

• u*u* = u*• u* + v* = v* + u*

• (u*v*)* = (u + v)* = (u + v)*uv(u + v)* + v*u*

Page 28: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

28

Ejemplos• Expresión que representa las cadenas sobre {a, b} que no

contienen la subcadena aa:– b*(ab+)*+b*(ab+)*a =

b*(ab+)*(+a) =b*(abb*)*(+a) =(b+ab)*(+a)

• Expresión regular que representa las cadenas sobre {a, b, c} que contienen la subcadena bc:– (a+b+c)*bc(a+b+c)*

• c*(b+ac*)*

– Representa las cadenas que no contienen la subcadena bc.

• Cadenas sobre {0, 1} de longitud igual a 6:– (0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1) = (0 + 1)6

• Cadenas sobre {0, 1} de longitud mayor o igual a 6:– (0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)* = (0 + 1)6(0 + 1)*

• Cadenas sobre {0, 1} de longitud menor o igual a 6:– (0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )

= (0 + 1 + )6

Page 29: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

29

Ejercicios en clase

• Obtenga una expresión regular para el conjunto de palabras sobre {a, b, c} que tienen al menos una a y al menos una b.– c*a(a + c)*b(a + b + c)* + c*b(b + c)*a(a + b + c)*

• Obtenga una expresión regular para el lenguaje sobre {0 , 1} que consiste de las palabras cuyo décimo símbolo contado de la derecha a la izquierda es un 1.– (0+1)*1(0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1)

= (0 + 1)*1(0 + 1)9

Page 30: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

30

Pregunta

¿Hay lenguajes para los que no existe una expresión regular que los represente?

Page 31: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

31

Ejemplo de un lenguaje no regular

{anbn | n 0}

Page 32: 1 Lenguajes y Expresiones Regulares 2 Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar para denotar un alfabeto. Ejemplos:

32

Actividades fuera de clase

• Control de lectura 2: Lenguajes regulares

• Tarea 2: Ejercicios 3.1, 3.2, 3.8, 3.9, 3.10 del texto.