Kontekstivabad keeled Teema 2.2 Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 1 / 28
Sisukord 1 Pinuautomaadid 2 KV keeled ja pinuautomaadid Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 2 / 28
Järgmine punkt 1 Pinuautomaadid 2 KV keeled ja pinuautomaadid Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 3 / 28
Pinuautomaat e magasinmäluga automaat Töötakti alguses δ(q,b,b) = {...,(q,dac),...} Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 4 / 28
Pinuautomaat e magasinmäluga automaat Töötakti lõpus δ(q,b,b) = {...,(q,dac),...} Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 5 / 28
Pinuautomaadi mudel Lõplik automaat koos magasiniga: magasini saab laadida sümboleid (operatsioon push(a)) ja lugeda neid sealt hiljem tagasi vastupidises järjekorras (operatsioon pop()); esimese sümbolina laaditakse magasini sümbol $, kui operatsiooni pop() tulemusena loetakse $, on magasin tühi; magasin on potentsiaalselt piiramatu mahuga. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 6 / 28
Pinuautomaadi formaalne definitsioon Kasutatakse erinevaid tähestikke sisendsümbolite (Σ) ja magasinisümbolite (Γ) joaks. Definitsioon Lõplik pinuautomaat on struktuur M = (Q,Σ,Γ,δ,Q 0,F ). kus Q on lõplik olekute tähestik; Σ on sisendsümbolite tähestik; Γ on magasinisümbolite tähestik; δ : Q Σ ε Γ ε P(Q Γ ε ) on üleminekufunktsioon; Q 0 Q on lähteolekute hulk; F Q lõppolekute hulk (aktsepteerivate olekute hulk). Siin on kasutatud tähiseid: P(X ) hulga X kõigi alamhulkade hulk (astmehulk); A ε = A {ε}. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 7 / 28
Pinuautomaadi funktsioneerimine Olgu M = (Q,Σ,Γ,δ,Q 0,F ) mittedeterministlik lõplik pinuautomaat ja w = w 1 w 2...w m sõne tähestikus Σ ε. Definitsioon M aktsepteerib sõne w, kui leidub olekute jada r 0,...,r m Q ja magasinisümbolite sõned s 0,s 1,...,s m Γ, mis rahuldavad järgmisi tingimusi: 1 r 0 Q 0 ja s 0 = ε (automaat M alustab lähteolekust ja tühja magasiniga); 2 Iga i = 0,...,m 1 jaoks (r i+1,b) δ(r i,w i+1,a), kus s i = at ja s i+1 = bt mingite a,b Γ ε ning t Γ. 3 r m F Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 8 / 28
Pinuautomaadi esitamine diagrammina Sarnane lõpliku automaadi esitusega: graaf, mille tippudeks on olekud, servad on aga märgendatud üleminekuid tähistavate avaldistega kujul a,b c kus a on loetav sisendsümbol; b on magasinist võetav sümbol (b = pop()); c on magasini laaditav sümbol (push(c)). ε-üleminekud tähendavad, et sisendsümbolit ei loeta, kui a = ε; magasinist ei võeta sümbolit, kui b = ε; magasini ei laadita sümboleid, kui c = ε. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 9 / 28
Pinuautomaadi näide Pinuautomaat, mis aktsepteerib keele L = {0 n 1 n n > 0} ε,ε $ q 0 q 1 0,ε 0 1,0 ε q 3 ε,$ ε q 2 1,0 ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 10 / 28
Pinuautomaadi näide (2) Pinuautomaat, mis aktsepteerib keele L = {a i b j c k i,j,k > 0 ja i = j i = k} b,a ε c,ε ε q 0 ε,$ ε q 2 q 3 ε,ε $ q 1 ε,ε ε ε,ε ε ε,ε ε ε,$ ε q 4 q 5 q 6 a,ε a b,ε ε c,a ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 11 / 28
Pinuautomaadi näide (3) Pinuautomaat, mis aktsepteerib keele L = {ww R w {0,1} } ε,ε $ q 0 q 0,ε 0 1 1,ε 1 ε,ε ε q 3 ε,$ ε q 2 0,0 ε 1,1 ε w R tähistab sõnet w kirjutatuna paremalt vasakule. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 12 / 28
Tähistuste lihtsustamine Sagedasti esinev olukord: Magasini laaditakse mitu sümbolit järjest ilma samaaegselt sisendit lugemata. Tähistuste ja diagrammide lihtsustamiseks võib modifitseerida üleminekufunktsiooni järgmiselt: Üleminekute jada (q 1,u l ) δ(q,a,s) δ(q 1,ε,ε) = {(q 2,u l 1 )} δ(q 2,ε,ε) = {(q 3,u l 2 )}. δ(q l 1,ε,ε) = {(r,u 1 )} võib asendada ühe üleminekuga: kus u = u 1 u 2...u l. (r,u) δ(q,a,s), Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 13 / 28
Tähistuste lihtsustamine Sagedasti esinev olukord: Magasini laaditakse mitu sümbolit järjest ilma samaaegselt sisendit lugemata. Tähistuste ja diagrammide lihtsustamiseks võib modifitseerida üleminekufunktsiooni järgmiselt: Sama diagrammina Näiteks (r,xyz) δ(q,a,s) tähendus q q a,s z q 1 a,s xyz = ε,ε y r q 2 ε,ε x r Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 13 / 28
Järgmine punkt 1 Pinuautomaadid 2 KV keeled ja pinuautomaadid Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 14 / 28
KV keeled ja pinuautomaadid Teoreem Iga KV keel on aktsepteeritav mingi magasinmäluga automaadi abil. Algoritm. Sisend: L = L (G), kus G = (N,Σ,P,S) on KV grammatika. Väljund: L = L (M), kus M = (Q,Σ,Γ,δ,{q start },F ) on MMA, nii et 1 Γ = Σ N {$} 2 Q = {q start,q loop,q accept } 3 Üleminekufunktsioon rahuldab tingimusi: δ(q start,ε,$) = { (q loop,s$) } ; δ(q loop,ε,a) = { (q loop,w) A w P } iga A N korral; δ(q loop,a,a) = { (q loop,ε) A a P } iga a Σ korral; δ(q loop,ε,$) = { (q accept,ε) }. 4 F = {q accept } m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 15 / 28
KV keeled ja pinuautomaadid Teoreem Iga KV keel on aktsepteeritav mingi magasinmäluga automaadi abil. Algoritm. Sama diagrammina... q start ε,ε S$ q loop ε,a w a,a ε produktsiooni A w jaoks terminaali a jaoks ε,$ ε q accept m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 15 / 28
Aritmeetilise avaldise pinuautomaat Olgu antud Kv grammatika produktsioonidega: S S + T T T T F F F (S) x x,x ε +,+ ε, ε (,( ε ),) ε q start q loop ε,ε S$ ε,s S + T ε,s T ε,t T F ε,t F ε,f (S) ε,f x ε,$ ε q accept Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 16 / 28
Ühe olekuga pinuautomaadid Teoreem Iga MMA M jaoks leidub ühe olekuga MMA M, nii et L (M) = L (M ). Algoritm. Sisend: MMA M = (Q,Σ,Γ,δ,Q 0,F ) Väljund: Ühe olekuga MMA M = ({ },Σ,Γ,δ,{ },{ }), nii et Γ = {[sat] a Σ, (t,γ) δ (s,a,a)}; üleminekufunktsioon δ rahuldab tingimusi : 1 Kui (t,bcd) δ(s,a,a), siis iga kolme oleku x 1,x 2,x 3 Q jaoks (,[tbx 1 ][x 1 Cx 2 ][x 2 Dx 3 ]) δ (,a,[sax 3 ]); 2 Kui (t,ε) δ[(s,a,a), siis (,ε) δ (,a,[sat]); 3 δ (,ε,$) = {(,[q 0 $x]) x Q,q 0 Q 0 }; Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 17 / 28
Ühe olekuga pinuautomaadid Teoreem Iga MMA M jaoks leidub ühe olekuga MMA M, nii et L (M) = L (M ). Lihtsustades tähistusi võib üleminekufunktsiooni esitada uuel kujul δ : Σ ε Γ P(Γ ) ning esitada konstrueeritud algoritmi lühemalt: Algoritm. Sisend: MMA M = (Q,Σ,Γ,δ,Q 0,F ) Väljund: Ühe olekuga MMA M = ({ },Σ,Γ,δ,{ },{ }), nii et Γ = {[sat] a Σ, (t,γ) δ(s,a,a)}; üleminekufunktsioon δ rahuldab tingimusi : 1 Kui (t,bcd) δ(s,a,a), siis iga kolme oleku x 1,x 2,x 3 Q jaoks [tbx 1 ][x 1 Cx 2 ][x 2 Dx 3 ] δ (a,[sax 3 ]); 2 Kui (t,ε) δ[(s,a,a), siis ε δ (a,[sat]); 3 δ (ε,$) = {[q 0 $x] x Q,q 0 Q 0 }; Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 17 / 28
Ühe olekuga pinuautomaat Palindroome aktstsepteeritv automaat Automaadi M magasini tähestik: Z=[q$r] C=[qas] F=[sas] A=[q$q] D=[qbq] G=[sbs] B=[qaq] E=[qbs] H=[s$r] I=[q$s] Funktsiooni δ genereerimine ülemineku δ(q,a,$) = {(q,a$)} jaoks Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 18 / 28
Ühe olekuga pinuautomaat Palindroome aktstsepteeritv automaat Automaadi M magasini tähestik: Z=[q$r] C=[qas] F=[sas] A=[q$q] D=[qbq] G=[sbs] B=[qaq] E=[qbs] H=[s$r] I=[q$s] Funktsiooni δ genereerimine ülemineku δ(q,a,$) = {(q,a$)} jaoks δ (a,[q$q]) = {[qaq][q$q], [qas][s$q], [qar][r$q]} δ (a,[q$s]) = {[qaq][q$s], [qas][s$s], [qar][r$s]} δ (a,[q$r]) = {[qaq][q$r], [qas][s$r], [qar][r$r]} Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 18 / 28
Ühe olekuga pinuautomaat Palindroome aktstsepteeritv automaat Automaadi M magasini tähestik: Z=[q$r] C=[qas] F=[sas] A=[q$q] D=[qbq] G=[sbs] B=[qaq] E=[qbs] H=[s$r] I=[q$s] Funktsiooni δ genereerimine ülemineku δ(q,a,$) = {(q,a$)} jaoks { } δ (a,[q$q]) = [qaq][q$q], [qas][s$q], [qar][r$q] { } δ (a,[q$s]) = [qaq][q$s], [qas][s$s], [qar][r$s] { } δ (a,[q$r]) = [qaq][q$r], [qas][s$r], [qar][r$r] Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 18 / 28
Ühe olekuga pinuautomaat Palindroome aktstsepteeritv automaat Automaadi M magasini tähestik: Z=[q$r] C=[qas] F=[sas] A=[q$q] D=[qbq] G=[sbs] B=[qaq] E=[qbs] H=[s$r] I=[q$s] Funktsiooni δ genereerimine ülemineku δ(q,a,$) = {(q,a$)} jaoks δ (a,[q$q]) = {[qaq][q$q]} δ (a,[q$s]) = {[qaq][q$s]} δ (a,[q$r]) = {[qaq][q$r], [qas][s$r]} Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 18 / 28
Ühe olekuga pinuautomaat Palindroome aktstsepteeritv automaat Automaadi M magasini tähestik: Z=[q$r] C=[qas] F=[sas] A=[q$q] D=[qbq] G=[sbs] B=[qaq] E=[qbs] H=[s$r] I=[q$s] Funktsiooni δ genereerimine ülemineku δ(q,a,$) = {(q,a$)} jaoks δ (a,[q$q]) = {[qaq][q$q]} δ (a,[q$s]) = {[qaq][q$s]} δ (a,[q$r]) = {[qaq][q$r], [qas][s$r]} = δ (a,a) = {BA} δ (a,i ) = {BI } δ (a,z) = {BZ, CH} Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 18 / 28
Ühe olekuga pinuautomaat (2) Üleminekufunktsioon δ Σ Γ ε A B C D E F G H I Z a BA BI BZ,CH b ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 19 / 28
Ühe olekuga pinuautomaat (2) Üleminekufunktsioon δ Σ Γ ε A B C D E F G H I Z a BA BB BC,CF,ε BD BE,CG ε BI BZ,CH b DA DB DC,EF DD DE,EG,ε ε DI DZ,EH ε A,I,Z ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 20 / 28
Ühe olekuga pinuautomaat (2) Üleminekufunktsioon δ (mitteproduktiivsete üleminekute kustamine): Σ Γ ε A B; C D E F G H I Z a BA BB BC,CF,ε BD BE,CG ε BI BZ,CH b DA DB DC,EF DD DE,EG,ε ε DI DZ,EH ε A,I,Z ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 21 / 28
Ühe olekuga pinuautomaat (2) Üleminekufunktsioon δ (mitteproduktiivsete üleminekute kustamine): Σ Γ ε A B C D E F G H I Z BC,CF,ε BE,CG BZ,CH a BA BB BD ε BI DC,EF DE,EG,ε DZ,EH b DA DB DD ε DI A,I,Z ε ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 22 / 28
Ühe olekuga pinuautomaat (2) Üleminekufunktsioon δ (pärast optimeerimist): Σ Γ ε C E F G H Z a CF,ε CG ε CH b EF EG,ε ε EH ε Z ε Tuletuse näide Üleminekufunktsiooni δ korral: (aabaabaa,ε) (aabaabaa,z) (abaabaa,ch) (baabaa,cfh) (aabaa,effh) (abaa,cgffh) (baa,gffh) (aa,ffh) (a,fh) (ε,h) (ε,ε) Üleminekufunktsiooni δ korral: (p,aabaabaa,ε) (q,aabaabaa,$) (q,abaabaa,a$) (q,baabaa,aa$) (q,aabaa,baa$) (q,abaa,abaa$) (s,baa,baa$) (s,aa,aa$) (s,a,a$) (s,ε,$) (r,ε,ε) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 23 / 28
Ühe olekuga pinuautomaat (2) Üleminekufunktsioon δ (pärast optimeerimist): Σ Γ ε C E F G H Z a CF,ε CG ε CH b EF EG,ε ε EH ε Z ε Tuletuse näide Üleminekufunktsiooni δ korral: (aabaabaa,ε) (aabaabaa,z) (abaabaa,ch) (baabaa,cfh) (aabaa,effh) (abaa,cgffh) (baa,gffh) (aa,ffh) (a,fh) (ε,h) (ε,ε) Üleminekufunktsiooni δ korral: (p,aabaabaa,ε) (q,aabaabaa,$) (q,abaabaa,a$) (q,baabaa,aa$) (q,aabaa,baa$) (q,abaa,abaa$) (s,baa,baa$) (s,aa,aa$) (s,a,a$) (s,ε,$) (r,ε,ε) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 23 / 28
Vastavus üleminekufunktsioonide vahel Üleminekufunktsiooni δ korral: (aabaabaa,ε) (aabaabaa,z) (abaabaa,ch) (baabaa,cfh) (aabaa,effh) (abaa,cgffh) (baa,gffh) (aa,ffh) (a,fh) (ε,h) (ε,ε) Üleminekufunktsiooni δ korral: (p,aabaabaa,ε) (q,aabaabaa,$) (q,abaabaa,a$) (q,baabaa,aa$) (q,aabaa,baa$) (q,abaa,abaa$) (s,baa,baa$) (s,aa,aa$) (s,a,a$) (s,ε,$) (r,ε,ε) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 28
Vastavus üleminekufunktsioonide vahel Üleminekufunktsiooni δ korral: (aabaabaa,ε) (aabaabaa,z) (abaabaa,ch) (baabaa,cfh) (aabaa,effh) (abaa,cgffh) (baa,gffh) (aa,ffh) (a,fh) (ε,h) (ε,ε) Üleminekufunktsiooni δ korral: (p,aabaabaa,ε) (q,aabaabaa,$) (q,abaabaa,a$) (q,baabaa,aa$) (q,aabaa,baa$) (q,abaa,abaa$) (s,baa,baa$) (s,aa,aa$) (s,a,a$) (s,ε,$) (r,ε,ε) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 28
Vastavus üleminekufunktsioonide vahel Üleminekufunktsiooni δ korral: (aabaabaa,ε) (aabaabaa,z) (abaabaa,ch) (baabaa,cfh) (aabaa,effh) (abaa,cgffh) (baa,gffh) (aa,ffh) (a,fh) (ε,h) (ε,ε) Üleminekufunktsiooni δ korral: (p,aabaabaa,ε) (q,aabaabaa,$) (q,abaabaa,a$) (q,baabaa,aa$) (q,aabaa,baa$) (q,abaa,abaa$) (s,baa,baa$) (s,aa,aa$) (s,a,a$) (s,ε,$) (r,ε,ε) Pikemalt välja kirjutades: Üleminekufunktsiooni δ korral:... (abaa,[qas][sbs][sas][sas][s$r]) (baa,[sbs][sas][sas][s$r])... Üleminekufunktsiooni δ korral:... (q,abaa,abaa$) (s,baa,baa$)... Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 28
Ühe olekuga pinuautomaat ja KV grammatika Teoreem Ühe olekuga magasinmäluga automaadi M jaoks leidub KV grammatika G, nii et L (M) = L (G). Tõestus. Automaadi M üleminekufunktsiooni δ : Σ ε Γ P(Γ ) jaoks saab konstrueerida KV grammatika järgmiselt: Kui ABC δ (a,d), siis lisada grammatikale G produktsioon D aabc Grammatika lähetsümboliks valida olek, mis esimesena laaditakse magasini, näiteks S, kui S δ (ε,ε). m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 25 / 28
Ühe olekuga pinuautomaat ja KV grammatika Teoreem Ühe olekuga magasinmäluga automaadi M jaoks leidub KV grammatika G, nii et L (M) = L (G). Σ Γ ε C E F G H S a CF,ε CG ε CH b EF EG,ε ε EH ε S ε Palindroome aktsepteeriv grammatika S ach C acf E acg F a S beh C bef E beg G b C a E b H ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 25 / 28
Ühe olekuga pinuautomaat ja KV grammatika Σ Γ ε C E F G H S a CF,ε CG ε CH b EF EG,ε ε EH ε S ε Palindroome aktsepteeriv grammatika Võrdleme tuletusi: S ach C acf E acg F a S beh C bef E beg G b C a E b H ε (aabaabaa,ε) (aabaabaa,z) (abaabaa,ch) (baabaa,cfh) (aabaa,effh) (abaa,cgffh) (baa,gffh) (aa,ffh) (a,fh) (ε,h) (ε,ε) S ach aacfh aabeffh aaabacgffh aabaagffh aabaabffh aabaabafh aabaabaah aabaabaa Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 25 / 28
Pinuautomaadid ja KV keeled Järeldus Lõpliku magasinmäluga automaadi aktsepteeritav keel on kontekstivaba. Järeldus Lõplike magasinmäluga automaatide abil aktsepteeritate keelte hulk langeb kokku kontekstivabade keelte hulgaga. Järeldus Kuuluvusprobleem (kas antud grammatika G korral sõne x L (G)?) on kontekstivabade keelte jaoks algoritmiliselt lahenduv. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 26 / 28
Greibachi normaalkuju Definitsioon KV grammatika on Greibachi normaalkujul, kui tema produktsioonid on kujul A aw, kus W N (erijuhul võib W olla ka tühi sõne!) või kujul S ε,kui keelde L (G) peab kuuluma ka tühi sõne Järeldus Iga KV grammatika on teisendatav Greibachi normaalkujule. Vt Greibachi normaalkuju kohta lisainfot kirjandusest ja veebist. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 27 / 28
KV ja regulaarsed keeled Järeldus Regulaarsete keelte hulk on KV keelte pärisosahulk. KV keeled Regulaarsed keeled Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 28 / 28