Expresiones Regulares Lenguaje definido por una ER • Paso básico: • Paso básico: Ø es una expresión regular Ø es una ER que denota el lenguaje ε es una ER que denota el lenguaje ∀s∈Σ, s es una ER que denota ε es una expresión regular ∀s∈Σ, s es una expresión regular • Paso de inducción: unión, concatenación y clausura • Paso de inducción: Si α y β son expresiones regulares Si α y β son expresiones regulares α ∪ β es una ER y α • β es una ER y α* es una ER y α ∪ β es una expresión regular α • β es una expresión regular (ó simplemente denotada α β ) α* es una expresión regular Tema 2: Lenguajes regulares Delimitadores: “(“, “)” si no pertenecen al alfabeto: Si α es una expresión regular entonces (α) es una expresión regular 25 Tema 2: Lenguajes regulares 26 Ejemplos de expresiones regulares • a*bba LOS LENGUAJES REGULARES SON LOS LENGUAJES DENOTADOS POR LAS EXPRESIONES REGULARES denota el lenguaje: L = {a}*. {b} . {b} . {a} = {ε, a, aa, ... } . {bba} = {bba, abba, aabba, aaabba, ...} [ Nota: α • β denotada α β ] • (10)* ∪ (01)* αDIGITO = 0 ∪1 ∪2 ∪3 ∪4 ∪5 ∪6 ∪7 ∪8 ∪9 denota el lenguaje: L = L1 ∪ L2 = {ε,10, 1010, ... } ∪ {ε,01, 0101, ... } = {ε,10, 01,1010, 0101, ... } αNATURAL = (αDIGITO)* αDIGITO • (10 ∪ 01)* αENTERO = αNATURAL ∪ – αNATURAL denota el lenguaje: L = {10, 01}* = {ε,10, 01, 1010, 1001, 0110, 0101, ... } αCOMA= αENTERO ∪ (αENTERO ∪ ε).αNATURAL ∪ αENTERO .(αNATURAL ∪ ε) αCOMA-FLOTANTE = αCOMA( E αENTERO ∪ ε) • Lenguaje formado por las cadenas de {a,b} con tres a’s exactamente: b*ab*ab*ab* L(αCOMA-FLOTANTE ) es el lenguaje de los números en coma flotante Tema 2: Lenguajes regulares L(α ∪ β)= L(α) ∪ L(β) L(α • β)= L(α) • L(β) L(α*)= L(α)* Si α es una expresión regular entonces (α) es una expresión regular y L((α)) = L(α) Lenguajes regulares EJEMPLO: Σ={0,...,9, . , – , E } L(Ø) =Ø L(ε) ={ε} L(s) ={s} 27 Tema 2: Lenguajes regulares 28 Cálculo del lenguaje regular definido por una GLD Sistema de ecuaciones definido por una GLD • ENTRADA: G=(N,Σ,S,P) gramática lineal a la derecha • ENTRADA: G=(N,Σ,A0,P) gramática lineal a la derecha, N={A0,...,An} • SALIDA: Lenguaje denotado por la expresión regular α = LS • SALIDA: Sistema de ecuaciones auto-referentes • PLANTEAR el sistema de ecuaciones auto-referentes • RESOLVER dicho sistema: • A0 α00 α0 j α0n A0 z0 M = αi 0 αij αin M ∪ M A α n n0 α nj α nn An zn Eliminar incógnitas y ecuaciones, despejando en una ecuación y sustituyendo en las demás • Hasta obtener el valor LS del lenguaje expresado por S • L(GRD) = L(GLD) ⊆ L(ER) PROPOSICIÓN 6: Obtención de la ecuación i-ésima: Ai = αi0A0 ∪... ∪ αinAn∪zi = αiiAi ∪ βi α ij = Los lenguajes generados por las gramáticas regulares / lineales a la derecha son lenguajes regulares (denotados por una ER) Tema 2: Lenguajes regulares 29 Ai → wA j ∈P A i → w∈ P 30 Resolución del sistema de ecuaciones Gramática Lineal: SaaS| bS| abA| bA| b AaA| bba Cualquier ecuación auto-referente: Ai= αiiAi ∪ βi tiene como solución el lenguaje: Li = αii* βi En el ejemplo anterior: • Uw Tema 2: Lenguajes regulares Ejemplo de sistema de ecuaciones • zi = Uw SaaS| bS| abA| bA| b AaA| bba Sistema de ecuaciones: S = (aa∪b)S ∪ (ab∪b)A ∪ b = (aa∪b)S ∪ βS A= ∅S ∪ aA ∪ bba = aA ∪ βA A= aA∪ bba LA = a*bba S=(aa∪b)S ∪ (ab∪b)A ∪ b LS = (aa∪b)* ( (ab∪b) LA ∪ b ) βS Tema 2: Lenguajes regulares 31 Tema 2: Lenguajes regulares = (aa∪b)* ( (ab∪b)a*bba ∪ b ) 32 Autómata finito no determinista con transiciones vacías (εε-AFND) Autómata finito no determinista con transiciones vacías (εε-AFND) • Definición formal: (q, w) ∈ Q ×Σ* • Configuración: M = (Q, Σ, δ, q0, F) con δ: Q × (Σ ∪ {ε}) → ℘(Q) • Movimiento: (p, u) |— (q, v) si y solo si • Función de transición extendida: δ* : Q × Σ* → ℘(Q ) u=v u = s.v y q ∈ δ(p, s) ó δ* (q, ε) = C ( q ) Clausura de q: todos los estados conectados a través de ε con q. q ∈ C(q) p ∈ C(q) ⇒ δ(p, ε) ⊆ C(q) δ* (q, ws) = U C (δ (p, s) ) p ∈δ * (q, w) y q ∈ δ(p, ε) • Lenguaje aceptado: L(M) = { w ∈Σ*: ∃p∈F y (q0, w) |—* (p, ε) } = { w ∈Σ*: δ*(q0, w) ∩ F ≠ ∅ } Clausura de un conjunto de estados: C({q1,…qn})= C(q1) ∪… ∪ C(qn) Tema 2: Lenguajes regulares 33 Tema 2: Lenguajes regulares Relación entre ER y ε-AFND Relación entre ER y ε-AFND PROPOSICIÓN 7: L(ER) ⊆ L(ε-AFND ) Sea α una expresión regular. Existe un ε-AFND M = (Q, Σ, δ, q0, F) tal que L(M) = L(α) α=ε L(M)={x: (q0,x)|-* (q0, ε)} = {ε} = L(α) α = s, s∈Σ q0 q0 f0 s f0 M = ( {q0 , f0 } , Σ, δ, q0, {f0 } ) M = ( {q0 , f0 } , Σ, δ, q0, {f0 } ) L(M)={x: (q0,x)|-* (f0, ε)} = {s} = L(α) L(M) = {x: (q0,x)|-*(f0,ε)} = ∅ = L(α) Tema 2: Lenguajes regulares q0 M = ( {q0 } , Σ, δ, q0, {q0 } ) DEMOSTRACIÓN: Podemos suponer (sin pérdida de generalidad) que el ε-AFND tiene estado aceptador único, sin transiciones de salida y que su estado inicial no tiene transiciones de entrada. Por inducción sobre α 1) Paso básico: α=∅ 34 35 Tema 2: Lenguajes regulares 36 Relación entre ER y ε-AFND Relación entre ER y ε-AFND 2) Paso de inducción: Sean β y γ expresiones regulares, M1 y M2 ε-AFND’s con estado final único sin transiciones tales que L(β β)=L(M1) y L(γγ)=L(M2) α=β∪γ ε M1 q1 f1 α=β∪γ M = ( Q1 ∪ Q2 ∪ {q0 , f0 } , Σ, δ, q0, {f0 } ) δ ( q0, ε ) = {q1, q2 } δ ( q, s ) = δ1(q, s ) ∀q ∈ Q1 - { f1 } ∀s ∈ Σ∪{ ε } ∀q ∈ Q2 - { f2 } ∀s ∈ Σ∪{ ε } δ ( q, s ) = δ2(q, s ) δ ( f1, ε ) = δ (f2, ε ) = { f0 } ε q0 f0 ε M2 q2 L(M) = L(β) ∪ L(γ) = L(α) ε f2 Tema 2: Lenguajes regulares 37 Tema 2: Lenguajes regulares Relación entre ER y ε-AFND Relación entre ER y ε-AFND α = βγ q1 38 α = β* M1 f1 ε q2 M2 ε q0 f2 ε M1 q1 f1 ε f0 ε M = ( Q1 ∪ Q2 , Σ, δ, q1, {f2 } ) δ ( q, s ) = δ1(q, s ) δ ( f1, ε ) = { q2 } δ ( q, s ) = δ2(q, s ) M = ( Q1 ∪ {q0 , f0 } , Σ, δ, q0, {f0 } ) ∀q ∈Q1 - { f1 } ∀s ∈ Σ∪{ ε } δ ( q0, ε ) = δ ( f1, ε ) = {q1, f0 } ∀q ∈ Q1 - { f1 } δ ( q, s ) = δ1(q, s ) ∀q ∈Q2 ∀s ∈ Σ∪{ ε } ∀s ∈ Σ∪{ ε } L(M) = L(β)* = L(α) L(M)=L(β) • L(γ) = L(α) Tema 2: Lenguajes regulares 39 Tema 2: Lenguajes regulares 40 Relación entre ε-AFND y AFD Relación entre ε-AFND y AFD PROPOSICIÓN 8: L(ε-AFND ) ⊆ L(AFD) Todo lenguaje reconocido por un ε-AFND es reconocido por un AFD • Lema: γ*(p0, x) = δ*(q0, x) Se demuestra por inducción sobre la palabra x DEMOSTRACIÓN: γ*(p0, ε) = p0 = C(q0) • Sea L = L(M) un lenguaje reconocido por un ε-AFND M = ( Q, Σ, δ, q0, F ) • Construimos el siguiente AFD: con γ*(p0, ws) = γ((γ*(p0, w), s) = γ((δ*(q0, w), s) = ∪q∈δ*(q0, w)C(δ(q, s)) = δ*(q0, ws) N = ( P, Σ, γ, p0, G ) P ⊆ ℘(Q) • p0= C(q0) A partir del lema anterior se demuestra que L(N) = L(M). x∈L(N) ⇔ γ*(p0, x) ∈ G ⇔ δ*(q0, x) ∈ G γ(p, s) = ∪q∈pC(δ(q,s)) ⇔ δ*(q0, x) ∩ F ≠ Ø ⇔ x∈L(M) G = {p∈P: p ∩ F ≠ Ø} Tema 2: Lenguajes regulares y δ*(q0, ε) = C(q0) 41 Relación entre AFND y AFD Tema 2: Lenguajes regulares 42 Todas las relaciones estudiadas COROLARIO: L(AFND ) ⊆ L(AFD) Todo lenguaje reconocido por un AFND es reconocido por un AFD DEMOSTRACIÓN: • Es un caso particular de la proposición 8, para AFND sin ε • La construcción es la misma, sin tener que hacer las clausuras: L(AFDt) =(1) L(GRD) ⊆ (2) L(AFND) =(5) L(AFD) Dado el AFND M = ( Q, Σ, δ, q0, F ), construimos el AFD: ⊆ (4) ⊆(6) L(ER) ⊆ (7) L(ε-AFND ) =(3) L(GLD) ⊇ (8) N = ( P, Σ, γ, p0, G ) con P ⊆ ℘(Q) p0 = {q0} γ(p, s) = ∪q∈pδ(q,s) Por lo tanto, todas las inclusiones son igualdades. G = {p∈P: p ∩ F ≠ Ø} Tema 2: Lenguajes regulares 43 Tema 2: Lenguajes regulares 44