Laskennanteoria: Mitä voimmelaskea tietokoneella ja kuinkatehokkaasti?

Save this PDF as:
 WORD  PNG  TXT  JPG

Koko: px
Aloita esitys sivulta:

Download "Laskennanteoria: Mitä voimmelaskea tietokoneella ja kuinkatehokkaasti?"

Transkriptio

1 Laskennanteoria: Mitä voimmelaskea tietokoneella ja kuinkatehokkaasti? Wilhelmiina Hämäläinen Johdatus tietojenkäsittelytieteeseen Tietojenkäsittelytieteen laitos Joensuun yliopisto

2 1 Johdanto Laskennateoria (theory of computation) koostuu kahdesta osa-alueesta: 1. Laskettavuuden teoria (theory of computability): Mitä tietokoneella voidaan ratkaista? Kuinka vaikea ongelma on? ongelmian vaikeusluokat (kuinka monimutkaista laskennanmallia tarvitaan) 2. Laskennan vaativuusteoria (theory of computational compleity): Kuinka tehokkaasti ongelma voidaan ratkaista? ongelmien vaativuusluokat (aika- ja tilavaativuus) ONGELMA EI LASKENNALLINEN ONGELMA LASKENNALLINEN ONGELMA RATKEAVA ONGELMA RATKEAMATON ONGELMA TEHOKKAASTI RATKAISTAVISSA EI TEHOKASTA RATKAISUA OSITTAIN RATKEAVA TÄYSIN RATKEAMATON Kuva 1: Ongelmien luokittelu. 2 Laskettavuudenteoria Laskettavuudenteorian keskeisiä kysymyksiä ovat: Onko annettu ongelma ylipäänsä (tietokoneella) ratkeava? Jos se on, niin kuinka vaikea se on? Ts. kuinka järeää kalustoa tarvitsemme ongelman mallintamiseen ja ratkaisemiseen? Näiden ongelmien ratkaisemiseksi on määritelty erilaisia laskennanmalleja. Tunnetuin tällainen malli on Turingin kone, jonka avulla voidaan tutkia minkä tahansa (laskennallisen) ongelman ratkeavuutta sekä jatkossa myös laskennallista vaativuutta. Helpompia ongelmia voidaan mallintaa yksinkertaisemmilla laskennanmalleilla, kuten äärellisillä 1

3 automaateilla ja pinoautomaateilla. Ongelmat voidaankin jakaa vaikeusluokkiin sen perusteella, kuinka vahvaa laskennanmallia ne vaativat. Seuraavassa keskitymme kuitenkin vain Turingin koneisiin. Muista laskennamalleista ja niiden käyttötavoista kerrotaan Tietojenkäsittelytieteen teoreettiset perusteet - kurssilla. 2.1 Laskennamallit ja Churchin-Turingin teesi Ongelmia: Maija ja Matti ovat ratkaisseet saman ongelman, mutta Maija on kirjoittanut ratkaisunsa Adalla ja Matti Perlillä. Kumman ratkaisu on tehokkaampi, oikeellisempi, parempi,...? Et ole keksinyt ongelmaan ratkaisua Pascalilla, voisiko Java auttaa? Ratkaisusi Kauppamatkustajan ongelman vaatii pahimmassa tapauksessa eksponentiaalisen ajan. Onko toivoa, että se ratkeaisi konekielellä polynomisessa ajassa? Pomosi on tilannut sinulta universaalin virustunnistajan, joka varoittaa kaikista sellaisista ohjelmista, jotka voivat muuttaa järjestelmätiedostoja. Pystytkö laatimaan vaaditun ohjelman? Pysähtyykö tämä ohjelma koskaan? Ratkaisu: abstraktit laskennanmallit laskennanmalli (model of computation): mitä voi laskea ja kuinka vaativaa se on? alkujaan matemaattinen ongelma tietokoneilla voi laskea kaikkea, mitä matematiikassakin! tietojenkäsittelytieteessäkin useita laskennanmalleja, esim. erilaiset ohjelmointikielet, RAM-koneet, automaatit ohjelmointikielten ongelma: metsää voi olla vaikea nähdä puilta itse ongelman analysointi on vaikeaa yhdestä ratkaisusta 2

4 Mitä jos sitä yhtäkään ratkaisua ei keksi? Onko ongelma silloin ratkeamaton? tavoite: mallinnetaan laskukonetta mahdollisimman abstraktisti, karsien pois kaikki turhat yksityiskohdat. Silti mallin oltava riittävän vahva: kyettävä kaikkeen, mihin matematiikassa ja tietokoneilla kyetään. Turingin koneet tarjoavat ratkaisun! = yksinkertainen abstrakti laskukone, jolla voi ratkaista kaiken, mikä on nykytietämyksen mukaan laskennallisesti ratkaistavissa (millä tahansa ohjelmointikiellä tai matematiikassa) = ns. Churchin-Turingin teesi voidaan ratkaista mikä tahansa mekaanisesti ratkeava ongelma voidaan siis tutkia, onko ongelma ylipäänsä ratkeava analysoida sen vaativuutta (montako aika-askelta tai työnauhan solua kone tarvitsee työssään) mikä tahansa algoritmi voidaan siis esittää Turingin koneena Huom! Yleensä algoritmiksi kutsutaan vain sellaista algoritmia, jonka laskenta päättyy aina, kaikilla syötteillä. Ei ole järkeä kirjoittaa ohjelmaa, joka ei pysähdy koskaan! Huom2! Vain teesi, ei teoreema (lause): kukaan ei ole voinut todistaa oikeaksi, mutta kaikki tunnetut (vahvat) laskennanmallit ovat osoittautuneet ekvivalenteiksi ja yleisesti uskotaan pätevän kaikille laskennanmalleille. Jotkut ovat spekuloineet, olisivatko ns. kvanttitietokoneet vahvempia Turingin koneet Koneen rakenne Äärellistilainen ohjausyksikkö, jonka toimintaa säätelee siirtymäfunktio δ (delta). Kullakin hetkellä kone on jossain tilassa q i. Merkkipaikkoihin jaettu työnauha, joka on loppupäästään äärettömän pitkä. Nauhapää, joka kullakin hetkellä osoittaa yhtä työnauhan merkkiä. Kone voi lukea ja kirjoittaa vain nauhapään kohdalla olevan merkin. 3

5 nauha: T U R I > < N G nauhapää: ohjausyksikkö: q 1 q 2 q 0 δ Syötteet Kuva 2: Turingin kone. syötteenä annetaan merkkijono, joka kirjoitetaan koneen työnauhalle usein käytetään binääriaakkostoa eli merkkijono koostuu 1:istä ja 0:ista, esim. luku 7 koodataan jonona 111 ja luku 8 jonona 0001 (merkitsevin bitti vasemmalla) Huom! Minkä tahansa merkkijonon voi koodata binääriaakkosin! lisäksi nauhan alkua merkitsevä erikoismerkki > ja loppua merkitsevä erikoismerkki < (loppumerkki liikkuu eteenpäin, kun sen päälle kirjoitetaan aakkoston symboli ts. voit ajatella, että koko loppunauha on täynnä loppumerkkiä <<<<<... Tulosteet kun kone pysähtyy, voidaan tulosjono lukea työnauhalta tärkeä erikoistapaus ns. tunnistuskoneet, jotka ratkaisevat jonkin päätösongelman ts. ne tunnistavat, kuuluuko annettu syötejono haluttuun joukkoon ja vastaavat vain Kyllä tai Ei. Esim. Onko annetun merkkijonon koodaama binääriluku parillinen? Kyllä-vastaus, kun kone pysähtyy hyväksyvässä lopputilassa, ja Eivastaus, kun kone pysähtyy hylkäävässä lopputilassa Huom! Ongelman vaikeuden kannalta riittää tutkia vastaavaa päätösongelmaa. Esim. ongelmaa laske +y vastaa päätösongelma annettu merkkijono yz, onko +y=z? 4

6 Koneen toiminta Aluksi nauhalla on syötemerkkijono (ja loppu nauhasta tyhjä), nauhapää osoittaa ensimmäistä nauhapään paikkaa ja kone käynnistetään alkutilassa q 0 Kullakin laskenta-askeleella se lukee nauhapään kohdalla olevan merkin, päättää siirtymäfunktion mukaisesti uuden tilansa, kirjoittaa nauhapään kohdalla uuden merkin ja siirtää nauhapäätä yhden askeleen vasemmalle tai oikealle (ensimmäisen paikan vasemmalle puolelle ei voi kuitenkaan mennä) Koneella on hyväksyvä lopputila q yes ja hylkäävä lopputila q no (kun kyseessä on merkkijonon tunnistaminen, jota käsittelemme). Kone pysähtyy, kun se saavuttaa lopputilan. Esim. kielen {a k b k c k k 0} tunnistava Turingin kone a/a, R B/B, R b/b, R C/C, R a/a, R b/b, R q 0 q 1 q 2 </<, L a/a, R c/c, L q 4 A/A, R q 3 </<, L q 5 B/B, R B/B, R C/C, R C/C, L b/b, L B/B, L a/a, L Kuva 3: Kielen {a k b k c k k 0} tunnistava Turingin kone. Idea: kone pitää kirjaa tapaamistaan a:sta, b:stä ja c:stä muuttamalla ne yksi kerrallaan A:ksi, B:ksi ja C:ksi. muutettuaan viimeisen a:n A:ksi tarkistaa, ettei enää jäljellä b:tä tai c:tä. Sama ohjelmana: 5

7 while ((c=getchar())!=eof) { switch(c) { case 'a': A++; case 'b': B++; case 'c': C++; else: ERROR; } } if ((A==B) && (B==C)) printf(ok); *Formaali määrittely Määritelmä: Turingin kone on seitsikko missä M = (Q, Σ, Γ, δ, q 0, qyes, qno), Q on koneen tilojen äärellinen joukko; Σ on koneen syöteaakkosto; Γ Σ on koneen nauha-aakkosto; ol. että >, < / Γ; δ : (Q \ {qyes, qno}) (Γ {>, <}) Q (Γ {>, <}) {L, R} on koneen siirtymäfunktio; q 0 Q on koneen alkutila; qyes Q on koneen hyväksyvä ja qno Q sen hylkäävä lopputila. Siirtymäfunktion arvoilta vaaditaan: (i) jos b = >, niin a = >; (ii) jos a = >, niin b = > ja = R; (iii) jos b = <, niin a = < ja = L. δ(q, a) = (q, b, ) 6

8 Siirtymäfunktion arvon δ(q, a) = (q, b, ) tulkinta: Ollessaan tilassa q ja lukiessaan nauhamerkin (tai alku- tai loppumerkin) a, kone siirtyy tilaan q, kirjoittaa lukemaansa paikkaan merkin b, ja siirtää nauhapäätä yhden merkkipaikan verran suuntaan (L left, R right). Sallittuja kirjoitettavia merkkejä ja siirtosuuntia on rajoitettu, mikäli a = `>' tai `<', ja siirtymäfunktion arvo on aina määrittelemätön, kun q = qyes tai q = qno. Joutuessaan jompaan kumpaan näistä tiloista kone pysähtyy heti. Huom! Hyväksymiseen riittää, että pääsemme hyväksyvään lopputilaan, koko merkkijonoa ei välttämättä tarvitse edes lukea! Nauhalle saa luonnollisestikin jäädä merkkejä Turingin koneen esitys siirtymäkaaviona Turingin kone voidaa esittää antamalla sen siirtymäfunktio tai havainnollisemmin siirtymäkaaviona. q Tila q q 0 Alkutila Hyväksyvä lopputila (qyes) Hylkäävä lopputila (qno) a/b, q q Tilasiirtymä δ(q, a) = (q, b, ) Kuva 4: Turingin koneiden kaavioesityksen merkinnät. Esimerkki: Merkitään a n :llä merkkijonoa, jossa on n kappaletta a-kirjaimia, esim. a 3 = aaa. Kieli {a 2k k 0} voidaan tunnistaa Turingin koneella M = ({q 0, q 1, qyes, qno}, {a}, {a}, δ, q 0, qyes, qno), 7

9 missä δ(q 0, a) = (q 1, a, R), δ(q 1, a) = (q 0, a, R), δ(q 0, <) = (qyes, <, L), δ(q 1, <) = (qno, <, L). a/a, R q 0 q 1 </<, L a/a, R </<, L Kuva 5: Kielen {a 2k k 0} tunnistava Turingin kone. Koneen M laskenta esimerkiksi syötteellä aaa etenee seuraavasti: (q 0, aaa) M (q 1, aaa) (q 0, aaa) M M (q 1, aaaɛ) M (qno, aaa). Kone pysähtyy tilassa qno, joten aaa / L(M). (Yllä merkki ilmaisee koneen nykytilanteen seuraajaa ts. missä tilassa kone on, M mitä on työnauhalla ja mihin nauhapää osoittaa sillä hetkellä.) Esimerkki 2: Kielen {a k b k c k k 0} tunnistavan koneen laskenta syötteellä aabbcc: (q 0, aabbcc) (q 2, AABBCc) (q 1, Aabbcc) (q 2, AABBCc) (q 1, Aabbcc) (q 3, AABBCC) (q 2, AaBbcc) (q 3, AABBCC) (q 2, AaBbcc) (q 3, AABBCC) (q 3, AaBbCc) (q 3, AABBCC) (q 3, AaBbCc) (q 4, AABBCC) (q 3, AaBbCc) (q 5, AABBCC) (q 3, AaBbCc) (q 5, AABBCC) (q 4, AaBbCc) (q 5, AABBCC) (q 1, AABbCc) (q 5, AABBCCɛ) (q 1, AABbCc) (qyes, AABBCC). 8

10 A L A N M A T H I S O N T U R I N G q 1 q 2 q 0 δ Kuva 6: Kolmenauhainen Turingin kone. 2.3 Turingin koneiden laajennuksia Turingin koneista on olemassa monia erilaisia variaatioita. Koneen työnauha voi esimerkiksi olla kumpaankin suuntaan ääretön tai sallitaan, että koneen nauhapää saa pysyä paikallaan. Seuraavaksi esitellään kolme hyödyllistä variaatiota: moninauhaiset koneet, joilla on useita toisistaan riippumattomia työnauhoja, moniuraiset koneet, joiden työnauha koostuu useasta rinnakkaisesta urasta, sekä tärkeimpänä kaikista, epädeterministiset Turingin koneet. Huom! Mikä tahansa näistä variaatioista voidaan esittää standardimallisena Turingin koneena. Moninauhaiset koneet Sallitaan, että Turingin koneella on useita, esim. k toisistaan riippumatonta nauhaa, joilla on kullakin oma nauhapäänsä. Kone lukee ja kirjoittaa kaikki nauhat yhdessä laskenta-askelessa. Laskennan aluksi syöte sijoitetaan ykkösnauhan vasempaan laitaan ja kaikki nauhapäät nauhojensa alkuun. Tällaisen koneen siirtymäfunktion arvot ovat muotoa δ(q, a 1,..., a k ) = (q, (b 1, 1 ),..., (b k, k )), 9

11 missä a 1,..., a k ovat nauhoilta 1,..., k luetut merkit, b 1,..., b k niiden tilalle kirjoitettavat merkit, ja 1,..., k {L, R} nauhapäiden siirtosuunnat. Merkitys: usein helpompi ratkaista ongelma moninauhaisella koneella esim. yhteenlaskussa a+b = c kirjoitetaan eka nauhalle luvun a binääriesitys, toka nauhalle luvun b binääriesitys y ja lasketaan kolmannelle nauhalle vastauksen c binääriesitys z. Ja mikäli ongelma kyetään ratkaisemaan monen nauhan avulla, se kyetään ratkaisemaan myös yksinauhaisella standardikoneella. Moniuraiset koneet A M T L A U A T R N H I # I N # S G # # O N # # nauhapää: Kuva 7: Kolmeuraisen Turingin koneen nauha. Sallitaan, että Turingin koneen nauha koostuu k:sta rinnakkaisesta urasta, jotka kaikki kone lukee ja kirjoittaa yhdessä laskenta-askelessa. Koneen siirtymäfunktion arvot ovat tällöin muotoa: δ(q, (a 1,..., a k )) = (q, (b 1,..., b k ), ), missä a 1,..., a k ovat urilta 1,..., k luetut merkit, b 1,..., b k niiden tilalle kirjoitettavat merkit, ja {L, R} on nauhapään siirtosuunta. Laskennan aluksi tutkittava syöte sijoitetaan ykkösuran vasempaan laitaan; muille urille tulee sen kohdalle erityisiä tyhjämerkkejä, esim. #. Merkitys: moninauhainen kone voidaan muuntaa yksinauhaiseksi muuntamalla se ensin vastaavaksi moniurakoneeksi ja sitten yksiuraiseksi standardikoneeksi. Epädeterministiset koneet tavalliset Turingin koneet ovat deterministisiä ts. koneen toiminta on yksikäsitteisesti määrättyä: kun tunnetaan nauhapään kohdalla oleva merkki ja koneen senhetkinen tila, määrää siirtymäfunktio yksikäsitteisesti nauhapään kohdalle kirjoitettavan merkin ja seuraavan tilan. 10

12 Epädeterministisen Turingin koneen toiminta on epädeterministä ts. se ei ole yksikäsitteisesti määriteltyä: kun tunnetaan nauhapään kohdalla oleva merkki ja senhetkinen tila, voi koneella olla useita vaihtoehtoja, mitä kirjoittaa nauhapään kohdalle ja mihin tilaan siirtyä seuraavaksi. Siirtymäfunktio on siis muotoa δ(q, a) = {(q 1, b 1, 1 ),..., (q k, b k, k )} Ts. ollessaan tilassa q ja lukiessaan merkin a kone voi toimia jonkin kolmikon (q i, b i, i ) mukaisesti. Syötemerkkijon hyväksymiseksi riittää siis, että jokin koneen laskentapolku johtaa hyväksyvään lopputilaan. Merkitys: usein helpompi keksiä epädeterministinen kone, joka arvaa kulloinkin parhaan toiminta-askeleen. Mikäli halutaan vain tutkia ongelman vaikeutta, tämä riittää, sillä mikä tahansa epädeterministinen kone voidaan esittää deterministisenä! (aina voidaan simuloida deterministisellä koneella kaikkia mahdollisia laskentapolkuja.) Esim. Epädeterministinen kone, joka tutkii, sisältääkö annettu merkkijono osajonon 100: 0/0,R 1/1,R 1/1,R 0/0,R 0/0,R </<,L </<,L 1/1,R </<,L 1/1,R Saman ongelman ratkaiseva deterministinen kone: Huom! Epädeterministiset koneet ovat tärkeitä myös määritettäessä ongelman epädeterministisiä vaativuusluokkia ja erityisesti ongelman NP-täydellisyyttä. 11

13 0/0,R 1/1,R 1/1,R 0/0,R 0/0,R </<,L </<,L 1/1,R </<,L 2.4 Loppusanat Turingin koneet joskus turhan monimutkainen laskennanmalli jotkut ongelmat ratkeavat helpommilla laskennamalleilla kuten äärellisillä automaateilla tai pinoautomaateilla kaikki ongelmat eivät ole ratkeavia ongelma on ratkeava vain jos sille voidaan laatia aina pysähtyvä Turingin kone! ongelma on osittain ratkeava, jos vastaava Turingin kone pysähtyy vain joskus (tunnistuskone pysähtyy vain Kyllä-tapauksissa tai tavallinen kone laskee funktion arvon vain joskus muulloin se jää ikuisesti laskemaan). Huom! Osittain ratkeavakin ongelma on ratkeamaton! ongelma on täysin ratkeamaton, jos vastaava kone ei pysähdy koskaan! ratkeamattomuuden todistamiseksi osoitettava, ettei ongelmalle voi laatia pysähtyvää Turingin konetta (osoitetaan antiteesillä, että olettamus tällaisesta koneesta johtaa ristiriitaan) Turingin koneilla voidaan arvioida ongelman vaativuusluokka vaatiiko kone syötteen pituuteen nähden lineaarisen, polynomisen, eksponentiaalisen määrän aika-askelia (siirtymiä) tai työnauhan soluja vai vieläkin enemmän? Vai ratkeaako ongelma aina vakioajassa? sama vaativuusluokka pätee myös muilla laskennanmalleilla laadituille ratkaisuille sen parempaan ei pysty edes konekielellä, vaikka operaatioita kuinka tehostaisi (= ns. vahva Churchin-Turingin teesi) 12

14 3 Laskennan vaativuusteoria Tietojenkäsittelytieteilijälle ei riitä tieto, onko ongelma ratkeava, vaan hän haluaa myös tietää, kuinka vaativa se on, ts. kuinka nopeasti se voidaan ratkaista ja kuinka paljon muistikapasiteettia ratkaiseminen vaatii. Laskennavaativuusteoria tarkastelee näitä kysymyksiä. Abstraktit laskennamallit kuten Turingin koneet tarjoavat objektiivisen tavan arvioida ja vertailla ongelmien vaativuutta, ennen kuin ongelmaan on laadittu ratkaisua millään ohjelmointikielellä. Ideana on muodostaa ongelman ratkaiseva Turingin kone ja tutkia sen käyttämien aika-askelien ja työnauhan solujen lukumääriä. Luonnollisestikin saman ongelman voi ratkaista usealla erilaisella Turingin koneella, joten parhain löydetty Turingin kone antaa yleensä vain ylärajan ongelman vaativuudelle. Ongelmanvaativuusluokkia määriteltäessä tämä on kuitenkin riittävä lähtökohta: mikäli ongelma voidaan ratkaista polynomisessa ajassa toimivalla deterministisellä Turingin koneella, on se myös käytännössä tehokkaasti ratkaistavissa. Jos ongelman ratkaisu edellyttää vaativampaa konetta tai ratkeaa polynomisessa ajassa vain epädeterministisellä Turingin koneella, saattaa sen ratkaisu olla käytännössä liian tehotonta. Ns. NP-täydelliset ongelmat ovat eräs tällainen vaativien ongelmien luokka, johon kuuluu monia käytännössä tärkeitä ongelmia, mutta joille ei tunneta tehokkaita ratkaisualgoritmeja. 3.1 Aika- ja tilavaativuus Turingin koneen aika- ja tilavaativuus Koneen M aika- ja tilavaativuus syötteellä : time M () = koneen M suorittamien siirtymäaskelien lukumäärä syötteellä, jos laskenta pysähtyy, ja, muuten. space M () = koneen M käyttämien työnauhan solujen lukumäärä syötteellä. Tavallisesti kuvaamme koneen aika- ja tilavaativuuden määrittelemällä, kuinka monta askelta tai työnauhan solua kone M tarvitsee pahimmassa tapauksessa n:n pituisella syötteellä. Määrittelemme siis aika- ja tilavaativuuden n:n funktioina time M (n) ja space M (n). 13

15 Esimerkki a/a, R q 0 q 1 </<, L a/a, R </<, L Kuva 8: Kielen {a 2k k 0} tunnistava Turingin kone. Tarkastellaan oheisen koneen (kuva 8) käyttämien askelten ja työnauhan solujen lukumääriä syötteillä a, aa, aaa,... Huomaa, että syötejonon loppussa on aina lopetusmerkki <. syöte syötteen pituus askeleet solujen lkm a aa aaa aa...a n n + 1 n Toisin sanoen time M (n) = n + 1 ja space M (n) = n. Koneen aikavaativuus on siis lineaarinen syötteen koon suhteen ja se tarvitsee työtilaa vain syötteen pituuden verran Aika- ja tilavaativuusluokat Tarkan aika- tai tilavaativuusfunktion sijasta meitä kiinnostaa, onko vaativuusfunktio polynominen vai eksponentiaalinen vai vieläkin pahempi. Polynominen aikavaativuus: time M (n) = O(n k ) jollain k 0 ts. aikavaativuusluokka on korkeintaan syötteen pituuden n polynomi. 14

16 Eksponentiaalinen aikavaativuus: time M (n) = O(2 nk ) jollain k 0 ts. aikavaativuusluokka on korkeintaan syötteen pituuden n eksponenttifunktio. Tilavaativuudet määritellään vastaavasti. Nyt ongelmat voidaan jakaa vaativuusluokkiin ratkaisukoneen aika- ja tilavaativuuden (polynominen vai eksponentiaalinen) perusteella. Koska epädeterministinen Turingin kone kykenee ratkaisemaan ongelman huomattavasti tehokkaammin kuin deterministinen kone, määritellemme erikseen deterministiset ja epädeterministiset vaativuusluokat. Deterministiset aika- ja tilavaativuusluokat: P = polynomisessa ajassa deterministisellä TM:llä ratkeavat ongelmat P SP ACE = polynomisessa tilassa deterministisellä TM:llä ratkeavat ongelmat E = eksponentiaalisessa ajassa deterministisellä TM:llä ratkeavat ongelmat ESP ACE = eksponentiaalisessa tilassa deterministisellä TM:llä ratkeavat ongelmat Epädeterministiset aika- ja tilavaativuusluokat: N P = polynomisessa ajassa epädeterministisellä TM:llä ratkeavat ongelmat NP SP ACE = polynomisessa tilassa epädeterministisellä TM:llä ratkeavat ongelmat N E = eksponentiaalisessa ajassa epädeterministisellä TM:llä ratkeavat ongelmat N ESP ACE = eksponentiaalisessa tilassa epädeterministisellä TM:llä ratkeavat ongelmat Vaativuusluokat voidaan pistää lineaariseen järjestykseen: P NP NPSPACE = PSPACE E NE NESPACE = ESPACE. 15

17 ESPACE NE E PSPACE NP P Kuva 9: Vaativuusluokkien sisältyvyyssuhteet. Huom! Tiedämme, että P E, NP NE, PSPACE ESPACE. Sen sijaan ei tiedetä, onko P NP, NP PSPACE, PSPACE E jne. Erityisesti ongelma P = NP? on ehkä tärkein avoin tietojenkäsittelytieteen ongelma. 3.2 N P-täydellisyys Luokan NP ongelmat Luokkaan N P kuuluvat siis ongelmat, jotka voidaan ratkaista polynomisessa ajassa epädeterministisellä Turingin koneella, mutta joille ei tunneta polynomista ratkaisua deterministisellä Turingin koneella. Tämä merkitsee sitä, että ongelman ratkaisevan ohjelman aikavaativuus on pahimmassa tapauksessa eksponentiaalinen. Suurilla syötteillä ongelmaa ei siis kyetä ratkaisemaan järkevässä ajassa. Kaiken lisäksi tähän luokkaan kuuluu paljon käytännössä tärkeitä ongelmia, esimerkiksi 1. Lausekalkyylin toteutuvuusongelma: Annettu muuttujista 1,..., n, vakioista 0 ja 1 sekä loogisista konnektiiveista (ja), (tai) ja (ei) koostuva lausekalkyylin kaava F. Onko F toteutuva, ts. voidaanko muuttujille antaa totuusarvot siten, että F on tosi? 2. Hamiltonin kehä -ongelma: Annettu suuntaamaton verkko G. Sisältääkö G Hamiltonin kehän ts. syklin (suljetun polun), joka kulkee kaikkien verkon 16

18 solmujen kautta täsmälleen kerran? 3. Kauppamatkustajan ongelma: Annettu täydellinen suuntaamaton painotettu verkko G (ts. kartta, jossa jokaisesta kaupungista pääsee jokaiseen muuhun kaupunkiin, ja kunkin kaaren paino kertoo kaupunkien välisen etäisyyden) ja jokin luonnollinen luku k. Onko verkossa Hamiltonin kehää, jonka paino on korkeintaan k? (Tai optimointiongelmana: etsi lyhin reitti, joka kulkee jokaisen solmun kautta kertaalleen ja palaa takaisin lähtöpisteeseen.) 4. Repun pakkausongelma: Annettu n esinettä, joista kullakin on paino w i ja arvo v i (kumpikin positiivisia kokonaislukuja). Lisäksi on annettu kaksi luonnollista lukua, repun koko W ja jokin vakio K. Valitse sellainen esinejoukko S, että esineiden kokonaispaino on korkeintaan W, mutta kokonaisarvo vähintään K. Ts. Σ i S w i W ja Σ i S v i K. (Optimointiongelmana: valitse sellaiset esineet, että ne mahtuvat reppuun, mutta niiden arvo on mahdollisimman suuri.) N P-täydellisyys Luokasta N P löytyy joukko ongelmia, jotka ovat siinä mielessä täydellisiä, että kaikki muut luokan N P ongelmat voidaan palauttaa niiksi polynomisella muunnoksella, ts. muunnoksella, joka vaatii korkeintaan polynomisen ajan. Tällaisia ongelmia kutsutaan NP-täydellisiksi (NP-complete). Esimerkiksi jos X on N P-täydellinen ja Y jokin muu luokan N P ongelma, voimme ensin muuntaa Y :n X:ksi ja ratkaista sitten X:n. Y :n aikavaativuusluokka (NP) ei silti muutu, sillä muunnos vaati vain polynomisen ajan. Tämä merkitsee sitä, että jos voisimme ratkaista yhdenkin N P-täydellisen ongelman polynomisessa ajassa deterministisellä Turingin koneella, voisimme ratkaista kaikki muutkin luokan N P ongelmat polynomisesti deterministisellä Turingin koneella, ja luokka N P olisikin P! Toistaiseksi kukaan ei kuitenkaan ole pystynyt keksimään tällaista ratkaisua, mutta ei myöskään osoittamaan, että se olisi teoriassa mahdotonta. Voimme osoittaa, että uusi ongelma A on N P-täydellinen seuraavasti: 1. Osoitetaan, että A kuuluu luokkaan N P, ts. muodostetaan epädeterministinen Turingin kone, joka ratkaisee A:n polynomisessa ajassa. 17

19 1) NP SAT 2) 3) NP B A NP B A Kuva 10: N P-täydellisyystodistusten idea. Luokan N P ongelmien välisiä polynomisia muunnoksia on merkitty nuolilla. 1) Cook on osoittanut, että SAT-ongelma on N P-täydellinen. 2) Olkoon B N P-täydellinen ongelma ja B voidaan muuntaa polynomisesti A:ksi. 3) Nyt myös A on N P-täydellinen ongelma. 2. Muunnetaan jokin tunnettu N P-täydellinen ongelma B A:ksi polynomisella muunnoksella. Periaatteessa voimme valita minkä tahansa tunnetun NPtäydellisen ongelman, mutta kannattaa valita sellainen, joka muistuttaa uutta ongelmaa A. Uusia N P-täydellisiä ongelmia on siis helppo löytää, kunhan tunnemme ainakin yhden NP-täydellisen ongelman. Ainut ongelma on, miten todistaa jollain muulla tavalla, että ensimmäinen ongelma on NP-täydellinen. Onneksi Cook on hoitanut todistuksen puolestamme: hän on osoittanut, että lausekalkyylin toteutuvuusongelma SAT on N P-täydellinen, ja voimme nojata tähän tulokseen Loppusanat Joskus puhumme myös N P-kovista (NP-hard) ongelmista. N P-kovat ongelmat muistuttavat N P-täydellisiä ongelmia siinä, että mikä tahansa luokan N P ongelma voidaan muuntaa polynomisessa ajassa N P-kovaksi ongelmaksi. Sen sijaan emme tiedä, kuuluuko ongelma itse luokkaan N P (se on siis niin kova ongelma, ettei kukaan ole keksinyt edes epädeterminististä polynomisessa ajassa toimivaa Turingin konetta, joka ratkaisisi ongelman). Mikäli joku ongelma havaitaan N P-kovaksi, voi suurella todennäköisyydellä arvata sen olevan eksponentiaalista tai vieläkin pahempaa aikavaativuusluokkaa. Toinen tärkeä kysymys on, mitä teemme jos ja kun törmäämme N P-täydelliseen ongelmaan? Hyvin pienillä syötteillä voimme käyttää kylmästi brute force -menetelmää ja kokeilla kaikki mahdolliset vaihtoehdot. Tämän aikavaativuus on eksponentiaalinen, joten se toimii todellakin vain hyvin pienillä syötteillä. Suuremmilla syötteillä 18

20 meidän on turvauduttava jonkinlaisiin heuristiikkoihin, joiden avulla voidaan rajata hakuavaruutta. Valitettavasti tällaiset oikopolut eivät kuitenkaan takaa optimaalista lopputulosta, mutta toivon mukaan kuitenkin melko hyvän tuloksen. Esimerkiksi soveltaessamme ahnetta heuristiikkaa repunpakkausongelmaan, valitsemme seuraavaksi aina sen esineen, jonka arvo-paino-suhde on paras (ts. suurin arvo suhteessa painoon). Selvästikin saamme repun pakattua paremmin kuin täysin satunnaisella pakkauksella, mutta on hyvin epätodennäköistä, että lopputulos olisi paras mahdollinen. Helppoa (ja hauskaa) oheislukemistoa Hamburger, Henry & Richards, Dana: Logic and Language Models for Computer Science. Prentice Hall Kinber, Em & Smith, Carl: Theory of Computing. A Gentle Introduction. Prentice Hall Hofstadter, Douglas R.: Gödel, Esser, Bach: An Eternal Golden Braid. Vintage Books, New York,

Kaikki mitä olet aina halunnut tietää pumppauslemmoista, mutta mitä et ole kehdannut kysyä

Kaikki mitä olet aina halunnut tietää pumppauslemmoista, mutta mitä et ole kehdannut kysyä Kaikki mitä olet aina halunnut tietää pumppauslemmoista, mutta mitä et ole kehdannut kysyä Tommi Syrjänen 1 Yleistä pumppauslemmoista Pumppauslemmalla voidaan todistaa, että kieli ei kuulu johonkin kieliluokkaan.

Lisätiedot

Kreikkalainen historioitsija Herodotos kertoo, että Niilin tulvien hävittämät peltojen rajat loivat maanmittareiden

Kreikkalainen historioitsija Herodotos kertoo, että Niilin tulvien hävittämät peltojen rajat loivat maanmittareiden MAB2: Geometrian lähtökohdat 2 Aluksi Aloitetaan lyhyellä katsauksella geometrian historiaan. Jatketaan sen jälkeen kuvailemalla geometrian atomeja, jotka ovat piste ja kulma. Johdetaan näistä lähtien

Lisätiedot

DISKREETTI MATEMATIIKKA

DISKREETTI MATEMATIIKKA DISKREETTI MATEMATIIKKA 1 2 DISKREETTI MATEMATIIKKA Sisällysluettelo 1. Relaatio ja funktio 3 1.1. Karteesinen tulo 3 1.2. Relaatio ja funktio 3 2. Kombinatoriikkaa 8 2.1. Tulo- ja summaperiaate 9 2.2.

Lisätiedot

Karttojen värittäminen

Karttojen värittäminen Karttojen värittäminen Neliväriongelman värityskombinaatioiden lukumäärän etsiminen graafien avulla Eero Räty & Samuli Thomasson Valkeakosken Tietotien lukio / Päivölän Kansanopisto Tieteenala: Matematiikka

Lisätiedot

Tieto tietojenkäsittelytieteessä

Tieto tietojenkäsittelytieteessä Tieto tietojenkäsittelytieteessä Jesse Hauninen 14.4.2008 Joensuun yliopisto Tietojenkäsittelytieteen ja tilastotieteen laitos Pro gradu -tutkielma Tiivistelmä Tiedosta kuulee puhuttavan jatkuvasti. Yhteiskunnan

Lisätiedot

Tieto, totuus, tiede (2004)

Tieto, totuus, tiede (2004) 1 Tieto, totuus, tiede (2004) Keskustelijat: Eero Byckling Viljo Martikainen Heikki Mäntylä Jyrki Rossi Jyrki Tyrkkö 2.1.2004 Heikki Mäntylä Hyvät Luonnonfilosofit, Joululoman jälkeen on syytä palata taas

Lisätiedot

Y100 kurssimateriaali

Y100 kurssimateriaali Y kurssimateriaali Syksy Jokke Häsä ja Jaakko Kortesharju Sisältö Johdanto 4 Reaaliarvoiset funktiot 5. Funktio.................................... 5. Yhdistetty funktio.............................. 7.3

Lisätiedot

Eero Ojanen. Hyvä päätös? polemia KAKS KUNNALLISALAN KEHITTÄMISSÄÄTIÖ

Eero Ojanen. Hyvä päätös? polemia KAKS KUNNALLISALAN KEHITTÄMISSÄÄTIÖ polemia Eero Ojanen Hyvä päätös? KAKS KUNNALLISALAN KEHITTÄMISSÄÄTIÖ Hyvä päätös? Eero Ojanen Hyvä päätös? Filosofisia näkökulmia päätöksentekoon kaks kunnallisalan kehittämissäätiö HYVÄ PÄÄTÖS? Kieliasun

Lisätiedot

Elä sitä, mitä jo olet!

Elä sitä, mitä jo olet! ! Co-Creating meaningful futures. Mikko Paloranta mikko.paloranta@mirrorlearning.com 040 585 0022 Elä sitä, mitä jo olet!... 1 1.1. Lukijalle... 4 2. Luomme oman todellisuutemme... 5 2.1. Minä ja todellisuuteni...

Lisätiedot

Kirjallisuuden vaihto hankintatapana

Kirjallisuuden vaihto hankintatapana Tieteellisen kirjallisuuden vaihtokeskus - Georg Strien Kirjallisuuden vaihto hankintatapana Tieteellisen kirjallisuuden vaihdolla on pitkä perinne, vanhimmat viitteet löytyvät vuodesta 1694 Ranskasta.

Lisätiedot

Johdatus matemaattiseen päättelyyn

Johdatus matemaattiseen päättelyyn Johdatus matemaattiseen päättelyyn Oulun yliopisto Matemaattisten tieteiden laitos 2011 Maarit Järvenpää 1 Todistamisesta Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta.

Lisätiedot

1.Kuvauksen lähtöaineisto

1.Kuvauksen lähtöaineisto 1.Kuvauksen lähtöaineisto 1 Tieteen tehtävänä on uuden tiedon hankkiminen. Käyttäytymistieteet tutkivat elollisten olioiden käyttäytymistä voidakseen ymmärtää sitä tai ainakin löytääkseen siitä säännönmukaisuuksia;

Lisätiedot

Lukiotason matematiikan tietosanakirja

Lukiotason matematiikan tietosanakirja niinkuin matematiikka Simo K. Kivelä Lukiotason matematiikan tietosanakirja Versio 1.12 / 10.08.2000 Simo K. Kivelä Riikka Nurmiainen TKK 1998 2005 Taustat 1/1 Lukiotason matematiikan tietosanakirja M

Lisätiedot

Itseindeksit Kun tiivistetty teksti ja sen indeksi ovatkin sama asia

Itseindeksit Kun tiivistetty teksti ja sen indeksi ovatkin sama asia Tietojenkäsittelytiede 25 Joulukuu 2006 sivut 28 37 Toimittaja: Jorma Tarhio c kirjoittaja(t) Itseindeksit Kun tiivistetty teksti ja sen indeksi ovatkin sama asia Veli Mäkinen Helsingin yliopisto Tietojenkäsittelytieteen

Lisätiedot

1.1 Tavallinen binäärihakupuu

1.1 Tavallinen binäärihakupuu TIE-20100 Tietorakenteet ja algoritmit 1 1 Puurakenteet http://imgur.com/l77fy5x Tässä luvussa käsitellään erilaisia yleisiä puurakenteita. ensin käsitellään tavallinen binäärihakupuu sitten tutustutaan

Lisätiedot

Luova ympäristö lasten omaaloitteisen

Luova ympäristö lasten omaaloitteisen Luova ympäristö lasten omaaloitteisen toiminnan tukemiseksi (Miten käytimme TRIZ:a lasten TV-pelin suunnittelutyössä?) Kirjailija Karl Rautio Creavit Media Osk (Suomi) 2013 Opetusaineisto on valmistunut

Lisätiedot

1.1 Yhtälön sieventäminen

1.1 Yhtälön sieventäminen 1.1 Yhtälön sieventäminen Lausekkeeksi voidaan kutsua jokaista merkittyä laskutoimitusta. Sellaisia matema-tiikan tehtäviä on vähän, joita suorittaessaan ei joutuisi sieventämään lausekkeita, millä tarkoitetaan

Lisätiedot

2. Polynomien jakamisesta tekijöihin

2. Polynomien jakamisesta tekijöihin Imaginaariluvut mielikuvitustako Koska yhtälön x 2 x 1=0 diskriminantti on negatiivinen, ei yhtälöllä ole reaalilukuratkaisua Tästä taas seuraa, että yhtälöä vastaava paraabeli y=x 2 x 1 ei leikkaa y-akselia

Lisätiedot

Markkinoiden toimivuudesta 1

Markkinoiden toimivuudesta 1 Kansantaloudellinen aikakauskirja 97. vsk. 1/2001 Markkinoiden toimivuudesta 1 KATSAUKSIA JA KESKUSTELUA Klaus Kultti Professori Helsingin kauppakorkeakoulu 1 Virkaanastujaisesitelmä Helsingin yliopistossa

Lisätiedot

WORD- ja EXCEL-opas Office 2010

WORD- ja EXCEL-opas Office 2010 Aalto Yliopiston Teknillinen Korkeakoulu Kemian ja materiaalitieteiden tiedekunta Kemian laitos Fysikaalisen kemian ja sähkökemian tutkimusryhmä WORD- ja EXCEL-opas Office 2010 Annukka Aarnio asantasa@cc.hut.fi

Lisätiedot

Shakin säännöt. Luku 1

Shakin säännöt. Luku 1 Sisältö 1 Shakin säännöt 1 1.1 Nappuloiden liikkeet.............................. 4 Torni................................... 4 Lähetti.................................. 4 Kuningatar...............................

Lisätiedot

Miten nostaa yläasteen oppilaitten kiinnostusta matematiikan sanallisia tehtäviä kohtaan? Esimerkkejä, neuvoja, analyysi

Miten nostaa yläasteen oppilaitten kiinnostusta matematiikan sanallisia tehtäviä kohtaan? Esimerkkejä, neuvoja, analyysi Solmu 1/2008 1 Miten nostaa yläasteen oppilaitten kiinnostusta matematiikan sanallisia tehtäviä kohtaan? Esimerkkejä, neuvoja, analyysi Pavel Shmakov MAFYKE-lehtori, Käpylän peruskoulu, Helsinki shpavel@luukku.com

Lisätiedot

Jarkko Peltomäki. Järjestetyt joukot ja hilat

Jarkko Peltomäki. Järjestetyt joukot ja hilat Jarkko Peltomäki Järjestetyt joukot ja hilat Luonnontieteiden kandidaatin tutkielma Turun yliopisto Syyskuu 2010 Sisältö 1 Johdanto 2 2 Järjestetty joukko 3 2.1 Määritelmiä ja perusominaisuuksia...............

Lisätiedot

Käsikirja Mathcad 15.0 Lokakuu 2010

Käsikirja Mathcad 15.0 Lokakuu 2010 Käsikirja Käsikirja Mathcad 15.0 Lokakuu 2010 Copyright 2010 Parametric Technology Corporation. Parametric Technology Corporation omistaa sekä tämän ohjelman että siihen kuuluvan dokumentaation tekijänoikeudet.

Lisätiedot

Palloja voi pyörittää kevyellä liikkeellä normaaliasennosta (harmaa) vaakatasossa niin, että numerot tulevat

Palloja voi pyörittää kevyellä liikkeellä normaaliasennosta (harmaa) vaakatasossa niin, että numerot tulevat PELIOHJE 1 (14) Pelaajat: 2-4 pelaajaa Ikäsuositus: 6+ SISÄLTÖ / PELIVÄLINEET 1 kääntyvä satataulu 100 lukukorttia (sis. luvut 1-100) 6 jokerikorttia 2 noppaa (sis.luvut 1-10) 30 pelimerkkiä PELI OPETTAA

Lisätiedot

Pohjoismaisten matematiikkakilpailujen tehtävät ja ratkaisut 1995 2015

Pohjoismaisten matematiikkakilpailujen tehtävät ja ratkaisut 1995 2015 Pohjoismaisten matematiikkakilpailujen tehtävät ja ratkaisut 995 05 Tehtävät 9. Pohjoismainen matematiikkakilpailu, 5.3.995 995.. Olkoon AB O-keskisen ympyrän halkaisija. Valitaan ympyrän kehältä pistec

Lisätiedot

$ $($( )) * + $ $((,%- # $((,%- $ ($(. +/ $ (( 0 $ (( 0 1 $

$ $($( )) * + $ $((,%- # $((,%- $ ($(. +/ $ (( 0 $ (( 0 1 $ "# %%&% ' (( )) * + ((,%- # ((,%- ((. +/ (( 0 (( 0 1 ((, # ( (, ' ( ( 2)'/) ( ( / (#( &30 (#( +))'+) (#( +))'+) " (#( 0 (#( &30 4 ("( &30 # ("( +)/) # ("( 5 * " ("( 6* # ("( 7 ) # (( ' #4 (( 2 #4 (( &30

Lisätiedot

Teknologian käyttö matematiikan oppitunnilla yläkoulussa ja lukiossa. Senja Roivas

Teknologian käyttö matematiikan oppitunnilla yläkoulussa ja lukiossa. Senja Roivas Teknologian käyttö matematiikan oppitunnilla yläkoulussa ja lukiossa Senja Roivas Pro gradu -tutkielma Itä-Suomen yliopisto Luonnontieteiden ja metsätieteiden tiedekunta Fysiikan ja matematiikan laitos

Lisätiedot

sanalli Matematiikan sanalliset tehtävät TEHTÄVÄN YMMÄRRYS Toim. Teija Laine, Turun Matikkamaa

sanalli Matematiikan sanalliset tehtävät TEHTÄVÄN YMMÄRRYS Toim. Teija Laine, Turun Matikkamaa sanalli Matematiikan sanalliset tehtävät TEHTÄVÄN YMMÄRRYS 1 LUKIJALLE Matematiikan oppimisen voima on siinä, että osaa käyttää matematiikkaa hyödykseen. (Riley, Greeno ja Heller1983, 159) Eripuolilta

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot