Sunteți pe pagina 1din 11

Seminar LFA gr.

211
@ MN 2013-2014
Cuprins

~ Seminar 1 ~ .................................................................................................................. - 1 -
Automat Finit Determinist .......................................................................................... - 1 -
Automat Finit Nedeterminist ...................................................................................... - 1 -
EXEMPLE: ................................................................................................................. - 2 -
L1 = a
*
= {a
n
, n 0} ............................................................................................... - 2 -
L2 = a
+
= {a
n
, n 1} ............................................................................................... - 2 -
L3 = {a
2n
, n 0} ..................................................................................................... - 2 -
L4 = {a
2n+1
, n 0}................................................................................................... - 2 -
L5 = {a
2n
, n 1} ..................................................................................................... - 2 -
L6 = {a
2n+1
, n 1}................................................................................................... - 3 -
L7 = {a
2n
b
3m
, n 0, m 0} .................................................................................... - 3 -
L8 = {a
2n
b
3m
, n 1, m 0} .................................................................................... - 4 -
L9 = {a
2n
b
3m
, n 0, m 1} .................................................................................... - 4 -
L10 = {a
2n
b
3m
, n 1, m 1} .................................................................................. - 4 -
Operaii cu limbaje ...................................................................................................... - 5 -
Reuniune
2 1
L L L = ............................................................................................ - 5 -
Concatenare
2 1
L L L = .......................................................................................... - 5 -
Stelare 0 ), (
1
*
1
> = = n L L L
n
.................................................................................. - 5 -
Ridicare la putere nenul 1 ), (
1 1
> = =
+
n L L L
n
..................................................... - 5 -
Compunerea automatelor finite ............................................................................... - 6 -
Reuniune ................................................................................................................. - 6 -
Concatenare............................................................................................................. - 6 -
Stelare ..................................................................................................................... - 6 -
Transformarea AFNAFD ........................................................................................ - 6 -
EXEMPLU:............................................................................................................. - 7 -
Verificare acceptare cuvnt de ctre automat ............................................................. - 9 -
Seminar LFA gr.211
@ MN 2013-2014
- 1 -
~ Seminar 1 ~
(AFD; AFN; operaii cu limbaje; compunere automate; transformarea AFNAFD)


Automat Finit Determinist
AFD = (Q, V, q
0
, , F)
Q mulimea de stri
V alfabetul de intrare
q
0
eQ starea iniial
F_Q mulimea de stri finale
Q V Q : o funcia de tranziie (delta)

Pentru a verifica dac un cuvnt este sau nu acceptat de un automat AFD:
- se pornete din starea iniial q
0
- ct timp este posibil:
- avnd starea curent i caracterul curent din cuvnt,
aplicm funcia pentru a determina noua stare
- repetm pentru noua stare i caracterul urmtor din cuvnt
- algoritmul se termin n 3 cazuri:
- chiar dac nu s-a citit complet tot cuvntul,
dar automatul s-a blocat pentru c funcia de tranziie nu era definit
pentru starea curent i caracterul curent cuvnt neacceptat
- dac ntreg cuvntul a fost citit, dar automatul a ajuns ntr-o stare
care nu este final (adic din mulimea Q\F) cuvnt neacceptat
- dac ntreg cuvntul a fost citit, iar automatul a ajuns ntr-o stare
care este final (adic din mulimea F) cuvnt acceptat

Automat Finit Nedeterminist
AFN = (Q, V, q
0
, , F)
Q mulimea de stri
V alfabetul de intrare
q
0
eQ starea iniial
F_Q mulimea de stri finale
Q
V Q 2 : o funcia de tranziie (delta)

Diferena dintre AFD i AFN const n modul n care este definit funcia de tranziie.
La AFD: pentru orice pereche de o stare i un caracter, avem cel mult o stare de
continuare (putem s nu avem niciuna, adic funcia s fie nedefinit pentru acele valori).
La AFN: pentru orice pereche de o stare i un caracter, avem ca posibilitate de continuare
o submulime a mulimii de stri Q (putem s nu avem niciuna dac funcia este
nedefinit; putem s avem o singur stare de continuare; sau putem s avem mai multe
stri de continuare, aici apare nedeterminismul).

Seminar LFA gr.211
@ MN 2013-2014
- 2 -
Pentru a verifica dac un cuvnt este sau nu acceptat de un automat AFN:
Se procedeaz analog ca n cazul AFD-ului, excepia fiind c la fiecare aplicare a funciei
delta trebuie s reinem toate posibilitile de stri de continuare, iar la pasul urmtor s
reaplicm delta pentru toate acestea mpreun cu caracterul curent.

EXEMPLE:

L1 = a
*
= {a
n
, n 0} = {=a
0
, a=a
1
, aa=a
2
, aaa=a
3
, aaaa=a
4
, }

Ambele soluii sunt AFD-uri.
Obs: De fiecare dat cnd (cuvntul vid) trebuie s fie recunoscut de un AFD sau de un
AFN (simplu, adic AFN fr -tranziii), trebuie ca starea iniial q
0
s fie i stare final.


L2 = a
+
= {a
n
, n 1} = {a=a
1
, aa=a
2
, aaa=a
3
, aaaa=a
4
, }

Diferena fa de exemplul anterior?
Aici nu trebuie acceptat, deci starea iniial q
0
trebuie s nu fie stare final.


L3 = {a
2n
, n 0} = {=a
0
, aa=a
2
, aaaa=a
4
, aaaaaa=a
6
, }
L4 = {a
2n+1
, n 0} = {a=a
1
, aaa=a
3
, aaaaa=a
5
, }


Cele dou automate au aceleai stri i aceleai tranziii. Difer doar mulimea strilor
finale. Dac setm q
0
final, atunci vor fi acceptate cuvintele de lungime par (inclusiv
zero), iar dac setm n schimb q
1
final, atunci vor fi acceptate cuvintele de lungime
impar.

Obs: De fiecare dat cnd la putere apare un coeficient, nseamn c vom avea un circuit
de lungime egal cu acest coeficient (sau lungime proporional cu el, n cazul n care
puterea era aplicat unui cuvnt, nu doar unei litere).


L5 = {a
2n
, n 1} = {aa=a
2
, aaaa=a
4
, aaaaaa=a
6
, }


Seminar LFA gr.211
@ MN 2013-2014
- 3 -
n primul rnd trebuie s ne asigurm c obligm automatul s citeasc cei doi de a (cel
mai mic cuvnt din limbaj) i c nu accept ceva mai scurt de att. Pentru asta, adugm
cele trei stri i tranziiile de la q
0
spre q
1
i de la q
1
spre q
2
, iar apoi setm q
2
s fie stare
final. Apoi vedem c avem coeficientul 2 la putere, deci trebuie s avem un circuit de
lungime 2. Avem dou variante: fie adugm tranziie de la q
2
spre q
1
, fie adugm
tranziie de la q
1
spre q
0
. Ambele automate recunosc acelai limbaj (dar primul este AFD,
iar al doilea este AFN pentru c din q
1
cu a putem ajunge i n q
0
i n q
2
).


L6 = {a
2n+1
, n 1} = {aaa=a
3
, aaaaa=a
5
, aaaaaaa=a
7
, }




La fel ca la exemplul anterior, ne vom asigura nti c automatul nu accept nimic mai
scurt dect cel mai mic cuvnt din limbaj, adic aaa. Deci vom aduga cele 4 stri i
tranziiile ctre dreapta i vom seta starea q
3
final. Apoi pentru a avea circuitul de
lungime 2 (egal cu coeficientul lui n), avem cele trei variante. Dac adugm tranziia de
la q
3
spre q
2
vom obine un AFD, iar dac alegem una din celelalte dou variante vom
obine un AFN.


L7 = {a
2n
b
3m
, n 0, m 0}
= {, a
2
, a
4
, a
6
, a
8
, , b
3
, b
6
, b
9
, b
12
, , a
2
b
3
, a
2
b
6
, a
4
b
3
,a
4
b
6
, a
6
b
3
, a
6
b
6
, }

n primul rnd vedem c cel mai mic cuvnt ce trebuie acceptat este , deci setm starea
iniial q
0
s fie i stare final. Apoi facem circuit de lungime 2 cu litera a. Dup ce
citim un numr par de a-uri (inclusiv zero), ajungem n starea q
0
, deci de aici trebuie s
pornim cu citirea b-urilor. Adugm q
2
, q
3
i cele dou tranziii cu b. tim c va trebui s
avem un circuit de lungime 3 cu b-uri, dar trebuie s fim de asemenea ateni c literele de
a i de b nu pot fi amestecate ntre ele, dup ce am citit primul b nu mai avem voie
s citim niciun a. Deci nu putem avea muchie de ntoarcere de la q
3
ctre q
0
pentru c
n q
0
se pot citi a-uri. nseamn c avem nevoie de a nou stare, aa c adugm q
4
i
tranziii de la q
3
spre q
4
i de la q
4
spre q
2
pentru a nchide circuitul.

Obs: La seminar am gsit pentru acest limbaj un automat la fel de corect, dar care avea cu
o stare n plus, deci acesta este mai simplu.

Seminar LFA gr.211
@ MN 2013-2014
- 4 -

L8 = {a
2n
b
3m
, n 1, m 0}
= {a
2
, a
4
, a
6
, a
8
, , a
2
b
3
, a
2
b
6
, a
4
b
3
,a
4
b
6
, a
6
b
3
, a
6
b
6
, }
n acest caz, cuvintele conin obligatoriu a-uri, b-urile putnd s apar sau nu.

Trebuie s obligm automatul s citeasc numr par de a-uri, dar cel puin dou, deci nu
se mai poate ntoarce din q
1
n q
0
cu al doilea a, ci trebuie s continue spre q
2
i setm
q
2
ca stare final. Apoi ncepnd din q
2
citim doi de b, dar pentru al treilea nu putem
nchide circuitul ntorcndu-ne n q
2
dac am ales ca muchie de ntoarcere pentru a-uri de
la starea q
2
spre starea q
1
. Deci trebuie s adugm i starea q5 care va fi i ea final i
cele dou tranziii de la q
4
spre q
5
i de la q
5
spre q
3
.


Dar dac am fi ales ca muchie de ntoarcere pentru a-uri de la q
1
spre q
0
?
Atunci nu am mai fi avut nevoie de starea q
5
, pentru c puteam s nchidem circuitul b-
urilor de la q
4
spre q
2
i am fi avut doar starea q
2
final.
Doar c n acest caz am fi obinut un AFN (din cauza lui q
1
).


L9 = {a
2n
b
3m
, n 0, m 1}
= {b
3
, b
6
, b
9
, b
12
, , a
2
b
3
, a
2
b
6
, a
4
b
3
,a
4
b
6
, a
6
b
3
, a
6
b
6
, }
n acest caz, cuvintele conin obligatoriu b-uri, a-urile putnd s apar sau nu.

Observm c automatul este foarte asemntor cu cel pentru limbajul L7.
Diferena este c acum starea q
0
nu mai este stare final, ceea ce nseamn c putem sau
nu s trecem prin circuitul de a-uri, dar sigur suntem obligai s citim b-uri nainte de a
ajunge ntr-o stare final.


L10 = {a
2n
b
3m
, n 1, m 1}
= {a
2
b
3
, a
2
b
6
, a
4
b
3
,a
4
b
6
, a
6
b
3
, a
6
b
6
, }
n acest caz, cuvintele conin obligatoriu i a-urile, i b-urile.
Seminar LFA gr.211
@ MN 2013-2014
- 5 -

Acest automat seamn cu cel pentru L8 (prima variant), unde eram obligai s avem a-
uri. n plus, pentru c acum trebuie s avem i b-uri, starea q
2
nu va mai fi stare final.

Operaii cu limbaje
Reuniune
2 1
L L L =
} | {
2 1
L w sau L w w L e e =

Exemplu:
L
1
= {a, ab, abc}
L
2
= {a, bd, cd}
L = {a, ab, abc, bd, cd}
Concatenare
2 1
L L L =
} | {
2 1
L w i L w w w L
j i j i
e e =

Exemplu:
L
1
= {a, ab, abc}
L
2
= {a, bd, cd}
L = {aa, abd, acd, aba, abbd, abcd, abca, abcbd, abccd}
Stelare 0 ), (
1
*
1
> = = n L L L
n

} 1 | ... {
1 2 1 1
n i orice pentru L w w w w L
i n
n
s s e =

Exemplu:
L
1
= {a, ab, abc}
(L
1
)
*
= { ; a, ab, abc ; aa, aab, aabc, aba, abab, ababc, abca, abcab, abcabc ; }

Obs: Cuvntul vid va aparine limbajului stelat, indiferent dac nainte aparinea sau nu
limbajului iniial.
Ridicare la putere nenul 1 ), (
1 1
> = =
+
n L L L
n

La fel ca la stelare, doar c nu mai exist cuvntul vid. } { \
*
L L =
+


Obs: Atenie la ridicarea la putere a cuvintelor! (Sa nu distribuiti puterea ca la inmultire,
ci concatenai cuvntul cu el nsui de cte ori spune puterea.)
(abc)
2
= abcabc
(abc)
2
aabbcc = a
2
b
2
c
2
Seminar LFA gr.211
@ MN 2013-2014
- 6 -

Compunerea automatelor finite
Reuniune
Dac avem deja construite dou automate finite (avnd strile iniiale q
01
i q
02
i
mulimile strilor finale F1 i F2) care accept respectiv limbajele L1 i L2 i dorim s
obinem un automat finit care s accepte limbajul
2 1
L L L = :
- introducem o nou stare q
0
care va fi noua stare iniial
- adugm dou -tranziii de la q
0
spre q
01
i de la q
0
spre q
02

- noua mulime de stri finale va fi
2 1
F F F =
Concatenare
Dac avem deja construite dou automate finite (avnd strile iniiale q
01
i q
02
i
mulimile strilor finale F1 i F2) care accept respectiv limbajele L1 i L2 i dorim s
obinem un automat finit care s accepte limbajul
2 1
L L L = :
- noua stare iniial va fi q
01
, starea iniial a primului automat
- adugm -tranziii de la fiecare stare final din F1 spre q
02

- noua mulime de stri finale va fi F = F2
Stelare
Dac avem deja construit un automat finit (avnd starea iniial q
01
i mulimea strilor
finale F1) care accept limbajul L1 i dorim s obinem un automat finit care s accepte
limbajul
*
1
L L = :
- introducem o nou stare q
0
care va fi noua stare iniial
- adugm o -tranziie de la q
0
spre q
01

- adugm -tranziii de la fiecare stare final din F1 spre q
0

- noua mulime de stri finale va fi F = {q
0
}

Transformarea AFNAFD
Avnd dat un AFN (reprezentat sub form de graf), vom calcula funcia delta completnd
un tabel astfel:
- La capetele de linie vom pune numele strilor AFN-ului (elementele mulimii Q):
q
0
, q
1
, ..., q
|Q|-1

- La capetele de coloan vom pune caracterele alfabetului AFN-ului (elementele
mulimii V)
- Calculm coninutul primelor |Q| linii astfel: elementul aflat pe linia l
i
i coloana
c
j
reprezint mulimea de stri n care se poate ajunge n AFN dac pornim din
starea de pe linia l
i
(n cazul acesta: q
i-1
dac numerotm liniile ncepnd cu 1) i
citim caracterul de pe coloana c
j
. Pentru a afla aceast mulime, ne uitm la graful
care reprezint AFN-ul, cutm starea de la linia l
i
i pentru fiecare tranziie cu
litera de la coloana c
j
care pornete din aceast stare, adugm starea destinaie a
tranziiei la mulimea curent din tabel.
Seminar LFA gr.211
@ MN 2013-2014
- 7 -
- Apoi trebuie s calculm aceast funcie delta i pentru noile mulimi de stri
obinute la paii anteriori (aceste calcule se fac cel mai simplu folosind doar liniile
din tabel calculate la pasul anterior, nu i graful automatului AFN)
(a) fie alegem s facem calculele pentru toate noile mulimi de stri, i abia apoi
s vedem care dintre ele vor aprea n AFD-ul obinut (tot fcnd
parcurgerea n adncime descris mai jos).
(b) fie alegem s facem calculele doar pentru noile mulimi de stri care vor
aprea n AFD: pentru a decide care vor fi acestea, facem un fel de parcurgere
n adncime a grafului care va reprezenta AFD-ul. Adic pornim cu starea q
0

care va fi starea iniial a AFD-ului, apoi parcurgem prima linie a tabelului
(care conine calculele tranziiilor ce pleac din q
0
) i adugm la noul
automat toate aceste tranziii mpreun cu strile-destinaie calculate n tabel.
Apoi pentru toate aceste stri-destinaie, dac nu au deja n tabel un capt de
linie care s le corespund, l vom aduga i vom calcula acea linie astfel:
- fie noua stare-mulime {q
k1
, q
k2
, , q
kp
}. Pentru fiecare coloan c
j
,
calculm elementul din tabel fcnd reuniunea elementelor aflate pe
aceeai linie c
j
i pe liniile corespunztoare strilor q
k1
, q
k2
, , q
kp
.
Apoi revenim la desenarea grafului AFD-ului, i adugm tranziiile proaspt
calculate mpreun cu strile-destinaie. Relum procedeul pn nu mai apar
stri noi.
- Strile finale ale noului AFD obinut, vor fi acele stri-mulime (pot avea i un
singur element, nu neaprat mai multe) care conin cel puin una din strile care
erau finale pentru AFN-ul iniial.

EXEMPLU:
Se d AFN-ul urmtor:


Calculm tabelul pentru funcia delta: nti primele 3 linii folosind graful AFN-ului, apoi
urmtoarele linii folosind aceste prime 3 linii ale tabelului.

Vom avea dou coloane, pentru c alfabetul automatului iniial este V = {a, b}.

o a b
q
0
{q
0
, q
1
} q
0
q
1
{q
1
, q
2
} q
1
q
2
q
2
q
2

Alegem varianta (b), adic s calculm doar acele stri care vor aprea n AFD.

Seminar LFA gr.211
@ MN 2013-2014
- 8 -
(1) Pornim cu starea q
0
i i adugm cele dou tranziii i strile-destinaie necesare,
adic {q
0
, q
1
} = q
01
(prin notaie).


(2) Observm c a aprut noua stare q
01
pentru care nu avem o linie n tabel, aa c o
adugm i o calculm pentru cele dou coloane.

012 2 1 0 2 1 1 0
1 0
1 0 01
} , , { } , { } , {
)} , (

{ )} , (

{
) }, , ({

) , (

q q q q q q q q
a q a q
a q q a q
= = =
=
=

o o
o o


01 1 0 1 0
1 0
1 0 01
} , { } { } {
)} , (

{ )} , (

{
) }, , ({

) , (

q q q q q
b q b q
b q q b q
= = =
=
=

o o
o o


o a b
q
0
{q
0
, q
1
} = q
01
q
0
q
1
{q
1
, q
2
} = q
12
q
1
q
2
q
2
q
2
q
01
{q
0
, q
1
, q
2
} = q
012
{q
0
, q
1
} = q
01


(3) Revenim la desenul AFD-ului i adugm tranziiile care lipsesc, adic cele care
pleac din starea q
01
, mpreun cu strile-destinaie care lipsesc, adic q
012
.


(4) Pentru noua stare aprut, q
012
, i adugm linia n tabel i o calculm.

012 2 1 0 2 2 1 1 0
2 1 0
2 1 0 012
} , , { } { } , { } , {
)} , (

{ )} , (

{ )} , (

{
) }, , , ({

) , (

q q q q q q q q q
a q a q a q
a q q q a q
= = =
=
=

o o o
o o


012 2 1 0 2 1 0
2 1 0
2 1 0 012
} , , { } { } { } {
)} , (

{ )} , (

{ )} , (

{
) }, , , ({

) , (

q q q q q q q
b q b q b q
b q q q b q
= = =
=
=

o o o
o o


Seminar LFA gr.211
@ MN 2013-2014
- 9 -
o a b
q
0
{q
0
, q
1
} = q
01
q
0
q
1
{q
1
, q
2
} = q
12
q
1
q
2
q
2
q
2
q
01
{q
0
, q
1
, q
2
} = q
012
{q
0
, q
1
} = q
01

q
012
{q
0
, q
1
, q
2
} = q
012
{q
0
, q
1
, q
2
} = q
012


(5) Revenim la graf i adugm tranziiile care pleac din starea q
012
.


(6) Observm c nu ne-a mai aprut nicio stare nou, deci nu ne-a rmas dect s marcm
strile finale i am obinul AFD-ul cerut. n AFN-ul iniial stare final era doar q
2
. Orice
stare-mulime din AFD-ul nostru care l conine pe q
2
va fi stare final. Exist una
singur: q
012
.


Obs: Dac am fi ales varianta (a), atunci am fi calculat n tabel i linia corespunztoare
strii q
12
, ns observm c nici ea, dar nici strile q
1
i q
2
nu apar n AFD.

Verificare acceptare cuvnt de ctre automat

Folosim configuraii (sau descrieri instantanee) ale automatului, adic perechi
formate din starea curent i ct a mai rmas de citit din cuvntul de intrare, i aplicm
funcia delta ct timp este posibil (ne oprim fie cnd nu mai exist tranziie definit, fie
cnd se termin cuvntul). Dac la final ajungem n stare final, cuvntul va fi acceptat.

Pentru AFD:

(q
0
, bba) (q
0
, ba) (q
0
, a) (q
01
, )
Am terminat de citit cuvntul i am ajuns n starea q
01
, care nu este final, deci rezult c
automatul nu accept acest cuvnt.

(q
0
, babbaba) (q
0
, abbaba) (q
01
, bbaba) (q
01
, baba) (q
01
, aba) (q
012
, ba)
(q
012
, a) (q
012
, )
Am terminat de citit cuvntul i am ajuns n starea q
012
, care este final, deci rezult c
automatul accept acest cuvnt.

Seminar LFA gr.211
@ MN 2013-2014
- 10 -
Pentru AFN:

(q
0
, bba) (q
0
, ba) (q
0
, a) {(q
0
, ), (q
1
, )}

Am terminat de citit cuvntul i am avut dou drumuri posibile, care ne-au adus n strile
q
0
i q
1
. Nici una din ele nu este stare final, deci cuvntul nu este acceptat.


(q
0
, babbaba) (q
0
, abbaba)

{(q
0
, bbaba), (q
1
, bbaba)}

{(q
0
, baba), (q
1
, baba)}

{(q
0
, aba), (q
1
, aba)}

{(q
0
, ba), (q
1
, ba), (q
2
, ba)}

{(q
0
, a), (q
1
, a), (q
2
, a)}

{(q
0
, ), (q
1
, ), (q
2
, )}

Am terminat de citit cuvntul i am avut apte drumuri posibile, care ne-au adus n strile
q
0
, q
1
i q
2
. Exist printre ele o stare care este final, q
2
, deci cuvntul este acceptat.