Nicola Fanizzi
Corso di Linguaggi di Programmazione
Dipartimento di Informatica
Università degli Studi di Bari
17 marzo 2014
Sommario
2 Espressioni Regolari
1 Automi a Stati Finiti Definizioni
Automi Deterministici Corrispondenza
Rappresentazione di DFA
Configurazioni e Transizioni
Linguaggi/Espressioni
Funzione di transizione per Regolari
stringhe Proprietà delle
Classe dei Linguaggi a Stati Espressioni Regolari
Finiti
Esercizi
Automi 3 Teorema di Kleene
Non-deterministici
Linguaggio accettato da NFA
L3 ⊆ Ldf
Classe dei Linguaggi Ldf ⊆ L3
Non-deterministici Ldf ⊆ Lreg
Equivalenza tra DFA e Lreg ⊆ L3
NFA L3 ⊆ Lreg
Esercizi Esercizi
a b a a b a a b a a b a
Control
● Unit
q0 q1 q2 q3 q4 q5
δ : Q × Σ −→ Q
q0 è lo stato iniziale
F ⊆ Q è l’insieme degli stati finali o d’accettazione
Rappresentazione I
a0
a
q0 q q0
Rappresentazione II
. una matrice tavola di transizione con:
sulle righe
gli stati qi ∈ Q, i = 1, . . . , m
sulle colonne
i simboli dell’alfabeto d’ingresso aj ∈ Σ, j = 1, . . . , n
j
in ogni casella: qi = δ(qi , aj )
δ a1 a2 ··· an
→ q0 q10 q20 ··· qn0
∗q1 q11 q21 ··· qn1
.. .. .. .. ..
. . . . .
qm q1m q2m · · · qnm
Rappresentazione III
1 0
0 1
q0 q1 q2 0,1
δ 0 1
→ q0 q1 q0
q1 q1 q2
∗q2 q2 q2
Rappresentazione IV
q0 ∃q0 = δ(q, a) ∈ Q
t
δ (q, a) =
qp altrimenti
Configurazioni e Transizioni
Dato M = (Σ, Q, δ, q0 , F)
una configurazione di M è una coppia
(q, x) ∈ Q × Σ∗
δ^ : Q × Σ∗ −→ Q
∀q ∈ Q, ∀w ∈ Σ∗ :
(
q se w =
δ̂(q, w) =
δ δ̂(q, z), a se w = za
1
Altrove indicata anche con δ ∗ o δ̄ [Linz(2012), Hopcroft et al.,(2009)].
N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 17 marzo 2014 10 / 69
Automi a Stati Finiti Automi Deterministici
2
denotato spesso anche con T(·)
N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 17 marzo 2014 11 / 69
Automi a Stati Finiti Automi Deterministici
Esempio
DFA che riconosce parole con un numero pari di a o di b
a
q0 q1
a
b b b b
a
q2 q3
a
Esempi I
1 0
0 1
q0 q1 q2 0,1
Esempi II
0,3,6,9
Σ =
{0,1,2,3,4,5,6,7,8,9} start q0
M = (Σ, Q, δ, q0 , F) ∈ DFA
2,
Q = {q0 , q1 , q2 }
5,
5,
2,
8
7 1,
q0 : classe resto 0 4, 4,
7
1,
q1 : classe resto 1 1,4,7
q2 : classe resto 2 q1 q2
F = {q0 } 2,5,8
0,3,6,9 0,3,6,9
δ̂(q0 , 1234) = q1 ∈
6 F 1234 = 3 × 137 + 1
δ̂(q0 , 7290) = q0 ∈ F 7290 = 3 × 810 + 0
Automi Non-deterministici
δ : Q × Σ −→ ℘(Q)
Esempio NFA
q2
a a
a,b
b a,b
q0 q1 q3
δ a b
→ q0 {q0 } {q0 , q1 }
q1 {q2 , q3 } {q3 }
q2 {q3 } ∅
∗q3 ∅ ∅
δ^ : Q × Σ∗ → ℘(Q)
∀(q, w) ∈ Q × Σ∗ :
[{q} se w =
δ̂(q, w) = δ(q̂, a) se w = za, a ∈ Σ
q̂∈δ̂(q,z)
δ̂(q0 , w) ∩ F 6= ∅
b a a
q0 q1 q2 q3
Esempio
w = bba ∈ L(M) ?
({q0 }, bba) ` ({q0 , q1 }, ba) ` ({q0 , q1 , q3 }, a) ` ({q0 , q2 , q3 }, )
e {q0 , q2 , q3 } ∩ F = {q3 } 6= ∅ quindi M accetta w
(q2 , ) NO
(q1 , a)
Linguaggi Non-deterministici
L(M) = {w ∈ Σ∗ | δ̂(q0 , w) ∩ F 6= ∅}
Teorema (Equivalenza)
Le classi di linguaggi Ldf e Lnf coincidono
Dim.
δ 0 : Q × Σ −→ ℘(Q)
Sia MN = (Σ, QN , δN , qN
0 , FN ) un NFA
∀Q0 = {q1 , q2 , . . . , qk } ∈ QD ∀a ∈ Σ
δD (Q0 , a) = δD ({q1 , q2 , . . . , qk }, a) =
k
[ [
= δN (qj , a) = δN (q, a) (1)
j=1 q∈Q0
δ̂D (qD
0 , w) = δ̂D (qD
0 , va) =
def. δ̂D
= δD (δ̂D (qD
0 , v), a) =
(H)
= δD (δ̂N (qN
0 , v), a) =
(1) [
= δN (q, a) =
q∈δ̂N (qN
0 ,v)
def. δ̂N
= δ̂N (qN N
0 , va) = δ̂N (q0 , w)
0,1
q2
a a
a,b
b a,b
q0 q1 q3
b b
{q0 } {q0 , q1 } {q0 , q1 , q3 }
b
a b a
a
b
a
{q0 , q3 } {q0 , q2 , q3 }
Esercizi I
q0 q1
1
Esercizi II
4 Determinare L(M) e trasformare in DFA questo NFA:
a,b
b a
q0 q1 q2
a
q0 q1
a
b b b b
a
q2 q3
a
δ a b
→ ∗q0 q1 q0
∗q1 q2 q0
q2 q2 q2
b
a
a
q0 q1 q2 a.b
0 1
0,1
q0 q1
1
0 0,1
1 1
{q0 } {q1 } Q ∅
0
0,1
Linguaggi Regolari
Espressioni Regolari
Proprietà
Proposizione
Un linguaggio su Σ è regolare sse esso corrisponde ad una
espressione regolare di alfabeto Σ
Osservazioni
Un linguaggio regolare può essere descritto da più di una
espressione:
la funzione L non è iniettiva
Due espressioni regolari R1 e R2 si dicono equivalenti,
e si scrive R1 = R2 , sse
L(R1 ) = L(R2 )
N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 17 marzo 2014 40 / 69
Espressioni Regolari Corrispondenza Linguaggi/Espressioni Regolari
Esempi
data R = (a∗ (a + b)):
L(R) = L(a∗ (a + b)) = L(a∗ ) · L(a + b) =
(L(a))∗ · (L(a) ∪ L(b)) = {, a, aa, aaa, . . .} · {a, b} =
{a, aa, aaa, aaaa, . . . , b, ab, aab, aaab, . . .}
espressione regolare per il ling. delle stringhe d’ogni
lunghezza su Σ = {0, 1} con 0 e 1 alternati (in qualsiasi
ordine):
L(R1 ) = L(R2 ) = L
Teorema di Kleene
Teorema (Kleene)
Vale l’equivalenza:
L3 ≡ Ldf ≡ Lreg
Dim. [schema]
Tesi da provare
1 L3 ⊆ Ldf (ed anche Ldf ⊆ L3 )
2 Ldf ⊆ Lreg
3 Lreg ⊆ L3 (ed anche L3 ⊆ Lreg )
come pronunciare ”Kleene”: Kleene pronounced his last name: /’kleini/ as in ”clay-knee”. /’kli:ni/ and /’kli:n/
are common mispronunciations. (His son, Ken Kleene, wrote: ”As far as I am aware this pronunciation is incorrect in all
known languages. I believe that this novel pronunciation was invented by my father.”)
da http://en.wikipedia.org/wiki/Stephen_Cole_Kleene
Tesi L3 ⊆ Ldf / I
Dim. Sia L ∈ L3 cioè ∃G = (Σ, V, S, P), G di tipo 3: L(G) = L
Si deve costruire un DFA M = (Σ, Q, δ, q0 , F) tale che
L(M) = L(G)
1 ∀B −→ aC ∈ P : C ∈ δ(B, a) a
q
2 ∀B −→ a ∈ P : q ∈ δ(B, a) B
Tesi L3 ⊆ Ldf / II
Rij = {w ∈ Σ∗ | δ̂(qi , w) = qj }
n+1
Osservato che: Rij = Rij , si dimostra per induzione su k che
w1 qk wm
wk
qi qj
transito per stati da q0 a qk−1
I casi sono due:
1 w non fa transitare M nemmeno attraverso qk ,
quindi w ∈ Rkij (e Rkij è regolare per ipotesi ind.)
2 w fa transitare M in qk e risulta concatenazione di
m > 1 sottostringhe:
w = w1 w2 · · · wm−1 wm
con:
w1 ∈ Rkik wt ∈ Rkkk 1<t<m wm ∈ Rkkj
N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 17 marzo 2014 53 / 69
Teorema di Kleene Ldf ⊆ Lreg
Da Rk+1
ij = Rkij ∪ Rkik · (Rkkk )∗ · Rkkj segue Rk+1
ij ∈ Lreg
in quanto espresso attraverso unione, prodotto e iterazione di
linguaggi che sono regolari (per ipotesi induttiva)
Risulta dimostrato che ∀k ∈ {0, . . . , n} : Rkij ∈ Lreg perciò
Rn+1
[ [
L(M) = R0j = 0j
qj ∈F qj ∈F
R11
q1 p1
Q1 P1
R1m
S s
Qk Rk1
Pm
qk pm
Rkm
Rij + Qi S∗ Pj
R11 + Q1 S∗ P1
q1 p1
R1
m +Q
1S ∗
Pm
S P1
∗
+ Q k
R k1
qk pm
Rkm + Qk S∗ Pm
R U R
S
q0 q q0
T
Esempio
0,1
1 0,1 0,1
A B C D
0+1
1 0+1 0+1
A B C D
0+1
1(0 + 1) 0+1
A C D
0+1
1(0 + 1)(0 + 1)
A D RAD = (0 + 1)∗ 1(0 + 1)(0 + 1)
0+1
1(0 + 1)
A C RAC = (0 + 1)∗ 1(0 + 1)
Esempio
b
q0 q1 q0
a a b + bb
a b ab a
b a
//////
q2 b q3 q2 b q3
///
///
q0 ab∗ ab (R∗ + SU ∗ T)∗ SU ∗
b + bb R = ab∗ ab S=a
T = b + bb U =∅
a
Tesi Lreg ⊆ L3 / I
Tesi Lreg ⊆ L3 / II
4
Se ∈ L allora calcolare R0 per L \ {} e poi R = R0 + per L.
N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 17 marzo 2014 63 / 69
Teorema di Kleene L3 ⊆ Lreg
Esempio
S −→ aS|bA|
A −→ aA|bS|
eliminando subito la produzione A −→ :
S −→ aS|bA|b|
A −→ aA|bS|a
Si costruisce il sistema:
S = aS + bA + b +
A = aA + bS + a
eliminando
la ricorsione su A:
S = aS + bA + b +
A = a∗ (bS + a)
sostituendo A nella def. di S, si ha:
S = aS + b(a∗ (bS + a)) + b +
= aS + ba∗ bS + ba∗ a + b +
= (a + ba∗ b)S + ba∗ a + b +
A = a∗ (bS + a)
eliminando la ricorsione su S:
S = (a + ba∗ b)∗ (ba∗ a + b + )
A = ···
Quindi la soluzione è RS = (a + ba∗ b)∗ (ba∗ a + b + )
N. Fanizzi Linguaggi di prog.+Lab Linguaggi Regolari 17 marzo 2014 64 / 69
Teorema di Kleene Esercizi
Esercizi I
Esercizi II
Esercizi III
Esercizi IV
2. L’automa a stati finiti si ottiene mediante l’algoritmo dato nella
dimostrazione del teorema di Kleene:
Q = V ∪ {q} = {S, A, B, C, q}
q0 = S
F = {q, S}
δ definita da:
a
a A q
δ a
a
→ ∗S {A, B}
a A {S, q}
S a
B {C}
C {S, q}
a
a ∗q ∅
B C