Upload
andreea-elena
View
247
Download
2
Embed Size (px)
Citation preview
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
1/11
Seminar LFA gr.211@ MN 2013-2014
Cuprins
~ Seminar 1 ~ .................................................................................................................. - 1 -Automat Finit Determinist .......................................................................................... - 1 -Automat Finit Nedeterminist ...................................................................................... - 1 -EXEMPLE: ................................................................................................................. - 2 -L1 = a* = {an, n 0} ............................................................................................... - 2 -
L2 = a+ = {an, n 1} ............................................................................................... - 2 -L3 = {a2n, n 0} ..................................................................................................... - 2 -L4 = {a2n+1, n 0}................................................................................................... - 2 -L5 = {a2n, n 1} ..................................................................................................... - 2 -L6 = {a2n+1, n 1}................................................................................................... - 3 -L7 = {a2n b3m, n 0, m 0} .................................................................................... - 3 -L8 = {a2n b3m, n 1, m 0} .................................................................................... - 4 -L9 = {a2n b3m, n 0, m 1} .................................................................................... - 4 -L10 = {a2n b3m, n 1, m 1} .................................................................................. - 4 -
Operaii cu limbaje ...................................................................................................... - 5 -Reuniune 21 L L L ............................................................................................ - 5 -Concatenare 21 L L L .......................................................................................... - 5 -Stelare 0),( 1*1 n L L L
n .................................................................................. - 5 -Ridicare la putere nenul 1),( 11
n L L L n ..................................................... - 5 -Compunerea automatelor finite ............................................................................... - 6 -
Reuniune ................................................................................................................. - 6 -Concatenare............................................................................................................. - 6 -Stelare ..................................................................................................................... - 6 -
Transformarea AFN AFD ........................................................................................ - 6 -EXEMPLU:............................................................................................................. - 7 -
Verificare acceptare cuvnt de ctre automat ............................................................. - 9 -
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
2/11
Seminar LFA gr.211@ MN 2013-2014
- 1 -
~ Seminar 1 ~(AFD; AFN; operaii cu limbaje; compunere automate; transformarea AFNAFD)
Au tom at Fini t Determinis tAFD = (Q, V, q0, , F) Q mulimea de stri V alfabetul de intrareq0 Q starea iniial F Q mulimea de stri finale
QV Q : funcia de tranziie (delta)
Pentru a verifica dac un cuvnt este sau nu acceptat de un automat AFD:- se pornete din starea iniial q0
- 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 starecare 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
Au tom at Fini t Nedetermin is tAFN = (Q, V, q0, , F) Q mulimea de stri V alfabetul de intrareq0 Q starea iniial F Q mulimea de stri finale
QV Q 2: 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, avemcel mult o stare decontinuare (putem s nu avem niciuna, adic funcia s fie nedefinit pentru acele v La AFN: pentru orice pereche de o stare i un caracter, avem ca posibilitate de continuareo submulime a mulimii de stri Q (putem s nu avem niciuna dac funcia estenedefinit; putem s avem o singur stare de continuare; sau putem s avem mai mstri de continuare, aici apare nedeterminismul).
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
3/11
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 funcieideltatrebuie s reinem toate posibilitile de stri de continuare, iar la pasul urmtoreaplicmdelta pentru toate acesteampreun cu caracterul curent.
EXEMPLE:
L1 = a * = {a n , n 0} = {=a0, a=a1, aa=a2, aaa=a3, aaaa=a4, }
Ambele soluii sunt AFD-uri.Obs: De fiecare dat cnd (cuvntul vid) trebuie s fie recunoscut de un AFD saude unAFN (simplu, adicAFNfr -tranziii), trebuie ca starea iniialq0 s fie i stare final.
L2 = a + = {a n , n 1} = {a=a1, aa=a2, aaa=a3, aaaa=a4, }
Diferena fa de exemplul anterior? Aici nu trebuie acceptat, deci starea iniial q0 trebuie s nu fie stare final.
L3 = {a 2n , n 0 } = {=a0, aa=a2, aaaa=a4, aaaaaa=a6, }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 strfinale. Dac setm q0 final, atunci vor fi acceptate cuvintele de lungime par (inclusivzero), iar dac setm n schimb q1 final, atunci vor fi acceptate cuvintele de lungimeimpar.
Obs: De fiecare dat cnd la putere apare un coeficient, nseamn c vom avea un circuitde lungime egal cu acest coeficient (sau lungime proporional cu el, n cazul n c puterea era aplicat unui cuvnt, nu doar unei litere).
L5 = {a 2n , n 1} = {aa=a2, aaaa=a4, aaaaaa=a6, }
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
4/11
Seminar LFA gr.211@ MN 2013-2014
- 3 -
n primul rnd trebuie s ne asigurm c obligm automatul s citeasc cei doi de a (celmai mic cuvnt din limbaj) i c nu accept ceva mai scurt de att. Pentru asta, adcele trei stri i tranziiile de la q0 spre q1 i de la q1 spre q2, iar apoi setm q2 s fie starefinal. Apoi vedem c avem coeficientul 2 la putere, deci trebuie s avem un circuilungime 2. Avem dou variante: fie adugm tranziie de la q2 spre q1, fie adugm
tranziie de la q1 spre q0. Ambele automate recunosc acelai limbaj (dar primul este AFD,iar al doilea este AFN pentru c din q1 cua putem ajunge i n q0 i n q2).
L6 = {a 2n+1 , n 1} = {aaa=a3, aaaaa=a5, aaaaaaa=a7, }
La fel ca la exemplul anterior, ne vom asigura nti c automatul nu accept nimic maiscurt dect cel mai mic cuvnt din limbaj, adic aaa. Deci vom aduga cele 4 stri itranziiile ctre dreapta i vom seta starea q3 final. Apoi pentru a avea circuitul delungime 2 (egal cucoeficientul lui n), avem cele treivariante. Dac adugm tranziia dela q3 spre q2 vom obine un AFD, iar dac alegem una din celelalte dou variante vomobine un AFN.
L7 = {a 2n b 3m , n 0, m 0 }= {, a2, a4, a6, a8, , b3, b6, b9, b12, , a2 b3, a2 b6, a4 b3,a4 b6, a6 b3, a6 b6, }
n primul rnd vedem c cel maimic cuvnt ce trebuie acceptat este, deci setm stareainiial q0 s fie i stare final. Apoi facem circuit de lungime 2 cu litera a. Dup ccitim un numr par de a-uri (inclusiv zero), ajungem n starea q0, deci de aici trebuie s pornim cu citirea b-urilor. Adugm q2, q3 i cele dou tranziii cu b. tim c va trebui savem un circuit de lungime 3 cu b-uri, dar trebuie s fim de asemenea ateni c literele dea i de b nu pot fi amestecate ntre ele, dup ce am citit primul b nu mai avemies citim niciun a. Deci nu putem avea muchie de ntoarcere de la q3 ctre q0 pentru cn q0 se pot citi a-uri. nseamn c avem nevoie de a nou stare, aa c adugm q4 itranziii de la q3 spre q4 i de la q4 spre q2 pentru a nchide circuitul.
Obs: La seminar am gsit pentru acest limbaj un automat la fel de corect, dar care ao stare n plus, deci acesta este mai simplu.
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
5/11
Seminar LFA gr.211@ MN 2013-2014
- 4 -
L8 = {a 2n b 3m , n 1, m 0 }= {a2, a4, a6, a8, , a2 b3, a2 b6, a4 b3,a4 b6, a6 b3, a6 b6, }
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 nuse mai poate ntoarce din q1 n q0 cu al doileaa, ci trebuie s continue spre q2 i setmq2 ca star e final. Apoi ncepnd din q2 citim doi deb, dar pentru al treilea nu putemnchide circuitul ntorcndu-ne n q2 dac am ales ca muchie de ntoarcere pentru a-uri dela starea q2 spre starea q1. Deci trebuie s adugm i starea q5 care va fi i ea final icele dou tranziii de la q4 spre q5 i de la q5 spre q3.
Dar dac am fi ales ca muchie de ntoarcere pentru a-uri de la q1 spre q0?Atunci nu am mai fi avut nevoie de starea q5, pentru c puteam s nchidem circuitul b-urilor de la q4 spre q2 i am fi avut doar starea q2 final. Doar c n acest caz am fi obinut un AFN (din cauza lui q1).
L9 = {a2n
b3m
, n 0, m 1 }= {b3, b6, b9, b12, , a2 b3, a2 b6, a4 b3,a4 b6, a6 b3, a6 b6, }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 q0 nu mai este stare final, ceea ce nseamn c putem saunu s trecem prin circuitul de a-uri, dar sigur suntem obligai s citim b-uri nainte de aajunge ntr-o stare final.
L10 = {a 2n b 3m , n 1, m 1 }= {a2 b3, a2 b6, a4 b3,a4 b6, a6 b3, a6 b6, }
n acest caz, cuvintele conin obligatoriu i a-urile, i b-urile.
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
6/11
Seminar LFA gr.211@ MN 2013-2014
- 5 -
Acest automat seamn cu cel pentru L8 (prima variant), unde eram obligai s av-uri. n plus, pentru c acumtrebuies avem i b-uri, starea q2 nu va mai fi stare final.
Operaii cu limbaje
Reuniune 21 L L L
}|{ 21 Lw sau Lww L
Exemplu:L1 = {a, ab, abc}L2 = {a, bd, cd}
L = {a, ab, abc, bd, cd}
Concatenare 21 L L L
}|{ 21 Lw i Lwww L ji ji
Exemplu:L1 = {a, ab, abc}L2 = {a, bd, cd}
L = {aa, abd, acd, aba, abbd, abcd, abca, abcbd, abccd}
Stelare 0),( 1*1
n L L L n
}1|...{ 1211 niorice pentru Lwwww L inn
Exemplu:L1 = {a, ab, abc}
(L1)* = { ; a, ab, abc ; aa, aab, aabc, aba, abab, ababc, abca, abcab, abcabc; }
Obs: Cuvntul vid va aparine limbajului stelat, indiferent dac nainte aparinea saulimbajului iniial.
Ridicare la putere nenul 1),( 11 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 = a2 b2c2
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
7/11
Seminar LFA gr.211@ MN 2013-2014
- 6 -
Compunerea autom atelor f in i te
Reuniune
Dac avem deja construite dou automate finite (avnd strile iniiale q01 i q02 imulimile strilor finale F1 i F2) care accept respectiv limbajele L1 i L2 i dorim sobinem un automat finit care s accepte limbajul 21 L L L :
- introducem o nou stare q0 care va fi noua stare iniial - adugm dou -tranziii de la q0 spre q01 i de la q0 spre q02 - noua mulime de stri finale va fi 21 F F F
ConcatenareDac avem deja construite dou automate finite (avnd strile iniiale q01 i q02 imulimile strilor finale F1 i F2) care accept respectiv limbajele L1 i L2 i dorim sobinem un automat finit care s accepte limbajul 21 L L L
:- noua stare iniial va fi q01, starea iniial a primului automat - adugm -tranziii de la fiecare stare final din F1 spre q02 - noua mulime de stri finale va fi F = F2
StelareDac avem deja construit un automat finit (avnd starea iniial q01 i mulimea strilorfinale F1) care accept limbajul L1 i dorim s obinem un automat finit care s acclimbajul *1 L L :
- introducem o nou stare q0 care va fi noua stare iniial -
adugm o -tranziie de la q0
spre q01
- adugm -tranziii de la fiecare stare final din F1 spre q0 - noua mulime de stri finale va fi F ={q0}
Transform area AFN AFDAvnd dat un AFN (reprezentat sub form de graf), vom calcula funcia delta completndun tabel astfel:
La capetele de linie vom pune numele strilor AFN-ului (elementele mulimii Q):q0, q1, ..., q|Q|-1
La capetele de coloan vom punecaracterele alfabetului AFN-ului (elementele
mulimii V) Calculm coninutul primelor|Q| linii astfel: elementul aflat pe linia li i coloanac j reprezint mulimea de stri n care se poate ajunge n AFN dac pornim dstarea de pe linia li (n cazul acesta: qi-1 dac numerotm liniile ncepnd cu 1) icitim caracterul de pe coloana c j. Pentru a afla aceast mulime, ne uitm la grafulcare reprezint AFN-ul, cutm stareade la linia li i pentru fiecare tranziie culitera de la coloana c j care pornete din aceast stare, adugm starea destinaie atranziiei la mulimea curentdin tabel.
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
8/11
Seminar LFA gr.211@ MN 2013-2014
- 7 -
A poi trebuie s calculm aceast funcie delta i pentru noile mulimi de striobinute la paii anteriori (aceste calcule se fac cel mai simplu folosind doar liniiledin tabel calculate la pasul anterior, nu i graful automatului AFN) (a) fie alegem s facem calculele pentrutoate 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 calculeledoar pentru noile mulimi de stri care voraprea n AFD: pentru a decide care vor fi acestea, facem un fel de parcurgeren adncime a grafului care va reprezenta AFD-ul. Adic pornim cu starea q0 care va fi starea iniial a AFD-ului, apoi parcurgem prima linie a tabelului(care conine calculele tranziiilor ce pleac din q0) i adugm la noulautomat toate aceste tranziii mpreun cu strile-destinaie calculate n tabel.Apoi pentru toate aceste stri-destinaie, dac nu au deja n tabel un capt delinie care s le corespund, l vom aduga i vom calcula acea linie astfel
- fie noua stare-mulime{qk1, qk2, , qkp}. Pentru fiecare coloan c j,calculm elementul din tabel fcndreuniunea elementelor aflate pe
aceeai linie c j i pe liniile corespunztoare strilor qk1, qk2, , qkp.Apoi revenim la desenarea grafului AFD-ului, i adugm tranziiile proasptcalculatempreun cu strile-destinaie. Relum procedeul pn nu mai aparstri noi.
Strile finale ale noului AFD obinut, vor fi acele stri-mulime (pot avea i unsingur element, nu neaprat mai multe) care conin cel puin una din strile cerau finale pentru AFN-ul iniial.
EXEMPLU:Se d AFN-ul urmtor:
Calculm tabelul pentru funcia delta: nti primele 3 linii folosind graful AFN-ului, apoiurmtoarele linii folosind aceste prime 3 linii ale tabelului.
Vom avea dou coloane, pentru c alfabetul automatului iniial este V ={a, b}.
a bq0 {q0, q1} q0q1 {q1, q2} q1q2 q2 q2
Alegem varianta (b), adic s calculm doar acele stri care vor aprea n AFD.
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
9/11
Seminar LFA gr.211@ MN 2013-2014
- 8 -
(1) Pornim cu starea q0 i i adugm cele dou tranziii i strile-destinaie necesare,adic{q0, q1} = q01 (prin notaie).
(2) Observm c a aprut noua stare q01 pentru care nu avem o linie n tabel, aa c oadugm i o calculm pentru cele dou coloane.
0122102110
10
1001
},,{},{},{
)},(
{)},(
{
)},,({
),(
qqqqqqqq
aqaq
aqqaq
011010
10
1001
},{}{}{
)},(
{)},(
{
)},,({
),(
qqqqq
bqbq
bqqbq
a bq0 {q0, q1} = q01 q0q1 {q1, q2} = q12 q1q2 q2 q2q01 {q0, q1, q2} = q012 {q0, q1} = q01
(3) Revenim la desenul AFD-ului i adugm tranziiile care lipsesc, adic cele care pleac din starea q01, mpreun cu strile-destinaie care lipsesc, adic q012.
(4) Pentru noua stare aprut, q012, i adugm linia n tabel i o calculm.
01221022110
210
210012
},,{}{},{},{
)},(
{)},(
{)},(
{
)},,,({
),(
qqqqqqqqq
aqaqaq
aqqqaq
012210210
210
210012
},,{}{}{}{
)},(
{)},(
{)},(
{
)},,,({
),(
qqqqqqq
bqbqbq
bqqqbq
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
10/11
Seminar LFA gr.211@ MN 2013-2014
- 9 -
a bq0 {q0, q1} = q01 q0q1 {q1, q2} = q12 q1q2 q2 q2q01 {q0, q1, q2} = q012 {q0, q1} = q01
q012 {q0, q1, q2} = q012 {q0, q1, q2} = q012 (5) Revenim la graf i adugm tranziiile care pleac din starea q012.
(6) Observm c nu ne-a mai aprut nicio stare nou, deci nu ne-a rmas dect s marcmstrile finale i am obinul AFD-ul cerut. n AFN-ul iniial stare final era doar q2. Orice
stare-mulime din AFD-ul nostru care l conine pe q2 va fi stare final. Exist unasingur:q012.
Obs: Dac am fi ales varianta (a), atunci am fi calculat n tabel i linia corespunztostrii q12, ns observm c nici ea, dar nici strile q1 i q2 nu apar n AFD.
Verificare acceptare cuvnt de ctre automat
Folosimconfiguraii (sau descrieri instantanee) ale automatului, adic perechiformate din starea curent i ct a mai rmas de citit din cuvntul de intrare, i aplicmfuncia delta ct timp este posibil (ne oprim fie cnd nu mai exist tranziie definitcnd se termin cuvntul). Dac la final ajungem n stare final, cuvntul va fi acceptat.
Pentru AFD:
(q0, bba) (q0, ba) (q0, a) (q01, )
Am terminat de citit cuvntul i am ajuns n starea q01, care nu este final, deci rezult cautomatul nu accept acest cuvnt.
(q0, babbaba) (q0, abbaba) (q01, bbaba) (q01, baba) (q01, aba) (q012, ba) (q012, a) (q012, ) Am terminat de citit cuvntul i am ajuns n starea q012, care este final, deci rezult cautomatul accept acest cuvnt.
7/22/2019 LFA - Explicatii Exercitii, Algoritmi
11/11
Seminar LFA gr.211@ MN 2013-2014
- 10 -
Pentru AFN:
(q0, bba)(q0, ba) (q0, a) {(q0, ), (q1, )}
Am terminat de citit cuvntuli am avut dou drumuri posibile, care ne-au adus n strile
q0 i q1. Nici una din ele nu este stare final, deci cuvntul nu este acceptat.
(q0, babbaba) (q0, abbaba)
{(q0, bbaba), (q1, bbaba)}
{(q0, baba), (q1, baba)}
{(q0, aba), (q1, aba)}
{(q0, ba), (q1, ba), (q2, ba)} {(q0, a), (q1, a), (q2, a)}
{(q0, ), (q1, ), (q2, )}
Am terminat de citit cuvntuli am avut apte drumuri posibile, care ne-au adus n strileq0, q1 i q2. Exist printre ele o stare care este final, q2, deci cuvntul este acceptat.