Sunteți pe pagina 1din 37

Limbaje Formale, Automate şi Compilatoare

Curs 3

2020-21

LFAC (2020-21) Curs 3 1 / 25


Structura cursului

1 Automate finite cu ǫ-tranziţii

2 Automatul determinist minimal

LFAC (2020-21) Curs 3 2 / 25


Automate finite cu ǫ-tranziţii

Curs 3

1 Automate finite cu ǫ-tranziţii

2 Automatul determinist minimal

LFAC (2020-21) Curs 3 3 / 25


Automate finite cu ǫ-tranziţii

Automate finite cu ǫ-tranziţii

Definiţie 1
Un automat finit cu ǫ-tranziţii este un 5-uplu A = (Q, Σ, δ, q0 , F ), unde:

Q, Σ, q0 şi F sunt definite ca ı̂n cazul automatelor finite


deterministe
δ este o funcţie , δ : Q × (Σ ∪ {ǫ}) → 2Q , numită funcţia de tranziţie

Observaţie:
A este automat nedeterminist, dacă δ(q, ǫ) = ∅, ∀q ∈ Q
A este automat determinist, dacă, ı̂n plus:

|δ(q, a)| = 1, ∀q ∈ Q, ∀a ∈ Σ

LFAC (2020-21) Curs 3 4 / 25


Automate finite cu ǫ-tranziţii

Extensia lui δ la cuvinte

Cl(q)-mulţimea stărilor la care se poate ajunge prin ǫ-tranziţii:


q ∈ Cl(q)
q ′ ∈ Cl(q) ⇒ δ(q ′ , ǫ) ⊆ Cl(q)

Dacă S ⊆ Q, atunci notăm:


[
Cl(S) = Cl(q)
q∈S

Extensia lui δ la cuvinte: δ̂ : Q × Σ∗ → 2Q


1 δ̂(q, ǫ) = Cl(q), ∀q ∈ Q;
2 δ̂(q, ua) = Cl(δ(δ̂(q, u), a))), ∀q ∈ Q, ∀u ∈ Σ∗ , ∀a ∈ Σ.

LFAC (2020-21) Curs 3 5 / 25


Automate finite cu ǫ-tranziţii

Extensia lui δ la cuvinte

δ̂(q, a) = Cl(δ(Cl(q), a)), ∀q ∈ Q, ∀a ∈ Σ

În cazul automatelor cu ǫ - tranziţii vom păstra notaţia δ̂ pentru


extensie pentru că, ı̂n general, δ̂(q, ǫ) 6= δ(q, ǫ) şi
δ̂(q, a) 6= δ(q, a), a ∈ Σ.
δ̂(q, uv ) = δ̂(δ̂(q, u), v ), ∀q ∈ Q, ∀u, v ∈ Σ∗

LFAC (2020-21) Curs 3 6 / 25


Automate finite cu ǫ-tranziţii

Limbajul acceptat

Definiţie 2
Limbajul acceptat (recunoscut) de automatul cu ǫ-tranziţii
A = (Q, Σ, δ, q0 , F ) este mulţimea :

L(A) = {w|w ∈ Σ∗ , δ̂(q0 , w) ∩ F 6= ∅}.

Un cuvânt w este recunoscut de un automat A dacă, după citirea


ı̂n ı̂ntregime a cuvântului w, automatul (pornind din starea iniţială
q0 ) poate să ajungă ı̂ntr-o stare finală.

LFAC (2020-21) Curs 3 7 / 25


Automate finite cu ǫ-tranziţii

Automatul determinist echivalent


Teorema 1
Pentru orice automat A cu ǫ - tranziţii există un automat A′ determinist
echivalent cu A

Dacă A = (Q, Σ, δ, q0 , F ) atunci A′ = (Q ′ , Σ, δ ′ , q0′ , F ′ ) unde:

Q ′ = 2Q
q0′ = Cl(q0 )
S
δ ′ (S, a) = Cl( s∈S δ(s, a)) S ∈ Q′, a ∈ Σ
S ∈ F ′ ⇔ S ∩ F 6= ∅

LFAC (2020-21) Curs 3 8 / 25


Automate finite cu ǫ-tranziţii

Automatul determinist echivalent


Teorema 1
Pentru orice automat A cu ǫ - tranziţii există un automat A′ determinist
echivalent cu A

Dacă A = (Q, Σ, δ, q0 , F ) atunci A′ = (Q ′ , Σ, δ ′ , q0′ , F ′ ) unde:


Q ′ = 2Q
q0′ = Cl(q0 )
S
δ ′ (S, a) = Cl( s∈S δ(s, a)) S ∈ Q′, a ∈ Σ
S ∈ F ′ ⇔ S ∩ F 6= ∅

Au loc:
δ ′ (q0′ , w) = δ̂(q0 , w), ∀w ∈ Σ∗
L(A′ ) = L(A)
LFAC (2020-21) Curs 3 8 / 25
Automate finite cu ǫ-tranziţii

Automatul determinist echivalent - algoritm


Intrare: Automatul A (cu ǫ - tranziţii) ; Cl(S)
Ieşire: Automatul determinist A′ = (Q ′ , Σ, δ ′ , q0′ , F ′ ), echivalent cu A.

q0′ = Cl({q0 }); Q ′ = {q0′ } ;


marcat(q0′ ) = false; F ′ = ∅ ;
if (q0′ ∩ F 6= ∅) then F ′ = F ′ ∪ {q0′ } ;
while (∃S ∈ Q ′ &&!marcat(S)) {
for (a ∈ Σ){
S
S ′ = Cl( s∈S δ(s, a));
δ ′ (S, a) = S ′ ;
if (S ′ 6∈ Q ′ ){
Q ′ = Q ′ ∪ {S ′ };
marcat(S ′ ) = false;
if (S ′ ∩ F 6= ∅) then F ′ = F ′ ∪ {S ′ } ;
}
}
marcat(S) = true;
}
LFAC (2020-21) Curs 3 9 / 25
Automate finite cu ǫ-tranziţii

Exemplu

LFAC (2020-21) Curs 3 10 / 25


Automate finite cu ǫ-tranziţii

Exemplu

LFAC (2020-21) Curs 3 10 / 25


Automatul determinist minimal

Curs 3

1 Automate finite cu ǫ-tranziţii

2 Automatul determinist minimal

LFAC (2020-21) Curs 3 11 / 25


Automatul determinist minimal

Stări accesibile

Fie A = (Q, Σ, δ, q0 , F ) automat finit determinist

Starea q este accesibilă ı̂n A dacă există un cuvânt w ∈ Σ∗ astfel ı̂ncât


q = δ(q0 , w).

LFAC (2020-21) Curs 3 12 / 25


Automatul determinist minimal

Stări inseparabile

Fie A = (Q, Σ, δ, q0 , F ) un automat finit determinist.


Definiţie 3
Stările q1 şi q2 sunt inseparabile ı̂n raport cu F , (notat q1 ρq2 ) ddacă

∀w ∈ Σ∗ : δ(q1 , w) ∈ F ⇔ δ(q2 , w) ∈ F

LFAC (2020-21) Curs 3 13 / 25


Automatul determinist minimal

Stări inseparabile

Fie A = (Q, Σ, δ, q0 , F ) un automat finit determinist.


Definiţie 3
Stările q1 şi q2 sunt inseparabile ı̂n raport cu F , (notat q1 ρq2 ) ddacă

∀w ∈ Σ∗ : δ(q1 , w) ∈ F ⇔ δ(q2 , w) ∈ F

Dacă există w ∈ Σ∗ cu δ(q1 , w) ∈ F şi δ(q2 , w) 6∈ F (sau invers),


stările q1 şi q2 sunt separabile (de către w), şi notăm q1 sep q2
q1 sep q2 ⇔ ¬q1 ρq2 .

LFAC (2020-21) Curs 3 13 / 25


Automatul determinist minimal

Stări inseparabile

Fie A = (Q, Σ, δ, q0 , F ) un automat finit determinist.


Definiţie 3
Stările q1 şi q2 sunt inseparabile ı̂n raport cu F , (notat q1 ρq2 ) ddacă

∀w ∈ Σ∗ : δ(q1 , w) ∈ F ⇔ δ(q2 , w) ∈ F

Dacă există w ∈ Σ∗ cu δ(q1 , w) ∈ F şi δ(q2 , w) 6∈ F (sau invers),


stările q1 şi q2 sunt separabile (de către w), şi notăm q1 sep q2
q1 sep q2 ⇔ ¬q1 ρq2 .
Observaţie: dacă q1 ∈ F şi q2 6∈ F , atunci q1 sep q2
LFAC (2020-21) Curs 3 13 / 25
Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 14 / 25


Automatul determinist minimal

Automat minimal

Observaţii:
Relatia ρ este relaţie de echivalenţă.
∃a ∈ Σ : δ(p, a) sep δ(q, a) =⇒ p sep q.

LFAC (2020-21) Curs 3 15 / 25


Automatul determinist minimal

Automat minimal

Observaţii:
Relatia ρ este relaţie de echivalenţă.
∃a ∈ Σ : δ(p, a) sep δ(q, a) =⇒ p sep q.

Teorema 2
Fie A un automat determinist cu toate stările accesibile. Daca toate
stările din A sunt separabile ı̂n raport cu F, atunci nu există un alt
automat A′ cu număr mai mic de stări şi L(A) = L(A′ ).

LFAC (2020-21) Curs 3 15 / 25


Automatul determinist minimal

Automatul minimal

Fie A = (Q, Σ, δ, q0 , F ) un automat finit determinist si relaţia ρ.


Dacă ∀q1 , q2 ∈ Q : q1 sep q2 , atunci A este minimal.
Altfel, automatul minimal:

Aρ = (Q/ρ, Σ, δρ , [q0 ], F /ρ)

Q/ρ - clasele de echivalenţă ale relaţiei ρ:

Q/ρ = {[q]|q ∈ Q}

δρ ([q], a) = [δ(q, a)]


[q0 ] clasa de echivalenţă ı̂n care se află starea q0
F /ρ = {[q]|q ∈ F }
LFAC (2020-21) Curs 3 16 / 25
Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 17 / 25


Automatul determinist minimal

Automatul minimal

Fie automatul minimal: Aρ = (Q/ρ, Σ, δρ , [q0 ], F /ρ)


Q/ρ - clasele de echivalenţă ale relaţiei ρ:
δρ ([q], a) = [δ(q, a)]
[q0 ] clasa de echivalenţă ı̂n care se află starea q0
F /ρ = {[q]|q ∈ F }

Teorema 3
Fie automatul determinist A, cu toate stările accesibile. Automatul Aρ
construit ca mai sus este automatul cu număr minim de stări care
acceptă limbajul L(A).

LFAC (2020-21) Curs 3 18 / 25


Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

Fie A = (Q, Σ, δ, q0 , F ), Q = {q0 , q1 , . . . , qn }

Tablou separabil[qi , qj ]:
separabil[qi , qj ] = 1 ddacă qi sep qj (separabil[qi , qj ] = 0 ddacă
qi ρqj )

iniţial separabil[qi , qj ] = 1 ddacă qi ∈ F , qj 6∈ F (sau invers)

Se va completa apoi separabil[qi , qj ], pentru 0 ≤ i < j ≤ n, utilizând


doar valorile calculate anterior in separabil şi funcţia δ.

LFAC (2020-21) Curs 3 19 / 25


Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

lista[p, r ] : (p 6= r )

definită pentru perechi de stări cu separabil[p, r ] = 0


lista[p, r ] = {(qi , qj )|separabil[qi , qj ] = 0 ∧ exista a ∈ Σ : p =
δ(qi , a), r = δ(qj , a), (qi , qj ) 6= (p, r )}
lista se completează pe măsură ce se completează separabil

LFAC (2020-21) Curs 3 20 / 25


Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

Se iniţializează tabloul separabil (separabil[qi , qj ] = 1, dacă


qi ∈ F , qj 6∈ F sau invers)
Pentru orice qi , qj (0 ≤ i < j ≤ n) cu separabil[qi , qj ] = 0 :

LFAC (2020-21) Curs 3 21 / 25


Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

Se iniţializează tabloul separabil (separabil[qi , qj ] = 1, dacă


qi ∈ F , qj 6∈ F sau invers)
Pentru orice qi , qj (0 ≤ i < j ≤ n) cu separabil[qi , qj ] = 0 :
Dacă există a ∈ Σ cu separabil[δ(qi , a), δ(qj , a)] = 1, atunci:
separabil[qi , qj ] = 1
trebuie modificat tabloul separabil pentru toate perechile de stări a
căror separabilitate depinde de qi , qj (perechile de stări din
lista[qi , qj ])

LFAC (2020-21) Curs 3 21 / 25


Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

Se iniţializează tabloul separabil (separabil[qi , qj ] = 1, dacă


qi ∈ F , qj 6∈ F sau invers)
Pentru orice qi , qj (0 ≤ i < j ≤ n) cu separabil[qi , qj ] = 0 :
Dacă există a ∈ Σ cu separabil[δ(qi , a), δ(qj , a)] = 1, atunci:
separabil[qi , qj ] = 1
trebuie modificat tabloul separabil pentru toate perechile de stări a
căror separabilitate depinde de qi , qj (perechile de stări din
lista[qi , qj ])
Altfel (pentru orice a ∈ Σ are loc separabil[δ(qi , a), δ(qj , a)] = 0):
pentru orice a ∈ Σ cu δ(qi , a) 6= δ(qj , a) adaugă (qi , qj ) la
lista[δ(qi , a), δ(qj , a)]

LFAC (2020-21) Curs 3 21 / 25


Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

//initializarea tablourilor,
se marchează perechile F × (Q − F ) si (Q − F ) × F
1.for (i=0; i<=n-1; i++)
2. for (j=i+1,j<=n; j++) {
3. lista[qi,qj]=∅;
4. if ((qi ∈ F && qj 6∈ F ) || (qi 6∈ F && qj ∈ F ))
5. separabil[qi,qj]=1;
6. else
7. separabil[qi,qj]=0;
8. }

LFAC (2020-21) Curs 3 22 / 25


Automatul determinist minimal

9.for (i=0; i<=n-1; i++)


10. for (j=i+1,j<=n; j++) {
//se selecteaza doar starile inseparabile
11. if (separabil[qi,qj]==0) {
//daca exista a astfel incat δ(qi, a) sep δ(qj, a)
//inseamna ca qi si qj sunt separabile
12. if (∃a ∈ Σ : separabil[δ(qi, a), δ(qj, a)] == 1){
// qi si qj devin separabile si la fel toate
// perechile de stari dependente de qi,qj
13. update separabil(qi, qj);
14. }
15. else {
16. for (a ∈ Σ : δ(qi, a) 6= δ(qj, a)&& (qi, qj) 6= (δ(qi, a), δ(qj, a)))
17. adauga (qi, qj) la lista[δ(qi, a), δ(qj, a)]
18. }
19. }
20. }
LFAC (2020-21) Curs 3 23 / 25
Automatul determinist minimal

Algoritm pentru determinarea relaţiei ρ

// qi si qj devin separabile si la fel toate


// perechile de stari dependente de qi,qj
update separabil(qi, qj){
separabil[qi, qj] = 1;
for ((qi′ , qj′ ) ∈ lista[qi, qj]){
if (separabil[qi′ , qj′ ] == 0)
update separabil(qi′ , qj′ );
}
}

LFAC (2020-21) Curs 3 24 / 25


Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 25 / 25


Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 25 / 25


Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 25 / 25


Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 25 / 25


Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 25 / 25


Automatul determinist minimal

Exemplu

LFAC (2020-21) Curs 3 25 / 25

S-ar putea să vă placă și