Proprietà dei Linguaggi Regolari Nicola Fanizzi Corso di Linguaggi di Programmazione Dipartimento di Informatica Università degli Studi di Bari 31 marzo 2014 Sommario 1 Pumping Lemma per Linguaggi Regolari Applicazioni ed esempi 2 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto al prodotto Chiusura rispetto all’Iterazione Chiusura rispetto a complemento e intersezione Altre proprietà di chiusura 3 Altre proprietà Predicati decidibili sui Linguaggi Regolari Teorema di Myhill-Nerode 4 Esercizi N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 2 / 42 Pumping Lemma per Linguaggi Regolari Sommario 1 Pumping Lemma per Linguaggi Regolari Applicazioni ed esempi 2 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto al prodotto Chiusura rispetto all’Iterazione Chiusura rispetto a complemento e intersezione Altre proprietà di chiusura 3 Altre proprietà Predicati decidibili sui Linguaggi Regolari Teorema di Myhill-Nerode 4 Esercizi N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 3 / 42 Pumping Lemma per Linguaggi Regolari Pumping Lemma per Linguaggi Regolari I Teorema (Pumping Lemma) Sia L ∈ Lreg . Esiste un n ∈ N tale che ogni stringa z ∈ L con |z| ≥ n si può scrivere z = uvw, con |uv| ≤ n e |v| > 0, e ∀t ≥ 0 : uvt w ∈ L Dim. Per il teorema di Kleene: ∃M = (Σ, Q, δ, q0 , F) ∈ DFA tale che L(M) = L. Sia n = |Q|. Si considera una z = a1 a2 · · · ak ∈ L(M) con k ≥ n Si può rappresentare il percorso d’accettazione di z da parte di M (passando per la sequenza di stati q(0) , q(1) , . . . , q(k) ) con: q(0) a1 q(1) a2 ··· ai q(i) ai+1 ··· ak q(k) con q0 = q(0) e q(k) ∈ F N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 4 / 42 Pumping Lemma per Linguaggi Regolari Pumping Lemma per Linguaggi Regolari II Il percorso prevede k + 1 stati ma |z| = k ≥ n = |Q| quindi c’è (almeno) uno stato ripetuto1 nella sequenza: ∃i, j ∈ {0, . . . , k} : q(i) = q(j) con i < j e (i + j) ≤ n Graficamente: q(0) u a1 · · · ai q(i) q(j) w aj+1 · · · ak q(k) v ai+1 · · · aj Si osservi che z si può scrivere come uvw ove: u = a1 · · · ai v = ai+1 · · · aj v 6= e |uv| ≤ n w = aj+1 · · · ak N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 5 / 42 Pumping Lemma per Linguaggi Regolari Pumping Lemma per Linguaggi Regolari III Avendo in input z ∈ L(M), ˆ 0 , z) ∈ F M si porta nello stato: q(k) = δ(q ma questo è lo stesso stato di accettazione cui si giunge tramite le stringhe: uvvw, uvvvw, ecc., . . . (iterando t volte tra q(i) e q(j) ) Dunque: ∀t ≥ 0 : uvt w ∈ L(M) Osservazione Se L è finito, il teorema è banalmente verificato (non esiste alcuna z sufficientemente lunga) 1 Cfr. pigeonhole principle: la ripetizione avviene entro gli n posti (stati) a disposizione. N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 6 / 42 Pumping Lemma per Linguaggi Regolari Esempio Applicazioni ed esempi Dimostrare che L = {ak bk | k ≥ 0} non è regolare. Si assuma, per assurdo, che L sia regolare. Se vale il teorema, allora dato un certo n, si considera z = am bm ∈ L con m > n. In base al Pumping Lemma, dovrebbero esistere u, v, w tali che: z = uvw, |uv| ≤ n, |v| ≥ 1 e ∀i ≥ 0 : uvi w ∈ L (*) Poiché m > n e poiché dev’essere |uv| ≤ n, necessariamente v = ah per un certo h > 0. In tal caso, per la (*), dovrebbe risultare che: am−h (ah )i bm ∈ L i = 0, 1, . . . contraddicendo la def. di L Quindi L non può essere regolare. N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 7 / 42 Pumping Lemma per Linguaggi Regolari Applicazioni ed esempi Esempio [Linz(2012)] Dimostrare che L = {w ∈ {a, b}∗ | na (w) 6= nb (w)} non è regolare. Si assuma, per assurdo, che L sia regolare. Allora valendo il p.lemma, per un certo n, si consideri z = an! b(n+1)! ∈ L in modo che |z| > n. In base al Pumping Lemma, esistono u, v, w tali che z = uvw e |uv| ≤ n, |v| ≥ 1 ∀i ≥ 0 : uvi w ∈ L Poiché dev’essere k = |v| ≤ |uv| ≤ n, sarà v = ak . Quindi le stringhe gonfiate avranno la forma: an!−k (ak )i b(n+1)! i = 0, 1, . . . rientrano nel tipo am bm 6∈ L (con m = (n + 1)!) se n! − k + ki = (n + 1)!, ossia se i= (n + 1)! − n! + k = ((n + 1) − 1)n! k k ma ciò è sempre valido, essendo k ≤ n. Quindi L non può essere regolare. N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari + k k = n · n! k +1∈Z 31 marzo 2014 8 / 42 Proprietà di chiusura Sommario 1 Pumping Lemma per Linguaggi Regolari Applicazioni ed esempi 2 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto al prodotto Chiusura rispetto all’Iterazione Chiusura rispetto a complemento e intersezione Altre proprietà di chiusura 3 Altre proprietà Predicati decidibili sui Linguaggi Regolari Teorema di Myhill-Nerode 4 Esercizi N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 9 / 42 Proprietà di chiusura Introduzione Le proprietà di chiusura della classe dei linguaggi regolari consentono di stabilire la regolarità di linguaggi Le loro dimostrazioni forniscono procedure di definizioni di grammatiche / automi complessi a partire da grammatiche / automi più semplici Osservazione Per definizione le prop. di chiusura sono verificate per le op. di unione complemento ed iterazione: basta considerare le corrispondenti espressioni regolari N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 10 / 42 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto all’unione I Teorema (chiusura - unione) Dati due linguaggi regolari L1 e L2 , la loro unione L1 ∪ L2 è un linguaggio regolare. Dim. G1 = (Σ, V1 , S1 , P1 ) e G2 = (Σ, V2 , S2 , P2 ) di tipo 3 tali che L1 = L(G1 ) e L2 = L(G2 ). Sia G = (Σ, V, S, P) con: P = {(S −→ ω) | (S1 −→ ω) ∈ P1 } ∪ ∪ {(S −→ ω) | (S2 −→ ω) ∈ P2 } ∪ ∪ P1 ∪ P2 N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 11 / 42 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto all’unione II Dim. [alternativa, attraverso gli automi] M1 = (Σ1 , Q1 , δ1 , q10 , F1 ) e M2 = (Σ2 , Q2 , δ2 , q20 , F2 ) DFA tali che L1 = L(M1 ) e L2 = L(M2 ). Si determina M = (Σ, Q, δ, q0 , F) NFA tale che L(M) = L1 ∪ L2 Σ = Σ1 ∪ Σ2 Q = Q1 ∪ Q2 ∪ {q0 } F = F1 ∪ F2 , oppure F = F1 ∪ F2 ∪ {q0 } se ∈ L(M1 ) o ∈ L(M2 ) δ definita come segue: δ(q, a) = δi (q, a) δ(q0 , a) = δ1 (q10 , a) ∪ δ2 (q20 , a) q ∈ Qi , a ∈ Σi con i = 1, 2 a∈Σ Si verifica che M accetta tutte e sole le stringhe in L(M1 ) o in L(M2 ) N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 12 / 42 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto all’unione III Esempio Dati L1 e L2 riconosciuti dai seguenti automi: a a b b q0 q1 q2 q3 a a l’automa per la loro unione sarà: a b q0 q1 a a b q00 b q2 a b q3 a N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 13 / 42 Proprietà di chiusura Chiusura rispetto al prodotto Chiusura rispetto al prodotto I Teorema (chiusura - prodotto) Dati due linguaggi regolari L1 e L2 , il loro prodotto L1 · L2 è un linguaggio regolare. Dim. G1 = (Σ, V1 , S1 , P1 ) e G2 = (Σ, V2 , S2 , P2 ) di tipo 3 tali che L1 = L(G1 ) e L2 = L(G2 ). In ogni forma di frase comparirà (al più) un NT. Perciò ogni A −→ b ∈ P1 che può terminare la derivazione del prefisso in L1 deve innescare la derivazione da S2 : G = (Σ, V1 ∪ V2 , S1 , P) con P ={A −→ bB | (A −→ bB) ∈ P1 } ∪ ∪{A −→ bS2 | (A −→ b) ∈ P1 , b ∈ Σ} ∪ ∪{A −→ bS2 | (A −→ bB) ∈ P1 , (B −→ ) ∈ P1 } ∪ ∪{S1 −→ ω | (S2 −→ ω) ∈ P2 , (S1 −→ ) ∈ P1 } ∪ ∪P2 N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 14 / 42 Proprietà di chiusura Chiusura rispetto al prodotto Chiusura rispetto al prodotto II Esercizio Grammatica per il prodotto di: L1 = {w0 | w ∈ {0, 1}∗ } e L2 = {, 1, 11} G1 = ({0, 1}, {S1 }, S1 , P1 ) con: P1 = {S1 −→ 0|0S1 |1S1 } G2 = ({1}, {S2 , A}, S2 , P2 ) con: P2 = {S2 −→ |1|1A, A −→ 1} G = ({0, 1}, V, S1 , P) per L(G1 ) · L(G2 ) V = {S1 , S2 , A} P = {S1 −→ 0S2 |0S1 |1S1 } ∪ P2 G0 = (Σ, V, S2 , P0 ) per L(G2 ) · L(G1 ) S2 −→1 A−→1 z}|{ z}|{ P0 = {S2 −→ 0|0S1 |1S1 | 1S1 |1A, A −→ 1S1 } ∪ P1 | {z } S2 −→ N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 15 / 42 Proprietà di chiusura Chiusura rispetto al prodotto Chiusura rispetto al prodotto III 00 Dim. M 0 = (Σ0 , Q0 , δ 0 , q00 , F 0 ) e M 00 = (Σ00 , Q00 , δ 00 , q00 0,F ) 0 0 00 00 tali che L = L(M ) e L = L(M ) Si determina M = (Σ, Q, δ, q00 , F) tale che L(M) = L0 · L00 Σ = Σ0 ∪ Σ00 Q = Q0 ∪ Q00 F = F 00 se 6∈ L00 , altrimenti F = F 0 ∪ F 00 δ definita come 0 segue: ∀a ∈ Σ q ∈ Q0 \ F 0 δ (q, a) 0 00 00 δ (q, a) ∪ δ (q0 , a) q ∈ F 0 δ(q, a) = 00 δ (q, a) q ∈ Q00 Per costruzione, M accetta tutte e sole le stringhe di L = L1 · L2 N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 16 / 42 Proprietà di chiusura Chiusura rispetto al prodotto Chiusura rispetto al prodotto IV Esempio a a b q0 b q1 q2 a q3 a gli automi per i prodotti saranno a a b b q1 q0 q1 q0 a a a b b q2 Linguaggi di prog.+Lab a b q3 a a N. Fanizzi b q2 q3 a Linguaggi Regolari 31 marzo 2014 17 / 42 Proprietà di chiusura Chiusura rispetto all’Iterazione Chiusura rispetto all’iterazione I Teorema (chiusura - iterazione) Se L è regolare allora anche L∗ è regolare Dim. Sia G = {Σ, V , S, P) tale che L(G) = L. Si costruisce G0 = {Σ, V ∪ {S0 }, S0 , P0 ) nel seguente modo: si inizializza P0 con S0 −→ e si aggiungono a P0 tutte le prod. di P tranne l’eventuale S −→ ∈ P S0 −→ ω per ogni S −→ ω ∈ P repeat if A −→ b ∈ P0 or A −→ bB ∈ P0 and B −→ ∈ P0 then P0 ← P0 ∪ {A −→ bS0 } until non ci sono state modifiche in P0 P∗ ={S0 −→ } ∪ (P \ {S −→ }) ∪ ∪{S0 −→ ω | ∀(S −→ ω) ∈ P} ∪ ∪{A −→ bS0 | ∀(A −→ b) ∈ P0 ∧ b ∈ Σ} ∪ ∪{A −→ bS0 | ∀(A −→ bB) ∈ P0 ∧ (B −→ ) ∈ P0 } N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 18 / 42 Proprietà di chiusura Chiusura rispetto all’Iterazione Chiusura rispetto all’iterazione II Dim. [tramite automi] Sia M = (Σ, Q, δ, q0 , F) tale che L = L(M). Definiamo M 0 = (Σ, Q ∪ {q00 }, δ 0 , q00 , F ∪ {q00 }) tale che L∗ = (L(M 0 ))∗ , ponendo: ∀a ∈ Σ δ 0 (q00 , a) = δ(q0 , a) e δ(q, a) q∈Q\F δ 0 (q, a) = δ(q, a) ∪ δ(q0 , a) q ∈ F Per costruzione, M 0 accetta tutte e sole le stringhe di L∗ N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 19 / 42 Proprietà di chiusura Chiusura rispetto all’Iterazione Chiusura rispetto all’iterazione III Esempio b,c q0 c b q1 a q2 a un automa per l’iterazione sarà: q00 b,c b,c q0 b q1 a N. Fanizzi Linguaggi di prog.+Lab b,c c q2 a Linguaggi Regolari 31 marzo 2014 20 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto al complemento I Teorema (chiusura - complemento) ¯ = Σ∗ \ L è regolare Se L ⊆ Σ∗ è regolare allora anche L Dim. Per Kleene: ∃M = (Σ, Q, δ, q0 , F) DFA tale che L(M) = L ¯ = (Σ, Q, δ, q0 , Q \ F), si dimostra che L ¯ = L(M) ¯ per Dato M induzione, facendo vedere che una parola w appartiene ad ¯ ∩ L(M) ¯ o a nessuno dei due w 6∈ L ¯ ∪ L(M): ¯ entrambi w ∈ L ¯ ossia 6∈ L = L(M), allora δ(q ˆ 0 , ) 6∈ F base Sia w = . Se ∈ L, ¯ ∩ L(M). ¯ ˆ 0 , ) ∈ Q \ F, per cui ∈ L quindi δ(q ¯ ¯ Analogamente, se ∈ L allora 6∈ L ∪ L(M). ¯ allora w 6∈ L = L(M) per cui δ(q ˆ 0 , w) 6∈ F ossia passo Se w ∈ L ¯ ˆ 0 , w) ∈ Q \ F quindi w ∈ L(M). δ(q ¯ ˆ 0 , w) ∈ F Invece se w 6∈ L allora w ∈ L = L(M) quindi δ(q ¯ per cui w 6∈ L(M) N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 21 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto al complemento II Esempio c a c c q0 q1 q2 a b un automa per il suo complemento sarà: a c c q0 c q1 q2 a b a b q3 b a,b,c N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 22 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto al complemento III Osservazioni sull’inversione degli stati se δ non è totale la non-accettazione di una w per mancanza ¯ e quindi, di transizione rimarrebbe tale anche per M ¯ erroneamente, w 6∈ L(M) ∪ L(M) 101 ∈ ? 1 q0 1 0 q1 q0 0 0 q1 0 ERRATO Si ovvia completando M con l’uso di uno stato pozzo N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 23 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto al complemento IV se M fosse un NFA allora avrebbe più maniere per accettare/non-accettare; in tal caso, non basta scambiare gli ¯ stati finali con i non-finali e viceversa: w ∈ L(M) ∩ L(M) 000 ∈ ? 0 q0 0 0 q1 0,1 q0 0 q1 0,1 ERRATO M0 Si deve passare prima a DFA equivalente e poi trovare l’automa per il complemento N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 24 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto all’intersezione I Teorema (chiusura - intersezione) La classe dei linguaggi regolari è chiusa rispetto all’intersezione Dim. si sfrutta la legge di De Morgan L1 ∩ L2 = L1 ∪ L2 e la chiusura rispetto a unione e complemento. N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 25 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto all’intersezione II Dim. [alternativa] M1 = (Σ, Q1 , δ1 , q10 , F1 ) e M2 = (Σ, Q2 , δ2 , q20 , F2 ) tali che L1 = L(M1 ) e L2 = L(M2 ) Si determina M = (Σ, Q, δ, q0 , F), dove: Q = Q1 × Q2 avente elementi qij = (qi , qj ) ∈ Q1 × Q2 q0 = q00 = (q10 , q20 ) F = F1 × F2 δ definita come segue: ∀qij ∈ Q, a ∈ Σ δ(qij , a) = δ1 (qi , a), δ2 (qj , a) Per costruzione, M accetta tutte e sole le stringhe di L = L1 ∩ L2 N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 26 / 42 Proprietà di chiusura Chiusura rispetto a complemento e intersezione Chiusura rispetto all’intersezione III Esempio 0 1 q10 0 q11 1 q20 0,1 q21 0,1 una automa per la loro intersezione sarà: q00 1 q01 0 0 0 q10 1 1 q11 0 1 N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 27 / 42 Proprietà di chiusura Altre proprietà di chiusura Altre proprietà di chiusura Dato un linguaggio L regolare, risultano regolari anche: L \ L0 con L0 regolare, essendo L \ L0 = L ∩ L0 LR per costruzione, valendo: (L1 + L2 )R = (L1 )R + (L2 )R (L1 · L2 )R = (L2 )R · (L1 )R (L∗ )R = (LR )∗ h(L) e h−1 (L), con h : Σ → Σ∗ omomorfismo sull’alfabeto di L [Hopcroft et al.,(2009)] N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 28 / 42 Proprietà di chiusura Esercizi - chiusure Esercizi - chiusure 1 Determinare la grammatica di tipo 3 che genera il linguaggio descritto da b∗ + (ab)∗ 2 Determinare la grammatica di tipo 3 che genera il linguaggio descritto da (aa + aaa)∗ 3 Determinare una grammatica lineare destra G tale che: L(G) = {w ∈ {a,b}∗ | w 6= uaav, u, v ∈ {a,b}∗ } N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 29 / 42 Proprietà di chiusura Esercizi - chiusure Esercizio 1. Determinare la grammatica di tipo 3 che genera il linguaggio descritto da b∗ + (ab)∗ Determinando il linguaggio corrispondente: L(b∗ + (ab)∗ ) = L(b∗ ) ∪ L((ab)∗ ) = (L(b))∗ ∪ (L(ab))∗ = {b}∗ ∪ (L(a) · L(b))∗ = {b}∗ ∪ ({a} · {b})∗ = {b}∗ ∪ {ab}∗ G1 = (Σ1 , V1 , S1 , P1 ) con Σ1 = {b}, V1 = {S1 }, P1 = {S1 −→ bS1 |} G2 = (Σ2 , V2 , S2 , P2 ) con Σ2 = {a,b} V2 = {S2 , B2 }, P2 = {S2 −→ aB2 , B2 −→ b} G3 = (Σ3 , V3 , S3 , P3 ) con Σ3 = Σ2 , V3 = V2 ∪ {S3 } P3 ={S3 −→ } ∪ (P2 \ {S2 −→ }) ∪ ∪{S2 −→ w ∈ P2 } ∪ {(A −→ sS3 ) | (A −→ s) ∈ P2 } = ={S3 −→ } ∪ P2 ∪ {S3 −→ aB2 } ∪ {B2 −→ bS3 } = ={S3 −→ , S2 −→ aB2 , B2 −→ b, S3 −→ aB2 , B2 −→ bS3 } = ={S3 −→ |aB2 , S2 −→ aB2 , B2 −→ b|bS3 } N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 30 / 42 Proprietà di chiusura Esercizi - chiusure Osservazione S2 è inutile: P3 = {S3 −→ |aB2 , B2 −→ b|bS3 } Quindi L(G3 ) = {ab}∗ Per chiudere: G = (Σ, V , S, P) ove: Σ = Σ1 ∪ Σ3 V = V1 ∪ V3 ∪ {S} = {S, S1 , B2 , S3 } P ={S −→ w | S1 −→ w ∈ P1 } ∪ {S −→ w | S3 −→ w ∈ P3 } ∪ P1 ∪ P3 = = {S −→ bS1 |aB2 |, S1 −→ bS1 |, S3 −→ aB2 |, B2 −→ bS3 |b} N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 31 / 42 Proprietà di chiusura Esercizi - chiusure Esercizio 2. R = (aa + aaa)∗ Per L1 = {aa}: G1 = (Σ, {S1 , A}, S1 , P1 ) con P1 = {S1 −→ aA, A −→ a} Per L2 = {aaa}: G2 = (Σ, {S2 , B, C}, S2 , P2 ) con P2 = {S2 −→ aB, B −→ aC, C −→ a} Per L1 ∪ L2 : G3 = (Σ, {S3 , S1 , S2 , A, B, C}, S3 , P3 ) con P3 = {S3 −→ aA|aB} ∪ P1 ∪ P2 Osservazione N. Fanizzi S1 e S2 inutili, assieme alle relative produzioni Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 32 / 42 Proprietà di chiusura Esercizi - chiusure Per l’iterazione (L1 ∪ L2 )∗ : G = (Σ, V , S, P) con V = V3 ∪ {S} = {S, S3 , A, B, C} P ={S −→ } ∪ (P3 \ {S3 −→ }) ∪ ∪{S −→ w | S3 −→ w ∈ P3 } ∪ ∪{N −→ bS | N −→ b ∈ P3 } ∪{N −→ bS | N −→ bM, b 6= , M −→ ∈ P3 } = ={S −→ } ∪ {S3 −→ aA|aB, A −→ a, B −→ aC, C −→ a} ∪ ∪{S −→ aA|aB}∪ ∪{A −→ aS, C −→ aS} ={S −→ aA|aB|, A −→ aS|a, B −→ aC, C −→ aS|a} N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 33 / 42 Altre proprietà Sommario 1 Pumping Lemma per Linguaggi Regolari Applicazioni ed esempi 2 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto al prodotto Chiusura rispetto all’Iterazione Chiusura rispetto a complemento e intersezione Altre proprietà di chiusura 3 Altre proprietà Predicati decidibili sui Linguaggi Regolari Teorema di Myhill-Nerode 4 Esercizi N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 34 / 42 Altre proprietà Predicati decidibili sui Linguaggi Regolari Predicati decidibili sui Linguaggi Regolari I Teorema (ling. vuoto, finito, infinito) È possibile decidere se un linguaggio regolare (accettato da un dato automa a stati finiti) L è vuoto, finito oppure infinito. Dim. Considerato un automa M per L = L(M) se non esiste un cammino nel grafo dallo stato iniziale q0 ad un qualche stato finale q ∈ F, allora L(M) = ∅ (e viceversa). se esiste un cammino nel grafo dallo stato iniziale q0 ad un qualche stato finale q ∈ F che attraversa almeno due volte uno stesso stato (ha un ciclo), allora L(M) è infinito (e viceversa). N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 35 / 42 Altre proprietà Predicati decidibili sui Linguaggi Regolari Predicati decidibili sui Linguaggi Regolari II Teorema (equivalenza) Il problema dell’equivalenza di due linguaggi regolari è decidibile. Dim. si verifica se la loro intersezione coincide con l’unione Teorema (appartenenza) Il problema dell’appartenenza di una stringa w ∈ Σ∗ ad un linguaggio regolare L ⊆ Σ∗ è decidibile. Dim. dato il DFA M tale che L = L(M), si testa w ∈ L(M) N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 36 / 42 Altre proprietà Teorema di Myhill-Nerode Teorema di Myhill-Nerode I Dato un linguaggio L definiamo una relazione ≡L su Σ∗ come segue: x ≡L y ⇔ (∀z ∈ Σ∗ : xz ∈ L ⇔ yz ∈ L) La relazione d’equivalenza ≡L è una relazione di congruenza. Teorema (Myhill-Nerode) L ⊆ Σ∗ è regolare sse ≡L ha indice finito. indice: cardinalità di un insieme quoziente (numero delle classi d’equivalenza) N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 37 / 42 Altre proprietà Teorema di Myhill-Nerode Teorema di Myhill-Nerode II Osservazioni Il potere computazionale di un automa a stati finiti è limitato proprio alla classificazione di stringhe in un numero finito di classi Il risultato può essere utilizzato per minimizzare un automa: costruire l’automa equivalente avente il minimo numero di stati per approfondire: [Hopcroft et al.,(2009), Ausiello et al.,(2003)] N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 38 / 42 Esercizi Sommario 1 Pumping Lemma per Linguaggi Regolari Applicazioni ed esempi 2 Proprietà di chiusura Chiusura rispetto all’unione Chiusura rispetto al prodotto Chiusura rispetto all’Iterazione Chiusura rispetto a complemento e intersezione Altre proprietà di chiusura 3 Altre proprietà Predicati decidibili sui Linguaggi Regolari Teorema di Myhill-Nerode 4 Esercizi N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 39 / 42 Esercizi Esercizi 1 Dimostrare che non sono regolari i segg. linguaggi: a) L1 = {an bk | n > k} b) L2 = {an bm ck | n > k, n, m, k > 0} c) L3 = {an bm ck | m > k, n, m, k > 0} 2 3 4 5 Data la grammatica lineare destra G = (Σ, {S, A, B}, S, P) con P = {S −→ bA|aS|b, A −→ aB|cS|a, B −→ bA|cB|c} determinare una espressione regolare per L(G) Determinare la grammatica di tipo 3 che genera il linguaggio descritto da b∗ + (ab)∗ Dimostrare che L = {cwn c | w = aa ∨ w = bb, n ≥ 0} sia regolare Dimostrare che non siano regolari i linguaggi. a) b) c) d) N. Fanizzi L L L L = = = = {an bm | n 6= m, n, m > 0} {0n 1m 0n | n, m ≥ 0} {w ∈ {0, 1}∗ | w = wR } {wuw | w, u ∈ {0, 1}+ } Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 40 / 42 Esercizi Esercizio 1.a) Dimostrare che non è regolare L1 = {an bk | n > k} Supponiamo che L1 sia regolare. Allora vale per L1 il P.Lemma per ling.reg. Dato n non noto, scegliamo una z tale che |z| > n Sia z = an bn−1 di lunghezza |z| = n + n − 1 > n. Se si considera z = uvw devono valere le tesi: 1) |v| > 0, 2) |uv| ≤ n 3) zi = uvi w ∈ L1 ∀i ∈ N Per 1)-2): v = ak con 0 < k ≤ n Quindi zi = an−k (ak )i bn−1 Si osservi che z0 = an−k bn−1 6∈ L1 per k > 0 contraddicendo la 3). Quindi L1 6∈ Lreg N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 31 marzo 2014 41 / 42 Riferimenti Ausiello G.; D’Amore F.; Gambosi G. 2003. Linguaggi, Modelli, Complessità. FrancoAngeli. Cohen D. I. 1996. Introduction to Computer Theory. Wiley. Hopcroft J. E.; Motwani R.; Ullman J. D. 2009. Automi, Linguaggi e Calcolabilità. Pearson Italia, 3a edizione. Linz P. 2012. An Introduction to Formal Languages and Automata. Jones & Bartlett, 5a edizione. Moll R. N.; Arbib M. A.; Kfoury A. J. 1988. An introduction to formal language theory. Springer. Sipser 2005. Introduction to the theory of computation. Thomson, 2a edizione. Sudkamp 2006. Languages and Machines. Addison-Wesley, 3a edizione.
© Copyright 2024 Paperzz