Lskennn perusmllit 13: Kertust Pekk Kilpeläinen Tietojenkäsittelytieteen litos, Itä-Suomen yliopisto sähköposti: pekk.t.kilpelinen@uef.fi 8. helmikuut 13 Lähtökoht j trkstelun kohde Lskentongelmt erityisesti päätösongelmt f : Syötteet Tulosteet, f : Syötteet {, 1} : Onko syötteellä x hluttu ominisuus? kuuluuko x joukkoon {w w:llä on hluttu ominisuus } utomttien j formlikielten teori: kielentunnistusongelmi rtkovt lskennn mllit sekä niiden kutt stv tieto lskentongelmist j niiden rtkisuist Äärellinen utomtti (FA) Yksinkertisin lskennn mlli (muistiton) Formlisti M = (Q, Σ, δ, q, F ) Deterministinen: Tiln q j merkkiin liittyy yksikäsitteinen seurjtil δ(q, ) Automtin M 1 tilsiirtymäkvio j tilsiirtymätulukko: M 1 : δ 3 1 3 1 3 1 3 1 3 1
rtkemttomt ongelmt tyyppi : rjoittmttomt kielet rekursiivisesti lueteltvt kielet tunnistus: universli Turingin kone (pysähtyy "kyllä" tpuksess) rekursiiviset kielet tunnistus: Turingin kone + riittävän mittinen työnuh (pysähtyy in), RAM kone, ohjelmointikielet tyyppi 1: kontekstiset kielet tunnistus: Turingin kone + kohtuullisen (eli polynomisen) mittinen työnuh tyyppi : kontekstittomt kielet tunnistus: pinoutomtti tyyppi 3: säännölliset kielet; tunnistus: äärellinen utomttivkiomäärä muisti äärelliset kielet Kuv 1: Chomskyn kielihierrki. Automtin lskent j tunnistm kieli M 1 : 3 1 Syötteen hyväksyvä lskent joht lopputiln: (, ) (, ) (1, ) (3, ) (1, ) (, ) (, ) Hylkäävä lskent ei johd lopputiln: (, ) (1, ) (3, ) (1, ) Automtin tunnistm kieli L(M) = {w Σ M hyväksyy w:n} Määr: Kieli on säännöllinen jos joku utomtti tunnist sen M 1 : 3 1 Automtti M 1 tunnist kielen L(M 1 ) = {w {, } w on tyhjä ti sisältää osjonon }
pädeterministinen äärellinen utomtti (NFA) Yleistys: siirtymäfunktion rvo voi oll joukko vihtoehtoisi tiloj δ {, 1} {} 1 1 {} syötteeseen voi liittyä vihtoehtoisi lskentoj NFA hyväksyy syötteen joss sillä on jokin hyväksyvä lskent Y.o. utomtin M tunnistm kieli? NFA:n simulointi Voidn pitää kirj vihtoehtoisten lskentojen syötteellä svuttmist tiloist 1 1 1 1 NFA:n muuntminen DFA:ksi Voidn myös lske etukäteen eri syötteillä svutettvt tiljoukot, j sett ne vstvn DFA:n tiloiksi: 1 δ 3 {} {, 1} {} Sdn DFA M 3 : 3
,1,1, Determinisointikonstruktion merkitys Käytännössä: Suoritus nopeutuu Teoreettinen tulos: Kikki NFA:ll tunnistettvt kielet ovt säännöllisiä Säännölliset lusekkeet Merkintätp säännöllisten kielten kuvmiseen kuvuskielet, tekstihku,... Peruslusekkeet: tyhjä joukko j tyhjä merkkijono jokinen yksittäinen merkki Σ Operttorit: ktenointi rs yhdiste eli vlint r s itertio eli sulkeum r sim. = ( ) ( ) L() = Säännöllisestä lusekkeest utomtiksi Säännöllinen luseke voidn muunt ekvivlentiksi -utomtiksi NFA; lisänä -siirtymiä, joit voi seurt lukemtt syötemerkkiä 4
r = : r = s t: r = : M s r =, Σ M t r = st: r = s : M s M t M s sim. = ( ) ( ) -utomtti voi simuloid kuten NFA:t, j sen voi determinisoid vstvsti Aino ero: Huomioidn myös -siirtymillä svutettvt tilt -sulkeum (q) (eli kunkin tiln q sim. Determinisoidn lusekett ( ) vstv -utomtti 5
1 3 4 5 6 7 δ () = {, 1,, 4, 7} (3) = {1,, 3, 4, 6, 7} (5) = {1,, 4, 5, 6, 7} (3) (3) (5) (5) (3) (5) Luseke utomtti-konstruktion merkitys Tekniikk lusekkeiden suorittmiseksi Teoreettinen tulos: Säännöllisten lusekkeden kuvmt kielet ovt säännöllisiä Automtist säännölliseksi lusekkeeksi Kääntäen: äärellinen utomtti voidn muunt sen tunnistm kieltä kuvvksi lusekkeeksi Väliviheen lusekeutomtti kuten -utomtti, mutt siirtymissä muitkin lusekkeit kuin Σ ti Kerrtn menetelmä esimerkin vull. simerkki 1. 1 6
1. Lisätään yksikäsitteinen lopputil j yhdistetään rinnkkiset siirtymät: 1. Korvtn välitil 1 suorll siirtymällä: 3. Poistetn välitil : ( ) Tuloksen luseke ( ) Automtti luseke-konstruktion merkitys Sovelluksi esim. koneoppimisess: kielen kuvuksen muodostminen esimerkeistä Teoreettinen tulos: Jokinen säännöllinen kieli voidn kuvt säännöllisellä lusekkeell Miten nähdään kieli säännölliseksi? (kvivlenssitulosten nojll) esittämällä joko DFA, NFA ti säännöllinen luseke Se mikä on kätevintä riippuu tilnteest sim: Merkkijonot, jotk eivät sisällä osjono Säännöllisillä lusekkeill ei voi suorn ilmist poissulkevi ehtoj, mutt DFA:n hyväksemis- j hylkäyspäätökset voi kääntää päinvstisiksi: 7
M 1 : 3 1 M 1 : 3 1 Säännöllisten kielten sulkeumominisuudet Säännöllisen kielen komplementti on siis myös säännöllinen Säännöllisten kielten yhdisteet, ktenoinnit j sulkeumt ovt myös säännöllisiä Helppo nähdä säännöllisten lusekkeiden kutt: Jos A = L() j B = L(F ) säännöllisillä lusekkeill j F, niin A B = L() L(F ) = L(( F )) AB = L()L(F ) = L((F )) j 8
A = L() = L( ) Smoin leikkus A B j joukkoerotus A \ B säilyttävät kielet säännöllisinä ( sulkeum komplementin suhteen + de Morgn) Miten nähdään kieli I-säännölliseksi? Pumppuslemmll: JOS kieli L on tunnistettviss äärellisellä utomtill, sillä on pumppuspituus p N ( utomtin tilojen lkm) s.e. kikki riittävän pitkät s L ( s p) voidn jk s = xyz s.e. 1. xy p. y > j 3. xy i z L kikill i N ( y on utomtin silmukn hyväksymä sn) Jos tämän osoitt olevn mhdotont, niin kieli ei voi oll säännöllinen. sim: Plindromikieli L = {w {, } w = w R } on ei-säännöllinen: Muuten sillä olisi pumppuspituus p N j esim. snn s = p p täyttää pumppuslemmn ehdot. L pitäisi Kuitenkn millään joll s = xyz missä xy p j y > ei päde jos i 1 Kontekstittomt kielet xy i z L Kuvusformlismi: kontekstittomt kieliopit muuttuj- eli välikesymolit N päätesymolit Σ (= kielen merkistö) säännöt eli produktiot A α missä A N j α (N Σ) Kieliopin tuottm ti kuvm kieli: merkkijonot w, jotk voidn tuott loittmll lähtösymolist j korvmll muuttuji produktioiden rungoill s.o. niillä on johto S γ 1 γ w L(G) = {w Σ S w} Sopii sisäkkäisten ti rekursiivisten rkenteiden kuvmiseen tyypillisiä mm. ohjelmointikielille säännöllisillä lusekkeill voi kuvt vin vlinnisuutt, peräkkäisyyttä j toisteisuutt sim: Kielioppi kkoston {, } plindromeille: S S S 9
sim. snn johto: S S S Kontekstittomill kieliopeill voi siis kuvt ei-säännöllisiä kieliä Toislt niillä on helppo toteutt kikki säännöllisten lusekkeiden operttorit sim: ( ) ( ) S AB A A A B Kontekstittomien kielten sulkeumominisuuksist Smll peritteell helppo nähdä, että säännölliset opertiot yhdiste, ktenointi j sulkeum säilyttävät kielen kontekstittomn Kontekstittomien kielten leikkus ti komplementti ei kuitenkn välttämättä ole kontekstiton (Oikelle) lineriset kieliopit Säännöllisten kielten kuvmiseen riittävät rjoitetutkin kieliopit, joiss säännöt ovt vin muoto A C ti A Automtin j oikelle linerisen kieliopin vstvuus: Til q vst välike A q Siirtymä p q vst produktio A p A q Automtti jäämistä lopputiln q vst välikkeen A q korvus tyhjällä (jolloin johto päättyy) sim: Muodostetn utomtist oikelle linerinen kielioppi Sdn kielioppi 1 S S S S 1 S 1 S S sim: Muodostetn oikelle linerisest kieliopist utomtti S A B A B cs da 1
Sdn utomtti A S c d B Pinoutomtit Kontekstittomien kielten tunnistmiseen (pl. säännölliset kielet) trvitn muisti Pino riittää niiden sisäkkäisyyden/rekursiivisuuden hllitsemiseen syötenuh tutkittv syöte... nuhpää ohjusyksikkö q q 3 q 1 q δ A A A A_ pino Pinoutomtin siirtymät Yhdessä siirtymässä, γ/γ q q voidn luke syötemerkki j korvt pinon huippu γ uudell pinomerkillä γ Kukin niistä voi oll, jolloin vstv syötemerkkiä ei luet vnh pinon huippumerkkiä ei poistet ti uutt merkkiä γ ei lisätä pinon päälle sim: Hlutn tunnist prillisen pituiset plindromit, joit kuv kielioppi S S S 11
Kielen tunnistv pinoutomtti, /$ q 1 q, /, /, / q 4, $/ q 3, /, / Automtti on epädeterministinen Pinoutomtit j kontekstittomt kielet Tulos: 1. Jokinen kontekstiton kieli voidn tunnist (epädeterministisellä) pinoutomtill mutt jokiselle ei deterministinen utomtti riitä. Jokinen pinoutomtin tunnistm kieli on kontekstiton Deterministisillä pinoutomteill tunnistettvt deterministiset kielet muodostvt käytännössä tärkeän liluokn rjoitetut kieliopit kuten esim. LL(1) Kielioppien jäsennysongelm Miten testtn onko syöte kieliopin mukinen? j nnetn sille kieliopin mukinen jäsennys, jott se voidn tulkit ti kääntää oikein Keskeinen osongelm ohjelmointikielten toteuttmisess Jäsennyspuu Keskeinen esitysmuoto merkkijonon kieliopin mukiselle rkenteelle Riippumton produktioiden soveltmisjärjestyksestä (vsen, oike ti sekmuotoinen johto) Sisäsolmuin kieliopin välikkeitä j lpsisolmut produktioiden mukisi 1
T T T F F F + * Kieliopin moniselitteisyys Kielioppi on moniselitteinen, jos se sllii syötteille vihtoehtoisi jäsennyspuit sim. G expr: + (): 13
+ + Huono, kosk rkenteen moniselitteisyys voi hämärtää myös merkityksen Yksikäsitteisyyteen j tehokkseen deterministiseen jäsennykseen päästään rjoittumll esim. LL(1)- (ti LR(1)-)muotoisiin kielioppeihin Yleistenkin kontekstittomien kielioppien jäsennys onnistuu tulukoivll CYK-lgoritmill jss O(n 3 ) LL(1) Tvoite: Syötemerkkijonon ohjm top-down-jäsennys s.e. lvennusvihtoehdoist A α 1 α α 3... α k voidn in vlit oike sääntö vuoross olevn päätesymolin perusteell. Siksi (I) vihtoehtoisten sääntöjen tuotosten täytyy lk eri päätemerkeillä: first(α i ) first(α j ) = kun i j (II) Jos A, niin ei s oll epäselvää sovelletnko jotin sen ei-nollutuv vihtoehto vi kuuluuko päätesymoli sen tyhjän esiintymän perässä tulevn osn syötettä, eli follow(a) first(α i ) = jokisell välikkeen A ei-nollutuvll säännöllä α i simerkki. Trkstelln seurv kielioppi: S AB A C C C cd B d e Kielioppi toteutt ehdon (I). sim. välikkeen A sääntöjen tuotokset lkvt eri tvoin: first(c) = {}; first(c) = {, c}; first() = {} Kielioppi ei kuitenkn ole LL(1)-muodoss, kosk rikkoo ehto (II): follow(a) = first(b) = {, e} first(c) = {, c} Loppu Muist kurssiplute! 14