Upload
others
View
25
Download
0
Embed Size (px)
Citation preview
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Sui Linguaggi Regolari:Teorema di Kleene - Pumping Lemma
N.Fanizzi - V.Carofiglio
6 aprile 2016
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
1 Teorema di KleeneL3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
2 Pumping Lemma per Linguaggi Regolari
3 EserciziEsercizio 1Esercizio 3Esercizio 8
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Teorema di Kleene
Vale la seguente equivalenza:
L3 ≡ LFSL ≡ LREG
Dimostrazione.Lo schema di dimostrazione è il seguente:
1 L3 ⊂ LFSL (ed anche LFSL ⊂ L3)2 LFSL ⊂ LREG
3 LREG ⊂ L3
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Tesi I. L3 ⊂ LFSLSia L ∈ L3 cioè ∃G = (X ,V , S ,P),G di tipo 3: L(G ) = LSi deve costruire un FSA M = (Q, δ, q0,F ) tale che T (M) = L(G )
Algoritmo.Input: G = (X ,V , S ,P),G di tipo 3Output: M = (Q, δ, q0,F ) ∈ FSA
1 X alfabeto di ingresso per M2 Q = V ∪ {q}, q 6∈ V3 q0 = S4 F = {q} ∪ {B | B −→ λ ∈ P}5 δ : Q × X −→ ℘(Q)
1 ∀B −→ aC ∈ P : C ∈ δ(B, a)2 ∀B −→ a ∈ P : q ∈ δ(B, a)
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Osservazione:l’algoritmo può generare NDA (passi 5.a e 5.b)Occorre dimostrare anche la correttezza dell’automa:L(G ) = T (M)
L(G ) ⊆ T (M): sia w = x1x2 · · · xk ∈ L(G )w può essere generata con una derivazione:S =⇒ x1X2 =⇒ x1x2X3 =⇒ · · · =⇒ x1x2 . . .Xk =⇒x1x2 . . . xkPer la sua def. l’automa M, avendo in input w , compie unaserie di transizioni che portano da S a X1,X2, . . . ,Xk fino a q.T (M) ⊆ L(G ): analogamente
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Inoltre, si dimostra in maniera costruttiva
LFSL ⊂ L3
Algoritmo.Input: M = (Q, δ, q0,F ) ∈ FSAOutput: G = (X ,V , S ,P) lineare
1 X alfabeto di ingresso per M2 V = Q3 S = q0
4 P = {q −→ xq′ | q′ ∈ δ(q, x)} ∪ {q −→ x | δ(q, x) ∈ F}
Per esercizio: L(G ) = T (M)
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Tesi II. LFSL ⊂ LREGSia L ∈ LFSL cioè ∃M = (Q, δ, q0,F ) ∈ FSA tale che: T (M) = LSupponiamo Q = {q0, q1, . . . , qn}Si definisca il linguaggio:
Rij = {w ∈ X ∗ | δ∗(qi ,w) = qj}
contenente le stringhe che fanno transitare M da qi a qj .Per def. di linguaggio accettato da FSA, risulta: T (M) =
⋃qj∈F R0j
quindi basta dimostrare che ogni linguaggio Rij è regolare0 ≤ i , j ≤ n
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Rkij = {w ∈ X ∗ | δ∗(qi ,w) = qj senza transitare in qk , qk+1, . . . , qn}
Siosservi che: Rn+1
ij = Rij
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
dimostriamo per induzione su k che
Rkij ∈ LREG ∀i , j : 0 ≤ i , j ≤ n
(k = 0) R0ij = {w ∈ X ∗ | δ(qi ,w) = qj} ∈ LREG perchè finito
(k > 0) per ipotesi: Rkij ∈ LREG ∀i , j :∈ {0, . . . , n}
Dimostriamo che Rk+1ij ∈ LREG
Sia w ∈ Rk+1ij per definizione la lettura di w non fa transitare
M in nessuno degli stati qk+1, qk+2, . . . , qn.Si possono avere 2 casi (vedi figura):
1 w non fa transitare M nemmeno in qk , quindi w ∈ Rkij ed Rk
ijcioè regolare, per ipotesi.
2 w fa transitare M in qk . In tal caso riscriviamo w comeconcatenazione di m > 1 sottostringhe:w = w1w2 · · ·wm−1wm con:w1 ∈ Rk
ik wt ∈ Rkkk 1 < t < m wm ∈ Rk
kj
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Data la genericità di w si può scrivere:w ∈ Rk
ik · (Rkkk)m−2 · Rk
kj (con m > 1) per cui:w ∈ Rk
ik · (Rkkk)∗ · Rk
kj
Ne consegue allora che: Rk+1ij ⊆ Rk
ij ∪ Rkik · (Rk
kk)∗ · Rkkj
ma ovviamente: Rkij ∪ Rk
ik · (Rkkk)∗ · Rk
kj ⊆ Rk+1ij
quindi il linguaggio
Rk+1ij = Rk
ij ∪ Rkik · (Rk
kk)∗ · Rkkj
è regolare perchè espresso come unione, concatenazione e iterazionedi linguaggi che sono regolari (per ipotesi induttiva)Risulta dimostrato che ∀k ∈ [0, n] Rk
ij ∈ LREG perciò
T (M) =⋃
qj∈F
R0j =⋃
qj∈F
Rn+10j
è regolare perchè unione di linguaggi regolariSui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Algoritmo alternativo [Hopcroft et al.] LFSL ⊂ LREG
eliminando uno stato alla volta occorre preservare i camminiche portano dallo stato iniziale a stati finalisi considerano gli stati predecessori q1, . . . , qm e successorip1, . . . , pk dello stato s da eliminare (ins. non disgiunti)
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
archi etichettati con espressioni regolari anzichè con simboli:infinite parole possono portare da uno stato ad un altroeliminando s, per ogni (qi , pj), si etichetta l’arco conl‘espressione regolare: Rij + QiS∗Pj
un arco assente nell’automa originario si denota conl’espressione ∅
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
1 per ogni stato finale q ∈ Fsi eliminano tutti gli stati tranne q0 e q:applicando l’algoritmo si produce un automa con archietichettati da espr. regolari
2 se q 6= q0 allora risulta un automa a due stati⇒ soluzione: (R∗ + SU∗T )∗SU∗
3 altrimenti risulta un automa ad un stato⇒ soluzione: R∗
4 output: somma di tutte le espressioni ottenute al variare di q
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Tesi III. LREG ⊂ L3Sia L ∈ LREG quindi vale una delle seguenti condizioni:
L è finitoL = L1 ∪ L2 con L1, L2 regolariL = L1 · L2 con L1, L2 regolariL = (L1)
∗ con L1 regolare
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
L3 ⊂ LFSLLFSL ⊂ L3LFSL ⊂ LREGLREG ⊂ L3
Dimostrazione per induzione sulla costruzione di Lbase L finito L = {w1,w2, . . . ,wn} allora si può scrivere come
unione di linguaggi lineari Li che generano ognuno una stringadi wi e la classe L3 è chiusa rispetto all’unione:
L =n⋃
i=0
Li
Si può facilmente dimostrare che ∀i ∈ [0, n] : Li ∈ L3
passo In tutti i tre casi possiamo considerare i linguaggi L1 e L2come lineari per ipotesi di induzione.Anche la loro unione/concatenazione/iterazione è in L3 per lachiusura di L3 rispetto a queste operazioni.Quindi L ∈ L3
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Pumping Lemma per Linguaggi Regolari
Teorema. Sia M = (Q, δ, q0,F ) ∈ FSA con n = |Q| e siaz ∈ T (M), |z | ≥ n. Allora z = uvw e uv∗w ⊂ T (M), cioè∀t ≥ 0 : uv tw ∈ T (M)Dimostrazione.Sia z = x1x2 · · · xk ∈ T (M) con k ≥ nSi rappresenta il riconoscimento di z con:
Se si ha |z | ≥ n si deve passare per almeno n + 1 statima n = |Q| quindi c’è uno stato ripetuto:
∃i , j , 0 ≤ i < j ≤ k : qi = qj
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Si osservi che z si può scrivere come uvw ove:u = x1x2 · · · xi
v = xi+1xi+2 · · · xj
w = xj+1xj+2 · · · xk
Avendo in ingresso z ∈ T (M), M si porta nello stato: δ∗(q0, z) ∈ Fma questo è lo stesso stato in cui si giunge tramite le stringhe:uvvw , uvvvw etc.,. . . (ciclando t volte tra qi e qj)Dunque: ∀t ≥ 0 : uv tw ∈ T (M)
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
Esercizi
1 Determinare la grammatica di tipo 3 che genera il linguaggiodescritto da b∗ + (ab)∗
2 Data la grammatica lineare G = (X ,V , S ,P) conX = {a, b, c}, V = {S ,A,B} eP = {S −→ bA | aS | b, A −→ aB | cS | a,
B −→ bA | cB | c}determinare un’espressione regolare per L(G )
3 Sia L = S(R) ove R = (aa + aaa)∗
costruire un automa che riconosce Ltrasformare l’NDA del punto 1. in FSA
4 Determinare una grammatica G di tipo 3 tale che:
L(G ) = {w ∈ {a, b}∗ | w ha un numero pari di a e dispari di b}
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
5 Sia L = S(R) ove R = ab(bb)∗ctrovare un automa (NDA) per riconoscere Ltrasformare l’automa NDA nell’FSA equivalente
6 Data la grammatica lineare G = (X ,V , S ,P) conX = {a, b}, V = {S ,B} eP = {S −→ aB B −→ aB | bS | a}determinare un automa FSA M tale che: T (M) = L(G )
7 Determinare una grammatica lineare G tale che:
L(G ) = {w ∈ {a, b}∗ | w 6= αaaβ, α, β ∈ {a, b}∗}8 Dimostrare che non sono regolari i linguaggi:
L1 = {akbk | k > 0}L2 = {anbmck | n > k, n,m, k > 0}
9 Dimostrare che il linguaggio non è regolare:
L = {anbmck | m > k , n,m, k > 0}
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
Esercizio 1. Determinare la grammatica di tipo 3 che genera illinguaggio descritto da b∗ + (ab)∗
Vediamo qual é il linguaggio corrispondente:S(b∗ + (ab)∗) = S(b∗) ∪ S((ab)∗) = (S(b))∗ ∪ (S(ab))∗ ={b}∗ ∪ (S(a) · S(b))∗ = {b}∗ ∪ ({a} · {b})∗ = {b}∗ ∪ {ab}∗G1 = (X1,V1, S1,P1) con X1 = {b}, V1 = {S1},P1 = {S1 −→ bS1 | λ}G2 = (X2,V2, S2,P2) con X2 = {a, b} V2 = {S2,B2},P2 = {S2 −→ aB2, B2 −→ b}G3 = (X3,V3, S3,P3) con X3 = X2, V3 = V2 ∪ {S3}P3 ={S3 −→ λ} ∪ (P2 \ {S2 −→ λ})∪∪{S2 −→ w ∈ P2} ∪ {A −→ xS3 | A −→ x ∈ P2} =={S3 −→ λ} ∪ P2 ∪ {S3 −→ aB2} ∪ {B2 −→ bS3} =={S3 −→ λ, S2 −→ aB2, B2 −→ b, S3 −→ aB2, B2 −→ bS3} =={S3 −→ λ | aB2, S2 −→ aB2, B2 −→ b | bS3}
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
Osservazione: S2 è inutile:P3 = {S3 −→ λ | aB2, B2 −→ b | bS3}Quindi L(G3) = {ab}∗
Per chiudere:G = (X ,V , S ,P) ove:X = X1 ∪ X3V = 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}
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
Esercizio 3. Sia L = S(R) ove R = (aa + aaa)∗
1. costruire un automa che riconosce L2. trasformare l’NDA del punto 1. in FSA1. Dato X = {a}, determiniamo le grammatiche G1 per L1 = {aa}e G2 per L2 = {aaa}:G1 = (X ,V1, S1,P1) con V1 = {S1,A} eP1 = {S1 −→ aA, A −→ a}G2 = (X ,V2, S2,P2) con V2 = {S2,B,C} eP2 = {S2 −→ aB, B −→ aC , C −→ a}Sia G3 = (X ,V3, S3,P3) la grammatica per L3 = L1 ∪ L2:con V3 = V1 ∪ V2 ∪ {S3} = {S3, S1, S2,A,B,C} eP3 ={S3 −→ w | S1 −→ w ∈ P1}∪
{S3 −→ w | S2 −→ w ∈ P2} ∪ P1 ∪ P2={S3 −→ aA | aB} ∪ P1 ∪ P2
che contiene produzioni inutili e quindi NT superflui (S1, S2)
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
Per l’iterazione di L3 costruisco:G = (X ,V , S ,P) conV = 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}
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
2. L’automa a stati finiti si ottiene mediante l’algoritmo dato nelladimostrazione del teorema di Kleene:
Q = V ∪ {q} = {S ,A,B,C , q}q0 = SF = {q, S}δ definita dalla matrice di transizione (trasposta):
δ S A B C qa {A,B} {S , q} {C} {S , q} ∅
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
graficamente:
per esercizio: trasformare l’automa in un FSA deterministico
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio
Teorema di KleenePumping Lemma per Linguaggi Regolari
Esercizi
Esercizio 1Esercizio 3Esercizio 8
Esercizio 8. Dimostrare che L1 = {akbk | k > 0} non è regolare
Supponendo che L ∈ LREG , per il teorema di Kleene sarà ancheL ∈ LFSL quindi ∃M = (Q, δ, q0,F ), tale che T (M) = LSia |Q| = n e si consideri w = anbn ∈ L.Leggendo le a di w , M deve passare per almeno n + 1 stati, quindici devono essere almeno 2 stati coincidenti: qi e qj con i < jQuindi nel cammino da q0 ad uno stato finale c’è un ciclo dilunghezza j − i . Allora si può ciclare un numero arbitrario di volte,aggiungendo ogni volta una sottostringa aj−i
Per il Pumping lemma dovrebbe essere
an+k(j−i)bn ∈ T (M) ∀k ≥ 0
Ma queste non sono stringhe di L (assurdo)pertanto L non è regolare
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio