Proprietà dei Linguaggi Regolari - LACAM

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.