Sei sulla pagina 1di 12

Note del corso di Calcolabilit`a e Linguaggi

Formali - Lezione 2
Alberto Carraro
12 ottobre 2011
DAIS, Universit` a Ca Foscari Venezia http://www.dsi.unive.it/
~
acarraro
1 Automi a stati niti deterministici e non
Tra gli automi a stati niti si distinguono due categorie: quelli deterministici
(DFA) e quelli non-deterministici (NFA). I primi sono un caso particolare dei
secondi.
Denition 1 (DFA). Un automa a stati niti deterministico (DFA, in breve)
`e una quintupla / = (Q, , , q
0
, F) dove
Q `e linsieme nito degli stati,
`e lalfabeto di input,
: Q Q `e la funzione (parziale) di transizione,
q
0
Q `e lo stato iniziale,
F Q `e linsieme degli stati nali.
La prossima tappa `e denire il linguaggio accettato da un automa a stati
niti deterministico. A tal ne dobbiamo precisare cosa signica dire che una
stringa `e accettata da un tale automa.
Denition 2 (Funzione di transizione estesa). Dato un DFA / = (Q, , , q
0
, F)
deniamo la sua funzione di transizione estesa

: Q

Q per induzione
sulla lunghezza delle stringhe in input nella maniera seguente:

(q, ) = q;

(q, xa) = (

(q, x), a)
Denition 3 (Linguaggio di un DFA). Sia / = (Q, , , q
0
, F) un DFA.
Diciamo che una stringa w

`e accettata da / sse

(q
0
, w) F. Il linguaggio
accettato da /, indicato con L(/), `e linsieme delle stringhe accettate da /,
ovvero L(/) = w

:

(q
0
, w) F.
Notazione. Indichiamo con T(Q) linsieme delle parti di Q, ovvero linsieme
di tutti i sottoinsiemi di Q. Inoltre indichiamo con T
f
(Q) linsieme di tutti i
sottoinsiemi niti di Q.
Denition 4 (NFA). Un automa a stati niti non-deterministico (NFA, in
breve) `e una quintupla / = (Q, , , q
0
, F) dove
Q `e linsieme nito degli stati,
2 A. Carraro
`e lalfabeto di input,
: Q T
f
(Q) `e la funzione di transizione,
q
0
Q `e lo stato iniziale,
F Q `e linsieme degli stati nali.
Notiamo che per gli NFA la funzione di transizione `e pensata come una
funzione totale: infatti per uno stato q non avente archi uscenti etichettati con
input a si pu`o equivalentemente dire che (q, a) = .
Si pu`o constatare direttamente che ogni DFA `e un NFA in cui ogni valore
(q, a) della funzione di transizione `e un insieme di cardinalit`a uno. Viceversa vi
sono degli NFA che non sono dei DFA. Andiamo ora a generalizzare le denizioni
2 e 3 al caso degli NFA.
Denition 5 (Funzione di transizione estesa). Dato un NFA / = (Q, , , q
0
, F)
deniamo la sua funzione di transizione estesa

: Q

T
f
(Q) per induzione
sulla lunghezza delle stringhe nella maniera seguente:

(q, ) = q;

(q, xa) =

(q,x)
(p, a)
Denition 6 (Linguaggio di un NFA). Sia / = (Q, , , q
0
, F) un NFA.
Diciamo che una stringa w

`e accettata da / sse

(q
0
, w) F ,= . Il
linguaggio accettato da /, indicato con L(/), `e linsieme delle stringhe accettate
da /, ovvero L(/) = w

:

(q
0
, w) F ,= .
2 Equivalenza di automi niti deterministici e non
Abbiamo osservato che la classe degli NFA contiene propriamente quella dei
DFA. Tuttavia in questa sezione dimostreremo che le due classi hanno la stessa
potenza, ovvero che la classe dei linguaggi accettati dagli NFA coincide con quella
dei linguaggi accettati dai DFA. Un verso di questa doppia inclusione `e banale.
Se L `e un linguaggio tale che esiste un DFA / per cui L = L(/), allora esiste
anche un NFA B tale che L = L(B).
Laltra inclusione invece non `e triviale e richiede una dimostrazione. A tale
scopo si utilizza una particolare costruzione, chiamata la costruzione per sot-
toinsiemi (o determinizzazione), che trasforma un NFA in un DFA preservando
il linguaggio accettato dallautoma di partenza.
Denition 7 (Determinizzazione). Sia / = (Q
A
, ,
A
, q
0
, F
A
) un NFA.
Deniamo un DFA B = (Q
B
, ,
B
, q
0
, F
B
) come segue:
Q
B
= T(Q
A
);
F
B
= S Q
A
: S F
A
,= ;

B
(S, a) =

pS

A
(p, a)
Theorem 1 (Equivalenza). Sia / un NFA e sia B il DFA della Denizione
7. Allora L(/) = L(B).
Note del corso di Calcolabilit` a e Linguaggi Formali - Lezione 2 3
Proof. Sia / = (Q
A
, ,
A
, q
0
, F
A
) un NFA e sia B = (Q
B
, ,
B
, q
0
, F
B
)
denito come nella Denizione 7. Dimostriamo per induzione sulla lunghezza
di w

che

A
(q
0
, w) =

B
(q
0
, w).
Base. La sola stringa di lunghezza 0 `e e per denizione abbiamo

A
(q
0
, ) =
q
0
=

B
(q
0
, ).
Passo induttivo. Sia w una stringa di lunghezza 1, ovvero w = xa. Per
ipotesi induttiva abbiamo che

A
(q
0
, x) =

B
(q
0
, x). Quindi

A
(q
0
, xa) =

A
(q
0
,x)

A
(p, a) , per la Def. 5.
=
B
(

A
(q
0
, x), a) , per la Def. 7,
=
B
(

B
(q
0
, x), a) , per lipotesi induttiva,
=

B
(q
0
, xa) , per la Def. 2.
Per concludere osserviamo che

A
(q
0
, w) F
A
,=

B
(q
0
, w) F
B
, da cui
risulta che L(/) = L(B). .
3 Automi a stati niti non-deterministici con -transizioni
Denition 8 (-NFA). Un automa a stati niti non-deterministico con -transizioni
(-NFA, in breve) `e una quintupla / = (Q, , , q
0
, F) dove
Q `e linsieme nito degli stati,
`e lalfabeto di input (non contenente ),
: Q( ) T
f
(Q) `e la funzione di transizione,
q
0
Q `e lo stato iniziale,
F Q `e linsieme degli stati nali.
Si pu`o constatare direttamente che ogni NFA `e un -NFA in cui ogni non
compare mai come secondo argomento della funzione di transizione. Viceversa vi
sono degli -NFA che non sono degli NFA. Come fatto in precedenza, deniamo
la funzione di transizione estesa di un -NFA per poi denirne il linguaggio
accettato.
Stavolta per`o `e richiesto un passo preliminare: la determinazione delle cosid-
dette -chiusure.
Denition 9 (-chiusura). Dato uno stato q Q, la sua -chiusura n-esima,
indicata con ecl
n
(q), `e denita per induzione su n come segue:
ecl
0
(q) = q; ecl
n+1
(q) =

pecl
n
(q)
(p, )
Inne deniamo la -chiusura ecl(q) di q ponendo ecl(q) =

n0
ecl
n
(q).
Per comodit`a estendiamo la denizione della -chiusura ad un insieme di stati
S Q ponendo ecl(S) =

pS
ecl(p).
4 A. Carraro
Denition 10 (Funzione di transizione estesa). Dato un -NFA / = (Q, , , q
0
, F)
deniamo la sua funzione di transizione estesa

: Q

T
f
(Q) per induzione
sulla lunghezza delle stringhe nella maniera seguente:

(q, ) = ecl(q);

(q, xa) = ecl(

(q,x)
(p, a))
A questo punto diciamo che una stringa w

`e accettata da /sse

(q
0
, w)
F ,= . Quindi L(/) `e denito esattamente come nella Denizione 6.
Abbiamo osservato che la classe degli -NFA contiene propriamente quella
degli NFA. Tuttavia dimostreremo che le due classi hanno la stessa potenza,
ovvero che la classe dei linguaggi accettati dagli -NFA coincide con quella dei
linguaggi accettati dagli NFA. Un verso di questa doppia inclusione `e banale. Se
L `e un linguaggio tale che esiste un DFA / per cui L = L(/), esiste anche un
NFA (e quindi un -NFA) B tale che L = L(B).
Laltra inclusione invece non `e triviale e richiede una dimostrazione. A tale
scopo si utilizza una particolare costruzione, chiamata la eliminazione delle
-transizioni, che trasforma un -NFA in un DFA preservando il linguaggio
accettato dallautoma di partenza. Questa costruzione ci d`a il risultato che vol-
evamo, poiche ogni DFA `e anche un NFA.
Denition 11 (Eliminazione delle -transizioni). Sia / = (Q
A
, ,
A
, q
0
, F
A
)
un -NFA. Deniamo un DFA B = (Q
B
, ,
B
, ecl(q
0
), F
B
) come segue:
Q
B
= S Q
A
: S = ecl(S);
F
B
= S Q
B
: S F
A
,= ;

B
(S, a) = ecl(

pS

A
(p, a))
Theorem 2 (Equivalenza). Sia / un -NFA e sia B il DFA della Denizione
11. Allora L(/) = L(B).
Proof. Sia / = (Q
A
, ,
A
, q
0
, F
A
) un -NFA e sia B = (Q
B
, ,
B
, ecl(q
0
), F
B
)
dato come nella Denizione 11.
Dimostriamo per induzione sulla lunghezza di w

che

A
(q
0
, w) =

B
(ecl(q
0
), w).
Base. La sola stringa di lunghezza 0 `e e per denizione abbiamo

A
(q
0
, ) =
ecl(q
0
) =

B
(ecl(q
0
), ).
Passo induttivo. Sia w una stringa di lunghezza 1, ovvero w = xa. Per
ipotesi induttiva abbiamo che

A
(q
0
, x) =

B
(ecl(q
0
), x). Quindi

A
(q
0
, xa) = ecl(

A
(q
0
,x)

A
(p, a)) , per la Def. 10.
= ecl(

B
(ecl(q
0
),x)

A
(p, a)) , per lipotesi induttiva,
=
B
(

B
(ecl(q
0
), x), a) , per la Def. 11,
=

B
(ecl(q
0
), xa) , per la Def. 2.
Note del corso di Calcolabilit` a e Linguaggi Formali - Lezione 2 5
Per concludere osserviamo che

A
(q
0
, w) F
A
,=

B
(ecl(q
0
), w) F
B
, da cui
risulta che L(/) = L(B). .
Notiamo che non abbiamo trasformato l-NFA in un NFA che accetta lo
stesso linguaggio. Perche? Provate a farlo da voi.
4 Linguaggi regolari e loro propriet`a
Denition 12 (Linguaggio regolare). Un linguaggio L `e regolare sse esiste
un DFA / tale che L = L(/).
Indichiamo con REG la classe dei linguaggi regolari.
Notiamo che, in virt` u dei Teoremi 1 e 2, nella Denizione 12 si pu`o equivalen-
temente richiedere lesistenza di un NFA (o di un -NFA) / tale che L = L(/).
Faremo uso di questo fatto in seguito.
Theorem 3. Ogni linguaggio nito `e regolare.
Proof. Sia L = w
1
, . . . , w
n
un linguaggio su . Deniamo un opportuno DFA
/ = (Q
A
, ,
A
, q
0
, F
A
) come seque:
Q
A
= x

: w L. x `e presso di w
q
0
=
F
A
= L

A
(x, a) =

xa se xa Q
A
indenito altrimenti
Ora `e facile dimostrare per induzione sulla lunghezza delle parole in Q
A
che

A
(x, a) = xa per cui L(/) = w

A
(, w) F
A
= L. Ci`o dimostra che
L `e regolare. .
In questa sezione ci occupiamo delle propriet`a di chiusura della classe dei
linguaggi regolari. Dimostreremo che:
lintersezione di due linguaggi regolari `e un linguaggio regolare,
il complemento di un linguaggio regolare `e ancora regolare,
lunione di due linguaggi regolari `e un linguaggio regolare,
la dierenza di due linguaggi regolari `e un linguaggio regolare,
la concatenazione di due linguaggi regolari `e un linguaggio regolare,
la potenza di un linguaggio regolare `e ancora regolare,
la chiusura di Kleene di linguaggio regolare `e ancora regolare,
il rovesciamento di linguaggio regolare `e ancora regolare.
Data la Denizione 12, bisogna di volta in volta mostrare lesistenza di un
opportuno DFA che riconosca il linguaggio unione, intersezione ecc... Questo si
pu`o fare mediante delle costruzioni che andremo a denire in questa sezione.
6 A. Carraro
Denition 13 (Prodotto di DFA). Siano / = (Q
A
, ,
A
, q
0
, F
A
) e
B = (Q
B
, ,
B
, q

0
, F
B
) due DFA. Deniamo il DFA /B = (Q
AB
, ,
AB
, (q
0
, q

0
), F
AB
)
come segue:
Q
AB
= Q
A
Q
B
,

AB
((p, q), a) = (
A
(p, a),
B
(q, a)),
F
AB
= F
A
F
B
.
Theorem 4 (Intersezione). Lintersezione di due linguaggi regolari `e regolare.
Proof. Siano L, L

due linguaggi regolari. Allora esistono due DFA /, B tali che


L = L(/) e L

= L(B). Ora abbiamo che L(/) L(B) = w

A
(q
0
, w)
F
A
,

B
(q

0
, w) F
B
= w

AB
((q
0
, q

0
), w) F
AB
= L(/ B).
Quindi /B `e un DFA che accetta L L

, dimostrando che L L

`e regolare.
.
Denition 14 (Complemento di DFA). Sia / = (Q
A
, ,
A
, q
0
, F
A
) un
DFA. Deniamo suo DFA complementare /
c
ponendo /
c
= (Q
A
, ,
A
, q
0
, Q
A

F
A
).
Theorem 5 (Complemento). Il complemento di un linguaggio regolare `e re-
golare.
Proof. Sia L un linguaggio regolare. Allora esiste un DFA / tale che L = L(/).
Ora abbiamo che (L(/))
c
= w

A
(q
0
, w) Q
A
F
A
= L(/
c
). Quindi
/
c
`e un DFA che accetta L
c
, dimostrando che L
c
`e regolare. .
Theorem 6 (Unione e dierenza). Il lunione e la dierenza di due linguaggi
regolari sono regolari.
Proof. Siano L, L

due linguaggi regolari. Abbiamo che L L

= (L
c
(L

)
c
)
c
e
L L

= L (L

)
c
, quindi per i Teoremi 4 e 5 i linguaggi L L

e L L

sono
entrambi regolari. .
Remark 1. Sia un alfabeto. Notiamo che i linguaggi regolari su sono chiusi
per unione nita ma non innita. Infatti se cos` fosse siccome ogni insieme del
tipo w con w

`e regolare, allora anche ogni sottoinsieme di

sarebbe
regolare. Vedremo pi` u avanti che ci`o `e falso: esistono dei linguaggi che non sono
regolari.
Denition 15 (Concatenazione di -NFA). Siano / = (Q
A
, ,
A
, q
0
, F
A
)
e B = (Q
B
, ,
B
, q

0
, F
B
) due -NFA. Deniamo l-NFA /B = (Q
AB
, ,
AB
, q
0
, F
B
)
come segue:
Q
AB
= Q
A
Q
B
,

AB
(p, a) =

A
(p, a) se p Q
A

B
(p, a) se p Q
B

AB
(p, ) =

A
(p, ) se p Q
A
F
A

A
(p, ) q

0
se p F
A

B
(p, ) se p Q
B
Note del corso di Calcolabilit` a e Linguaggi Formali - Lezione 2 7
Theorem 7 (Concatenazione). La concatenazione di due linguaggi regolari `e
regolare.
Proof. Siano L, L

due linguaggi regolari. Allora esistono due -NFA /, B tali che


L = L(/) e L

= L(B). Ora abbiamo che L(/)L(B) = xy

A
(q
0
, x)
F
A
,

B
(q

0
, y) F
B
= w

AB
(q
0
, w) F
B
= L(/ B). Quindi / B `e
un -NFA che accetta LL

, dimostrando che LL

`e regolare. .
Theorem 8 (Potenza). Ogni potenza di un linguaggio regolare `e regolare.
Proof. Sia L un linguaggio regolare. Dimostriamo per induzione su n che L
n
`e
regolare.
Base. Per n = 0 abbiamo L
0
= , che `e un linguaggio regolare.
Passo induttivo. Per n > 0 abbiamo L
n
= L
n1
L. Ora L
n1
`e regolare per
ipotesi induttiva, ed L `e regolare per ipotesi, quindi per il Teorema 7 anche L
n
`e regolare. .
Denition 16 (Chiusura di Kleene di -NFA). Sia / = (Q
A
, ,
A
, q
0
, F
A
)
un -NFA. Deniamo l-NFA /

= (Q
A
, ,
A
, q
0
, F
A
) come segue:

A
(p, a) =
A
(p, a);
A
(p, ) =

A
(p, ) se p Q
A
F
A

A
(p, ) q
0
se p F
A
Theorem 9 (Chiusura di Kleene). La chiusura di Kleene di un linguaggio
regolare `e regolare.
Proof. Sia L un linguaggio regolare. Allora esiste un -NFA / tale che L = L(/).
Ora abbiamo che (L(/))

=

n0
x
1
x
n

: i = 1, . . . , n.

A
(q
0
, x
i
)
F
A
= w

A
(q
0
, w) F
A
= L(/

). Quindi /

`e un -NFA che accetta


L

, dimostrando che L

`e regolare. .
Denition 17 (Rovesciamento di -NFA). Sia / = (Q
A
, , , q
0
, F) un -
NFA. Deniamo il DFA /
R
= (
A
R, ,
A
R, q

0
, F
A
R) come segue:
Q
A
R = Q
A
q

0

A
R(q, a) sse q
A
(p, a),
p
A
R(q, a) sse q
A
(p, a), per ogni p, q Q
A
p
A
R(q, ) sse q
A
(p, ), per ogni p, q Q
A

A
R(q

0
, ) = F
A
F
A
R = q
0
.
Questa costruzione, seppure pu`o sembrare complessa, dice che lautoma /
R
`e ottenuto rovesciando tutti gli archi presenti in /. Lo stato nale di /
R
`e quello
iniziale di / e lo stato iniziale di /
R
`e un nuovo stato, collegato tramite -mosse
a quelli che erano gli stati nali di /.
Theorem 10 (Rovesciamento). Il rovesciamento di un linguaggio regolare `e
regolare.
Proof. Sia L un linguaggio regolare. Allora esiste un -NFA / tale che L = L(/).
Ora abbiamo che (L(/))
R
= w
R
:

A
(q
0
, w) F
A
= x :

A
R(q

0
, x) F
A
R =
L(/
R
). Quindi /
R
`e un -NFA che accetta L
R
, dimostrando che L
R
`e regolare.
.
8 A. Carraro
5 Caratterizzazioni alternative dei linguaggi regolari
5.1 Espressioni regolari
In questa sezione presentiamo le cosiddette espressioni regolari, un tipo di
notazione per denire linguaggi. Da una descrizione dei linguaggi regolari fondata
su modelli di automa (DFA, NFA, -NFA) volgiamo ora lattenzione ad una
descrizione algebrica.
Denition 18 (Espressioni regolari). Sia un alfabeto. Deniamo per in-
duzione le espressione regolari su come segue:
le costanti e sono espressioni regolari ed ogni elemento di `e unespressione
regolare;
se r, s sono espressioni regolari, allora r s `e unespressione regolare;
se r, s sono espressioni regolari, allora r + s `e unespressione regolare;
se r `e unespressione regolare, allora r

`e unespressione regolare.
Denition 19 (Linguaggio di unespressione regolare). Deniamo per in-
duzione il linguaggio L(r) associato ad un espressione regolare r come segue:
L() = , L() = e L(a) = a, per ogni a ;
L(r s) = L(r) L(s);
L(r + s) = L(r) L(s);
L(r

) = (L(r))

.
Theorem 11. Sia r unespressione regolare. Allora esiste un -NFA / tale che
L(r) = L(/).
Proof. Procediamo per induzione sulla costruzione delle espressioni regolari.
Base. Riportiamo qui sotto gli automi niti che riconoscono, rispettivamente, i
linguaggi , e a.
// ?>=< 89:;
0

// ?>=< 89:; /.-, ()*+
1
// ?>=< 89:;
0
?>=< 89:; /.-, ()*+
1
// ?>=< 89:;
0
a
// ?>=< 89:; /.-, ()*+
1
Passo induttivo. Siano r, s due espressioni regolari e supponiamo di aver
costruito due -NFA /, B tali che L(/) = L(r) e L(B) = L(s). Allora
Avendo due automi /, B che riconoscono L(r) e L(s), rispettivamente, il
seguente `e un automa che riconosce L(r + s).
?>=< 89:;
/

?
?
?
?
?
?
?
?
?
// ?>=< 89:;
0

??










?
?
?
?
?
?
?
?
?
?>=< 89:; /.-, ()*+
1
?>=< 89:;
B

??









Note del corso di Calcolabilit` a e Linguaggi Formali - Lezione 2 9
La lettera / cerchiata simboleggia lintero automa / e la -transizione en-
trante indica un arco etichettato da che si collega allo stato iniziale di /;
inoltre la -transizione che esce indica un insieme di archi etichettati da ,
ciascuno uscente da uno stato nale di /.
Avendo due automi /, B che riconoscono L(r) e L(s), rispettivamente, il
seguente `e un automa che riconosce L(r s).
// ?>=< 89:;
/

// ?>=< 89:;
B

// ?>=< 89:; /.-, ()*+
1
Avendo un automa / che riconosce L(r), il seguente `e un automa che ri-
conosce L(r

).
// ?>=< 89:;
/

TT

// ?>=< 89:; /.-, ()*+


0
.
Theorem 12. Sia / un DFA. Allora esiste unespressione regolare r tale che
L(/) = L(r).
Proof. Possiamo assumere senza perdita di generalit`a che linsieme degli stati
di / sia 1, . . . , n, per un certo n 1. Deniamo ora L
(k)
ij
come il linguaggio
formato da tutte e sole le stringhe w tali che:
(1)

A
(i, w) = j e
(2) per ogni presso non banale x di w abbiamo

A
(i, x) k.
Andiamo quindi a costruire, per induzione su k, unespressione regolare R
(k)
ij
avente la propriet`a che L(R
(k)
ij
) = L
(k)
ij
.
Base. Supponiamo k = 0. Distinguiamo due casi:
Se i = j allora poniamo X = a :
A
(i, a) = i e R
(0)
ii
= +

aX
a.
Se i ,= j allora poniamo X = a :
A
(i, a) = j e R
(0)
ij
=

aX
a, con
la convenzione che

a
a = .
`
E immediato vericare che L(R
(0)
ij
) = L
(0)
ij
.
Passo induttivo. Supponiamo di aver determinato R
(k1)
ij
, per ogni coppia
(i, j) di stati in Q
A
. Allora poniamo R
(k)
ij
= R
(k1)
ij
+R
(k1)
ik
(R
(k1)
kk
)

R
(k1)
kj
.
Ancora una volta non `e dicile vedere che L(R
(k)
ij
) = L
(k)
ij
, poiche
L
(k)
ij
= L
(k1)
ij
+ L
(k1)
ik
(L
(k1)
kk
)

L
(k1)
kj
.
In questo modo arriviamo a calcolare R
(n)
ij
, per ogni coppia (i, j) di stati. Sia
i lo stato iniziale di /; a questo punto deniamo lespressione regolare
r =

jF
A
R
(n)
ij
e per costruzione otteniamo che L(r) =

jF
A
L
(n)
ij
= L(/).
.
Corollary 1. Un linguaggio L `e regolare sse esiste unespressione regolare r tale
che L = L(r).
10 A. Carraro
Proof. Segue immediatamente dai Teoremi 11 e 12. .
Theorem 13 (Teorema di Kleene per i linguaggi regolari). Linsieme
REG dei linguaggi regolari su un dato alfabeto `e la pi` u piccola famiglia T di
sottoinsiemi di

tale che
T contiene tutti i sottoinsiemi niti di

,
T `e chiusa per unione e concatenazione nita,
T `e chiusa per stella di Kleene.
Proof. Segue dal Corollario 1, poiche REG coincide con linsieme dei linguaggi
generati da espressioni regolari, che a loro volta sono per denizione introdotti
tramite le propriet`a algebriche sopraccitate. .
La famiglia dei linguaggi regolari su un dato alfabeto `e un insieme, ma di
solito si parla di REG come della classe dei linguaggi regolari. Questa terminolo-
gia va usata quando non si fa riferimento ad un alfabeto ssato, perche allora la
famiglia diventa troppo grande per essere un insieme.
Notiamo inoltre come non sia immediato dimostrare, partendo dalla teoria
delle espressioni regolari e dal Corollario 1, che REG `e chiusa per complemen-
tazione.
5.2 Grammatiche regolari
Denition 20 (Grammatica regolare). Una grammatica regolare su un al-
fabeto `e una quadrupla ( = (V
T
, V
N
, P, S) dove
V
T
`e un sottoinsieme di , detto linsieme dei terminali;
V
N
`e linsieme dei non-terminali (si assume V
N
V
T
= );
S V
N
`e il simbolo iniziale;
P, detto linsieme delle produzioni, `e un insieme nito di regole che denis-
cono una relazione (V
N
V
T
V
N
V
T
). In altre parole le regole
possono assumere la forma A aB, A a, oppure A dove le lettere
maiuscole A, B, . . . variano su V
N
e le lettere minuscole a, b, . . . variano su
V
T
Per abbreviare le notazioni nella scrittura delle produzioni grammaticali
scriveremo A aB [ aC ove vi siano due produzioni A aB e A aC.
Deniamo la concatenazione

di produzioni informalmente, con un esem-


pio, come segue: se A aB e B bC sono due produzioni, allora A

abC.
Denition 21 (Linguaggio generato da una grammatica). Il linguaggio
generato da una grammatica ( `e linsieme L(() denito come segue:
L(() = w V

T
: S

w.
Theorem 14. Se un linguaggio L `e regolare, allora esiste una grammatica re-
golare ( tale che L = L(().
Note del corso di Calcolabilit` a e Linguaggi Formali - Lezione 2 11
Proof. Sia / = (Q, , , q
0
, F) un DFA tale che L(/) = L. Costruiamo una
grammatica ( = (V
T
, V
N
, P, S) tale che L(/) = L((). Per evitare confusione
supponiamo di avere, per ogni stato q, un non-terminale corrispondente A
q
.
Poniamo:
V
N
= A
q
: q Q;
V
T
= ;
S = A
q
0
;
inne deniamo linsieme P delle produzioni come il pi` u piccolo che soddisfa
le seguenti propriet`a:
se (q, b) = p, allora A
q
bA
p
appartiene a P;
se (q, b) F, allora A
q
b appartiene a P.
Non `e complicato ora mostrare che

(q
0
, w) F sse S

w, da cui segue il
risultato che volevamo. .
Theorem 15. Sia ( una grammatica regolare. Allora L(() `e un linguaggio re-
golare.
Proof. Sia ( = (V
T
, V
N
, P, S) una grammatica regolare su . Dimostriamo che
esiste un -NFA / = (Q, , , q
0
, F) tale che L(() = L(/). Per evitare confusione
supponiamo di avere, per ogni terminale a, uno stato corrispondente q
a
e per
ogni non-terminale A uno stato q
A
; inoltre prendiamo uno stato q

. Poniamo
Q = q
A
: A V
N
q
a
: a V
T
q

;
F = q
a
: a V
T
q

;
q
0
= q
S
;
`e la pi` u piccola funzione parziale (in termini del suo graco) che soddisfa
le seguenti propriet`a:
se A bB `e una produzione di P, allora q
B
(q
A
, b);
se A b `e una produzione di P, allora q
b
(q
A
, );
se A `e una produzione di P, allora q

(q
A
, ).
Non `e complicato ora mostrare che S

w sse

(q
S
, w) F, da cui segue il
risultato che volevamo. .
5.3 Pumping lemma tipo 3
Concludiamo la sezione dedicata alle descrizioni alternative per il linguaggi re-
golari con il cosiddetto approccio descrittivo. Esso non risulta in una caratter-
izzazione dei linguaggi regolari, ma in una condizione necessaria alla regolarit`a,
che si concretizza nel cosiddetto Pumping Lemma.
Lemma 1 (Pumping Lemma tipo 3). Se L `e un linguaggio regolare, allora
esiste una costante n 1, che dipende solo da L, tale che per ogni w L, con
[w[ n, esistono stringhe u, v, z tali che
w = uvz,
12 A. Carraro
[uv[ n,
[v[ 1,
per ogni k 0 abbiamo uv
k
z L.
Proof. Supponiamo L regolare. Allora esiste un DFA / tale che L = L(/).
Sia n il numero di stati di / e sia w una stringa di lunghezza n. Poniamo
X =

A
(q
0
, x) : x presso di w. Poiche [Q
A
[ = n e w ha almeno n+1 pressi,
esistono necessariamente due pressi u, u

di w tali per cui


A
(q
0
, u) =

A
(q
0
, u

).
Possiamo assumere, senza perdita di generalit`a, che u sia presso di u

. Rias-
sumendo quindi esistono due stringhe v, z tali che uv = u

e u

z = w; quindi
uvz = w. Notiamo inoltre che

A
(

A
(q
0
, u), v) =

A
(q
0
, u), ovvero v porta
lautoma da

A
(q
0
, u) in se stesso, e quindi la sequenza di input che compon-
gono v pu`o essere ripetuta un numero arbitrario di volte. Inne, poich`e w L,
abbiamo che

A
(

A
(q
0
, u

), z) F; quindi per il ragionamento fatto qui sopra

A
(

A
(q
0
, uv
k
), z) F per ogni k 0. Questo dimostra che uv
k
z L per ogni
k 0. .
Il Lemma 1 trova la sua migliore applicazione nel provare quando un linguag-
gio non `e regolare. Difatti se, dato L, non si verica che non esiste una costante
n che soddisfa le propriet`a dellenunciato, allora L non pu`o essere regolare.
Remark 2. Notiamo che il reciproco del Pumping Lemma non vale. In altre pa-
role vi `e un linguaggio non regolare L (in verit`a ve ne sono molti), tale per cui
esiste una costante n, che dipende solo da L, tale che per ogni w L, con [z[ n,
esistono stringhe u, v, w tali che
w = uvz,
[uv[ n,
[v[ 1,
per ogni k 0 abbiamo uv
k
z L.
6 Esercizi
Example 1. Dimostrare se i seguenti linguaggi sono o meno regolari:
L
1
= 0
n
1
n
: n 1
L
2
= 0
n
: n `e potenza di 2
L
3
= w 0, 1

: [w[ 1000
L
4
= w 0, 1

: [w[ > 1000


L
5
= ww
R
: w 0, 1

L
6
=

100
i=1
w 0, 1

: i [w[ 1000
L
7
= w 0, 1

: [w[ `e multiplo di 5
Example 2. Sia L un linguaggio regolare.
`
E vero che ogni linguaggio L

L `e
anchesso regolare?

Potrebbero piacerti anche