6.1 Rekursiiviset palautukset



Samankaltaiset tiedostot
7. Aikavaativuus. Ohjelmistotekniikan laitos OHJ-2300 Johdatus tietojenkäsittelyteoriaan, syksy

Säännöllisen kielen tunnistavat Turingin koneet

3. Laskennan vaativuusteoriaa

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

Lisää pysähtymisaiheisia ongelmia

5.3 Ratkeavia ongelmia

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

Turingin koneen laajennuksia

Algoritmit 2. Luento 13 Ti Timo Männikkö

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

Rekursiiviset palautukset [HMU 9.3.1]

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

1.4 Funktioiden kertaluokat

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

3SAT-ongelman NP-täydellisyys [HMU ]

10. Satunnaisalgoritmit

Täydentäviä muistiinpanoja laskennan rajoista

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmin määritelmä [Sipser luku 3.3]

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

1. Universaaleja laskennan malleja

2. Laskettavuusteoriaa

Algoritmit 1. Demot Timo Männikkö

1. Universaaleja laskennan malleja

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

Algoritmit 2. Luento 14 To Timo Männikkö

Muita vaativuusluokkia

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

3. Laskennan vaativuusteoriaa

Algoritmit 1. Luento 2 Ke Timo Männikkö

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Algoritmit 1. Demot Timo Männikkö

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM

ICS-C2000 Tietojenkäsittelyteoria

Rajoittamattomat kieliopit (Unrestricted Grammars)

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Algoritmit 2. Luento 14 Ke Timo Männikkö

3. Turingin koneet. osaa esittää yksinkertaisia algoritmeja täsmällisesti käyttäen Turingin konetta ja sen muunnelmia

Chomskyn hierarkia ja yhteysherkät kieliopit

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

2. Laskettavuusteoriaa

Turingin koneet. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Nopea kertolasku, Karatsuban algoritmi

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Automaatit. Muodolliset kielet

Yhteydettömän kieliopin jäsennysongelma

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Rajoittamattomat kieliopit

ICS-C2000 Tietojenkäsittelyteoria

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

Algoritmit 1. Luento 14 Ke Timo Männikkö

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

Kertausta 1. kurssikokeeseen

Laskennan vaativuus ja NP-täydelliset ongelmat

Säännöllisten kielten sulkeumaominaisuudet

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

4 Tehokkuus ja algoritmien suunnittelu

Pinoautomaatit. Pois kontekstittomuudesta

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Algoritmit 1. Luento 13 Ti Timo Männikkö

DIFFERENTIAALI- JA INTEGRAALILASKENTA I.1. Ritva Hurri-Syrjänen/Syksy 1999/Luennot 6. FUNKTION JATKUVUUS

uv n, v 1, ja uv i w A kaikilla

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Ratkeavuus ja efektiivinen numeroituvuus

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

v 8 v 9 v 5 C v 3 v 4

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

A TIETORAKENTEET JA ALGORITMIT

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

Transkriptio:

6.1 Rekursiiviset palautukset Olk. = (Q, Σ, Γ, δ, q 0, q acc, q rej ) mv. standardimallinen Turingin kone ääritellään koneen laskema osittaisfunktio f : Σ Γ seur. u, jos q 0 w u q av, f (w) = q { q acc, q rej }, av Γ määrittelemätön, muuten Kone siis kuvaa merkkijonon w Σ koneen nauhapään vasemmalla puolella sijaitsevalle merkkijonolle u, jos laskenta pysähtyy syötteellä w Jos laskenta ei pysähdy, funktion arvoa pisteessä w ei ole määritelty Tällöin A:n tapaus w voidaan muuttaa rekursiivisesti B:n tapaukseksi f(w) ja Σ onko w:llä ominaisuus A? onko f(w):llä ominaisuus B? A f f Γ B 190 192 Osittaisftio f : Σ A on osittaisrekursiivinen, jos : f = f, A Γ Osittaisrekursiiviftio f on rekursiivinen, jos se voidaan laskea totaalisella Turingin koneella. Ts. jos sen arvo f(w) on määritelty kaikilla w Formalisoidaan ajatus, että ongelma A on enintään yhtä vaikea kuin ongelma B seuraavasti Olk. A Σ, B Γ formaaleja kieliä A voidaan palauttaa rekursiivisesti B:hen, merk. A m B, jos on olemassa rekursiivinen funktio f : Σ Γ s.e. w A f(w) B 191 w Σ Lemma 5.22 Kaikilla kielillä A, B, C pätee (i) A m A, (refleksiivisyys) (ii) jos A m B ja B m C, niin A m C, (transitiivisuus) (iii) jos A m B ja B on RE-kieli, niin A on RE-kieli ja (iv) jos A m B ja B on rekursiivinen, niin A on rekursiivinen Todistus. (i) Valitaan palautusftioksi f(x) = x. (ii) Olk. f palautusftio A:sta B:hen ja g B:stä C:hen. erk. f : A m B, g : B m C. Osoitetaan, että yhdistetty ftio h, h(x) = g(f(x)) on palautus h : A m C. 193

1) h on rekursiivinen: Olk. f ja g f:n ja g:n laskevat totaaliset Turingin koneet. REW korvaa kaikki nauhapään oikealla puolella olevat merkit :lla ja vie nauhapään nauhan alkuun. Seur. kuvan totaalinen kone laskee ftion h. 2) h on palautus: x A f(x) B joten h : A m C. g(f(x)) = h(x) C, (iii) (iv) Olk. f : A m B, B kielen B tunnistajakone ja f ftion f laskeva kone. Seur. kuvan kone tunnistaa kielen A ja on totaalinen jos B on. 194 Aiemmin jo käytimme lauseen 5.22 seurausta ratkemattomuuden todistamiseen Seuraus 5.23 Jos A m B ja A on ratkeamaton, niin myös B on ratkeamaton. Kieli A { 0, 1 } on RE-täydellinen, jos 1. A RE ja 2. B m A kaikilla B RE Lause Kieli U on RE-täydellinen Todistus. Tiedämme, että U RE. Olk. B mv. RE-kieli. Olk. edelleen B = L( B ). Nyt B voidaan palauttaa U:hun ftiolla f(x) = c B x. Funktio on selvästi rekursiivinen, ja sille pätee x B = L( B ) f(x) = c B x U. 196 x Lause 6.1 Olk. A RE-täydellinen kieli, B RE ja A m B. Tällöin myös B on RE-täydellinen. x f f Kaikki luonnolliset luokan RE \ REC kielet ovat RE-täydellisiä, mutta kuitenkin siinä on muitakin kieliä 195 Kielen A tunnistava Turingin kone REW B f(x) Yhdistetyn kuvauksen laskeva Turingin kone REW g f(x)v f(x)_ g(f(x))v Luokka RE ei ole suljettu komplementoinnin suhteen, joten sillä on duaaliluokka co-re = { A A RE } RE co-re = REC (Lause 5.3) A { 0, 1 } on co-re-täydellinen, jos A co-re ja B m A kaikilla B co-re Kieli A on co-re-täydellinen, jos ja vain jos kieli A on RE-täydellinen Kieli TOT = { c c pysähtyy kaikilla syötteillä } h(x) ei kuulu luokkaan RE, eikä co-re 197

198 REC RE co RE NE U NE U TOT RE täyd. co RE täyd. Koneessa, jossa yhden reitin tutkiminen kestää 0.001 s, vaatisi tämä algoritmi 22-solmuisella verkolla enemmän aikaa kuin maailmankaikkeuden tähänastinen ikä Biljoonakertanen koneen nopeus: vieläkään ei kyettäisi maailmankaikkeuden eliniän puitteissa ratkaisemaan TSP:tä 31-solmuiselle verkolle Kaikki reittivaihtoehdot tutkivaa eksponentiaalista algoritmia (n! O(n n )) ei näin ollen voi nimittää ratkaisualgoritmiksi TSP:lle Algoritmia, jonka ajankäyttöä rajoittaisi n:n polynomi ei tunneta; ei osata osoittaa, että sellainen menetelmä olisi mahdoton 200 7. Aikavaativuus Edellä tarkasteltiin ongelmien ratkeavuutta kiinnittämättä huomiota ongelman ratkaisun vaatimaan aikaan Nyt siirrytään tarkastelemaan ratkeavien ongelmien aikavaativuutta Periaatteessa ratkeava ongelma voi olla käytännössä ratkeamaton TSP (kauppamatkustajan ongelma) on löytää lyhin mahdollinen Hamiltonin kehä painotetusta verkosta Algoritmi: n:n solmun verkossa kokeile kaikki n! reittiä ja valitse niistä lyhin Standardimallisen Turingin koneen = (Q, Σ, Γ, δ, q 0, q acc, q rej ) laskennan q 0 w u q av, q { q acc, q rej } pituus on siihen sisältyvien siirtymäaskelten lkm. Aikavaativuus syötteellä w: laskennan q 0 w... pituus, time = jos se pysähtyy, jos laskenta ei pysähdy w:llä Koneen aikavaativuus on siis ftio time : Σ N { } Yleensä vaativuutta tarkastellaan syötteen pituuden n ftiona: 199 201

keskimääräisessä tapauksessa kun n:n pituisia syötteitä saadaan todennäköisyysjakaumasta P n (w) time avg (n) = P n (w) time (w) w =n yleisemmin pahimmassa tapauks. time max (n) = max time (w) w =n Yleensä myös merkitään yksinkert. time : N N { }, time (n) = time max (n) Keskimääräisen tapauksen analysointi olisi mielenkiintoista, mutta yleensä se on niin hankalaa, että useinmiten tyydytään pahimman tapauksen tarkasteluun f = o(g): f on alempaa kertaluokkaa kuin g, jos c > 0 : n c N : f(n) < c g(n), n n c f = Ω(g): g on alaraja f:lle, jos c > 0 : äärettömän monella n N : f(n) c g(n) f = o(g) f = O(g) g O(f) f Ω(g) f = o(g) Usein puhutaan hieman epätäsmällisemmin sanoen funktio n! on kertaluokkaa O(n n ) tai 2n 2 on kertaluokkaa n 2 202 204 Vaativuusfunktioiden kertaluokat Pahimpaaan tapaukseen typistetyt vaativuusftiot ovat edelleenkin liian sotkuisia yksityiskohtaiseen käsittelyyn Tavallisesti tyydytään tarkastelemaan ftion kertaluokkaa Olk. f, g : N R + mv. ftioita. f = O(g): f on (korkeintaan) kertaluokkaa g, jos c, n 0 N : Lemma 7.1 1. log a n = Θ(log b n) a, b > 0, 2. n a = o(n b ), jos a < b, 3. 2 an = o(2 bn ), jos a < b, 4. log a n = o(n b ) a, b > 0, 5. n a = o(2 bn ) a, b > 0, 6. cf(n) = Θ(f(n)) c > 0 ja funktioilla f, 7. f(n) + g(n) = Θ(max { f(n), g(n) }) kaikilla funktioilla f ja g sekä f(n) c g(n), n n 0 f = Θ(g): f ja g ovat samaa kertaluokkaa, jos f = O(g) ja g = O(f) 8. jos p(n) on aidosti astetta r oleva polynomi, niin p(n) = Θ(n r ) 203 205

Lemma 7.2 Olk. f, g : N R + mv. ftioita. Jos raja-arvo on olemassa ja f(n) L = lim n g(n) 1. 0 < L < f = Θ(g) 2. L = 0 f = o(g) 3. L > g = o(f) 4. L < f = O(g) 5. L > 0 f = Ω(g) A:n tunnistajakoneen ensimmäinen vaihe vaatii n askelta syötteellä w, w = n Toiset n askelta kuluu, kun lukupää palautetaan nauhan alkuun Ensimmäinen vaihe siis vaati O(n) askelta Vaiheessa 2 0/1-parin merkitseminen vaatii O(n) askelta ja korkeintaan n/2 tällaista pyyhkäisyä vaaditaan Kaikkiaan siis vaihe 2 vaatii O(n 2 ) askelta Kolmas vaihe on taas lineaarisen askelten lukumäärän vaativa Kaikkiaan koneen toiminta siis vaatii O(n) + O(n 2 ) + O(n) = O(n 2 ) ajan 206 208 Tarkast. kielen A = { 0 k 1 k k 0 } tunnistamista Paljonko aikaa yksinauhainen Turingin kone vaatii A:n tunnistamiseksi? Syötteellä w 1. Käy w läpi, hylkää syöte, jos merkki 0 löytyy merkin 1 oikealta puolelta 2. Toista niin kauan kuin molempia merkkejä on nauhalla Käy läpi nauhaa merkiten käsitellyksi yksi 0 ja yksi 1 3. Jos kaikki nollat (ykköset) on merkitty ja ykkösiä (nollia) on vielä jäljellä, hylkää syöte. uuten (kaikki nollat ja ykköset on merkitty) hyväksy syöte Kielen A tunnistaminen ei kuitenkaan ole Ω(n 2 ) toiminto, vaan seuraava Turingin kone vaatii vain O(n log n) ajan Syötteellä w 1. Hylkää syöte, jos merkki 0 löytyy merkin 1 oikealta puolelta 2. Toista niin kauan kuin molempia merkkejä on nauhalla (a) Jos merkkejä on yhteensä pariton määrä, niin hylkää syöte (b) Poista joka toinen 0 alkaen ensimmäisestä 0:sta. Toimi samoin merkkien 1 kanssa 3. Jos kaikki merkit 0 ja 1 on poistettu, hyväksy syöte, muuten hylkää se 207 209

Eo. Turingin kone puolittaa joka kierroksella käsittelemättömien nollien määrän (poistaen jakojäännöksen) Kunkin kierroksen pituus on O(n) ja kierroksia on kork. 1 + log n Kaikkiaan aikaa kuluu siis O(n log n) Koneen oikeellisuus: jos alunperin esim. 7 nollaa ja 6 ykköstä, niin hylätään parittomuustestillä heti Jos 7 nollaa ja 5 ykköstä, niin määrien ensimmäisen puolituksen jälkeen on jäljellä 3 nollaa ja 2 ykköstä ja parittomuustesti ottaa kiinni 7 nollaa ja 3 ykköstä, vaatii kaksi puolituskierrosta ennen kuin parittomuustesti ottaa kiinni Laskennan universaalit mallit eivät siis ole yhtä tehokkaita Vaativuusteoriassa on merkitystä sillä mitä laskennan mallia käytetään Determinististen laskennan mallien tehokkuuserot eivät kuitenkaan ole dramaattisia Olk. t: N R + mv. funktio Kieli A voidaan tunnistaa ajassa t, jos on olemassa deterministinen Turingin kone s.e. L() = A ja time (n) t(n) kaikilla n Formaalien kielten aikavaativuusluokka DTIE(t) = { A A voidaan tunnistaa ajassa t } 210 212 Yksinauhainen Turingin kone ei voi tunnistaa kieltä A asymptoottista aikaa O(n log n) tehokkaammin Sen sijaan kaksinauhaisella koneella tunnistaminen sujuu lineaarisessa ajassa Syötteellä w 1. Hylkää syöte, jos merkki 0 löytyy merkin 1 oikealta puolelta 2. Kopioi kaikki merkit 0 nauhalle 2 3. Käy läpi merkit 1, kunkin kohdalla merkiten yksi 0 nauhalta 2 käsitellyksi. Jos nollat loppuvat ennen ykkösiä, hylkää w 4. Jos kaikki nollat on merkitty hyväksy w, jos nollia on vielä jäljellä, hylkää w Yksinauhaisella koneella voidaan simuloida moninauhaista konetta (lause 3.13) Yhden k-nauhaisen koneen askelen simulointi vaatii O(t(n)) ajan, missä t(n) n on moninauhaisen koneen vaativuusfunktio Askelia on kaikkiaan O(t(n)), joten Lause 7.8 Jokaisella ajassa t toimivalla moninauhaisella Turingin koneella on olemassa ekvivalentti yksinauhainen kone, joka vaatii O(t 2 ) ajan. Epädeterministisen Turingin koneen N laskennan vaativuus: time N (w) on pisimmän laskennan q 0 w N... pituus 211 213

Epädeterministisen koneen laskentoja syötteellä w on usein hyödyllistä ajatella laskentapuuna. Puun lehdissä laskenta pysähtyy. Kone hyväksyy w:n, jos jokin lehti vastaa hyväksyvää lopputilaa. Pahimman tapauksen aikavaativuus: time N (n) = max w =n time N(w) Kieli A voidaan tunnistaa epädeterministisesti ajassa t, jos on olemassa epädeterm. Turingin kone N s.e. L(N) = A ja time N (n) t(n) n Epädeterministiset vaativuusluokat: NTIE(t) = { A A voidaan tunnistaa epädeterm. ajassa t } Puun läpikäyminen vaatii pahimmassa tapauksessa kaikkien sen solmujen käsittelyä. Solmuja on kaikkiaan alle kaksi kertaa lehtien maksimimäärä, eli luokkaa O(b t(n) ). Joten kolminauhaisen koneen asymptoottisesti vaatima aika on O(2 t ). Lauseen 7.8 perusteella yksinauhainen deterministinen kone voidaan toteuttaa O(2 t ) 2 = O(2 2t ) = O(2 t ) ajassa. Yksi- ja moninauhaisten koneiden tehokkuusero on siis korkeintaan t:n neliö, siis polynominen t:n suhteen Determinististen ja epädeterminististen koneiden tehokkuusero puolestaan on eksponentiaalinen t:n suhteen 214 216 Lause 7.11 Jokaisella ajassa t toimivalla yksinauhaisella epädeterministisellä Turingin koneella on olemassa ekvivalentti yksinauhainen deterministinen kone, joka vaatii O(2 t ) ajan. Todistus. Lauseen 3.16 deterministinen Turingin kone käy systemaattisesti läpi epädeterministisen koneen N laskentapuuta. Olkoon N:n toiminta-aika t(n), jolloin laskentapuun jokaisen haaran pituus n:n pituisella syötteellä on korkeintaan t(n). Solmujen haarautumisaste määräytyy N:n siirtymäfunktion tarjoamien siirtymävaihtoehtojen lkm:n mukaan. Olkoon b 2 yläraja tälle. Puun lehtien lkm. on korkeintaan b t(n). 215