LFA - Explicatii Exercitii, Algoritmi

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.