3. Laskennan vaativuusteoriaa tähän asti puhuttu siitä, mitä on mahdollista laskea äärellisessä ajassa siirrytään tarkastelemaan laskemista kohtuullisessa ajassa vaihtoehtoisesti voidaan laskenta-ajan sijaan tarkastella tarvittavan työmuistin määrää yleisesti ottaen teoreettiset tarkastelut muuttuvat teknisesti vaativammiksi tulosten intuitiivisen tulkinnan kanssa syytä olla varovainen (mikä annetussa sovelluksessa on kohtuullista ; kuinka yleinen ongelma oikeasti halutaan ratkaista jne.) 151
Tarkastellaan standardimallisen (yksinauhaisen, deterministisen) Turingin koneen M syötteellä x alkutilanteesta q 0 x alkavaa laskentaa q 0 x M v 1 q 1 w 1 M... M v n q n w n M... laskenta pysähtyy jos jollain k tilanteesta v k q k w k ei ole siirtymää; tällöin laskennan pituus on k mitä merkitään time M (x) = k. jos laskenta ei pysähdy, merkitään time M (x) = vastaavasti määritellään space M (x) = max { v k + w k k = 1, 2, 3,... } time M : Σ N { } ja space M : Σ N { } ovat koneen M aika- ja tilavaativuusfunktio 152
Intuitiivinen vastaavuus tietokoneohjelmiin aikavaativuus: kuinka monta konekielikäskyä ajon aikana suoritetaan tilavaativuus: kuinka monta tavua muistia ajon aikana varataan Liian yksityiskohtaisia mittareita ollakseen hyödyllisiä: vaikea saada selville tarkasti vaikka tunnettaisiin tarkasti, lausekkeet tyypillisesti liian monimutkaisia ollakseen valaisevia saman ongelman ratkaisujen M ja N vertaileminen vaikeaa, koska yleensä aina joillain x, y on time M (x) < time N (x) ja time M (y) > time N (y) Tämän takia tarkastellaan pahimman tapauksen aika- ja tila vaativuutta tarkastellaan vaativuusfunktioita kertaluokan tarkkuudella 153
Pahimman tapauksen aika- ja tilavaativuus Kun n N, määritellään time M (n) = max { time M (x) x = n } space M (n) = max { space M (x) x = n } yleensä kuvaa kohtuullisesti toimintaa realistisilla syötteillä (varmasti paremmin kuin parhaan tapauksen vaativuus) Voidaan tarkastella myös keskimääräistä tapausta, esim. time avg M (n) = p n (x)time M (x) x Σ n missä p n, n N, on jokin todennäköisyysjakauma joukossa Σ n. yleensä vaikea analysoida edes helpoilla p n helpot p n usein epärealistisia usein vaikea edes tietää millainen p n olisi realistinen 154
Funtioden kertaluokat Olkoon f, g: N R + funktioita. f on kertaluokkaa O(g), merk. f = O(g), jos joillain c > 0, m N pätee f(n) cg(n) aina kun n m f on samaa kertaluokkaa kuin b, merk. f = Θ(g), jos joillain a, b > 0, m N pätee ag(n) f(n) bg(n) aina kun n m f on alempaa kertaluokkaa kuin g, merk. f = o(g), jos kaikilla c N on olemassa m N jolle f(n) < cg(n) aina kun n m g on alaraja funktiolle f, merk. f = Ω(g), jos jollain c > 0 pätee f(n) cg(n) äärettömän monella n 155
Motivaatio: miksi vaativuusfunktioiden kertaluokkia rajataan tarkastelusta pois pienillä syötteillä mahdollisesti esiintyvät epäsäännöllisyydet ei välitetä vakiokertoimista (cf(n) samaa suuruusluokkaa kuin f(n) kaikilla c > 0) koska ne kuitenkin täysin riippuvat mallin yksityiskohdista (koneen käskykanta ) Yleensä käytetään epätäsmällisiä ilmauksia, kuten esim. f(n) = O(n 2 ) tai f on kertaluokkaa n 2 merkityksessä f = O(g) missä g(n) = n 2 kaikilla n 156
Kertaluokkien perusominaisuuksia log a (n) = Θ(log b (n)) kaikilla a, b > 1 (joten kertaluokista puhuttaessa merkitään usein vain log n missä kantaluvun valinta on yhdentekevä) n a = o(n b ) jos a < b log n = o(n a ) kaikilla a > 0 n a = o(2 bn ) kaikilla a, b > 0 cf(n) = Θ(f(n)) kaikilla c > 0 f(n) + g(n) = Θ(max { f(n), g(n) }) jos p on asteen k polynomi niin p(n) = Θ(n k ) (Todistus: HT; oleellisesti kurssilla Diff. int. I.1 tms.) 157
Vaativuusluokat Kieli A voidaan tunnistaa ajassa t (tilassa s) jos A = L(M) missä time M (n) t(n) (vast. space M (n) s(n)) kaikilla n. Funktioiden t ja s määräämät (deterministiset) aika- ja tilavaativuusluokat ovat DTIME(t) = { A Σ A voidaan tunnistaa ajassa t } DSPACE(t) = { A Σ A voidaan tunnistaa tilassa s } yksinkertaisuuden vuoksi sallitaan moninauhainen M; (aika- ja tilavaativuus määritellään moninauhaiselle koneelle ilmeisellä tavalla) kuitenkin oleellista että M deterministinen (mistä kirjain D ) epädeterministisiin vaativuusluokkiin palataan kohta 158
Tärkeitä vaativuusluokkia Määritellään polynominen ja eksponentiaalinen aika- ja tilavaativusluokka: P = { DTIME(t) t polynomi } P SP ACE = { DSPACE(s) s polynomi } { } E = DTIME(2 nk ) k = 0, 1, 2,... { } ESP ACE = DSPACE(2 nk ) k = 0, 1, 2,... Siis erityisesti P = { L(M) time M (n) = O(n k ) jollain k }. 159
Tila- ja aikavaativuus eri laskennan malleissa jos A = L(M) moninauhaisella Turingin koneella M, niin A = L(N) missä N on yksinauhainen, time N (n) = O(time M (n) 2 ) ja space N (n) = O(space M (n)) (vrt. aiemmin esitetty simulaatio) jos kieli voidaan tunnistaa RAM-mallissa (tai jossain muussa nykyaikaisen tietokoneen abstraktissa mallissa) ajassa t ja tilassa s, niin se voidaan tunnistaa Turingin koneella ajassa O(t(n) 2 ) ja tilassa O(s(n)). yleisemmin aiemmin esitetyissä universaaleissa laskennan malleissa aikaja tilavaativuudet (kun ne määritellään järkevästi) ovat polynomisesssa suhteessa ts. jos jokin ongelma ratkeaa jossain mallissa ajassa t(n) niin missä tahansa toisessa mallissa se ratkeaa ajassa O(t(n) k ) jollain k siis erityisesti luokat P, E, PSPACE ja ESPACE ovat riippumattomia valitusta laskennan mallista 160
Usein ajatellaan, että polynomisessa ajassa ratkeavat ongelmat ovat käytännössä ratkeavia. Mahdollista kritiikkiä: Jos vaativuus on esim. luokkaa n 100 niin ongelma ei varmaan ole käytännössä ratkeava. Kommentti: harvoja poikkeuksia lukuunottamatta ei tunneta käytännön esimerkkejä joissa aikavaativuus olisi polynominen mutta korkeaa astetta Käytännössä syötteen koolla on jokin äärellinen yläraja, joten ei-polynomisuus ei ole ongelma Kommentti: näin voi olla jos yläraja on riittävän pieni; tyypilliset ei-polynomiset aikavaativuusfunktiot kuitenkin kasvat nopeasti jo melko pienillä n. Pahin tapaus ei kerro koko totuutta. Kommentti: voi hyvin pitää paikkansa, mutta esim. keskimääräisen tapauksen analyysi vaikeaa ja usein edellyttää kyseenalaisia oletuksia. Johtopäätös: yleensä polynomisuus = tehokkuus mutta mallin rajoituksia pitää harkita tapauskohtaisesti 161