T-791001/2 Tietojenkäsittelyteorin perusteet T/Y Tietojenkäsittelytieteen litos, Alto-yliopisto Alto-yliopisto Perustieteiden korkekoulu Tietojenkäsittelytieteen litos Syksy 2013 T 791001/1002 Tietojenkäsittelyteorin perusteet T/Y Introduction to Theoreticl Computer Science T/Y Wht cn one do with computer? This course divides roughly into three prts We exmine three models of computer, their power nd limittions, ie, the clsses of lnguges tht they cn decide It turns out tht ech clss of utomt corresponds to clss of grmmrs The clsses of utomt nd grmmrs re: 1 Finite stte utomt & regulr expressions 2 Pushdown utomt & context-free grmmrs 3 Turing mchines & unrestricted grmmrs The first teching period of the course (=Y version) covers finite stte utomt, regulr expressions nd context-free grmmrs The second period covers the rest 2/295 Course versions There re two versions of the course for different kinds of students If you re unsure which to tke, check your study guide or sk your study dvisor T-791001 Introduction to TCS T, periods I-II, 4 cr compulsory in the computer science chelor s progrm; in the Discrete themtics B1 module T-791002 Introduction to TCS Y, period I, 2 cr compulsory in the communictions engineering chelor s progrm in 2005 2009; prt of supplementry studies for polytechnic grdutes to enter computer science progrm prt of supplementry studies for some ster s Progrmme students Prcticl rrngements Registrtion: oligtory, y OODI, dedline Sep 23, 2013 Lectures: Tue 14 16 T1, in Finnish y Doc, DSc Tommi Junttil Tutorils: once week, register y OODI with course code T-791001; not oligtory ut highly recommended! Fri 10 12 Fri 14 16 in English on 12 14 Tue 16 18 Wed 14 16 See Nopp for clss rooms etc Computerized home ssignments: oligtory nd personlized Distriuted y emil fter Sep 23th to those who registered to the course Course Nopp pges: https://noppltofi/nopp/kurssi/t-791001/ https://noppltofi/nopp/kurssi/t-791002/ 3/295 4/295
To pss the course 1 Pss the computerized ssignments efore tking the exm 2 After pssing the computer exercises, tke n exm (next exms in Oct 2013, Dec 2013, Fe 2014, y 2014) 3 There re 3 homework prolems week; you gin onus points for exm ccording to tle: # solved: 0 4 5 9 10 14 15 19 20 24 25 29 30 T-791001 +0 +1 +2 +3 +4 +5 +6 T-791002 +0 +1 +2 +3 N/A These onus points re vlid until Decemer 2014 4 By completing the computer ssignments y 09:00 on 24 Oct 2013, one cn ern onus of 2 points for the exms These do not help in mking filed exm pssed PLEASE NOTICE: due to Bchelor s progrm renewl, In the future, this is the lst time these two courses re orgnized T-791002 will e terminted T-791001 will e replced y the 5 credits course ICS-C2000 Theoreticl Computer Science orgnized first time in Spring 2015 The lst exms of T-791001 nd T-791002 will e orgnized in Decemer 2014 There will e no teching (lectures, tutorils, ) during Autumn 2014 5/295 6/295 teril Lecture notes k Orposen pruju (in Finnish) is distriuted through NOPPA Lecture slides (in Finnish) lso on NOPPA Demonstrtion exercises nd their solutions (oth in Finnish nd in English) re distriuted through NOPPA Recommended textook ichel Sipser, Introduction to the Theory of Computtion (2nd Edition), 2005 (Supplementry for Finnish-speking students; likely necessry for non-finnish-speking students) Some dditionl mteril on NOPPA TIETOJENKÄSITTELYTEORIA temttinen oppi siitä, mitä tietokoneell on mhdollist tehdä j kuink tehokksti Trjo mtemttisi käsitteitä j menetelmiä tietojenkäsittelyjärjestelmien mllintmiseen j nlysointiin sekä selkeiden j tehokkiden rtkisujen ltimiseen 7/295 8/295
Tietojenkäsittelyteorin os-loj Lskettvuusteori itä tietokoneell voi tehdä peritteess? Turing, Gödel, Church, Post (1930-luku); Kleene, rkov (1950-luku) Lskennn vtivuusteori itä tietokoneell voi tehdä käytännössä? Hrtmnis, Sterns (1960-luku); Cook, Levin, Krp (1970-luku); Ppdimitriou, Sipser, Håstd, Rzorov ym (1980-) Automtti- j kielioppiteori Tietojenkäsittelyjärjestelmien perustyyppien ominisuudet j kuvusformlismit Chomsky (1950-luku); Ginsurg, Greich, Rin, Slom, Schützenerger ym (1960-luku) Tietojenkäsittelyteorin os-loj Ohjelmien oikeellisuus Tietojenkäsittelyjärjestelmien mtemttisesti ekskti määrittely j oiken toiminnn verifiointi Dijkstr, Hore (1960-luku); nn, Pnueli, Scott ym (1970-) uut lgoritmien suunnittelu j nlyysi (Knuth, Hopcroft, Trjn ym) kryptologi (Rivest, Shmir, Adlemn ym) rinnkkisten j hjutettujen järjestelmien teori (Lmport, Lynch, ilner, Vlint ym) koneoppimisteori (Vlint ym) jne Tällä kurssill käsitellään lähinnä utomttej j kielioppej sekä hiemn lskettvuusteorin lkeit uit iheit käsitellään muill tietojenkäsittelyteorin (T 79) kursseill 9/295 10/295 11 Joukot Joukko (engl set) on kokoelm lkioit Alkiot voidn ilmoitt joko luettelemll, esim ti jonkin säännön vull, esim S = {2,3,5,7,11,13,17,19} S = {p p on lkuluku, 2 p 20} Jos lkio kuuluu joukkoon A, merkitään A, päinvstisess tpuksess / A (Esim 3 S, 8 / S) Tärkeä erikoistpus on tyhjä joukko (engl empty set) /0, johon ei kuulu yhtään lkiot Jos joukon A kikki lkiot kuuluvt myös joukkoon B, snotn että A on B:n osjoukko (engl suset) j merkitään A B [Kirjllisuudess esiintyy myös merkintä A B] Jos A ei ole B:n osjoukko merkitään A B Siis esim {2,3} S, {1,2,3} S Trivilisti on voimss /0 A kikill A Joukot A j B ovt smt, jos niissä on smt lkiot, so jos on A B j B A Jos on A B, mutt A B, snotn että A on B:n ito osjoukko (engl proper suset) j merkitään A B Edellä olisi siis voitu myös kirjoitt {2,3} S j /0 A jos A /0 11/295 12/295
Joukon lkioin voi oll myös toisi joukkoj (tällöin puhutn usein joukkoperheestä ), esim X = {/0,{1},{2},{1,2}} Jonkin perusjoukon A kikkien osjoukkojen muodostm joukkoperhettä snotn A:n potenssijoukoksi (engl powerset) j merkitään P (A):ll; esim edellä on X = P ({1,2}) [Kosk n-lkioisen perusjoukon A potenssijoukoss on 2 n lkiot (HT), käytetään kirjllisuudess potenssijoukolle myös merkintää 2 A ] Huom, että A B jos j vin jos A P (B) Tyhjän joukon käsittelyssä pitää oll huolellinen: /0 {/0}, P (/0) = {/0}, P ({/0}) = {/0,{/0}} Joukkoj voidn kominoid joukko-opertioill, joist tärkeimmät ovt: yhdiste (engl union) A B = {x x A ti x B}, esim {1,2,3} {1,4} = {1,2,3,4} leikkus (engl intersection) A B = {x x A j x B}, esim {1,2,3} {1,4} = {1} erotus (engl difference) A B = {x x A j x / B}, esim {1,2,3} {1,4} = {2,3} [Erotukselle käytetään myös merkintää A \ B] 13/295 14/295 Joukko-opertioit koskevt tietyt lskulit, joist tärkeimmät ovt yhdisteen j leikkuksen liitännäisyys: j vihdnnisuus: sekä näiden osittelulit: A (B C) = (A B) C A (B C) = (A B) C A B = B A A B = B A A (B C) = (A B) (A C) A (B C) = (A B) (A C) Jos kikki trksteltvt joukot ovt jonkin yhteisen universlijoukon U osjoukkoj, snotn erotust U A joukon A komplementiksi (U:n suhteen) j merkitään Ā:ll Yhdiste-, leikkus- j komplementointiopertioit yhdistävät tärkeät ns de orgnin kvt: A B = Ā B, A B = Ā B Lisäksi joukkojen erotus voidn esittää leikkuksen j komplementoinnin vull seurvsti: A B = A B 15/295 16/295
Jos joukkoperheen A jäsenet on indeksoitu, esim A = {A 1,A 2,A 3,}, niin yhdisteelle j leikkukselle voidn käyttää lyhennemerkintöjä A i = A 1 A 2 A 3 i 1 j A i = A 1 A 2 A 3 Indeksien ei trvitse oll edes luonnollisi lukuj, vn indeksijoukkon voi oll mikä thns joukko I Tällöin käytetään merkintöjä j i 1 A = {A i i I} A i, i I A i i I 12 Reltiot j funktiot Olkoot A j B joukkoj Alkioiden A j B järjestettyä pri (engl ordered pir) merkitään (, ) Huom, että joukkoin on in {,} = {,}, mutt jos, niin järjestettyinä prein on (,) (,) Joukkojen A j B krteesinen tulo (engl Crtesin product) määritellään Esimerkki A B = {(,) A j B}, {1,2,3} {1,4} = {(1,1),(1,4),(2,1),(2,4),(3,1),(3,4)} {,} N = {(,0),(,0),(,1),(,1),(,2),(,2),} {,} /0 = /0 17/295 18/295 Reltio R joukolt A joukolle B on krteesisen tulon A B osjoukko: R A B Jos (,) R, niin merkitään myös R j snotn että lkio on reltioss (suhteess) R lkioon Tätä infix-merkintää käytetään vrsinkin silloin, kun reltion nimenä on jokin erikoismerkki, esim,,, Jos reltion R lähtöjoukko (engl domin) A j mlijoukko (engl rnge) B ovt smt, so R A A, snotn että R on reltio joukoss A Reltion R A B käänteisreltio (engl inverse reltion) on reltio R 1 B A, R 1 = {(,) (,) R} Jos R A B j S B C ovt reltioit, niin niiden yhdistetty reltio (engl composite reltion) R S A C määritellään: R S = {(,c) B se (,) R,(,c) S} 19/295 20/295
Vrsinkin jos joukot A j B ovt äärellisiä, reltiot R A B voi oll hvinnollist trkstell suunnttun verkkon t grfin, jonk solmuin ovt joukkojen A j B lkiot j solmust A on kri ( nuoli ) solmuun B, jos j vin jos (,) R Esimerkki Olkoon joukoss A = {,, c, d} määritelty reltio Reltion R grfiesitys: R = {(,),(,c),(,d),(c,d),(d,d)} Reltion R R grfiesitys: Reltio f A B on funktio, jos kukin A on reltioss f täsmälleen yhden B knss Tällöin käytetään yleisten reltiomerkintöjen sijn tvllisesti merkintöjä f : A B j f () = Funktioit koskee kikki mitä edellä yleisesti on todettu reltioist, mutt historillisist syistä funktioiden yhdistäminen merkitään toisin päin kuin yleisten reltioiden: jos f : A B j g : B C ovt funktioit, niin niiden yhdistetty funktio määritellään kvll (g f )() = g(f ()), so reltioin g f = {(,c) B se f () =,g() = c} c d c d 21/295 22/295 13 Ekvivlenssireltiot Olkoon f : A B funktio f on surjektio (engl onto mp), jos jokinen B on jonkin A kuv, so jos f (A) = B f on injektio (engl one-to-one mp), jos kikki A kuvutuvt eri lkioille, so jos f () f ( ) f on ijektio, jos se on sekä injektio että surjektio, so jos jokinen B on yhden j vin yhden A kuv Ekvivlenssireltiot ovt mtemttisesti täsmällinen muotoilu sille yleiselle idelle, että oliot ovt keskenään smnkltisi jonkin kiinnostvn ominisuuden X suhteen Ominisuuteen X perustuv ekvivlenssireltio ositt trksteltvien olioiden joukon ekvivlenssiluokkiin, jotk vstvt ominisuuden X eri rvoj (Kääntäen mielivltinen olioiden joukon ositus Π määrää tietyn strktin smnkltisuusominisuuden, nim sen että oliot ovt smnkltisi jos ne sijoittuvt smn osituksen Π luokkn) 23/295 24/295
Osoittutuu, että yleinen smnkltisuusreltion ide voidn kiteyttää seurviin kolmeen ominisuuteen ääritelmä 11 Reltio R A A on 1 refleksiivinen, jos R A; 2 symmetrinen, jos R R, A; 3 trnsitiivinen, jos R,Rc Rc,,c A ääritelmä 12 Reltio R A A, jok toteutt edelliset ehdot 1 3 on ekvivlenssireltio Alkion A ekvivlenssiluokk (reltion R suhteen) on R[] = {x A Rx} Esimerkki Olkoon A = {kikki 1900-luvull syntyneet ihmiset} j R voimss, jos henkilöillä j on sm syntymävuosi Tällöin R on selvästi ekvivlenssi, jonk ekvivlenssiluokt koostuvt keskenään smn vuonn syntyneistä henkilöistä Luokki on 100 kpplett, j strktisti ne vstvt 1900-luvun vuosi 1900,,1999 Ekvivlenssireltioit merkitään usein R:n sijn lkioiden smnkltisuutt korostvill symoleill,, tms 25/295 26/295 Lemm 13 Olkoon R A A ekvivlenssi Tällöin on kikill, A voimss: 15 Induktiopäättely R[] = R[] joss R Lemm 14 Olkoon R A A ekvivlenssi Tällöin R:n ekvivlenssiluokt muodostvt A:n osituksen erillisiin epätyhjiin osjoukkoihin, so: R[] /0 kikill A; A = A R[]; jos R[] R[], niin R[] R[] = /0, kikill, A Olkoon P(k) jokin luonnollisten lukujen ominisuus Jos on voimss: 1 P(0) j 2 kikill k 0: P(k) P(k + 1), niin P(n) on tosi kikill n N Kääntäen jokinen perusjoukon A ositus erillisiin epätyhjiin luokkiin A i, i I, määrää vstvn ekvivlenssireltion: j kuuluvt smn luokkn A i 27/295 28/295
Esimerkki Väite Kikill n N on voimss kv P(n) : (1 + 2 + + n) 2 = 1 3 + 2 3 + + n 3 Todistus 1 Perustpus: P(0) : 0 2 = 0 (jtkuu) 2 Induktioskel: Oletetn, että nnetull k 0 kv P(k) : (1 + 2 + + k) 2 = 1 3 + 2 3 + + k 3 on voimss Tällöin on myös: (1 + 2 + + k + (k + 1)) 2 = (1 + + k) 2 + 2(1 + k)(k + 1) + (k + 1) 2 = 1 3 + + k 3 k(k + 1) + 2 (k + 1) + (k + 1) 2 2 = 1 3 + + k 3 + k(k + 1) 2 + (k + 1) 2 = 1 3 + + k 3 + (k + 1) 3 On siis todettu, että kvn P(k) totuudest seur kvn P(k + 1) totuus, so että P(k) P(k + 1), kikill k 0 Luonnollisten lukujen induktioperitteen 19 nojll voidn nyt päätellä, että kv P(n) on voimss kikill n N 29/295 30/295 16 Akkostot, merkkijonot j kielet Automttiteori diskreetin signlinkäsittelyn perusmllit j -menetelmät ( diskreettien I/O-kuvusten yleinen teori) 1011 Syöte Automtti Tulos B Tällä kurssill keskitytään pääosin utomtteihin, joiden: 1 syötteet ovt äärellisiä, diskreettejä merkkijonoj 2 tulokset ovt muoto hyväksy / hylkää ( syöte OK / syöte ei kelp ) Yleistyksiä: äärettömät syötejonot ( rektiiviset järjestelmät, Büchi-utomtit) funktioutomtit ( oore- j ely-tilkoneet, Turingin funktiokoneet) Automtin käsite on mtemttinen strktio Yleisellä tsoll suunniteltu utomtti voidn toteutt eri tvoin: esim sähköpiirinä, meknisen litteen ti (tvllisimmin) tietokoneohjelmn 31/295 32/295
Peruskäsitteitä j merkintöjä Akkosto (engl lphet, voculry): äärellinen, epätyhjä joukko lkeismerkkejä t symoleit Esim: inäärikkosto {0, 1}; ltinlinen kkosto {A,B,,Z} erkkijono (engl string): äärellinen järjestetty jono jonkin kkoston merkkejä Esim: 01001, 0000 : inäärikkoston merkkijonoj; TKTP, XYZZY : ltinlisen kkoston merkkijonoj tyhjä merkkijono (engl empty string) Tyhjässä merkkijonoss ei ole yhtään merkkiä; sitä voidn merkitä ε:llä erkkijonon x pituus x on sen merkkien määrä Esim: 01001 = 5, TKTP = 4, ε = 0 erkkijonojen välinen perusopertio on ktentio eli jonojen peräkkäin kirjoittminen Ktention opertiomerkkinä käytetään joskus selkeyden lisäämiseksi symoli Esim KALA KUKKO = KALAKUKKO; jos x = 00 j y = 11, niin xy = 0011 j yx = 1100; kikill x on xε = εx = x; kikill x, y, z on (xy)z = x(yz); kikill x, y on xy = x + y 33/295 34/295 Akkoston Σ kikkien merkkijonojen joukko merkitään Σ :ll ielivltist merkkijonojoukko A Σ snotn kkoston Σ (formliksi) kieleksi (engl forml lnguge) Esimerkki Jos Σ = {0,1}, niin Σ = {ε,0,1,00,01,10,11,000,} Esimerkki Jos Σ = {0, 1}, niin esimerkiksi seurvt ovt kkoston Σ kieliä: /0 {ε, 0, 110110110011100} {0,1,11,111,1111,} Σ = {ε,0,1,00,01,10,11,000} Automtit j formlit kielet Olkoon utomtti, jonk syötteet ovt jonkin kkoston Σ merkkijonoj, j tulos on yksinkertisesti muoto syöte hyväksytään / syöte hylätään (erk lyhyesti 1/0) erkitään :n syötteellä x ntm tulost (x):llä j :n hyväksymien syötteiden joukko A :llä, so A = {x Σ (x) = 1} Snotn, että utomtti tunnist (engl recognises) kielen A Σ Automttiteorin (yksi) ide: utomtin rkenne heijstuu kielen A ominisuuksiss Kääntäen: olkoon nnettun jokin toivottu I/O-kuvus f : Σ {0,1} Trkstelemll kieltä A f = {x Σ f (x) = 1} sdn vihjeitä siitä, millinen utomtti trvitn kuvuksen f toteuttmiseen 35/295 36/295
Vkiintuneit merkintöjä Em mtemttisille käsitteille käytetyt merkinnät ovt peritteess vpsti vlittviss, mutt esityksen ymmärrettävyyden prntmiseksi on tpn pitäytyä tietyissä käytännöissä Seurvt merkintätvt ovt vkiintuneet: Akkostot: Σ, Γ, (isoj kreikklisi kirjimi) Esim inäärikkosto Σ = {0, 1} Akkoston koko (ti yleisemmin joukon mhtvuus): Σ Alkeismerkit:,, c, (pieniä lkupään ltinlisi kirjimi) Esim: Olkoon Σ = { 1,, n } kkosto; tällöin Σ = n erkkijonot: u, v, w, x, y, (pieniä loppupään ltinlisi kirjimi) erkkijonojen ktentio: x y ti vin xy erkkijonon pituus: x Esimerkkejä: Tyhjä merkkijono: ε c = 3; olkoon x = 1 m, y = 1 n ; tällöin xy = m + n erkkijono, joss on n kpplett merkkiä : n Esimerkkejä: n = }{{} ; n kpl i j c k = i + j + k erkkijonon x toisto k kert: x k Esimerkkejä: () 2 = ; x k = k x Akkoston Σ kikkien merkkijonojen joukko: Σ Esim: {,} = {ε,,,,,,,,,} 37/295 38/295 erkkijonoinduktio Automttiteoriss tehdään usein konstruktioit induktioll merkkijonon pituuden suhteen Tämä trkoitt, että määritellään ensin toiminto tyhjän merkkijonon ε (ti joskus yksittäisen kkosmerkin) tpuksess Sitten oletetn, että toiminto on määritelty kikill nnetun pituisill merkkijonoill u j esitetään, miten se tällöin määritellään yhtä merkkiä pitemmillä merkkijonoill w = u Esimerkki Olkoon Σ mielivltinen kkosto erkkijonon w Σ käänteisjono (engl reversl) w R määritellään induktiivisesti säännöillä: 1 ε R = ε; 2 jos w = u, u Σ, Σ, niin w R = u R Induktiivist ( rekursiivist ) määritelmää voidn tietenkin käyttää lskujen perustn; esim: (011) R = 1 (01) R = 1 (1 0 R ) = 11 (0 ε R ) = 110 ε R = 110 ε = 110 Tärkeämpää on kuitenkin konstruktioiden ominisuuksien todistminen määritelmää noudttelevll induktioll Esimerkki: 39/295 40/295
Väite Olkoon Σ kkosto Kikill x,y Σ on voimss (xy) R = y R x R Todistus Induktio merkkijonon y pituuden suhteen 1 Perustpus y = ε: (xε) R = x R = ε R x R 2 Induktioskel: Olkoon y muoto y = u, u Σ, Σ Oletetn, että väite on voimss merkkijonoill x, u Tällöin on: (xy) R = (xu) R = (xu) R [R:n määritelmä] = (u R x R ) [induktio-oletus] = ( u R )x R [ :n liitännäisyys] = (u) R x R [R:n määritelmä] = y R x R 21 Tilkviot j tiltulut Trkstelln luksi tietojenkäsittelyjärjestelmiä, joill on vin äärellisen mont mhdollist til Tällisen järjestelmän toimint voidn kuvt äärellisenä utomttin t äärellisenä tilkoneen (engl finite utomton, finite stte mchine) Äärellisillä utomteill on useit vihtoehtoisi esitystpoj: tilkviot, tiltulut, 41/295 42/295 Esimerkki: Khviutomtti 20 c 20 c 10 c 10 c 10 c 0,00 0,10 0,20 0,30 20 c 20 c 10 c enough more thn enough! 10 c 20 c 10 c 20 c Em tilkvion esittämä utomtti rtkisee päätösongelmn riittävätkö nnetut rht khvin ostmiseen? Äärellisiä utomttej voidn yleensäkin käyttää yksinkertisten päätösongelmien rtkisujen mllintmiseen Automttimllist on muitkin kuin inäärivsteisten järjestelmien kuvmiseen trkoitettuj versioit (ns oore- j ely-utomtit), mutt niitä ei käsitellä tällä kurssill Tilkvioiden merkinnät: q q 0 q f q 1 q 2 Automtin til nimeltä q Alkutil Lopputil: utomtti hyväksyy syötejonon, joss se jonon loppuess on tällisess tilss Syötemerkin iknsm siirtymä tilst q 1 tiln q 2 43/295 44/295
Esimerkki C-kielen etumerkittömät reliluvut digit q 0 digit q 1 q 2 digit q 3 exp exp exp q 4 digit digit +,- digit Käytetyt lyhenteet: digit = {0,1,,9}, exp = {E,e} q 7 q 5 q 6 digit digit Äärellisen utomtin esitys tiltulun: utomtin uusi til vnhn tiln j syötemerkin funktion Esimerkki Relilukuutomtin tiltulu: digit exp + q 0 q 1 q 7 q 1 q 1 q 2 q 4 q 2 q 3 q 4 q 3 q 3 q 4 q 4 q 6 q 5 q 5 q 5 q 6 q 6 q 6 q 7 q 3 missä ilmisee lkutil j lopputil 45/295 46/295 K: itä tiltulun tyhjät pikt trkoittvt? V: Tiltulun tyhjät pikt, ti vstvsti tilkvion puuttuvt kret, kuvvt utomtin virhetilnteit Jos utomtti ohjutuu tälliseen pikkn, syötejono ei kuulu utomtin hyväksymään joukkoon uodollisesti utomtiss jtelln olevn erityinen virhetil, jot ei vin selkeyden vuoksi merkitä näkyviin Esimerkki Relilukuutomtin täydellinen kvioesitys olisi: +,- digit digit q 0 q 1 exp, +,- error digit, exp,,+,- exp 47/295 48/295
22 Äärellisiin utomtteihin perustuv ohjelmointi j relilukuutomtin täydellinen tuluesitys olisi: digit exp + q 0 q 1 q 7 error error error q 1 q 1 q 2 q 4 error error q 6 q 6 error error error error error error error error error error Annetun äärellisen utomtin pohjlt on helppo lti utomtin toimint vstv ohjelm Esim relilukuutomttiin perustuv syötejonon syntksitestus: 49/295 50/295 from sys import stdin q=0 for c in stdinredline()strip("\n"): if q==0: if cisdigit(): q=1 elif c=="": q=7 else: q=99 elif q==1: if cisdigit(): q=1 elif c=="": q=2 elif c=="e" or c=="e": q=4 else: q=99 elif q==2 or q==3: if cisdigit(): q=3 elif c=="e" or c=="e": q=4 else: q=99 elif q==4: if cisdigit(): q=6 elif c=="+" or c=="-": q=5 else: q=99 elif q==5 or q==6: if cisdigit(): q=6 else: q=99 elif q==7: if cisdigit(): q=3 else: q=99 if q in [2,3,6]: print "On reliluku" else: print "Ei ole reliluku" 51/295 52/295
Pelkän syntksitestin toteutus: Semnttisten toimintojen liittäminen äärellisiin utomtteihin Esimerkki Khdeksnjärjestelmän lukuj tunnistv utomtti j siihen perustuv syöteluvun rvonmääritys ( muuttminen kymmenjärjestelmään ) +,- d q 0 q 1 q 2 Lyhennysmerkintä d = {0,1,,7} d d from sys import stdin q=0 for c in stdinredline()strip("\n"): if q==0: if c=="+" or c=="-": q=1 elif c in "01234567": q=2 else: q=99 elif q==1: if c in "01234567": q=2 else: q=99 elif q==2: if c in "01234567": q=2 else: q=99 if q == 2 print "Oktliluku!" else: print "Virheellinen oktliluku" 53/295 54/295 Täydennys syöteluvun rvon lskevill opertioill ( luvun muuttminen kymmenjärjestelmään ): from sys import stdin q=0 sgn=1 # SE: etumerkki vl=0 # SE: itseisrvo for c in stdinredline()strip("\n"): if q==0: if c=="+": q=1 elif c=="-": sgn=-1 # SE q=1 elif c in "01234567": vl=int(c) # SE q=2 else: q=99 elif q==1: if c in "01234567": vl=int(c) q=2 else: q=99 elif q==2: if c in "01234567": vl=8*vl+int(c) q=2 else: q=99 if q == 2: print "Oktliluku", sgn*vl else: print "Virheellinen oktliluku" # SE # SE # SE 55/295 56/295
23 Äärellisen utomtin käsitteen formlisointi eknistinen mlli: syötenuh: nuhpää: ohjusyksikkö: i n p δ u q 1 q 2 Äärellinen utomtti koostuu äärellistilisest ohjusyksiköstä, jonk toimint säätelee utomtin siirtymäfunktio δ, sekä merkkipikkoihin jetust syötenuhst j nämä yhdistävästä nuhpäästä, jok kullkin hetkellä osoitt yhtä syötenuhn merkkiä q 0 t Automtin toimint : Automtti käynnistetään erityisessä lkutilss q 0, siten että trksteltv syöte on kirjoitettun syötenuhlle j nuhpää osoitt sen ensimmäistä merkkiä Yhdessä toimint-skeless utomtti lukee nuhpään kohdll olevn syötemerkin, päättää ohjusyksikön tiln j luetun merkin perusteell siirtymäfunktion mukisesti ohjusyksikön uudest tilst, j siirtää nuhpäätä yhden merkin eteenpäin Automtti pysähtyy, kun viimeinen syötemerkki on käsitelty Jos ohjusyksikön til tällöin kuuluu erityiseen (hyväksyvien) lopputilojen joukkoon, utomtti hyväksyy syötteen, muuten hylkää sen Automtin tunnistm kieli on sen hyväksymien merkkijonojen joukko 57/295 58/295 Täsmällinen muotoilu: ääritelmä Äärellinen utomtti on viisikko = (Q,Σ,δ,q 0,F), missä Q on utomtin tilojen äärellinen joukko; Σ on utomtin syötekkosto; δ : Q Σ Q on utomtin siirtymäfunktio; q 0 Q on utomtin lkutil; F Q on utomtin (hyväksyvien) lopputilojen joukko Esimerkki Relilukuutomtin formli esitys: = ({q 0,,q 7,error},{0,1,,9,,E,e,+,-}, δ,q 0,{q 2,q 3,q 6 }), missä δ on kuten iemmin tulukoss; esim δ(q 0,0) = δ(q 0,1) = = δ(q 0,9) = q 1, δ(q 0,) = q 7, δ(q 0,E) = δ(q 0,e) = error, δ(q 1,) = q 2, δ(q 1,E) = δ(q 1,e) = q 4, jne 59/295 60/295
Tilnne (q,w) joht suorn tilnteeseen (q,w ), merkitään (q,w) (q,w ), Automtin tilnne on pri (q,w) Q Σ Erityisesti utomtin lkutilnne syötteellä x on pri (q 0,x) Intuitio: q on utomtin til j w on syötemerkkijonon jäljellä olev, so nuhpäästä oikelle sijitsev os jos on w = w ( Σ) j q = δ(q,) Tällöin snotn myös, että tilnne (q,w ) on tilnteen (q,w) välitön seurj Intuitio: utomtti ollessn tilss q j lukiessn nuhll olevn merkkijonon w = w ensimmäisen merkin siirtyy tiln q j siirtää nuhpäätä yhden skelen eteenpäin, jolloin nuhlle jää merkkijono w Jos utomtti on yhteydestä selvä, reltiot voidn merkitä yksinkertisesti (q,w) (q,w ) 61/295 62/295 Tilnne (q,w) joht tilnteeseen (q,w ) t tilnne (q,w ) on tilnteen (q, w) seurj, merkitään (q,w) (q,w ), jos on olemss välitilnnejono (q 0,w 0 ), (q 1,w 1 ),, (q n,w n ), n 0, siten että (q,w) = (q 0,w 0 ) (q 1,w 1 ) (q n,w n ) = (q,w ) Erikoistpuksen n = 0 sdn (q,w) (q,w) millä thns tilnteell (q, w) Jälleen, jos utomtti on yhteydestä selvä, merkitään yksinkertisesti (q,w) (q,w ) Automtti hyväksyy merkkijonon x Σ, jos on voimss muuten hylkää x:n (q 0,x) (q f,ε) jollkin q f F; Toisin snoen: utomtti hyväksyy x:n, jos sen lkutilnne syötteellä x joht, syötteen loppuess, johonkin hyväksyvään lopputilnteeseen Automtin tunnistm kieli määritellään: L() = {x Σ (q 0,x) (q f,ε) jollkin q f F} 63/295 64/295
24 Äärellisten utomttien minimointi Esimerkki erkkijonon 025E2 käsittely relilukuutomtill: (q 0,025E2) (q 1,25E2) (q 2,25E2) (q 3,5E2) (q 3,E2) (q 4,2) (q 6,ε) Kosk q 6 F = {q 2,q 3,q 6 }, on siis 025E2 L() Voidn osoitt, että jokisell äärellisellä utomtill on yksikäsitteinen ekvivlentti (so smn kielen tunnistv) tilmäärältään minimlinen utomtti Annetun äärellisen utomtin knss minimointi (ekvivlentin minimiutomtin määrittäminen) on sekä käytännössä että teoreettiselt knnlt tärkeä tehtävä: siten voidn esimerkiksi selvittää, tunnistvtko kksi nnettu utomtti smn kielen Tehtävä voidn rtkist seurvss esitettävällä tehokkll menetelmällä enetelmän perusiden on pyrkiä smistmn keskenään selliset syötteenä nnetun utomtin tilt, joist lähtien utomtti toimii täsmälleen smoin kikill merkkijonoill 65/295 66/295 Olkoon = (Q,Σ,δ,q 0,F) äärellinen utomtti Ljennetn :n siirtymäfunktio yksittäisistä syötemerkeistä merkkijonoihin: jos q Q, x Σ, merkitään δ (q,x) = q se (q,x) (q,ε) :n tilt q j q ovt ekvivlentit, merkitään jos kikill x Σ on q q, δ (q,x) F jos j vin jos δ (q,x) F; toisin snoen, jos utomtti q:st j q :st lähtien hyväksyy täsmälleen smt merkkijonot Lievempi ekvivlenssiehto: tilt q j q ovt k-ekvivlentit, merkitään jos kikill x Σ, x k, on q k q, δ (q,x) F jos j vin jos δ (q,x) F; toisin snoen, jos mikään enintään k:n pituinen merkkijono ei pysty erottmn tiloj toisistn Ilmeisesti on: (i) q 0 q joss sekä q että q ovt lopputiloj ti kumpikn ei ole; j (ii) q q joss q k q kikill k = 0,1,2, Esitettävä minimointilgoritmi perustuu syötteenä nnetun utomtin tilojen k-ekvivlenssiluokkien hienontmiseen (k + 1)-ekvivlenssiluokiksi kunnes svutetn täysi ekvivlenssi (1) 67/295 68/295
Algoritmi perustuu seurvn: 1 Kksi (k-ekvivlentti) til q 1 k+1 q 2, jos j vin jos q 1 0 q2 j δ(q 1,) k δ(q 2,) kikill Σ 2 Jos jollkin k:n rvoll pätee, että kikki keskenään k-ekvivlentit tilt ovt myös k + 1-ekvivlenttej, niin keskenään k-ekvivlentit tilt ovt keskenään ekvivlenttej Tod Induktioskel: oletetn, että keskenään k-ekvivlentit tilt ovt p-ekvivlenttej jollkin p Keskenään k-ekvivlentit tilt ovt siis k + 1-ekvivlenttej, eli ym perusteell niistä siirrytään kikill kkosill keskenään k-ekvivlentteihin (p-ekvivlentteihin) tiloihin; k-ekvivlentit tilt ovt siis p + 1-ekvivlenttej (Perustpus esim p = 0) Algoritmi IN-FA [Äärellisen utomtin minimointi] Syöte: Äärellinen utomtti = (Q,Σ,δ,q 0,F) Tulos: :n knss ekvivlentti äärellinen utomtti, joss on minimimäärä tiloj enetelmä: 1 [Turhien tilojen poisto] Poist :stä kikki tilt, joit ei void svutt tilst q 0 millään syötemerkkijonoll 2 [0-ekvivlenssi] Osit :n jäljelle jääneet tilt khteen luokkn: ei-lopputiloihin j lopputiloihin 69/295 70/295 3 [k-ekvivlenssi (k + 1)-ekvivlenssi] Trkst, siirrytäänkö smn ekvivlenssiluokkn kuuluvist tiloist smoill merkeillä in smnluokkisiin tiloihin Jos kyllä, lgoritmi päättyy j minimiutomtin tilt vstvt :n tilojen luokki uuss tpuksess hienonn ositust jkmll kunkin äskeistä ehto rikkovn k-ekvivlenssiluokn tilt uusiin, pienempiin (k + 1)-ekvivlenssiluokkiin sen mukn, mihin luokkn kustkin tilst siirrytään milläkin kkosell, j toist koht 3 uudell osituksell Luse 21 Algoritmi IN-FA muodost nnetun äärellisen utomtin knss ekvivlentin äärellisen utomtin, joss on minimimäärä tiloj Tämä utomtti on tilojen nimeämistä pitsi yksikäsitteinen Algoritmin suoritus päättyy in: kullkin skelen 3 suorituskerrll, viimeistä lukuunottmtt, vähintään yksi luokk ositetn pienemmäksi Askel 3 jk k-ekvivlenssiluokt (k + 1)-ekvivlenssiluokiksi: kksi til ovt (k + 1)-ekvivlentit, jos j vin jos molemmt ti ei kumpikn ovt hyväksyviä lopputiloj j kummstkin siirrytään jokisell kkosell k-ekvivlentteihin tiloihin Kun k-ekvivlenssiluokt ovt myös k + 1-ekvivlenssiluokt, kunkin luokn tilt ovt k-ekvivlenttej kikill k eli ekvivlenttej (1ii) Jokisess ekvivlenssiluokss on inkin yksi lkutilst svutettv til, joten kikki luokt ovt trpeellisi Yksikäsitteisyys todistettu opetusmonisteess 71/295 72/295
Esimerkki Trkstelln ll esitetyn utomtin minimointi Viheess 1 utomtist poistetn til 6, johon ei päästä millään merkkijonoll Viheess 2 ositetn utomtin tilt 1 5 ei-lopputiloihin (luokk I) j lopputiloihin (luokk II), j trkstetn siirtymien käyttäytyminen osituksen suhteen: 1 2 3 4 5 6 I : 1 2,I 3,I 2 4,II 2,I 3 2,I 3,I II : 4 3,I 5,II 5 1,I 4,II Luokss I on nyt khdentyyppisiä tiloj ({1,3} j {2}), joten ositust täytyy hienont j trkst siirtymät uuden osituksen suhteen: 1 2 3 4 5 6 I : 1 2,II 3,I 3 2,II 3,I II : 2 4,III 2,II III : 4 3,I 5,III 5 1,I 4,III Nyt kunkin luokn sisältämät tilt ovt keskenään smnlisi, joten minimointilgoritmi päättyy 73/295 74/295 25 Epädeterministiset äärelliset utomtit Sdun minimiutomtin tilkvio on seurv: I II III Epädeterministiset utomtit ovt muuten smnlisi kuin deterministiset, mutt niiden siirtymäfunktio δ ei liitä utomtin vnhn tiln j syötemerkin muodostmiin preihin yksikäsitteistä uutt til, vn joukon mhdollisi seurvi tiloj Epädeterministinen utomtti hyväksyy syötteensä, jos jokin mhdollisten tilojen jono joht hyväksyvään lopputiln Vikk epädeterministisiä utomttej ei voi sellisinn toteutt tietokoneohjelmin, ne ovt tärkeä päätösongelmien kuvusformlismi 75/295 76/295
Esimerkki Epädeterministinen utomtti, jok tutkii sisältääkö syötejonoon osjono : q 0 q 1 Automtti hyväksyy esim syötejonon, kosk sen on mhdollist edetä seurvsti: (q 0,) (q 0,) (q 1,) (q 2,) (q 3,ε) Automtti voisi päätyä myös hylkäävään tiln: (q 0,) (q 0,) (q 0,) (q 0,) (q 0,ε), q 2 q 3 Epädeterministinen utomtti, jok tutkii sisältääkö syötejono osjono : q 0 q 1 Huom: utomtti ei hyväksy syötejono, kosk lkutilnteest (q 0,) ei ole mhdollist päästä (inon) hyväksyvään lopputilnteeseen (q 3,ε) millään tvll q 2 q 3 mutt tällä ei ole merkitystä voidn jtell, että utomtti os ennust j vlit in prhn mhdollisen vihtoehdon 77/295 78/295 ääritelmä 22 Epädeterministinen äärellinen utomtti on viisikko = (Q,Σ,δ,q 0,F), missä Q on äärellinen tilojen joukko; Σ on syötekkosto; δ : Q Σ P (Q) on utomtin joukkorvoinen siirtymäfunktio; q 0 Q on lkutil; F Q on (hyväksyvien) lopputilojen joukko Esimerkki -utomtti, jok tunnist, sisältääkö syöte merkkijonon : Siirtymäfunktio: q 0 q 1 q 2 q 0 {q 0,q 1 } {q 0 } q 1 /0 {q 2 } q 2 {q 3 } /0 q 3 {q 3 } {q 3 } Nyt esimerkiksi δ(q 0,) = {q 0,q 1 } j δ(q 1,) = /0 q 3 79/295 80/295
Epädeterministisen utomtin tilnne (q, w) voi joht suorn tilnteeseen (q,w ), merkitään (q,w) (q,w ), jos on w = w (missä Σ) j q δ(q,) Snotn myös, että tilnne (q,w ) on tilnteen (q,w) mhdollinen välitön seurj Usemmn skelen mittiset tilnnejohdot, merkkijonojen hyväksyminen j hylkääminen ym käsitteet määritellään smoin snoin kuin deterministisillä utomteill Kosk yhden skelen johdon määritelmä kuitenkin nyt on toinen, niiden sisältö muovutuu hiemn eriliseksi Luse 22 Olkoon A = L() jonkin epädeterministisen äärellisen utomtin tunnistm kieli Tällöin on olemss myös deterministinen äärellinen utomtti, joll A = L( ) Todistus Olkoon A = L(), = (Q,Σ,δ,q 0,F) Iden on lti deterministinen äärellinen utomtti, jok simuloi :n toimint kikiss sen kullkin hetkellä mhdollisiss tiloiss rinnkkin Formlisti: utomtin tilt vstvt :n tilojen joukkoj: missä = ( Q,Σ, ˆδ, ˆq 0, F), Q = P (Q) = {S S Q}, ˆq 0 = {q 0 }, F = {S Q S sisältää jonkin q f F}, ˆδ(S,) = q Sδ(q,) 81/295 82/295 Esimerkki -utomttiin q 0 q 1 q 2 q 3 inimoimll j nimeämällä tilt uudelleen stu utomtti {q 0 } {q 0, q 1 } {q 0, q 2 } {q 0, q 1, q 3 } {q 0, q 2, q 3 } sovellettun em konstruktio tuott seurvn deterministisen utomtin (vin lkutilst svutettvt tilt esitetty): {q 0, q 3 } {q 0 } {q 0, q 1 } {q 0, q 2 } {q 0, q 1, q 3 } {q 0, q 2, q 3 } yksinkertistuu muotoon: {q 0, q 3 } s 0 s 1 s 2 s 3, 83/295 84/295
[Todistus jtkuu] Trkstetn, että utomtti todell on ekvivlentti :n knss, so että L( ) = L() ääritelmien mukn on: Väite (2): x L() joss (q 0,x) (q f,ε) jollkin q f F j x L( ) joss ({q 0 },x) (S,ε), missä S sis jonkin q f F Osoitetn siis, että kikill x Σ j q Q on: (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S Väitteen (2) todistus tehdään induktioll merkkijonon x pituuden suhteen (i) Tpus x = 0: (q 0,ε) (q,ε) joss q = q 0 ; smoin ({q 0 },ε) (S,ε) joss S = {q 0 } (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (2) 85/295 86/295 Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S 87/295 88/295
Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S 89/295 90/295 Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S 91/295 92/295
Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S 93/295 94/295 Väite (2): (q 0,x) (q,ε) joss ({q 0 },x) (S,ε) j q S (ii) Induktioskel: Olkoon x = y; oletetn, että väite (2) pätee y:lle Tällöin: (q 0,x) = (q 0,y) (q,ε) joss q Q se (q 0,y) (q,) j (q,) (q,ε) joss q Q se (q 0,y) (q,ε) j (q,) (q,ε) joss (indol) q Q se ({q 0 },y) (S,ε) j q S j q δ(q,) joss ({q 0 },y) (S,ε) j q S se q δ(q,) joss ε-utomtit Jtkoss trvitn vielä yksi äärellisten utomttien mllin ljennus: epädeterministinen äärellinen utomtti, joss sllitn ε-siirtymät Tällisell siirtymällä utomtti tekee epädeterministisen vlinnn eri jtkovihtoehtojen välillä lukemtt yhtään syötemerkkiä Esimerkiksi kieli {, } voitisiin tunnist seurvll ε-utomtill: ε ({q 0 },y) (S,ε) j q q S δ(q,) = ˆδ(S,) joss ({q 0 },y) (S,) j q ˆδ(S,) = S joss ({q 0 },y) (S,) j (S,) (S,ε) j q S joss ({q 0 },x) = ({q 0 },y) (S,ε) j q S ε 95/295 96/295
ääritelmä ε-utomtti on viisikko missä siirtymäfunktio δ on kuvus = (Q,Σ,δ,q 0,F), δ : Q (Σ {ε}) P (Q) uut määritelmät ovt kuten tvllisill epädeterministisillä äärellisillä utomteill, pitsi suorn tilnnejohdon määritelmä: ε-utomttien tpuksess reltio (q,w) (q,w ) Luse 23 Olkoon A = L() jollkin ε-utomtill Tällöin on olemss myös ε-siirtymätön epädeterministinen utomtti, joll A = L( ) Todistus Olkoon = (Q,Σ,δ,q 0,F) jokin ε-utomtti Automtti toimii muuten ivn smoin kuin, mutt se hrpp ε-siirtymien yli suorittmll kustkin tilst lähtien vin ne idot siirtymät, jotk ovt siitä käsin jotkin ε-siirtymäjono pitkin svutettviss on voimss, jos on w = w (missä Σ) j q δ(q,); ti w = w j q δ(q,ε) 97/295 98/295 Formlisti määritellään nnetun tiln q Q ε-sulkeum ε (q) utomtiss kvll ε (q) = {q Q (q,ε) (q,ε)}, so joukkoon ε (q) kuuluvt kikki ne utomtin tilt, jotk ovt svutettviss tilst q pelkillä ε-siirtymillä Automtin siirtymäsäännöt voidn nyt kuvt seurvsti: missä = (Q,Σ, ˆδ,q 0, F), ˆδ(q,) = q ε (q) δ(q,); F = {q Q ε (q) F /0} Esimerkki Poistmll edellisen konstruktion mukisesti ε-siirtymät ε-utomtist sdn tvllinen epädeterministinen utomtti: 1 lkuperäinen ε-utomtti: ε ε 2 ε 4 5 ε 3 6 9 ε 7 8 ε-siirtymien poiston jälkeen: 3 6 9 Trkstelln utomtti ε-siirtymien poiston jälkeen: 1 iksi lkutil 1 on hyväksyvä lopputil? 1 2 4 5 7 8 svuttmttomien tilojen poiston jälkeen: 2 iksi ei hitt, että til 7 ei void svutt lkutilst? 1 4 6 8 99/295 100/295
26 Säännölliset lusekkeet Automttimlleist poikkev tp kuvt yksinkertisi kieliä Olkoot A j B kkoston Σ kieliä Perusopertioit: Yhdiste: A B = {x Σ x A ti x B} Ktentio: AB = {xy Σ x A j y B}; Potenssit: { A 0 = {ε}, A k = AA k 1 = {x 1 x k x i A i = 1,,k} (k 1); Sulkeum t Kleenen tähti : ääritelmä 23 Akkoston Σ säännölliset lusekkeet määritellään induktiivisesti säännöillä: 1 /0 j ε ovt Σ:n säännöllisiä lusekkeit; 2 on Σ:n säännöllinen luseke kikill Σ; 3 jos r j s ovt Σ:n säännöllisiä lusekkeit, niin (r s), (rs) j r ovt Σ:n säännöllisiä lusekkeit; 4 muit Σ:n säännöllisiä lusekkeit ei ole A = A k k 0 = {x 1 x k k 0, x i A i = 1,,k} 101/295 102/295 Kukin Σ:n säännöllinen luseke r kuv kielen L(r), jok määritellään: L(/0) = /0; L(ε) = {ε}; L() = {} kikill Σ; L((r s)) = L(r) L(s); L((rs)) = L(r)L(s); L(r ) = (L(r)) Esimerkki Akkoston {, } säännöllisiä lusekkeit: r 1 = (()), r 2 = (), r 3 = ( ), r 4 = (( ())) Lusekkeiden kuvmt kielet: L(r 1 ) = ({}{}){} = {}{} = {} L(r 2 ) = {} = {ε,,,,} = {() i i 0} L(r 3 ) = {}({}) = {,,,,} = { i i 0} L(r 4 ) = ({}{,}) = {,} = {ε,,,,,} = {x {,} kutkin -kirjint x:ssä seur 1 ti 2 -kirjint } 103/295 104/295
Sulkumerkkien vähentämissääntöjä: Operttoreiden prioriteetti: Yhdiste- j tulo-opertioiden ssositiivisuus: L(((r s) t)) = L((r (s t))) L(((rs)t)) = L((r(st))) peräkkäisiä yhdisteitä j tuloj ei trvitse sulutt Yksinkertisemmin siis: r 1 =, r 2 = (), r 3 =, r 4 = (( )) Esimerkki C-kielen etumerkittömät reliluvut numer = (dd d dd )(e(+ ε)dd ε) (dd e(+ ε)dd ), missä d on lyhennemerkintä lusekkeelle d = (0 1 2 3 4 5 6 7 8 9) j e on lyhennemerkintä lusekkeelle e = (E e) Usein merkitään myös lyhyesti rr r + Esimerkki (d + d d + )(e(+ ε)d + ε) (d + e(+ ε)d + ) 105/295 106/295 Säännöllisten lusekkeiden sieventäminen Säännöllisillä kielillä on yleensä useit vihtoehtoisi kuvuksi, esim: ääritelmä 24 Kieli on säännöllinen, jos se voidn kuvt säännöllisellä lusekkeell Σ = L(( ) ) = L(( ) ) = L( ( ) ( ) ) ääritelmä Säännölliset lusekkeet r j s ovt ekvivlentit, merk r = s, jos L(r) = L(s) Lusekkeen sieventäminen = yksinkertisimmn ekvivlentin lusekkeen määrittäminen Säännöllisten lusekkeiden ekvivlenssitestus on epätrivili, mutt peritteess meknisesti rtkev ongelm 107/295 108/295
Sievennyssääntöjä: r (s t) = (r s) t r(st) = (rs)t r s = s r r(s t) = rs rt (r s)t = rt st r r = r r /0 = r εr = r /0r = /0 r = ε r r r = (ε r) ikä thns säännöllisten lusekkeiden tosi ekvivlenssi voidn joht näistä lskuleist, kun lisätään päättelysääntö: jos r = rs t, niin r = ts, edellyttäen että ε / L(s) Khden lusekkeen ekvivlenssin totemiseksi knntt usein päätellä erikseen kummnkin kuvmn kielen sisältyminen toiseen erkitään lyhyesti: r s, jos L(r) L(s) Tällöin siis r = s joss r s j s r Esimerkki Todetn, että ( ) = ( ) 1 Selvästi ( ) ( ), kosk ( ) kuv kikki kkoston {, } merkkijonoj 2 Kosk selvästi ( ), niin myös ( ) ( ) 109/295 110/295 27 ÄÄRELLISET AUTOAATIT JA SÄÄNNÖLLISET KIELET r = : r = s t : Luse 24 Jokinen säännöllinen kieli voidn tunnist äärellisellä utomtill r = ε : ε ε s ε Todistus Seurvn klvon induktiivisen konstruktion vull voidn mielivltisen säännöllisen lusekkeen r rkennett seurten muodost ε- utomtti r, joll L( r ) = L(r) Tästä utomtist voidn poist ε-siirtymät Lemmn 24 mukisesti, j trvittess voidn syntyvä epädeterministinen utomtti determinisoid Luseen 22 konstruktioll Esitettävästä konstruktiost on syytä huomt, että muodostettviin ε- utomtteihin tulee in yksikäsitteiset lku- j lopputil, eikä minkään os-utomtin lopputilst lähde eikä lkutiln tule yhtään ko osutomtin sisäistä siirtymää r = ( Σ) : r = st : s t ε r = s : ε t ε s ε ε ε 111/295 112/295
Esimerkki Lusekkeest r = (( )) sdn näiden sääntöjen mukn seurv ε-utomtti: ε ε ε ε ε ε ε Edellä esitetty utomtti on selvästi hyvin redundntti Käsin utomttej suunniteltess ne knnttkin usein muodost suorn (mikäli tietää, mitä on tekemässä) Esim lusekkeest r = (( )) on suhteellisen helppo muodost seurv yksinkertinen epädeterministinen tunnistj-utomtti: ε 113/295 114/295 Luse 25 Jokinen äärellisellä utomtill tunnistettv kieli on säännöllinen Todistus Trvitn vielä yksi äärellisten utomttien ljennus: lusekeutomtiss voidn siirtymien ehtoin käyttää mielivltisi säännöllisiä lusekkeit Formlisointi: erk RE Σ = kkoston Σ säännöllisten lusekkeiden joukko Lusekeutomtti on viisikko = (Q,Σ,δ,q 0,F), missä siirtymäfunktio δ on äärellinen kuvus δ : Q RE Σ P (Q) Yhden skelen tilnnejohto määritellään: (q,w) (q,w ) jos on q δ(q,r) jollkin sellisell r RE Σ, että w = zw, z L(r) uut määritelmät smt kuin iemmin Todistetn: jokinen lusekeutomtill tunnistettv kieli on säännöllinen Olkoon jokin lusekeutomtti Säännöllinen luseke, jok kuv :n tunnistmn kielen, muodostetn khdess viheess: (so δ(q,r) /0 vin äärellisen monell prill (q,r) Q RE Σ ) 115/295 116/295
1 Tiivistetään ekvivlentiksi enintään 2-tiliseksi lusekeutomtiksi seurvill muunnoksill: (i) Jos :llä on useit lopputiloj, yhdistetään ne seurvsti ε (ii) Poistetn :n muut kuin lku- j lopputil yksi kerrlln seurvsti Olk q jokin :n til, jok ei ole lku- eikä lopputil; trkstelln kikki reittejä, jotk :ssä kulkevt q:n kutt Olk q i j q j q:n välittömät edeltäjä- j seurjtil jollkin tällisell reitillä Poistetn q reitiltä q i q j oheisen kuvn (i) muunnoksell, jos tilst q ei ole siirtymää itseensä, j kuvn (ii) muunnoksell, jos tilst q on siirtymä itseensä: (i): ε r s q i q q j q i rs q j ε (ii): t r s q i q q j q i rt s q j 117/295 118/295 2 Tiivistyksen päättyessä jäljellä olev 2-tilist utomtti vstv säännöllinen luseke muodostetn seurvll tvll: (i): r Smll yhdistetään rinnkkiset siirtymät seurvsti: r q i r s q j q i r s q j (ii): r 1 r 2 r 3 r 1 r 2(r 3 r 4 r 1 r 2) r 4 119/295 120/295
Esimerkki 3 KIELIOPIT JA ERKKIJONOJEN TUOTTAINEN Kielioppi = muunnossysteemi merkkijonojen (kielen snojen ) tuottmiseen tietystä lähtöjonost lken, osjonoj toistuvsti nnettujen sääntöjen mukn uudelleenkirjoittmll Kielioppi on yhteydetön, jos kusskin uudelleenkirjoitusskeless korvtn yksi erityinen muuttuj- t välikesymoli jollkin siihen liitetyllä korvusjonoll, j korvus voidn in tehdä symoli ympäröivän merkkijonon rkenteest riippumtt ( )() ( ) ( )() ( ) ( ( )() ( )) Sovelluksi: rkenteisten tekstien kuvminen (esim ohjelmointikielten BNF-syntksikuvukset, XL:n DTD/Schem-määrittelyt), yleisemmin rkenteisten olioiden kuvminen (esim syntktinen hhmontunnistus) 121/295 122/295 Yhteydettömillä kieliopeill voidn kuvt (tuott) myös ei-säännöllisiä kieliä Esimerkki Yhteydetön kielioppi kielelle L mtch (lähtösymoli S): (i) S ε, (ii) S (S) Esimerkiksi merkkijonon ((())) tuottminen: S (S) ((S)) (((S))) (((ε))) = ((())) Esimerkki Kielioppi C-tyyppisen ohjelmointikielen ritmeettisille lusekkeille (yksinkertistettu) E T E + T T F T F F (E) Esimerkiksi lusekkeen ( + ) tuottminen: E T T F F F (E) F (E + T) F (T + T) F (F + T) F ( + T) F ( + F) F ( + ) F ( + ) 123/295 124/295
ääritelmä 31 Yhteydetön kielioppi on nelikko missä V on kieliopin kkosto; G = (V,Σ,P,S), Σ V on kieliopin päätemerkkien joukko; sen komplementti N = V Σ on kieliopin välikemerkkien t -symolien joukko; P N V on kieliopin sääntöjen t produktioiden joukko; S N on kieliopin lähtösymoli Produktiot (A, ω) P merkitään tvllisesti A ω erkkijono γ V tuott t joht suorn merkkijonon γ V kieliopiss G, merkitään γ G γ jos voidn kirjoitt γ = αaβ, γ = αωβ (α,β,ω V, A N), j kieliopiss G on produktio A ω Jos kielioppi G on yhteydestä selvä, voidn merkitä γ γ erkkijono γ V tuott t joht merkkijonon γ V kieliopiss G, merkitään γ G γ jos on olemss jono V:n merkkijonoj γ 0,γ 1,,γ n (n 0), siten että γ = γ 0, γ 0 G γ 1 G G γ n, j γ n = γ Erikoistpuksen n = 0 sdn γ G γ millä thns γ V Jälleen, jos G on yhteydestä selvä, voidn merkitä γ γ 125/295 126/295 erkkijono γ V on kieliopin G lusejohdos, jos on S G γ Pelkästään päätemerkeistä koostuv G:n lusejohdos x Σ on G:n luse Kieliopin G tuottm t kuvm kieli koostuu G:n luseist: L(G) = {x Σ S G x} Esimerkki Tspinoisten sulkujonojen muodostmn kielen L mtch = {( k ) k k 0} tuott kielioppi Esimerkki G mtch = ({S,(,)},{(,)},{S ε,s (S)},S) Yksinkertisten ritmeettisten lusekkeiden muodostmn kielen L expr tuott kielioppi G expr = (V,Σ,P,E), Formli kieli L Σ on yhteydetön, jos se voidn tuott jollkin yhteydettömällä kieliopill missä V = {E,T,F,,+,,(,)}, Σ = {,+,,(,)}, P = {E T, E E + T, T F, T T F, F, F (E)} 127/295 128/295
Esimerkki Toinen kielioppi kielen L expr tuottmiseen on missä V = {E,,+,,(,)}, Σ = {,+,,(,)}, G expr = (V,Σ,P,E), P = {E E + E, E E E, E, E (E)} Huom: Vikk kielioppi G expr näyttää yksinkertisemmlt kuin kielioppi G expr, sen ongelmn on ns rkenteellinen moniselitteisyys, mikä on monesti ei-toivottu ominisuus Vkiintuneit merkintätpoj Välikesymoleit: A,B,C,,S,T Päätemerkkejä: kirjimet,,c,,s,t numerot 0,1,,9 erikoismerkit (sulut jne) lihvoidut ti lleviivtut vrtut snt (if, for, end, ) ielivltisi merkkejä (kun välikkeitä j päätteitä ei erotell): X,Y,Z Päätemerkkijonoj: u,v,w,x,y,z Sekmerkkijonoj: α,β,γ,,ω 129/295 130/295 Produktiot, joill on yhteinen vsen puoli A, voidn kirjoitt yhteen: joukon sijn kirjoitetn A ω 1, A ω 2, A ω k A ω 1 ω 2 ω k Kielioppi esitetään usein pelkkänä sääntöjoukkon: A 1 ω 11 ω 1k1 A 2 ω 21 ω 2k2 A m ω m1 ω mkm Tällöin päätellään välikesymolit edellisten merkintäsopimusten mukn ti siitä, että ne esiintyvät sääntöjen vsempin puolin; muut esiintyvät merkit ovt päätemerkkejä Lähtösymoli on tällöin ensimmäisen säännön vsempn puolen esiintyvä välike; tässä siis A 1 131/295 Eräitä konstruktioit Olkoon L(T) välikkeestä T johdettviss olevien päätejonojen joukko Olkoon nnettu produktiokokoelm P, joss ei esiinny välikettä A, j joll B:stä voidn joht L(B) j vstvsti C:stä L(C) Lisäämällä P:hen jokin seurvist produktioist sdn uusi kieliä: produktio A B C A BC A AB ε (vsen rekursio) ti A BA ε (oike rekursio) kieli yhdiste L(A) = L(B) L(C) ktentio L(A) = L(B)L(C), j Kleenen sulkeum L(A) = L(B) 132/295
32 Säännölliset kielet j yhteydettömät kieliopit Välikkeiden keskeisupotus on yhteydettömille kieliopeille omininen konstruktio, jok tekee usein (muttei in) kielestä epäsäännöllisen: lisäämällä produktio sdn L(A) = A BAC ε L(B) i L(C) i i=0 Yhteydettömillä kieliopeill voidn siis kuvt joitkin ei-säännöllisiä kieliä (esimerkiksi kielet L mtch j L expr ) Osoitetn, että myös kikki säännölliset kielet voidn kuvt yhteydettömillä kieliopeill Yhteydettömät kielet ovt siten säännollisten kielten ito yliluokk Yhteydetön kielioppi on oikelle linerinen, jos sen kikki produktiot ovt muoto A B ti A ε, j vsemmlle linerinen, jos sen kikki produktiot ovt muoto A B ti A ε Osoittutuu, että sekä vsemmlle että oikelle linerisill kieliopeill voidn tuott täsmälleen säännölliset kielet, minkä tki näitä kielioppej nimitetään myös yhteisesti säännöllisiksi Todistetn tässä väite vin oikelle linerisille kieliopeille 133/295 134/295 Luse 31 Jokinen säännöllinen kieli voidn tuott oikelle linerisell kieliopill Todistus Olkoon L kkoston Σ säännöllinen kieli, j olkoon = (Q,Σ,δ,q 0,F) sen tunnistv (deterministinen ti epädeterministinen) äärellinen utomtti uodostetn kielioppi G, joll on L(G ) = L() = L Kieliopin G päätekkosto on sm kuin :n syötekkosto Σ, j sen välikekkostoon otetn yksi välike A q kutkin :n til q kohden Kieliopin lähtösymoli on A q0, j sen produktiot vstvt :n siirtymiä: (i) kutkin :n lopputil q F kohden kielioppiin otetn produktio A q ε; (ii) kutkin :n siirtymää q q (so q δ(q,)) kohden kielioppiin otetn produktio A q A q Esimerkki Automtti: Vstv kielioppi:, 1 2 A 1 A 1 A 1 A 2 A 2 ε A 2 135/295 136/295
Konstruktion oikeellisuuden trkstmiseksi merkitään välikkeestä A q tuotettvien päätejonojen joukko L(A q ) = {x Σ A q G x} Induktioll merkkijonon x pituuden suhteen voidn osoitt, että kikill q on Erityisesti on siis x L(A q ) joss (q,x) (q f,ε) jollkin q f F L(G ) = L(A q0 ) = {x Σ (q 0,x) (q f,ε) jollkin q f F} = L() = L Luse 32 Jokinen oikelle linerisell kieliopill tuotettv kieli on säännöllinen Todistus Olkoon G = (V, Σ, P, S) oikelle linerinen kielioppi uodostetn kielen L(G) tunnistv epädeterministinen äärellinen utomtti G = (Q,Σ,δ,q S,F) seurvsti: G :n tilt vstvt G:n välikkeitä: Q = {q A A V Σ} G :n lkutil on lähtösymoli S vstv til q S G :n syötekkosto on G:n päätekkosto Σ G :n siirtymäfunktio δ jäljittelee G:n produktioit siten, että kutkin produktiot A B kohden utomtiss on siirtymä q A qb (so q B δ(q A,)) 137/295 138/295 33 KIELIOPPIEN JÄSENNYSONGELA G :n lopputiloj ovt ne tilt, joit vstviin välikkeisiin liittyy G:ssä ε-produktio: F = {q A Q A ε P} Konstruktion oikeellisuus voidn jälleen trkst induktioll G:n tuottmien j G :n hyväksymien merkkijonojen pituuden suhteen Rtkistv tehtävä: Annettu yhteydetön kielioppi G j merkkijono x Onko x L(G)? Rtkisumenetelmä = jäsennyslgoritmi Useit vihtoehtoisi menetelmiä, erityisesti kun G on jotin rjoitettu (käytännössä esiintyvää) muoto 139/295 140/295