Kontekstivabad keeled Teema 2.1 Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 1 / 27
Loengu kava 1 Kontekstivabad grammatikad 2 Süntaksipuud 3 Chomsky normaalkuju Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 2 / 27
Järgmine punkt 1 Kontekstivabad grammatikad 2 Süntaksipuud 3 Chomsky normaalkuju Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 3 / 27
Programmi struktuur puuna i f a=b then x :=2 ( a 3) e l s e x := a b a+b ; IF = := := a b x * x * 2 - abs abs a 3 - + a b a b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 4 / 27
Programmipuu interpreteerimine Avaldis: Puu: c (a + b) * c + a b P r o c e d u r e e x e c u t e ( puu ) ; b e g i n w h i l e r e a d ( e l )!= empty do i f a r i t y ( e l )=0 then push ( e l ) f i ; i f a r i t y ( e l )=1 then push ( a p p l y ( e l, pop ( ) ) ) f i ; i f a r i t y ( e l e m e n t )=2 then push ( a p p l y 2 ( e l, pop ( ), pop ( ) ) ) f i ; od ; r e t u r n ( pop ( ) ) ; end ; Puu lõppjärjekorras: c a b + Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 5 / 27
Loomuliku keele lause struktuur S NF TF N OMF N T NF Päkapiku M OM kasv tingib NF N liiga napp N N jõuluvanaks tema sobimatuse (Слишком маленький рост гнома заставляет его несовместимость быть Дед Морозом.) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 6 / 27
Fraasistruktuuri grammatika eelmise näite korral S NF TF NF N OMF N NF NF N NF N N TF T NF OMF M OM N Päkapiku N kasv N tema N sobimatuse N jõuluvanaks M liiga OM napp Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 7 / 27
Fraasistruktuuri grammatika eelmise näite korral... ehk sama lühemalt: S NF TF NF N OMF N NF N N N TF T NF OMF M OM N Päkapiku kasv tema sobimatuse jõuluvanaks M liiga OM napp Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 7 / 27
Fraasistruktuuri grammatika eelmise näite korral... ehk sama lühemalt: S NF TF NF N OMF N NF N N N TF T NF OMF M OM Tuletus grammatikas: N Päkapiku kasv tema sobimatuse jõuluvanaks M liiga OM napp S NF TF N OMF N TF Päkapiku OMF N TF Päkapiku M OM N TF Päkapiku liiga OM N TF Päkapiku liiga napp N TF Päkapiku liiga napp kasv TF Päkapiku liiga napp kasv T NF Päkapiku liiga napp kasv tingib NF Päkapiku liiga napp kasv tingib N NF Päkapiku liiga napp kasv tingib tema NF Päkapiku liiga napp kasv tingib tema N N Päkapiku liiga napp kasv tingib tema sobimatuse N Päkapiku liiga napp kasv tingib tema sobimatuse jõuluvanaks Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 7 / 27
Terminoloogiast seoses fraasistruktuuri grammatikatega Sõnad nagu päkapiku, tingib, sobimatuse jne on terminaalid; Tähised nagu S, T, OMF jne on mitteterminaalid ehk muutujad; terminaalide järjendit nimetatakse terminaalseks sõneks või lauseks, näiteks Päkapiku liiga napp kasv ; Sõne (erijuhul ε), mis sisaldab mitteterminaale ja terminaale (terminaalid võivad ka puududa) nimetatakse lausevormiks, näiteks NF TF või Päkapiku liiga OM N tingib NF Grammatikareeglit nagu NF N OMF N või N kasv nimetatakse produktsiooniks; Kui lausevormi β saab lausevormist α ühe tuletussammuga, st tema saamiseks on α üks mitteterminaal asendatud ühe produktsiooni parema poolega, öeldakse, et β on lausevormist α vahetult tuletatav ja kirjutatakse α β; Kui lausevormi β saab lausevormist α mitme järjestikuse vahetu tuletatavuse sammuga, on β lausevormist α tuletatav ja kirjutatakse α + β; Kui β on lausevormist α tuletatav k sammuga, kirjutatakse α k β; Kui α = β või α + β, kirjutatakse α β Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 8 / 27
Vahetu tuletatavus ja tuletatavus KV grammatika korral Definitsioon Lausevorm β on vahetult tuletatav lausevormist α (tähistus α β), kui mitteterminaali N ja lausevormide γ, δ ja ϕ korral on täidetud tingimused α = γnδ; β = γϕδ; grammatikas leidub produktsioon N ϕ. Definitsioon Lausevorm β on tuletatav lausevormist α (tähistus α β), kui leiduvad lausevormid γ 0,γ 1,...,γ k, kus k {0,1,2,...}, nii et α = γ 0 ; β = γ k ; γ 0 γ 1 γ k. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 9 / 27
Vahetu tuletatavus ja tuletatavus KV grammatika korral Definitsioon Lausevorm β on vahetult tuletatav lausevormist α (tähistus α β), kui mitteterminaali N ja lausevormide γ, δ ja ϕ korral on täidetud tingimused α = γnδ; β = γϕδ; grammatikas leidub produktsioon N ϕ. Alternatiivne definitsioon: Definitsioon Lausevorm β on tuletatav lausevormist α (tähistus α β), kui mingi k {0,1,2,...} korral α k β. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 9 / 27
KV grammatika ja KV keel Definitsioon Kontekstivabaks grammatikaks (lühemalt KV grammatikaks) nimetatakse nelikut G = (N,Σ,P,S), kus 1 N on mitteterminaalide tähestik; 2 Σ on terminaalide tähestik (eeldatakse, et N Σ = ); 3 P N V on produktsioonide lõplik hulk, kus V = N Σ; 4 S N on lähtesümbol. Definitsioon KV grammatikaga G = (N,Σ,P,S) genereeritav keel on sõnede hulk L (G) = {x S x ning x Σ }. Definitsioon Sõnede hulk L on kontekstivaba keel (KV keel), kui leidub KV grammatika G, nii et L = L (G). Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 10 / 27
Kokkuleppelised tähistused a,b,c,... ja 0,1,...,9 terminaalid; A,B,C,...,S mitteterminaalid, kusjuures S on grammatika lähtesümbol; T,U,V,...,Z terminaalid või mitteterminaalid; α,β,... lausevormid; u,v,...,z terminaalsed sõned. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 11 / 27
Aritmeetilise avaldise grammatika S S + T S T T T F T F F (S) F a Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 12 / 27
Millise keele genereerib grammatika? Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 13 / 27
Millise keele genereerib grammatika? (2) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 14 / 27
Järgmine punkt 1 Kontekstivabad grammatikad 2 Süntaksipuud 3 Chomsky normaalkuju Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 15 / 27
Süntaksipuud KV-grammatikate produktsioonid on esitatavad elementaarpuudena: Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 16 / 27
Süntaksipuud (2) Elementaarpuude ühendamise tulemusena saadud puud nimetatakse süntaksipuuks grammatikas G. Süntaksipuu t: S T Süntaksipuu krooniks on lausevorm: Kr(t) = a (S + a) T * F F a ( S S + T ) Täielikku süntaksipuud nimetatakse (oma krooni) tuletuspuuks. F a Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 17 / 27
Ühesed keeled ja grammatikad Olgu antud grammatika G produktsioonidega L 1 = L (G) = (a(b + c)) a S SbS S ScS S a Sõnel abaca on grammatika G korral kaks tuletuspuud Tuletuspuud a) b) S S S b S S c S a S c S S b S a a a a a Igale vasaktuletusele vastab täpselt üks tuletuspuu: a) S SbS abs abscs abacs abaca b) S ScS SbScS abscs abacs abaca Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 18 / 27
Ühesed keeled ja grammatikad (2) Definitsioon KV-grammatika G on ühene, kui iga sõne x L (G) korral leidub ainult üks tuletuspuu (= üks vasaktuletus). Definitsioon KV-keel L on ühene, kui kui leidub ühene KV-grammatika G, nii et L = L (G). Keel L 1 on ühene S a S aa A bs A cs Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 19 / 27
Ühesed keeled ja grammatikad (3) Teoreem Olgu L 1 ja L 2 ühesed keeled. Kui L 1 L 2 =, siis on keel L 1 L 2 samuti ühene. Kui üheste keelte ühisosa ei ole tühi, ei pruugi nende ühend olla ühene. Keeled L 2 = {a n b n c m n,m > 0} ja L 3 = {a m b n c n n,m > 0} on ühesed, vastavad grammatikad on: G 1 : {S AB,A aab,a ab,b cb,b c} G 2 : {S AB,A aa,a a,b bbc,b bc} Keel L = {a n b n c m n,m > 0} {a m b n c n n,m > 0} on mitmene! Teoreem KV-keelte ühesuse probleem pole algoritmiliselt lahenduv. Me tõestame selle hiljem. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 20 / 27
Ühesed keeled ja grammatikad (3) Teoreem Olgu L 1 ja L 2 ühesed keeled. Kui L 1 L 2 =, siis on keel L 1 L 2 samuti ühene. Kui üheste keelte ühisosa ei ole tühi, ei pruugi nende ühend olla ühene. Keeled L 2 = {a n b n c m n,m > 0} ja L 3 = {a m b n c n n,m > 0} on ühesed, vastavad grammatikad on: G 1 : {S AB,A aab,a ab,b cb,b c} G 2 : {S AB,A aa,a a,b bbc,b bc} Keel L = {a n b n c m n,m > 0} {a m b n c n n,m > 0} on mitmene! Teoreem KV-keelte ühesuse probleem pole algoritmiliselt lahenduv. Me tõestame selle hiljem. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 20 / 27
Järgmine punkt 1 Kontekstivabad grammatikad 2 Süntaksipuud 3 Chomsky normaalkuju Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 21 / 27
Chomsky normaalkuju Definitsioon KV gramaatika G = (N,Σ,P,S) on Chomsky normaalkujul, kui tema produktsioonid on ühel järgmisetst kujudest A BC A a S ε kus S on grammatika lähtesümbol ning A, B ja C on mitteterminaalid ning B ja C ei ole lähtesümbolid. Teoreem Iga KV keel on genereeritav KV grammatikaga Chomsky normaalkujul. Tõestuse idee: Teisendada KV grammatika ekvivalentseks grammatikaks Chomsky normaalkujul järgmiste sammudega: Lisame uue lähtesümboli S 0 ; Elimineerime tühja sõne produktsioonidest kujul A ε; Elimineerime ahelproduktsioonid kujul A B Sobitame produktsioone nii, et grammatika genereeriks sama keele; Teisendame produktsioonid nõutud kujule. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 22 / 27
Chomsky normaalkuju Definitsioon KV gramaatika G = (N,Σ,P,S) on Chomsky normaalkujul, kui tema produktsioonid on ühel järgmisetst kujudest A BC A a S ε kus S on grammatika lähtesümbol ning A, B ja C on mitteterminaalid ning B ja C ei ole lähtesümbolid. Teoreem Iga KV keel on genereeritav KV grammatikaga Chomsky normaalkujul. Tõestuse idee: Teisendada KV grammatika ekvivalentseks grammatikaks Chomsky normaalkujul järgmiste sammudega: Lisame uue lähtesümboli S 0 ; Elimineerime tühja sõne produktsioonidest kujul A ε; Elimineerime ahelproduktsioonid kujul A B Sobitame produktsioone nii, et grammatika genereeriks sama keele; Teisendame produktsioonid nõutud kujule. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 22 / 27
Chomsky normaalkuju: tõestus Samm 1: Lisada grammatikale uus algsümbol S 0 ja produktsioon S 0 S. Tagab selle, et ühegi produktsiooni parem pool ei sisalda lähtesümbolit. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 23 / 27
Chomsky normaalkuju: tõestus Samm 2: Elimineerida tühja parema poolega produktsioonid. Iga produktsiooni jaoks kujul A ε korrata järgmisi samme seni, kuni kõik tühja parema poolega produktsioonid on kustutatud, välja arvatud produktsioon S 0 ε: Kustutada produktsioon A ε; Iga produktsiooni R uav jaoks lisada produktsioon R uv; Iga produktsiooni R uavaw jaoks lisada produktsioonid R uvaw, R uavw ja R uvw; Analoogiliselt eelmisele punktile lisada uued produktsioonid iga produktsiooni jaoks, mille paremas pooles on 3 või enam mitteterminaali A; Iga produktsiooni R A jaoks lisada produktsioon R ε, välja arvatud juhul, kui eelnevate sammude jooksul ei ole produktsioon R ε kustutatud. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 23 / 27
Chomsky normaalkuju: tõestus Samm 3: Elimineerida ahelproduktsioonid: Iga produktsiooni jaoks kujul A B korrata järgmisi samme seni, kuni kõik ahelproduktsioonid on kustutatud: Kustutada produktsioon A B. Iga produktsiooni B u jaoks lisada produktsioon A u, välja arvatud juhul, kui see on ahelproduktsioon, mis on varasemate sammude jooksul kustutatud. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 23 / 27
Chomsky normaalkuju: tõestus Samm 4: Teisenda produktsioonid, mis pole veel soovitud kujul: Iga produktsiooni jaoks kujul A u 1 u 2...u k, kus k 3 lisada uued mitteterminaalid N 1 N 2...N k 2 ja produktsioonid A u 1 N 1 N 1 u 2 N 2 N k 3 u k 2 N k 2 N k 2 u k 1 u k Iga eelmistes produktsioonides esineva terminaali u i jaoks lisada uus mitteterminaal U i ja produktsioon U i u i. m.o.t.t Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 23 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε Uue lähtesümboli lisamine S ASA ab A B S B b ε S 0 S S ASA ab A B S B b ε Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 S S ASA ab A B S B b ε Produktsiooni B ε elimineerimine S 0 S S ASA ab a A B S ε B b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 S S ASA ab a A B S ε B b Produktsiooni A ε elimineerimine S 0 S S ASA ab a AS SA S A B S B b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 S S ASA ab a AS SA S A B S B b Produktsiooni S S elimineerimine S 0 S S ASA ab a AS SA A B S B b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 S S ASA ab a AS SA A B S B b Produktsiooni S 0 S elimineerimine S 0 ASA ab a AS SA S ASA ab a AS SA A B S B b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 ASA ab a AS SA S ASA ab a AS SA A B S B b Produktsiooni A B elimineerimine S 0 ASA ab a AS SA S ASA ab a AS SA A S b B b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 ASA ab a AS SA S ASA ab a AS SA A S b B b Produktsiooni A S elimineerimine S 0 ASA ab a AS SA S ASA ab a AS SA A b ASA ab a AS SA B b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika S ASA ab A B S B b ε S 0 ASA ab a AS SA S ASA ab a AS SA A b ASA ab a AS SA B b Lõputeisendused S 0 AA 1 CB a AS SA S AA 1 CB a AS SA A b AA 1 CB a AS SA B b A 1 SA C a Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Chomsky normaalkujule teisendamine: näide KV grammatika Chomsky normaalkuju S ASA ab A B S B b ε S 0 AA 1 CB a AS SA S AA 1 CB a AS SA A b AA 1 CB a AS SA B b A 1 SA C a S A B b a S B ε A B b A b S 0 S a A 1 A b Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 24 / 27
Cocke-Kasami-Younger i algoritm (CKY-algoritm) Antud: KV grammatika G Chomsky normaalkujul ja sõne w = w 1...w n. Tulemus: Kui w L (G), siis accept, vastasel juhul reject. Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 25 / 27
CKY algoritm (2) 1,4 1,3 2,4 1,2 2,3 3,4 1,1 2,2 3,3 4,4 Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 26 / 27
CKY algoritm (2) 1,2 1,3 1,1 2,2 w 1 w 2 1,4 2,3 2,4 3,4 3,3 4,4 w 3 w 4 Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 26 / 27
CKY algoritm (2) 1,2 1,3 1,1 2,2 w 1 w 2 1,4 2,3 2,4 3,4 3,3 4,4 w 3 w 4 Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 26 / 27
CKY algoritm (3) Jaan Penjam, email: jaan@cs.ioc.ee Rekursiooni- ja keerukusteooria: KV keeled 27 / 27