6.2 Algoritmin määritelmä Mitä lgoritmill yleensä trkoitetn? Peritteess: Yksiselitteisesti kuvttu jono (tietojenkäsittely)opertioit, jotk voidn toteutt meknisesti. Käytännössä: luonnollist kieltä, pseudokoodi yms. käyttävä esitys, jonk pätevä ohjelmoij os koodt ilmn suurempi ongelmi. Tämä trkkuustso ei ole riittävä, jos hlutn tutki lskettvuuden rjoj. Erityisesti kun hlumme väittää jostin ongelmst, että sille ei ole olemss rtkisulgoritmi, niin mitä oikestn väitämme? Huom, että tämä on oleellisesti eri si kuin todet, että ongelmlle ei ole (vielä toistiseksi) keksitty lgoritmi. Luontev äärellisyyden vtimus: Jokinen yksittäinen opertio lgoritmiss s tehdä vin äärellisen määrän työtä. Siis erityisesti yksi opertio s luke äärellisen määrän tieto, etsiä toimintohjeen äärellisestä sääntöjoukost j kirjoitt äärellisen määrän tieto. Ti kääntäen: Jos lgoritmin kuvuksess olisi jokin ääretöntä työtä vtiv skel, niin emme kutsuisi sitä lgoritmiksi milloin tuo skel vlmistuisi, j päästäisiin sitä seurvn skeleeseen? Toislt ei ole mitään syytä kieltää lgoritmi käyttämästä niin pljon pumuisti kuin se suinkin trvitsee. Huom: Edellisen äärellisyysvtimuksen nojll lgoritmi voi kuitenkin äärellisessä jss käyttää vin äärellisen määrän pumuisti! Siis tässä peritteess ääretön trkoitt riittävän suurt pumuisti. Tämän esittäminen mtemttisesti joht suorn jtukseen, että mtemttiselt knnlt lgoritmi on sm si kuin Turingin kone. Tämä onkin (krkesti) lkuperäinen jtus Turingin koneen tkn. Käytännön tietojenkäsittelyn knnlt tärkeä hvinto on, että myös (idelisoitu) nykyikinen tietokone on Turing-ekvivlentti eli pystyy rtkisemn tsn smt ongelmt kuin Turingin kone. Toisin snoen: kikki Turingin koneit koskevt tulokset j rjoitukset koskevt myös oikeit tietokoneit. Tämä on lskennn teorin j lskennn vtivuusteorin ydin. Siis Turingin kone (j vstvt kieliluokt) on kiinnostv; sitä on mtemttisten todistusten knnlt helpompi käsitellä kuin oike tietokonett (ti ohjelmointikieliä). 150
6.3 Rtkemttomuudest Monet lskennlliset ongelmt ovt täysin rtkemttomi; jotkut osittin rtkevi (rekursiivisesti lueteltvt kielet). Itsestään selvää: kikki ongelmt joille osmme lti rtkisulgoritmin, ovt tietenkin rtkevi (j silloin kuuluvt luokkn rekursiiviset kielet). Emme käsittele si sen syvällisemmin tällä kurssill. Esimerkkinä luetelln muutm ongelm joit ei Turingin koneell (eikä siis tietokoneell) pysty rtkisemn edes peritteess: Pysähtyykö kone nnetull syötteellä? Hyväksyykö kone tyhjän syötteen? Hyväksyykö kone edes jonkin syötteen? Onko koneen tunnistm kieli säännöllinen? Jäsennysongelm (w L(G)?) yleisessä tpuksess, eli kun kielioppi G on täysin rjoittmton. Jne... Muistele johdntoluku 3.3: rtkemttomien ongelmien olemssolo on helppo todet, kosk ongelmi on enemmän kuin lgoritmej / Turingin koneit. Meditoitv: ongelmn rtkemttomuus on lskennllisesti rtkemton ongelm. Yleinen rtkemttomuustulos: Luse 19 (Ricen luse). Jokinen Turingin koneiden epätrivili semnttinen ominisuus on rtkemton. Turingin koneiden M semnttinen ominisuus mikä thns sellinen ominisuus S, jok riippuu vin koneen M tunnistmst kielestä, ei koneen itsensä syntktisest rkenteest. Toisin snoen, intuitiivisesti: Jos meillä on koneet M j M, j L(M) = L(M ) eli ne hyväksyvät smn kielen, niin kysymykseen Onko koneell M ominisuus S? pitää vstt smoin kuin kysymykseen Onko koneell M ominisuus S? Mtemttisesti otten, semnttinen ominisuus S on mikä thns kokoelm rekursiivisesti lueteltvi kkoston {0, 1} kieliä j koneell M on ominisuus S, jos L(M) S. Semnttinen ominisuus on trivili jos vstus on in sm riippumtt kysyttävästä koneest M. Eli ominisuus S on trivili, jos jokisell koneell vstus on in kyllä eli jokisell koneell on tämä ominisuus S ei eli millään koneell ei ole tätä ominisuutt S. Kikki muut ominisuudet ovtkin sitten epätrivilej j Ricen luseen mukn siis rtkemttomi. 151
Siis Ricen luseen mukn itse siss jokseenkin kikki ohjelmien toimint, ti trkemmin snoen niiden lskemi syöte/tulos-kuvuksi koskevt kysymykset ovt lskennllisesti rtkemttomi. Edellä luetellut ongelmt koskevt koneiden semnttisi ominisuuksi, j ovt siis rtkemttomi. Semnttisen ominisuuden vstkoht on syntktinen ominisuus, kuten kone sisältää siirtymän δ(q, ) = (q,,r) jotkut koneet M sisältävät sellisen, kun ts toiset koneet M eivät sisällä, j silti ne voivt hyväksyä smn kielen. Tälliset ominisuudet ovt (helpostikin) rtkevi. Rtkemttomuustodistukset ovt usein muoto Vstoletus: kone pysähtyy ; j tästä johdetn ristiriit: kone ei voi pysähtyä joten ongelm on rtkemton. Esimerkkinä olkoon pysähtymisongelmn rtkemttomuustodistus johdntoluvuss 3.3.2. Jos ongelm on rtkev, koneen pitää pysähtyä in. Jos osittin rtkev, niin sen pitää pysähtyä kyllä tpuksess. 6.4 Lskennn vtivuusteorist Keskeinen (lgoritmisuunnittelun) kysymyksensettelu: Lskennn vtivuusteorin peruskysymykset ovt intuitiivisesti seurvn tyyppisiä (jn sijn voidn puhu muistist tms.): Annettu lskennllinen ongelm A j ikrj T: voiko ongelmn A rtkist jss T (ylärj ikvtivuudelle)? Annettu lskennllinen ongelm A j ikrj T: viekö ongelmn A rtkiseminen välttämättä vähintään jn T (lrj ikvtivuudelle)? Ylärjoj todistetn tyypillisesti ltimll tehoks lgoritmi j nlysoimll sen ikvtivuus. Tietojenkäsittelytieteilijät ovt hyviä tässä (ti inkin siihen koulutuksemme pyrkii). Alrjojen todistminen on yleensä (hyvin) vike: tyypillisesti se onnistuu vin jos ongelm A on sopiv keinotekoinen ongelm; ti tehdään lisärjoituksi sille milliset lgoritmit ovt sllittuj. Esimerkiksi TRA II -kurssin Ω(n log n) lrj järjestämiselle olett lisäksi, että lgoritmi s vin vertill kokonisi tietolkioit toisiins. Siten lrj ei enää pädekään esimerkiksi silloin, jos näiden tietolkioiden yksittäisiä ittejäkin skin tutki. (Huomttkoon vielä, että tässä olln kiinnostuneit tiukoist lrjoist; esim. Ω(1) on täysin trivili lrj järjestämiselle, mutt ei kiinnostv.) Idelitpuksess ylärj j lrj ovt smt, jolloin on löydetty optimlinen lgoritmi. Lskennn vtivuusteoriss edellinen kysymyksensettelu muuntuu hiemn toiseen muotoon. 152
Ylärjt j lrjt ovtkin vtivuusluokituksi, tyyliin: Voiko ongelmn A rtkist polynomisess jss deterministisellä Turingin koneell? Silloin jttelemme ongelmluokk kikki ne ongelmt, joille on polynomisess jss toimiv lgoritmi, kun snn lgoritmi täsmälliseksi määritelmäksi otmme Turingin koneet. Voiko ongelmn A rtkist polynomisess jss epädeterministisellä Turingin koneell? Siis on myös epädeterministisiä Turingin koneit, eli sellisi jotk voivt vlit seurvn lskent-skeleens usest eri vihtoehdost... Voiko ongelmn A rtkist polynomisess tilss? jne. Emme siis (välttämättä) ole kiinnostuneit yksittäisen lgoritmin täsmällisestä vtivuudest (edes) symptoottisess eli iso-o -mielessä, vn tietyn tyyppisten ongelmien vikeudest. Eräs Turingin koneiden yksinkertisuuden etu on, että niiden kuluttmien lskentresurssien määrä voidn määritellä suorn: Turingin koneen M syötemerkkijonoll w käyttämä ik on yksinkertisesti sen tekemien lskent-skeleiden lukumäärä ennen pysähtymistään til on yksinkertisesti niiden nuhpikkojen lukumäärä, joill sen nuhpää on vierillut ennen koneen pysähtymistä. Silloin kun tyydymme trkstelemn vin rtkevi ongelmi, niin voimme olett nämä äärellisiksi. Rtkemttomien ongelmien resurssitrpeet ts ovt hrvoin kiinnostvi. Syötteen pituudell n nämä määritellään mksimirvoikseen, eli ik on pisin ik jok voidn käyttää millään syötteellä w jonk pituus w n til on suurin til jok... vstvsti. Smoin epädeterminismi voidn määritellä suorn: Smss tilss voidn vlit smll nuhmerkillä mont eri siirtymää. Jos kieli voidn tunnist jossin nykyikisen tietokoneen strktiss mlliss (kuten esimerkiksi ns. hjsntimuistikone eli RAM-kone) jss t(n) j tilss s(n), niin se voidn tunnist deterministisellä Turingin koneell jss O(t(n) 2 ) j tilss O(s(n)). Yleisemmin, ((lähes?)kikiss?) universleiss lskennn mlleiss ikvtivuudet j tilvtivuudet (kun ne määritellään järkevästi) ovt polynomisess suhteess: Jos jokin ongelm rtke jossin mlliss jss t(n), niin missä thns toisess mlliss se rtke jss O(t(n) k ), jollin vkioll k, jok riippuu käytetyistä mlleist mutt ei ongelmst. 153
Erityisesti tämä trkoitt: jos ongelm rtke polynomisess jss (deterministisen) Turingin koneen vull, se rtke polynomisess jss myös oikell tietokoneell. (J päinvstoin.) Eli olemme kiinnostuneet rjst tehokkn eli polynomisen j tehottomn eli ylipolynomisen lskent-jn välillä emmekä trkst funktiost t(n). Käytännön lskennss ylipolynominen lgoritmi hidstuu liin rjusti ollkseen hyödyllinen, kun syötteen pituus n ksv vähänkään suuremmksi. Komintoriikn näkökulmst ylipolynomisuus trkoitt usein luettele kikki eri mhdollisuudet j vlitse niistä... -tyyppistä rtkisu, jot ei voine pitää lgoritmisesti kovinkn nokkeln... Ajtelln esimerkiksi seurv tehtävää: Meillä on n punnust, joiden pinot ovt p 1, p 2, p 3,...,p n N. Voidnko vk sd tspinoon niin, että yhteen sen vkkuppiin litetn os niistä j toiseen loput. Lskentongelmn se tunnetn nimellä Ositus (Prtition): Syötteenä nnetn luvut p 1, p 2, p 3,...,p n N. Onko olemss jokin indeksijoukko I {1, 2, 3,...,n} siten, että p i = p j? (12) i I Deterministist peruslgoritmi 1 for ech I {1, 2, 3,...,n} 2 do if yhtälö (12) on tott 3 then return kyllä on 4 return ei ole j {1,2,3,...,n}\I ei voine pitää kovinkn nokkeln, sehän vin kokeilee läpi kikki 2 n eri vihtoehto. Epädeterministinen lgoritmi vin 1. ensin tuott jonkin osjoukon I {1, 2, 3,..., n} epädeterministisesti 2. sitten hyväksyy jos yhtälö (12) on tott j hylkää muuten. 6.5 Ongelmien vikeusluokitukset j plutukset Vikeusluokki j -luokituksi on pljon (ktso esim. http://qwiki.stnford. edu/wiki/complexity_zoo) kosk lskentongelmi voidn vertill toisiins monin eri tvoin. Tärkeimmät tunte: P j NP. 154
Puoli-formlisti: on nnettu lskennllinen päätösongelm A. Ongelm A kuuluu luokkn NP (nondeterministic polynomil time), jos se voidn tunnist epädeterministisellä Turingin koneell polynomisess jss = määrässä lskentskeleit. Tästä seur suorn, että jos ongelm A NP, niin se voidn tunnist deterministisellä Turingin koneell (.k.. tietokoneell) eksponentilisess jss (simuloimll epädeterminististä lskent, ts. käymällä kikki lskentpuun hrt läpi). Siis: tämä simuloinnin eksponentilisuus on ylärj; luokkn NP kuuluu myös helppoj ongelmi (esim. hierrkin pohjll säännölliset kielet), jotk voidn rtkist nopemmin. Luokn NP vikeimmt ongelmt sttvt kuitenkin in vti eksponentilisen jn, mutt tämä on voin ongelm. Ns. NP-täydellisille ongelmille ei tunnet tehokkmpi lgoritmej, mutt ei ole myöskään voitu todist etteikö sellisi voisi oll. Tämä on tärkeä kysymys, kosk erilisi (tärkeitä) NP-täydellisiä ongelmi on pljon, j niitä hluttisiin ost rtkist tehokksti ( polynomisess jss). Vstvsti luokk P, epäformlisti: päätösongelmt, jotk voidn rtkist deterministisellä Turingin koneell polynomisess jss. Siis, jos P = NP, niin kikki luokn NP ongelmt voitisiin rtkist polynomisess jss. Vltos tietojenkäsittelytieteilijöistä uskoo, että P NP. Mutt sitä ei siis ole vielä(kään) onnistuttu todistmn. Intuitiivisesti todistuksen vikeus on osoitt, ettei mikään ohjelmointitp, -kikk ti -temppu voi korvt epädeterminististä polynomist lskent deterministisellä hidstumtt smll eksponentilisesti. Plutukset lskentongelmien välillä Ongelmi voidn plutt toisiin ongelmiin. Trivili esimerkki: kertolsku voidn plutt toistetuksi yhteenlskuksi, j päinvstoin. Lskentongelmn A pluttminen lskentongelmn B trkoitt sellist muunnosfunktiot f, että kysymykseen Onko x A viko ei? voidn vstt kysymällä sen sijn Onko f(x) B viko ei?. Tällöin ongelm A löytyy ongelmn B sisältä. Tällöin jttelemme että Eihän tämä A ollutkn inkn vikempi ongelm kuin tuo B!. Ti kääntäen Tuo ongelm B ei ole inkn helpompi kuin tämä ongelm A!. 155
Sllitut plutukset f vlitn siten, etteivät ne hämärrä sitä rj, jot hlutn nyt tutki. Esimerkiksi jos rjn on rtkevuus/rtkemttomuus, niin silloin plutuksen f sllitn mikä thns Turingin koneell lskettv funktio. Silloin otetn ongelmksi A jokin rtkemttomksi jo tiedetty ongelm. Erityisesti pysähtymisongelm on todistettu rtkemttomksi suorn, vetomtt muihin ongelmiin. Siten se onkin usein luontev A. Silloin plutusfunktion f olemssolo osoitt myös ongelmn B rtkemttomksi ongelm A työntää ongelmn B rjn yli plutuksell f. Toisin snoen, ongelm B voidn osoitt rtkemttomksi seurvsti: 1. Oletetn, että ongelmll B olisi jokin rtkisulgoritmi. 2. Osoitetn, että sen vull stisiin rtkisulgoritmi myös jollekin rtkemttomksi tiedetylle ongelmlle A esimerkiksi pysähtymisongelmlle. 3. Tämä on ristiriit, eli myöskään B ei voi oll rtkev. Kun tutkitn rj P/NP, niin sllituiksi plutusfunktioiksi f vlitn deterministisillä Turingin koneille polynomisess jss lskettvt funktiot. Puhutn polynomisist (moni-yksi) plutuksist ( polynomil (mny-one) reductions ). Jos on siis nnettu formlit kielet A Σ A j B Σ B, voidn merkitä A p B jos x A f(x) B kikill x Σ A j plutusfunktio f : Σ A Σ B voidn lske polynomisess jss. Tämä A p B formlisoi intuitiomme ongelm A ei ole vikempi kuin ongelm B eli ongelm B ei ole helpompi kuin ongelm A. Lskentongelm on NP-kov ( hrd ), jos kikki luokn NP ongelmt voidn plutt siihen polynomisesti. Lskentongelm on NP-täydellinen ( complete ), jos se on NP-kov j itsekin luokss NP. Toisin snoen, silloin se on luokn NP ktoll eli yksi sen vikeimmist ongelmist. Näillä määritelmillä P? = NP-ongelm rtke P = NP jos yhdellekin NP-täydelliselle (ti -kovlle) ongelmlle keksitään polynomisess jss toimiv deterministinen lgoritmi. Tämä on siis se vähemmän uskottv vihtoehto. P NP jos yhdellekin NP-täydelliselle ongelmlle pystytään osoittmn, ettei sellist lgoritmi voi oll olemss. Tämä on siis se vihtoehto, johon uskotn, mutt jonk todistus yhä puuttuu. Siis, ongelm A voidn osoitt NP-täydelliseksi (jos se on sellinen!) seurvsti: 156
1. Etsitään ensin kirjllisuudest tunnettu NP-täydellinen ongelm B (joit on tuhnsi), jok muistutt ongelm A josskin mielessä. 2. Osoitetn että B p A vditun plutuksen f löytämistä helpott se, että ongelmt muistuttvt toisin. 3. Osoitetn vielä että A NP mutt se on helppo: riittää esittää sille epädeterministinen polynomiikinen lgoritmi. Jos ongelm A on näin osoitettu NP-täydelliseksi, mutt sille pitää silti nt edes jonkinlinen rtkisu, niin sille voidn ryhtyä kehittämään esimerkiksi jotkin seurvist: Approksimointilgoritmi jok lskeekin jonkin likimääräisen rtkisun. Stunnislgoritmi jok todennäköisesti löytää rtkisun, muttei vrmsti. Heuristiikkoj jotk toimivt nopesti moniss sen erikoistpuksiss, mutteivät kikiss. NP-täydellisiä ongelmi NP-täydellisiä ongelmi on löytynyt tuhnsi sekä tietojenkäsittelytieteen sisältä että monilt muilt sellisilt tieteenloilt, joiss myös pitää rtko informtionkäsittelytehtäviä. Esimerkiksi seurvilt loilt: Verkkoteori. Esimerkiksi Hmiltonin kehä (Hmiltonin Circuit): Voidnko syötteenä nnetun suuntmttomn verkon kri pitkin kulke niin, että käydään tsn kerrn jokisess sen solmuss, j lopuksi pltn tkisin lähtösolmuun? Ti Verkon väritys (Chromtic Numer): Voidnko nnetun suuntmttomn verkon solmut värittää r eri värillä siten, että jokinen sen kri kulkee eriväristen solmujen välillä? Verkkojen suunnittelu. Esimerkiksi Kuppmtkustjn ongelm (Trvelling Slesmn Prolem, TSP): Edellinen Hmiltonin kehä joss on mukn myös krten pinot (eli teiden pituudet ) j ylärj kierroksen pituudelle. Joukot j niiden ositukset. Esimerkiksi edellä kuvttu Ositus. Tllennus j hku. Esimerkiksi Lyhyin yhteinen ylijono (Shortest Common Superstring): Annetn mont merkkijono s 1, s 2, s 3,...,s n sekä ylärj m. Onko olemss korkeintn m merkin mittinen merkkijono s, jok sisältää kikki nämä nnetut merkkijonot? Kiinnostv esimerkiksi molekyyliiologiss: Annetut merkkijonot ovt lortoriokokeill eristettyjä pätkiä tuntemttomn DNA-juosteen eri kohdist. Millinen se koko juoste voisi oll? Aiktulujen ldint. Esimerkiksi Lukujärjestys (Timetle) koko koululle, ti työjärjestys tehtn koneille j sen henkilökunnlle,... Mtemttinen ohjelmointi. Esimerkiksi Repunpkkus (Knpsck): On nnettu tvroit, joill on rvo j pino. Mitkä niistä murtovrkn knntt poimi reppuuns, jott niiden yhteinen rvo olisi mhdollisimmn suuri, mutt pino silti niin pieni, että hän vielä jks knt ne? 157
Alger j lukuteori. Esimerkiksi Neliölliset Diofntoksen yhtälöt (Qudrtic Diophntine Equtions): Annetn,, c N. Onko olemss rtkisut x, y N yhtälölle x 2 + y = c? Pelit j pulmt. Esimerkiksi sellinen Ristisntehtävä (Crossword Puzzle Construction) joss nnetn ruudukko, joss os ruuduist on vlkeit j muut musti sekä list snoj jotk pitää kirjoitt näihin vlkeisiin ruutuihin. Logiikk. Esimerkiksi klssisen luselogiikn Toteutuvuusongelm (Stisfiility, SAT): Annetn klssisen luselogiikn kv. Voidnko siinä oleville muuttujille nt sopivt totuusrvot siten, että koko kvn totuusrvoksi tulee true? Tämä oli siinä mielessä ensimmäinen NP-täydellinen ongelm, että se todistettiin suorn NP-täydelliseksi lähtien polynomiikisist epädeterministisistä Turingin koneist. Pysähtymisongelm oli vstvss rooliss rtkemttomuudess. Tämä on ns. (Stephen) Cookin luse. Sen jälkeen nämä muut ongelmt voitiin todist NP-täydellisiksi helpommin sopivill plutuksill siitä j toisistn. Huom: Muillkin logiikoill on om toteutuvuusongelmns, j sen vtivuus vihtelee logiikst riippuen. Automtit j formlikielet. Monet tämän kurssin sioist johtvt vähintään NPkoviin ongelmiin, esimerkiksi Pienin esimerkeistä päätelty utomtti (Minimum Inferred Finite Stte Automton): Annetn kksi äärellistä merkkijonojoukko S,K Σ eli sllitut j kielletyt snt sekä kokorj m N. Onko olemss sellist m-tilist determinististä utomtti, jok hyväksyy inkin kikki nämä sllitut muttei yhtään noist kielletyistä snoist? Eli kuink vike tietokoneen on keksiä itse nnettuihin positiivisiin j negtiivisiin esimerkkeihin sopiv äärellinen utomtti? Ohjelmien optimointi. Monet kääntäjän loppuviheen eli koodin generoinnin ongelmt kuten esimerkiksi Rekistereiden riittävyys (Register Sufficiency): Voidnko nnettu ohjelmkoodi kääntää selliseksi konekoodiksi, joss trvitn kerrlln vin korkeintn r eri rekisteriä? Huom: Nämä ovt päätösongelmi, eli kyllä/ei-kysymyksiä ( kuuluuko kieleen? ). Trkkn otten, inostn päätösongelmversiot s sno NP-täydelliseksi. Usein olln kuitenkin kiinnostuneit etsintä- ti optimointiongelmist, tyyliin Mikä on pienin määrä r rekistereitä, jonk tämä nnettu ohjelmkoodi trvitsee? Mikä on nnetun suuntmttomn pinotetun verkon lyhyin Hmiltonin kehä / kuppmtkustjn reitti? Tvllisesti (mutt ei välttämättä!) NP-täydellisen päätösongelmn j sitä vstvn optimointiongelmn vtivuus on oleellisesti sm, eli ne erovt vin jonkin polynomin verrn. Siksi usein puhutnkin jonkin optimointiongelmn NP-täydellisyydestä. 158
7 Summ summrum Kurssin sisältöä voidn trkstell (inkin) khdest näkökulmst: Perustiedot formleist kielistä j niiden tunnistmisest; esim. kielen määritteleminen äärellisenä utomtin, säännöllisen lusekkeen ti kontekstittomn kieliopin vull, näiden formlismien väliset yhteydet, (Turingin kone yleisenä lgoritmin mllin j) (rtkemttomuuden lkeet, kuten pysähtymisongelm). Johdtus tietojenkäsittelyteorin j sen metodiikkn; erityisesti Säännölliset kielet mtemtiikn soveltminen lskennn mllintmiseen j miten väitteet perustelln täsmällisesti. Käytännössä tärkeä tietää: tilsiirtymäkone lskennn mllin säännölliset lusekkeet j äärelliset utomtit Teoreettisi jtusmllej: epädeterministinen lskent (joitin käytännön sovelluksikin on) mllien väliset konversiot (NFA DFA) lskulitteen j kuvusformlismin ekvivlenssi (DFA vs. säännöllinen luseke) luokn sulkeumominisuudet mhdottomuustodistukset (pumppuslemm) Kontekstittomt kielet Käytännössä tärkeä tietää: kielen kuvminen kieliopill jäsentämisen peruskäsitteet, erityisesti jäsennyspuu Teoreettisi jtusmllej: smt kuviot kuin säännöllisillä kielillä, teknisesti hstvmmss tilnteess Algoritmisi tekniikoit: itertiiviset lgoritmit (nollutuvt muuttujt jne.) CYK-lgoritmi j tulukointi (dynminen ohjelmointi) rekursion käyttö yksinkertisen kieliopin jäsentämiseksi Jtkoiheit: sovellukset ohjelmointikielissä j luonnollisess kielessä 159
Turingin koneet j lskettvuus Käytännössä tärkeä tietää: Churchin-Turingin teesi rtkemttomuuden käsite Teoreettisi jtusmllej: vikk mitä (intross minittu inkin: numeroituvuus vs. ylinumeroituvuus; digonlisointi) Jtkoiheit: lskennn teori, lskennn vtivuus; (mtemttinen) logiikk (ei se kurssi...) Teori j käytäntö Kurssi oli teoreettinen, mutt sit pitää ymmärtää syvällisesti, jott opittu voi tehokksti sovelt. Tentti THE BEST THEORY IS INSPIRED BY PRACTICE nd THE BEST PRACTICE IS INSPIRED BY THEORY. Donld Knuth. In theory prctice nd theory re the sme. In prctice they re not. Anonyymi (?) Jotin tämän tpist: 1. Vst / selitä lyhyesti mitä trkoitt... 2. Determinisoi j minimoi oheiset utomtit:... 3. Muodost () oheist säännöllistä lusekett vstv epädeterministinen äärellinen utomtti () oheisest utomtist vstv säännöllinen luseke luennoll esitetyllä menetelmällä. 4. Olkoon nnettu kontekstiton kielioppi G. () Ldi kieliopin kuvmn kielen tunnistv äärellinen utomtti (jos kielioppi on oikelle linerinen) ti pinoutomtti (jos ei). () Onko kielioppi Chomskyn normlimuodoss? Jos ei, niin muut se selliseksi. (c) Selvitä CYK-lgoritmill, kuuluuko merkkijono w =... kieliopin kuvmn kieleen. Yleisesti: kuten hrjoitustehtävät, luentojen esimerkit j tehtävät. Siis kysymyksiä seurvien kertustehtävien tyyliin: Tehtävä 48. Esitä kullekin seurvist kkoston Σ = {,,c} kielistä kielen tunnistv deterministinen utomtti j vstv säännöllinen luseke: 160
1. merkkijonot, joiss -merkkien lukumäärä on korkeintn kolme 2. merkkijonot, jotk loppuvt c 3. merkkijonot, jotk eivät sisällä osmerkkijono c 4. merkkijonot, joiss ei ole kht sm merkkiä peräkkäin. 5. merkkijonot, jotk sisältävät kolmell jollisen lukumäärän merkkiä c. Tehtävä 49. Muodost epädeterministinen äärellinen utomtti kielelle (0 11). Muodost tästä edelleen deterministinen (minimoitu) äärellinen utomtti. Käytä luentomteriliss esitettyä täsmällistä menetelmää, j esitä myös väliviheet. Tehtävä 50. Minimoi ll olev deterministinen äärellinen utomtti kurssill opeteltu minimointimenetelmää käyttäen. 1 2 3 4 5 Tehtävä 51. Trkstelln oheist äärellistä utomtti: 1 2 0, 3 4 5 7 6 8 9 10 1. Determinisioi utomtti kurssill opeteltu menetelmää käyttäen. 2. Minimoi deterministinen utomtti kurssill opeteltu minimointimenetelmää käyttäen. 3. Millisen kielen utomtti tunnist? Muodost (minimoidust) utomtist vstv säännöllinen luseke. 161
Tehtävä 52. Trkstelln oheist äärellistä utomtti: 1 2 3 4 5 6 1. Minimoi deterministinen utomtti kurssill opeteltu minimointimenetelmää käyttäen. 2. Millisen kielen utomtti tunnist? Muodost (minimoidust) utomtist vstv säännöllinen luseke. Tehtävä 53. Trkstelln oheist äärellistä utomtti: 1 1. Determinisoi utomtti kurssill opeteltu menetelmää käyttäen. 2 3 2. Minimoi deterministinen utomtti kurssill opeteltu minimointimenetelmää käyttäen. 3. Millisen kielen utomtti tunnist? Muodost (minimoidust) utomtist vstv säännöllinen luseke. Tehtävä 54. Erään ohjelmointikielen funktiomäärittelyt ovt seurvnlisi: ensin nnetn pluurvo, jok voi oll int, flot ti void. Sitä seur funktion nimi. Suluiss ennetn prmetrit, ensin tyyppi (joko int ti flot) j sitten prmetrin nimi. Prmetrit erotetn pilkull. Prmetrien puuttuminen ilmistn vrtull snll void. Funktioiden j muuttujien nimet koostuvt kirjimist,,c,...,z sekä numeromerkeistä 0,1,2,...,9, j lkvt in kirjimell. Lillisi määrittelyjä ovt esimerkiksi: int clc2(int x, int y),void print(flot menvlue),flot generte(void). 1. Ann kielen kuvv säännöllinen luseke. 2. Muodost kielen tunnistv deterministinen äärellinen utomtti lusekkeest. 3. Ann kielen kuvv kontekstiton kielioppi. 162 4 5 6
Tehtävä 55. Olkoon kkosto Σ = {, }. Trkstelln kieltä L = {x : x ei sisällä merkkijono }. 1. Ldi äärellinen utomtti, jok tunnist kyseisen kielen. (Vihje: Ldi ensin utomtti sen komplementille.) 2. Lue utomtist vstv säännöllinen luseke. Ann kikki väliviheet! 3. Ann kontekstiton kielioppi, jok tuott kyseisen kielen. Tehtävä 56. Mitä trkoitt... 1. Äärellisen utomtin determinisointi? 2. Äärellisen utomtin minimointi? 3. Äärellisen utomtin muodostus säännöllisestä lusekkeest? 4. Todistus Pumppuslemmll? Tehtävä 57. Ovtko seurvt väittämät oikein vi väärin? Perustele lyhyesti. 1. Jos kieli ei ole säännöllinen, on se kontekstiton. 2. Jos kieli on kontekstiton, on se myös säännöllinen. 3. Jos kieli on säännöllinen, on se myös kontekstiton. 4. On olemss kieliä jotk ovt säännöllisiä mutt eivät kontekstittomi. 5. On olemss kieliä jotk voidn tunnist epädeterministisellä äärellisellä utomtill mutt joit ei void kuvt säännöllisellä lusekkeell. 6. Jos nnettun kielioppi G j merkkijono w {, }, niin w L(G) on lgoritmisesti rtkev ongelm. Tehtävä 58. Trkstelln seurv kielioppi G: S A B ε A B B A Ovtko seurvt väitteet tosi vi epätosi? 1. Merkkijonot j kuuluvt kieliopin kuvmn kieleen L(G). 2. G on Chomskyn normlimuodoss. 3. G kuv smn kielen kuin säännöllinen luseke () () () (). 4. G kuv smn kielen kuin säännöllinen luseke () (). 5. G on vsemmlle linerinen. 6. G kuv smn kielen kuin kielioppi G : S A B ε A A A B ε B B B A ε 163
Tehtävä 59. Trkstelln seurvi formlej kieliä. Ovtko ne säännöllisiä? Jos joku niistä ei ole säännöllinen, osoit että se on kontekstiton. 1. { i j : i = 0...3, j = 4...5} 2. {w : w on :st j :stä koostuv merkkijono, jonk pituus on 3:ll jollinen} 3. {ww : w {, } } 4. { n n : n 0} 5. {w {, } : w sisältää prillisen määrän :t sekä vähintään yhden :n}. 6. { i j : j i 0} 7. {w {, } : w sisältää prillisen määrän :tä} 8. {w {, } : w sisältää prillisen määrän :tä} {w {, } : w sisältää kolmell jollisen määrän :t}. 9. {w {, } : w sisältää prillisen määrän :tä sekä vähintään yhden :n}. 10. { i j {, } : 2 i = j 4} 11. { i j : i = 2j} 12. { i j : i on prillinen j j on priton} 13. {w w : w {, } } 14. {w {, } : w sisältää merkkijonon sekä prittomn määrän :t}. 15. { m n : 0 m n 2m} Tehtävä 60. Olkoon nnettu säännölliset kielet L, L 1 j L 2. Osoit että myös seurvt kielet ovt säännöllisiä: 1. L 1 L 2 (kielten ktentio) 2. L 1 L 2 3. L 1 L 2 4. L Tehtävä 61. Mihin Chomskyn normlimuoto trvitn? Mitkä kielet voidn esittää Chomskyn normlimuodoss? Tehtävä 62. Olkoon nnettu kielioppi S A B A B S A B ε 1. Ldi kieliopin kuvmn kielen tunnistv äärellinen utomtti. 2. Ann vstv säännöllinen luseke. 164
3. Onko kielioppi Chomskyn normlimuodoss? 4. Jos ei, niin muut se selliseksi. 5. Kuuluuko merkkijono kieleen? Jos kuuluu, niin nn merkkijonon jäsennyspuu. Tehtävä 63. Simuloi Cocke Younger Ksmi (CYK) -lgoritmi sen rtkistess kuuluvtko merkkijonot, j kieliopin S A AS SA muodostmn kieleen. ( Simuloi = täytä lgoritmin ylläpitämä dynmisen ohjelmoinnin tulukko.) Jos kuuluu, niin nn vstvt jäsennyspuut. Tehtävä 64. Mitkä seurvt kkoston Σ = {, } kielistä ovt säännöllisiä, mitkä eivät: 1. L = { n n : n N} 2. L = { n n : n N} 3. L = {wuw R : w, u Σ + } Perustele vstuksesi. Tehtävä 65. Trkstelln kkoston {, } prillisen mittisten plindromien muodostm kieltä PAL = {ww R : w {, } }. 1. Ldi kielen tuottv kontekstiton kielioppi. 2. Muodost kielen tunnistv pinoutomtti. Tehtävä 66. Miten voit rtkist seurvt ongelmt? 1. Annettun säännölliset lusekkeet r 1 j r 2, onko L(r 1 ) = L(r 2 )? 2. Annettun säännöllinen luseke r j oikelle linerinen kielioppi G, onko L(r) = L(G)? 3. Annettun kontekstittomt kieliopit G 1 j G 2, onko L(G 1 ) = L(G 2 )? Tehtävä 67. Trkstelln ritmeettisi lusekkeit tuottv kontekstitont kielioppi G: E E + E E E (E). 1. Muodost luseelle ( + ) vsen johto. 2. Osoit että kielioppi on moniselitteinen (Vihje: + ). 3. Muunn kielioppi G Chomskyn normlimuotoon. 4. Tutki CYK-goritmill, kuuluvtko merkkijonot ( + ) j () + kieleen L(G). Tehtävä 68. Selitä lyhyesti seurvien käsitteiden merkitys. 1. Oikelle ti vsemmlle linerinen kielioppi. 2. Jäsennyspuu (prse tree). 165
3. Säännöllinen luseke (regulr expression). 4. Moniselitteinen kielioppi. 5. ε-utomtti. 6. Chomskyn normlimuoto. 7. Churchin-Turingin teesi. Loppu Muist kurssiplute! 166