Lengua Jes Regulares

download Lengua Jes Regulares

of 59

Transcript of Lengua Jes Regulares

  • Lenguajes regularesTeora del Autmata

  • LENGUAJES REGULARES Lenguajes sobre alfabetosPara un alfabeto S = {a1,a2,,an} se pueden numerar las palabras de S* de la siguiente manera:e0 a11 a22 .. ann a1a1n+1 a1a2n+2

  • para S = {a, b}, podemos numerar sus cadenas con dgitos binarios 1 y 2 en vez de 0 y 1. Sea a el 1 y b el 2, entonces se obtienee0 a1 b2 aa11=3 ab12=4 abaa1211 = 19de esta manera se representa cada cadena como un entero nico.Y cualquier nmero podemos representarlo como una secuencia de as y bs, por ejemplo el 32 se convierte a 11112 y luego a aaaab.

  • Teorema 1. Para todo alfabeto S, S* es infinito enumerable.

    Teorema 2. El conjunto de todos los lenguajes sobre S no es numerable.Demostracin. Llamemos L al conjunto de todos los lenguajes sobre S, si L es numerable, por tanto podemos enumerarlo como A0, A1, A2, S* puede numerarse como w0, w1, w2, Sea B = {wi | wi Ai}. B contiene las palabras que no pertenecen al lenguaje que tienen el mismo ndice que las mismas. Pero como B es un lenguaje B = Ak para algn k. Si wk B, entonces wk Ak = B. Y por lo tanto wk esta y no esta en Ak. Lo mismo sucede si suponemos wk B. Por lo tanto L no es numerable.

  • El teorema 2 estipula que hay una cantidad innumerable de lenguajes sobre un alfabeto particular.Por tanto, no existe ningn mtodo de especificacin de lenguajes que sea capaz de definir todos los lenguajes sobre un alfabeto.

  • Lenguajes regulares y expresiones regulares Sea S un alfabeto. El conjunto de los lenguajes regulares sobre S se define recursivamente como sigue: es un lenguaje regular{e} es un lenguaje regularPara todo a S {a} es un lenguaje regularSi A y B son lenguajes regulares, entonces A B, A B , A* son lenguajes regularesNingn otro lenguaje sobre S es regular.

  • ejemploPor ejemplo. El lenguaje de todas las cadenas sobre {a, b, c} que no tienen ninguna subcadena ac es un lenguaje regular, y puede expresarse porA = {c}* ({a} {b}{c}*)*

  • SimplificacinSe puede simplificar la notacin mediante el uso de expresiones regulares. Las equivalencias son:a b denota {a} {b}ab denota {ab}a* denota {a}* a+ denota {a}+ Ejemplo: A = {c}* ({a} {b}{c}*)* = c* (a bc*)*

  • Expresiones regularesLos operadores tienen precedencia (*, , ). Entonces, una expresin regular sobre el alfabeto S, es y e son expresiones regulares.a es una expresin regular para todo a S.Si r y s son expresiones regulares, entonces r s, r s , r* tambin lo son.Ninguna otra secuencia de smbolos es una expresin regular.

  • Equivalencia de expresiones regularesDos expresiones regulares pueden ser equivalentes, es decir, generan el mismo lenguaje.

    La expresin (a*b)* es equivalente a (ab)*b.

    Ambos generan o cadenas de aes y bes terminadas en b.

    La expresin

    ab (ab)*b

    Es equivalente a

    ab (a*b)*

  • Reglas para expresiones regularesr s = s r.r = r = r.r r = r.(r s) t = r (s t).er = re = r.r = r = .(rs)t = r(st). r(s t) = rs rt y (r s)t = rt st.r* = r** = r*r* = (e r)* = r*(r e) = (r e)r* = e rr*.(r s)* = (r* s*)* = (r*s*)* = (r*s)*r* = r*(sr*)* .r(sr)* = (rs)*r.(r*s)* = e (r s)*s.(rs*)* = e r(r s)*.s(r e)*(r e) s = sr*.rr* = r*r.

  • Autmata finito determinista Podemos usar un diagrama de transicin para ayudar a determinar si una cadena pertenece o no a un lenguaje.Los nodos del diagrama se denominan estados y se utilizan para sealar hasta donde se ha analizado la cadena.Las aristas se denominan transiciones y se etiquetan con los smbolos del alfabeto.Existe un estado, llamado estado inicial, que es de donde parte el anlisis de toda cadena.Algunos estados se marcan como estados de aceptacin para determinar si una cadena es legal o no.La cadena es legal si se termina su anlisis en un estado de aceptacin.Los estados de aceptacin se representan encerrados en un crculo.

  • El siguiente diagrama acepta cadenas de la forma akb. El siguiente diagrama acepta el lenguaje A = {(ab)i | i 1}.aba,ba,babaabba,b

  • El siguiente diagrama acepta cadenas de la forma (ab)*. El mismo autmata con estados etiquetados q0, q1, q2q1q0q2aba,bab

    Estado/Estradaabq0q1q2q1q2q0q2q2q2

  • Autmata Finito DeterministaDefinimos un autmata finito determinista M como una coleccin de cinco elementos:1. Un alfabeto de entrada S.2. Una coleccin finita de estados Q.3. Un estado inicial s.4. Una coleccin F de estados de aceptacin o finales.5. Una funcin d: Q S Q que determina el nico estado siguiente para el par (qi, s) correspondiente al estado actual y la entrada.Se usar la notacin M = (S, Q, s, F, d) para indicar un AFD (autmata finito determinista) M.

  • EjemploPor ejemplo, el AFD del diagrama anterior se representa mediante M = (S, Q, s, F, d) donde Q = {q0, q1, q2}S = {a, b}s = q0F = {q0}y d se define por la tabla q1q0q2aba,bab

    dabq0q1q2q1q2q0q2q2q2

  • Construccin de diagramas de transicinPara construir un diagrama de transiciones a partir de una descripcin de un autmata, se procede como sigue.Se dibujan nodos para cada estado del autmata, luego se trazan flechas desde cada estado qi hacia el qj etiquetndolas con el smbolo de entrada correspondiente, se marca el estado inicial y los estados de aceptacin.

  • EjercicioObtener la expresin regular que representa el lenguaje formado por todas las cadenas sobre {a, b} que tienen un nmero par de bes. Construir el diagrama de transicin para este lenguaje.

  • EjercicioConstruir el diagrama de transicin para el lenguaje dado por c*(a bc*)*. Convertir el diagrama en una tabla de transicin de estados.

  • AFD y lenguajesDefinimos el lenguaje aceptado por un AFD M como L(M) = {w S* | w es aceptada por M}Por tanto, L(M) es el conjunto de las cadenas que hacen que M pase del estado inicial a un estado de aceptacin. Por ejemplo, el siguiente AFD M = (S, Q, s, F, d) dondeQ = {q0, q1, q2, q3}S = {a, b}s = q0F = {q0, q1, q2}y d definida por la tabla

    dabq0q0q1q1q0q2q2q0q3q3q3q3

  • Tiene el siguiente diagrama de transicin acepta el lenguaje L(M) = {w {a, b}* | w no contiene tres bes consecutivas}q1q0q2abbabq3aa, b

  • Se puede aplicar recursivamente una serie de caracteres de una cadena dada al AFD.Por ejemplo, la aplicacin de la cadena bbab en el caso anterior dar d(d(d(d(q0,b),b),a),b) = q1.Esto puede abreviarse como d(q0,bbab).Diremos que dos AFD M1 y M2 son equivalentes si L(M1) = L(M2).

  • Autmata finito no determinista Un autmata finito es no determinista si se permite que desde un estado se realicen cero, una o ms transiciones para el mismo smbolo de entrada.

  • El lenguaje a*b ab* tiene el siguiente AFD asociado. q1q0q2aa,bbabq5aq3q4q6a,bbba,ba

  • Consideremos ahora el siguiente diagrama de transicin, este reconoce las mismas cadena, sin embargo es mucho ms simple.Note que el diagrama de transiciones no representa una funcin de Q S en Q. aq2q0q3bbaq1q4ba

  • DefinicinDefinimos un autmata finito no determinista M como una coleccin de cinco elementos: Un alfabeto de entrada S.Una coleccin finita de estados Q.Un estado inicial s.Una coleccin F de estados de aceptacin o finales.Una relacin D sobre (Q S) Q y se llama relacin de transicin.

  • Por ejemplo, el AFN anterior se describe por medio deQ = {q0, q1, q2, q3, q4}F = {q2, q3, q4}s = q0S = {a, b}y D dada por la tablaaaq2q0q3bbq1q4ba

    a

    b

    q0

    {q1, q4}

    {q3}

    q1

    {q1}

    {q2}

    q2

    q3

    q4

    {q4}

  • Por ejemplo, el AFN siguiente reconoce (ab aba)*Q = {q0, q1, q2}F = {q0}s = q0S = {a, b}y D dada por la tablaaq2q0bbq1a

    a

    b

    q0

    {q1}

    q1

    {q0, q2}

    q2

    {q0}

  • Lenguaje aceptado por un AFNSi M es un AFN, el lenguaje aceptado por M se define como L(M) = {w S* | w es aceptada por M} Para poder decidir si una cadena no es aceptada por un AFN deben recorrerse todas las rutas posibles en el AFN para esa cadena, y determinar que ninguna de estas lo lleva al algn estado de aceptacin.

  • EjemploSi X Q, vamos a interpretar D(X, s) como el conjunto {p | q X y p D(q, s)}.Para el autmata de la figura que reconoce el lenguaje (a* b*)* (aa bb) (a* b*)* . OBTENER LA TABLA DE TRANSICIN

  • Para este ejemplo D({q0, q2, q3}, b) = {q0, q1} {q2} = {q0, q1, q2}.Para una secuencia de smbolos, por ejemplo abaab, se puede escribir D(q0, abaab) = D(D(D(D(D(q0, a)b)a)a)b) = {q0, q1, q4}.

  • Equivalencia de AFD y AFN La definicin de equivalencia se extiende a los AFN, es decir, dos autmatas (AFD o AFN) M1 y M2 son equivalentes si L(M1) = L(M2). aa,baa,bba,b

  • Consideremos el AFND(q0, a) = {q1, q2}D(q0, b) = D({q1, q2}, a) = D({q1, q2}, b) = {q3}D(, a) = D(, b) = D(q3, a) = {q2}D(q3, b) = D(q2, a) = D(q2, b) = {q3}

  • AFD equivalenteababbabaa,b{q0}{q1,q2}{q3}{q2}f

  • e-transicionesUna e-transicin es una transicin entre dos estados que no consume ningn smbolo.eaq0q1a,eaq0q1bq2Acepta: a*

    Dabeq0{q1}ffq1f{q2}fq2{q0}f{q0}

  • e-cerraduraSi un AFN tiene e-transiciones, la relacin de transicin D asocia pares de Q (S {e}) Q con subconjuntos de Q. Para todo estado q Q definimos la e-cerradura de q como e-c(q) = {p | p es accesible desde q sin consumir nada en la entrada}Ampliaremos esta definicin para todo estado del conjunto de estados de la siguiente manera

  • Estados que siguen a qPara q Q y s S se define d(q, s) = {p | hay una transicin de p a q etiquetada con s}Ampliaremos esta definicin para todo estado del conjunto de estados de la siguiente maneraA partir de un AFN M = (S, Q, s, F, D) con e-transiciones, se puede construir una AFN sin e-transiciones que acepte el mismo lenguaje. Se define M = (S, Q, s, F', D') comoF' = F {q | e-c(q) F }y D(q, s) = e-c(d(e-c(q), s)).

  • Ejemplo: eliminacin de e-transiciones

    e-c(q0) = {q0,q1}d({q0, q1},a) = {q3, q4}e-c({q3, q4}) = {q1, q3, q4, q5}D(q0,a) = {q1, q3, q4, q5}d({q0, q1},b) = {q2}e-c({q2}) = {q2}D(q0,b) = {q2}e-c(q1) = {q1}d ({q1},a) = {q4}e-c({q4}) = {q4,q5}D(q1,a) = {q4,q5}d ({q1},b) = {q2}e-c({q2}) = {q2}D(q1,b) = {q2}e-c(q2) = {q2}d ({q2},a) = {}e-c({}) = {}D(q2,a) = {}d ({q2},b) = {}e-c({}) = {}D(q2,b) = {}e-c(q3) = {q1, q3}d ({q1, q3},a) = {q4}e-c({q4}) = {q4,q5}D(q3,a) = {q4,q5}d ({q1, q3},b) = {q2,,q4}e-c({q2,,q4}) = {q2,,q4,q5}D(q3,b) = {q2,,q4,q5}e-c(q4) = {q4,q5}d ({q4, q5},a) = {}e-c({}) = {}D(q4,a) = {}d ({q4, q5},b) = {}e-c({}) = {}D(q4,b) = {}e-c(q5) = {q5}d ({q5},a) = {}e-c({}) = {}D(q5,a) = {}d ({q5},b) = {}e-c({}) = {}D(q5,b) = {}

  • Ejemplo: eliminacin de e-transicionesq1aabba,bq4q2q3q5aaaa,bb

    D'abq0{q1, q3, q4, q5}{q2}q1{q4,q5}{q2}q2{}{}q3{q4,q5}{q2,,q4,q5}q4{}{}q5{}{}

  • Autmatas finitos y expresiones regularesPara un alfabeto S se pueden construir AFN (o AFD) que acepten palabras unitarias y el lenguaje vaco como se muestra en la figura Sean M1 = (S1, Q1, s1, F1, D1) y M2 = (S2, Q2, s2, F2, D2) dos AFN. Podemos unir M1 y M2 para que acepte L(M1) L(M2), aadiendo un nuevo estado inicial s y dos e-transiciones una de s a s1, y otra de s a s2. La construccin formal del nuevo AFN M = (S, Q, s, F, D) esta dada por S = S1 S2, F = F1 F2 y Q = Q1 Q2 {s}.aq1q2q1

  • Autmatas finitos y expresiones regularesSe pueden considerar las transiciones D1 y D2 como ternas ordenadas de Q1 S Q1 y Q2 S Q2, donde (q, s, p) significa que existe una transicin de q a p mediante el carcter s. De aquD = D1 D2 {(s, e, s1),(s, e, s2)}Para los autmatas anteriores, se puede formar un AFN que acepte L(M1)L(M2). Para esto, se agregan e-transiciones entre cada estado de aceptacin de M1 y el estado inicial de M2. El autmata que se obtiene es Q = Q1 Q2s = s1F = F2 = D1 D2 {F1 {e} {s2}}s2 D(q, e) para todo q F1

  • Autmatas finitos y expresiones regularesEs posible obtener L(M2)* de la siguiente forma. Primero se aade un estado inicial de aceptacin s. Se agrega una e-transicin de este estado a s. Se agrega adems, una e-transicin entre todos los estados de aceptacin y el estado inicial s. El autmata resultante ser M' = (Q', S, s', F', D'), dondeQ = Q1 {s}s = s1F = {s}D' = D1 {(s, e, s)} (F1 {e} {s})

  • Teorema 5El conjunto de lenguajes aceptados por un autmata finito sobre el alfabeto S contiene y los lenguajes unitarios {a} para todo a S. Este conjunto es cerrado con respecto a la unin, concatenacin y la cerradura de estrella.

  • Consideremos un autmata finito M = (S, Q, s, F, D) y supongamos que s = q0 es el estado inicial. Para todo estado qi seaAi = {w S* | D(qi, w) F }Es decir, Ai es el conjunto de las cadenas sobre S que hacen que M pase desde qi hasta un estado de aceptacin. Obsrvese que A0 = L(M). para el autmata de la figura. se tiene A5 = , A2 = eA4 = e, A1 = bA3 = a, A0 = ab baaaq0q2bq3q1q4q5a,ba,babb

  • Supongamos que qj D(qi, s). Entonces Ai contiene a sAj. De hecho, se tiene queAi = {sAj | qj D(qi, s)}Por ejemplo, el anterior autmataA0 = aA1 bA2, A3 = aA4 bA5A1 = bA2 aA5,A4 = e aA5 bA5A2 = e aA5 bA5,A5 = Sustituyendo se obtiene que L(M) = ab ba.

  • Lema de ArdenUna ecuacin de la forma X = AX B, donde e A, tiene una solucin nica X = A*B. Demostracin. A*B = (A e)B = A+B B = A(A*B) B, entonces A*B es solucin.Sea X = A*B C solucin donde C A*B = . SustituyendoA*B C = A(A*B C) B= A+B AC B= A+B B AC = (A+ e)B AC = A*B AC Realizando la interseccin con C en ambos lados nos da C = AC C. Por tanto C AC. Pero e A, por tanto la cadena ms corta de AC debe ser ms larga que la cadena ms corta de C. Esto solo se cumple si C = . Por tanto A*B es la nica solucin.

  • Lema 2. Sea M un autmata finito. Entonces existe una expresin regular r para la cual L(r) = L(M).

    Teorema 6 (Teorema de Kleene). Un lenguaje es regular si y slo si es aceptado por un autmata finito.

  • Ejemploaq0q2bq3q1q4bbaaabA0 = aA1A1 = aA2 bA4A2 = aA3 bA4A3 = e aA3 bA4 A4 = b*A3 = aA2 b+ e = a*b*A2 = a+b* bb*A1 = a(a+b* b+) b+ = aa+b* ab+ b+A0 = a2a+b* a2b+ ab+

  • Propiedades de los lenguajes regularesSea un AFD M = (S, Q, s, F, d), donde Q contiene n estados. Si L(M) es infinito, podemos encontrar w = a1, a2, , an+1, que pertenezca a L(M). Siq1 = d(s, a1)q2 = d(q1, a2) y as sucesivamente, obtendramos los n+1 estados, q1, q2, , qn+1 .Como Q tiene n estados, los qi no sern todos distintos. Para algunos ndices j y k, con 1 j < k n+1, se tendr que qj = qk. Por lo tanto, habr un ciclo para llegar al estado de aceptacin. Como se muestra en la figura q0q1qj = qkqj+1qk+1qn+1El lazo tiene longitud de al menos 1. Las cadenas w = a1, a2, , aj, (aj+1,, ak)m ak+1,, an+1 estarn en L(M) para m 0.

  • Lema del bombeoSea L un lenguaje regular infinito. Entonces hay una constante n de forma que, si w es una cadena de L cuya longitud es mayor o igual a n, se tiene que w = uvx, siendo uvix L para todo i 0, con | v | 1 y | ux | n. Este lema es utilizado para probar si un lenguaje es o no regular.Ejemplo: sea Toda cadena de L debe tener una longitud que sea un cuadrado perfecto. Supongamos que cumple el lema del bombeo, entoncesSe cumple que n2 = |uvx| < |uv2x|
  • Otro ejemploSea el lenguaje L = {ambm | m>=0}. L es infinito.Si se cumple el lema del bombeo se tiene que anbn= |uvx| con | v | 1 y | ux | n.Dado que | ux | n, | v | < n, y por tanto consta solo de aes. Entonces v = as, para s>=1.Si u = ar, x = an(s + r)bn.Por lo tanto |uv2x| = ara2san(s + r)bn = an + sbn.Dado que s>=1, la cadena no puede pertenecer a L.

  • Teorema 7Sea M un autmata finito de k estados. L(M) si y solo si M acepta una cadena de longitud menor que k.L(M) es infinito si y solo si M acepta una cadena de longitud n, donde k n 2k.Demostracin. Si M acepta una cadena de longitud menor que k, entonces L(M) . Si L(M) , entonces existe w L(M). Supongamos | w | k. Por el lema del bombeo w = uvx, y uvix L(M). En particular, ux L(M). Si | ux | k, quedara probado, el proceso se puede repetir para esta cadena hasta llegar a una longitud k.Supongamos w L(M) con k | w | 2k. Pero por el lema del bombeo w = uvx, y uvix L(M), para todo i, con lo que L(M) es infinito. Ahora supongamos que L(M) es infinito. Habr cadenas con longitud k. Supongamos | w | 2k. Pero por el lema del bombeo w = uvx, y uvix L(M). Entonces ux L(M). Si | ux | 2k, quedara probado, si no se puede repetir el proceso hasta encontrar una cadena que se encuentre entre k y 2k 1.

  • Aplicacin de las leyes de de MorganSupongamos que L y K son lenguajes sobre S. De las leyes de De Morgan(S* - L) (S* - K) = S* - (L K)Por tantoL K = S* - (S* - (L K))= S* - ((S* - L) (S* - K))Pero el complemento de un lenguaje es regular si el lenguaje es regular, por lo tanto la interseccin de dos lenguajes ser regular si ambos lenguajes son regulares. Este hecho puede utilizarse para demostrar si un lenguaje es regular o no.Por ejemplo, sea S = {a, b} y L = {wwI | w S*}. Probaremos que L no es regular. Sea L1 = {anb2kan | n, k 0} no regular, y L2 = {akbnam | k, n, m 0} regular. Obsrvese que L2 L = L1. Si L fuera regular, lo sera L1. Por tanto L no puede ser regular.

  • IndistinguibilidadSea M = (Q, S, d, q0, F) un AFD. Definimos la relacin de indistinguibilidad ~ en Q como:

    q, q Q, q ~ q x, S* (d(q, x) F d(q, x))

    La relacin ~ es una relacin de equivalencia que induce una particin en Q y vamos a definir un autmata a partir de M, obtenido mediante la agrupacin de estados pertenecientes al mismo bloque de la particin.

  • Minimizacinaq0q2bq3q1q4bbaaabq5q6q7abbbaabaq6 se elimina porque no es accesible.La particin inicial es p0 = {{q0, q1, q2, q3, q5, q7},{q4}}.LlamamosB1 = {q0, q1, q2, q3, q5, q7} y B2 = {q4}.

    abq0B1B1q1B1B1q2B1B2q3B2B1q5B1B1q7B1B2q4B1B2

  • De tabla anterior se obtiene p1La particin es p1 = {{q0, q1, q5}, {q2, q7}, {q3}, {q4}}.LlamamosB1 = {q0, q1, q5}, B2 = {q2, q7}, B3 = {q3} y B4 = {q4}.De tabla anterior se obtiene p2La particin es p2 = {{q0, q1}, { q5}, {q2, q7}, {q3}, {q4}}.LlamamosB1 = {q0, q1}, B2 = {q2, q7}, B3 = {q3} y B4 = {q4} y B5 = {q5}.Puede verse que p3 es igual a p2. Por lo tanto el AFD ya est minimizado.

    abq0B2B3q1B2B3q5B1B1q2B1B4q7B1B4q3B4B1q4B1B2

    abq0B2B3q1B2B3q2B5B4q7B5B4q3B4B5q4B1B4q5B5B1

  • Diagrama de transicionesB1bB5baabbabaB2B3B4a

    abB1B2B3B2B5B4B3B4B5B4B1B4B5B5B1

  • Tareaq0bbaabbabaabaa,ba,bq1q2q3q4q6q5q7Minimizar

  • Aplicaciones de los autmatas finitosReconocedor de nmeros enteros cualquier otro carcter1,2, ..., 9q2q0q10,1,2, ..., 9cualquier otro carctercualquier otro carcter1. i = 1 2. ok = verdadero 3. long = longitud(s) 4. si s[i] en num entonces i = i+1 mientras i