lenguajes regulares

32
1 Lenguajes y Expresiones Regulares

Upload: francisco

Post on 16-Sep-2015

234 views

Category:

Documents


1 download

DESCRIPTION

lenguaje

TRANSCRIPT

  • LenguajesyExpresiones Regulares

  • Definiciones bsicasAlfabeto: conjunto no vaco de smbolos. 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 smbolos 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 smbolos del alfabeto y las ltimas letras, s, t, u, v, w, x, y, z, para denotar palabras.Longitud de una palabra: es el nmero de smbolos en s. Se denota por |s|.Palabra nula o vaca : es la palabra de longitud cero. Algunos autores utilizan para denotarla.Concatenacin: si s = a1a2...an y t = b1b2...bn, entonces st = a1a2...anb1b2...bn; s2 = ss; s3 = sss. La concatenacin es asociativa, es decir, s(tu) = (st)u, pero no es conmutativa.

  • ...Definiciones bsicasDado 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-vacas que pueden ser formadas con letras de , es decir, + = * {}.Ejercicio en clase: Sea = {a, b, c}. Obtener 0, 1, 2 y 3.

  • Definicin recursiva de *Base: *Paso recursivo: si w * y a , entonces wa *.Cerradura: w pertenece a * slo si puede ser obtenida a partir de mediante un nmero finito de aplicaciones del paso recursivo.

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

  • LenguajesLenguaje 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 extensin, a menos que sea demasiado extenso.Lenguajes infinitos con requerimientos sintcticos simples pueden definirse recursivamente.

  • EjemplosLenguaje L sobre ={0, 1} que consta de cadenas que terminan en 1Base: 1 LPaso recursivo: si u L y a , entonces au L.Cerradura: una cadena u pertenece a L slo si puede ser obtenida a partir del elemento base mediante un nmero finito de aplicaciones del paso recursivo.Lenguaje L sobre ={a, b} que consta de cadenas que inician con a y tienen longitud parBase: aa, ab LPaso recursivo: si u L, entonces uaa, uab, uba, ubb L.Cerradura: una cadena u pertenece a L slo si puede ser obtenida a partir de los elementos base mediante un nmero finito de aplicaciones del paso recursivo.

  • ... EjemplosLenguaje 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 estn en L pero no as bb, bab, abb. Base: LPaso recursivo: si u L, entonces ua y uab L.Cerradura: una cadena u pertenece a L slo si puede ser obtenida a partir de los elementos base mediante un nmero finito de aplicaciones del paso recursivo.

  • EjemplosSea L el lenguaje sobre el alfabeto = {0, 1} definido recursivamente por LSi u L entonces 0u y 0u1 L.Cualquier elemento en L puede ser obtenido a partir de la regla 1. y utilizando la regla 2. un nmero finito de veces.Defina L por intencin.

  • Ejemplos: PalndromosPalndromos: palabra o frase que se lee igual de derecha a izquierda, que de izquierda a derechaanilinadbale arroz a la zorra el abadanita lava la tinaDefina recursivamente al conjunto P que consiste de todos los palndromos sobre el alfabeto . PSi u P entonces aua P para cualquier a . Cualquier palndromo sobre {a, b} puede ser obtenido a partir de la regla 1. y utilizando la regla 2. un nmero finito de veces.

  • EjemplosDefina recursivamente al lenguaje L sobre el alfabeto = {a, b} que consiste de las palabras que tienen ms as que bs.a LSi u L entonces au P. Si u y v L entonces buv, ubv y uvb P.Cualquier palabra en L puede ser obtenido a partir de la regla 1. y utilizando las reglas 2. y 3. un nmero finito de veces.

  • Es suficiente la recursividad?Hay muchos lenguajes que se pueden definir recursivamente, sin embargo, hay muchos otros, como lenguajes computacionales o matemticos, cuyos requerimientos sintcticos no pueden ser definidos de manera recursiva.Operaciones de conjuntos se pueden aplicar a lenguajes simples para definir lenguajes ms complejos.Otro enfoque para definir lenguajes interesantes es especificando un procedimiento algortmico que reconoce si una palabra pertenece o no al lenguaje.

  • Concatenacin de lenguajesL1L2 = {w | w = xy, x L1 y y L2}Para un lenguaje L:L0 = {}L1 = LL2 = L LL3 = L L L...L* = L0 L1 L2 L3 ... (Cerradura de Kleene)L+ = L1 L2 L3 ... = LL*

  • Ejemplo de concatenacinX = {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}

  • Ejemplos de Cerradura de KleeneL = {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 nmero de veces (excepto ) palabras de L. Las palabras pueden ser iguales o distintas. Cuntos elementos tiene Ln}: 2nIndependientemente del lenguaje, Ln tiene siempre 2n elementos?

  • ContraejemploL = {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 vaca y todas las palabras finitas formadas con ceros.

  • Ms ejemplosL = {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 nmero par de bs.{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 tambin est dado por {a, b}{aa, bb, ab, ba}*,por lo tanto el lenguaje s es regular.

  • Conjuntos regularesUn conjunto es regular si Es el conjunto vaco, , el conjunto cuyo elemento es la palabra vaca, {}, es un subconjunto simple (slo un elemento) del alfabeto.er generado a partirPuede ser generado a partir de de {} de un subconjunto simple utilizando las operaciones de unin, concatenacin y cerradura de Kleene.Nota: no se puede utilizar la diferencia de conjuntos.Definicin 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* tambin lo son.Cerradura: X es un conjunto regular sobre slo si puede ser obtenido a partir de los elementos base mediante un nmero finito de aplicaciones del paso recursivo.

  • 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}

  • Expresiones regularesLas expresiones regulares se utilizan para abreviar la descripcin de conjuntos regulares.El conjunto regular {a} es representado por a.Las operaciones de unin, concatenacin y cerradura de Kleene son denotadas por +, yuxtaposicin y *, respectivamente.Definicin recursiva de una expresin 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*) tambin lo son y representan a los conjuntos {u} {v}, {u}{v} y {u}*, respectivamente.Cerradura: u es una expresin regular sobre slo si puede ser obtenido a partir de los elementos base mediante un nmero finito de aplicaciones del paso recursivo.

  • EjemplosLenguajeExpresin 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))*

  • ...Expresiones regularesTomando en cuenta que la unin y la concatenacin son asociativas, adems conviniendo en que la precedencia u orden de ejecucin de las operaciones est dada por:ParntesisCerradura de KleeneConcatenacin Uninlas expresiones se pueden simplificar an ms reduciendo el nmero de parntesis.{a, b}*{bb}{a, b}* = (a + b)*bb(a + b)*{a}{a, b}*{b}{a, b}*{a} = a(a + b)*b(a + b)*aNotacinu+ = uu*u2 = uu, u3 = u2u, ...

  • EjemploEl conjunto {bawab | w {a, b}*} es regular sobre {a, b} Demostracin: ConjuntoExpresinJustificacin 1.{a}aBase 2.{b}bBase 3.{a}{b}={ab}abConcatenacin de 1 y 2 4.{a} {b}={a,b}a+bUnin de 1 y 2 5.{b}{a}={ba}baConcatenacin de 2 y 1 6.{a,b}*(a+b)*Cerradura Kleene de 4 7.{ba}{a,b}*ba(a+b)*Concatenacin de 5 y 6 8.{ba}{a,b}*{ab}ba(a+b)*abConcatenacin de 7 y 3

  • Lenguajes regularesDefinicin: Un lenguaje es regular si se puede representar por una expresin regular o conjunto regular.

  • ...Ms 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.Expresin regular que represente al conjunto de cadenas sobre {a, b} que contienen exactamente dos bs: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 ms bs.a*(a*ba*ba*)* y a*(ba*ba*)*Representan cadenas con un nmero par de bs.Expresin regular para el lenguaje sobre {a, b} en cuyas palabras inmediatamente antes de toda b aparece una a:(a+ab)*.Expresin regular que representa a las palabras que contienen exactamente una vez dos bs contiguas:(ba+bc+a+c)*bb(a+c+ab+cb)*

  • Ejercicio en claseEscriba una expresin regular para el lenguaje sobre {0 ,1} que consiste de las palabras en las que no hay dos smbolos iguales contiguos, es decir, los 0s y los 1s se alternan.(01)* + (10)* + 0(10)* + 1(01)*( + 1)(01)*( + 0)( + 0)(10)*( + 1)

  • EquivalenciasUna expresin regular define un patrn; una palabra pertenece al lenguaje definido por esa expresin regular si y slo si sigue el patrn.

    Una expresin regular que represente un lenguaje debe cumplir dos condiciones:Correcta: todas las palabras representadas por la expresin regular deben ser parte del lenguaje.Completa: toda palabra del lenguaje debe ser representada por la expresin regular.Concatenacin indica orden de los smbolos, la cerradura de Kleene permite repeticiones y + indica seleccin.Dos expresiones que representan al mismo conjunto son llamadas equivalentes.

  • Identidadesu = u = u = u = u* = * = u+v = v+uu+ = uu+u = uu* = 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*

  • EjemplosExpresin 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) Expresin 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)6Cadenas 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

  • Ejercicios en claseObtenga una expresin 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 expresin regular para el lenguaje sobre {0 , 1} que consiste de las palabras cuyo dcimo smbolo 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

  • PreguntaHay lenguajes para los que no existe una expresin regular que los represente?

  • Ejemplo de un lenguaje no regular{anbn | n 0}

  • Actividades fuera de claseControl de lectura 2: Lenguajes regularesTarea 2: Ejercicios 3.1, 3.2, 3.8, 3.9, 3.10 del texto.