Teorı́a de Lenguajes Clase Teórica 3 Expresiones Regulares Primer cuartimestre 2016 Material compilado por el Profesor Julio Jacobo, a lo largo de distintas ediciones de la materia Teorı́a de Lenguajes en el Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires. Bibliografı́a: Capı́tulo 3, Introduction to Automata Theory, Languages and Computation, J. Hopcroft, R. Motwani, J. Ullman, Second Edition, Addison Wesley, 2001. En esta teórica: Definición de expresión regular Teorema: Para cada expresion regular r hay un AFND-λ M con un solo estado final y sin transiciones de salida tal que L(r) = L(M ). Teorema: Para cada AFD M hay una expresion regular r tal que L(r) = L(M ). Teorema: Para cada gramatica regular G existe un AFND M tal que L(G) = L(M ). Teorema: Para cada AFD M existe una gramática regular G tal que L(G) = L(M ). Definición Dado un alfabeto Σ, una expresión regular denota un lenguaje sobre Σ: ∅ es una expresión regular que denota el conjunto vacı́o ∅. λ es una expresión regular que denota el conjunto {λ}. para cada a ∈ Σ, a es es una expresión regular que denota el conjunto {a}. si r y s denotan los lenguajes R y S entonces r|s rs r∗ r+ R ∪ S, RS, R∗ , y R+ . denota denota denota denota Notación Lo anterior puede escribirse como : L (r) = R, L (s) = S, L (r | s) = R∪S, L (rs) = RS, L (r∗ ) = R∗ y L (r+ ) = R+ . Ejemplo 1. 00 (0 | 1) ∗ ∗ (0 | 1) 00 (0 | 1) ∗ ∗ (1 | 10) ∗ (0 | λ) (1 | 10) Teorema 2. Dada una expresión regular r, existe un AFND-λ M con un solo estado final y sin transiciones a partir del mismo tal que L (M ) = L (r). 1 Demostración. Caso base: r = ∅, Caso base: r = λ, Caso base: r = a. Caso inductivo: supongamos la expresión regular es r1 |r2 , r1 r2 , r1∗ , ó r2+ y asumimos que vale la propiedad para r1 y para r2 . Es decir, tanto para r1 como para r2 existen AFND-λ M1 y M2 con un solo estado final y sin transiciones a partir del mismo, tal que L (M1 ) = L (r1 ) y L (M2 ) = L (r2 ). Caso r = r1 | r2 . Por h.i. existen M1 = hQ1 , Σ1 , δ1 , q1 , {f1 }i y M2 = hQ2 , Σ2 , δ2 , q2 , {f2 }i tales que L (M1 ) = L (r1 ) y L (M2 ) = L (r2 ).Sea M = hQ1 ∪ Q1 ∪ {q0 , f0 } , Σ1 ∪ Σ1 , δ, q0 , {f0 }i δ (q0 , λ) = {q1 , q2 } δ (q, a) = δ1 (q, a) para q ∈ Q1 − {f1 } y a ∈ Σ1 ∪ {λ} δ (q, a) = δ2 (q, a) para q ∈ Q2 − {f2 } y a ∈ Σ2 ∪ {λ} δ (f1 , λ) = δ (f2 , λ) = {f0 }. Caso r = r1 r2 . Por h.i. existen M1 = hQ1 , Σ1 , δ1 , q1 , {f1 }i y M2 = hQ2 , Σ2 , δ2 , q2 , {f2 }i, tales que L (M1 ) = L (r1 ) y L (M2 ) = L (r2 ) respectivamente. Entonces podemos construir el autómata M = hQ1 ∪ Q2 , Σ1 ∪ Σ2 , δ, q1 , {f2 }i δ (q, a) = δ1 (q, a) para q ∈ Q1 − {f1 } y a ∈ Σ1 ∪ {λ} 2 δ (f1 , λ) = {q2 } δ (q, a) = δ2 (q, a) para q ∈ Q2 − {f2 } y a ∈ Σ2 ∪ {λ} Caso r = r1∗ . Por h.i. existe M1 = hQ1 , Σ1 , δ1 , q1 , {f1 }i , tal que L (M1 ) = L (r1 ). Entonces podemos construir el autómata M = hQ1 ∪ {f0 , q0 } , Σ1 , δ, q0 , {f0 }i δ (q, a) = δ1 (q, a) para q ∈ Q1 − {f1 } y a ∈ Σ1 ∪ {λ} δ (q0 , λ) = δ (f1 , λ) = {q1 , f0 }. Caso r = r1+ . Dado que r1+ = r1 r1∗ , queda demostrado por los casos anteriores. Indicar Verdadero o Falso, justificar 1. r|s = s|r 2. (r∗ )∗ = r∗ 3. ∅∗ = λ 4. (r|s)∗ = r∗ |s∗ 5. (rs|r)∗ r = r(sr|r)∗ Teorema 3. Dado un AFD M = h{q1 , . . . , qn } , Σ, δ, q1 , F i existe una expresión regular r tal que L(M ) = L(r). k Demostración. Denotemos con Ri,j el conjunto de cadenas de Σ∗ que llevan al autómata M desde el estado qi al k estado qj pasando por estados cuyo ı́ndice es, a lo sumo, k. Definamos Ri,j en forma recursiva: k−1 k−1 k Ri,j = Ri,k Rkk 0 Ri,j = ∗ k−1 k−1 Rk,j ∪ Ri,j para k ≥ 1 {a : δ (qi , a) = qj } , a ∈ Σ {a : δ (qi , a) = qj } ∪ {λ} , a ∈ Σ si i 6= j si i = j 0 0 0 Caso base: k = 0. Debemos dar rij , tal que L rij = Rij . 0 Ri,j es el conjunto de cadenas de un solo caracter o λ. 0 Por lo tanto, ri,j es: a1 | . . . | ap ,con a1 , . . . , ap sı́mbolos de Σ, si δ (qi, as ) = qj para s = 1, . . . , p y qi 6= qj . a1 | . . . | ap | λ ,con a1 , . . . , ap sı́mbolos de Σ, si δ (qi, as ) = qj para s = 1, . . . , p y además qi = qj . ∅, si no existe ningún ai que una qi y qj y qi 6= qj . λ, si no existe ningún ai que una qi y qj y además qi = qj . 3 Caso inductivo. Por hipótesis inductiva, tenemos: k−1 k−1 k−1 k−1 k−1 k−1 k−1 k−1 L(rik ) = Rik , L(rkk ) = Rkk , L(rkj ) = Rkj yL(rij ) = Rij . ∗ k−1 k−1 k−1 k−1 k Definimos rij = rik rkk rkj | rij y verificamos que k−1 k−1 ∗ k−1 k−1 k L rij = L rik rkk rkj | rij k−1 k−1 ∗ k−1 k−1 = L rik rkk rkj ∪ L rij k−1 k−1 k−1 ∗ k−1 = L rik L rkk L rkj ∪ L rij k−1 k−1 ∗ k−1 k−1 = Rik Rkk Rkj ∪ Rij k = Rij . Entonces, como Q = {q1 , . . . qn } y q1 es el estado inicial de M , n n L(M ) = R1j ∪ . . . ∪ R1j , con F = {qj1 , . . . , qjm } 1 m n n = L(r1j ) ∪ . . . ∪ L(r1j ) 1 m n n = L(r1j | . . . | r1j ) 1 m n n . | . . . | r1j Concluimos L(M ) = r1j m 1 Teorema 4. Dada una gramática regular G = hVn , VT , P, Si existe un AFND M = hQ, Σ, δ, q0 , F i tal que L(G) = L(M ). Demostración. Definamos M de la siguiente manera: Q = VN ∪ {qf }, para mayor claridad, llamaremos qA al estado correspondiente al no terminal A Σ = VT q0 = qS qB ∈ δ (qA , a) ⇔ A → aB ∈ P qf ∈ δ (qA , a) ⇔ A → a ∈ P qA ∈ F ⇔ A → λ ∈ P qf ∈ F . ∗ Asumamos Lema: Para todo w ∈ VT∗ , si A ⇒ wB entonces qB ∈ δ (qA , w). ∗ wa ∈ L (G) ⇔S ⇒ wa ∗ ⇔ ∃A ∈ VN , S ⇒ wA ∧ A → a ∈ P ∨ ∗ ∃B ∈ VN , S ⇒ waB ∧ B → λ ∈ P (únicas dos formas) ⇔ (∃qA ∈ Q, qA ∈ δ (qS , w) ∧ qf ∈ δ (qA , a)) ∨ (∃qB ∈ Q, qB ∈ δ (qS , wa) ∧ qB ∈ F ) (por el Lema) ⇔ qf ∈ δ (qS , wa) ∨ (∃qB ∈ Q, qB ∈ δ (qS , wa) ∧ qB ∈ F ) ⇔ wa ∈ L (M ) . ∗ λ ∈ L (G) ⇔S ⇒ λ ⇔S → λ ∈ P ⇔qS ∈ F ⇔λ ∈ L (M ) . ∗ Lema: Para todo w ∈ VT∗ , Si A ⇒ wB entonces qB ∈ δ (qA , w). Demostración. Por inducción en la longitud de w. 4 ∗ Caso base |w| = 0, es decir w = λ. Como A ⇒ A y qA ∈ δ (qA , λ), ∗ A ⇒ A ⇔ qA ∈ δ (qA , λ) . Caso |w| = n + 1, n ≥ 0, es decir, w = αa con α = n. Asumamos h.i. para longitud n, es decir, vale para α. ∗ ∗ A ⇒ αaB ⇔ ∃C ∈ VN , A ⇒ αC ∧ C → aB ∈ P ⇔ ∃qC ∈ Q, qC ∈ δ (qA , α) ∧ qB ∈ δ (qC , a) por h.i. ⇔ qB ∈ δ (δ (qA , α) , a) ⇔ qB ∈ δ (qA , αa) Teorema 5. Dado un AFD M = hQ, Σ, δ, q0 , F i existe una gramática regular G = hVn , VT , P, Si tal que L(G) = L(M ). Demostración. Debemos definir gramática G. VN = Q, (llamaremos Ap al no terminal correspondiente a p ∈ Q). VT = Σ S = Aq0 Ap → aAq ∈ P ⇔ δ (p, a) = q Ap → a ∈ P ⇔ δ (p, a) = q ∈ F S → λ ∈ P ⇔ q0 ∈ F ∗ Asumamos Lema: δ (p, w) = q si y solo si Ap ⇒ wAq . wa ∈ L (M ) ⇔δ (q0 , wa) ∈ F ⇔∃p ∈ Q, δ (q0 , w) = p ∧ δ (p, a) ∈ F ∗ ⇔∃Ap , Aq0 ⇒ wAp ∧ Ap → a ∈ P ∗ ⇔Aq0 ⇒ wa ⇔wa ∈ L (G) λ ∈ L (M ) ⇔ q0 ∈ F ⇔S → λ ∈ P ∗ ⇔S ⇒ λ ⇔λ ∈ L (G) . ∗ Lema: δ (p, w) = q si y solo si Ap ⇒ wAq . Demostración. Por inducción en la longitud de w. ∗ ∗ Para w = λ, es cierto que δ (p, λ) = p y que Ap ⇒ Ap , por lo tanto δ (p, λ) = p ⇔ Ap ⇒ Ap , Asumamos h.i. vale para α de longitud n, con n ≥ 0, y veamos que vale para para w = αa. δ (p, αa) = q ⇔ ∃r ∈ Q, δ (p, α) = r ∧ δ (r, a) = q ∗ ⇔ ∃Ar , Ap ⇒ αAr ∧ Ar → aAq ∈ P por h.i. ∗ ⇔ Ap ⇒ αaAq . 5