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



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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Muita vaativuusluokkia

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Turingin koneen laajennuksia

3. Laskennan vaativuusteoriaa

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

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:

Algoritmin määritelmä [Sipser luku 3.3]

Yhteydettömän kieliopin jäsennysongelma

Algoritmit 2. Luento 13 Ti Timo Männikkö

3. Laskennan vaativuusteoriaa

Rekursiiviset palautukset [HMU 9.3.1]

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

Chomskyn hierarkia ja yhteysherkät kieliopit

Säännöllisten kielten sulkeumaominaisuudet

5.3 Ratkeavia ongelmia

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

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

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

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

Täydentäviä muistiinpanoja laskennan rajoista

Säännöllisen kielen tunnistavat Turingin koneet

Lisää pysähtymisaiheisia ongelmia

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

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

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

1. Universaaleja laskennan malleja

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

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

Laskennan vaativuus ja NP-täydelliset ongelmat

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

NP-täydellisyys. Joonas Järvenpää ja Topi Talvitie. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

Algoritmit 2. Luento 14 To Timo Männikkö

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

1. Universaaleja laskennan malleja

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

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

Ei-yhteydettömät kielet [Sipser luku 2.3]

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Algoritmit 1. Luento 1 Ti Timo Männikkö

Kertausta 1. kurssikokeeseen

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Rajoittamattomat kieliopit (Unrestricted Grammars)

Automaatit. Muodolliset kielet

Algoritmit 1. Luento 2 Ke Timo Männikkö

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

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

6.1 Rekursiiviset palautukset

Tietorakenteet ja algoritmit - syksy

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Laskennan mallit

Loogiset konnektiivit

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI. 1. Äärelliset automaatit Äärellinen automaatti (DFA = deterministic finite automaton) on

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

2. Laskettavuusteoriaa

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

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

1. Primitiivirekursiiviset funktiot muodostetaan kolmesta perusfunktiosta käyttäen. succ(n) = n + 1

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

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

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

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

Muodolliset kieliopit

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

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

Rajoittamattomat kieliopit

2. Laskettavuusteoriaa

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset

Laskennan teoria

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Algoritmit 2. Luento 14 Ke Timo Männikkö

Ratkeavuus ja efektiivinen numeroituvuus

Johdatus logiikkaan I Harjoitus 4 Vihjeet

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

Transkriptio:

Kurssi tähän asti: säännölliset yhteydettömät ratkeavat { a n } { a n b n } { a n b n c n } tunnistettavat A TM HALT TM kaikki kielet A TM HALT TM TOTAL TM TOTAL TM EQ TM EQ TM 277

5. Laskennan vaativuus Edellä olemme tutkineet, mitä ylipäänsä on tai ei ole mahdollista laskea. Nyt tarkennamme käsittelyä kysymällä, kuinka kauan laskenta kestää. Käymme läpi Sipserin luvun 7 pääasiat. Tavoitteena on, että opiskelija osaa selittää polynomisen ja eksponentiaalisen aikavaativuuden eron määritellä luokat P ja NP selittää, mistä NP-täydellisyydessä ja P vs. NP -ongelmassa on kysymys tunnistaa perusesimerkkejä NP-täydellisistä ongelmista. 278

Aikavaativuus [Sipser luku 7.1] Algoritmin aikavaativuuden perusajatus on tuttu esim. kurssilta Tietorakenteet. Täsmennämme sen nyt käyttämällä Turingin konetta laskennan mallina. Määritelmä 5.1: Olkoon M Turingin kone, joka pysähtyy kaikilla syötteillä. Turingin koneen M aikavaativuus (time complexity) on funktio f : N N, missä f(n) on suurin määrä laskenta-askelia, jonka M tekee millään syötteellä, jonka pituus on n. Tällöin sanomme myös, että M toimii ajassa f(n). Siis kurssilta Tietorakenteet tuttuun tapaan ryhmittelemme saman pituiset syötteet yhteen ja tarkastelemme pahimman tapauksen aikavaativuutta. Käytämme myös Tietorakenteista tuttua iso-o-merkintää : jos esim. Turingin koneen aikavaativuus on f, jolla f(n) = O(n 2 ), sanomme lyhyesti, että koneen aikavaativuus on O(n 2 ). Tässä siis sovitaan, että n esittää syötteen pituutta. (Tarvittaessa kertaa iso-o-merkintä kurssikirjan sivuilta 252 254 tai Tietorakenteiden materiaalista.) 279

Esimerkki 5.2: Tarkastellaan sivun 231 Turingin konetta, joka tunnistaa kielen { a m b m c m m N }. Pahimmassa tapauksessa kone käy jokaista syötteen a-merkkiä kohti syötteen loppuosan läpi yliviivaten b- ja c-merkkejä. Yksi syötteen läpikäynti vie O(n) laskenta-askelta. Kaikkiaan a-merkkejä ja siis läpikäyntejä on O(n) kappaletta. Lopuksi vielä tarkastetaan koko nauhan sisältö, mihin kuluu O(n) askelta. Koneen aikavaativuus on siis O(n) O(n) + O(n) = O(n 2 ). Määritelmä 5.3: Luokka TIME(t(n)) koostuu kielistä, jotka voidaan tunnistaa ajassa O(t(n)) toimivalla Turingin koneella. Esimerkki 5.4: Edellisen esimerkin perusteella { a m b m c m m N } TIME(n 2 ). Tämän perusteella voidaan myös todeta heikommin, että jne. { a m b m c m m N } TIME(n 3 ) { a m b m c m m N } TIME(2 n ) 280

Laskennan vaativuus eri malleissa Edellä, erityisesti luokan TIME(f(n)) määritelmässä, Turingin koneella on tarkoitettu determinististä, yksinauhaista konetta. Aikavaativuuden määritelmä tietysti yleistyy suoraan moninauhaiselle koneelle, mutta aikavaativuusluokat ovat herkkiä sille, millaisia koneita käytetään. Lause 5.5: [Sipser Thm. 7.8] Jos kieli voidaan tunnistaa ajassa f(n) toimivalla moninauhaisella Turingin koneella, niin se voidaan tunnistaa ajassa O(f(n) 2 ) toimivalla yksinauhaisella Turingin koneella. Todistushahmotelma: Tämä on oleellisesti käyty läpi todistettaessa, että moninauhaisella ja yksinauhaisella koneella voidaan ratkaista samat ongelmat (sivut 244 245). Huomaa, että nauhojen lukumäärä k on vakio, ts. ei riipu syötteestä. Tämä yläraja O(f(n) 2 ) ei kenties ole tiukin mahdollinen, mutta emme ole kiinnostuneet sen viilaamisesta. Ei ole mitään perustetta sanoa, että moninauhainen kone olisi tarkempi tai epätarkempi malli oikealle algoritmille kuin yksinauhainen. Pyrimmekin nostamaan tarkastelun hieman korkeammalle abstraktiotasolle, jotta tällaiset pienet erot malleissa eivät häiritse. 281

Epädeterminismi on paljon isompi muutos kuin moninauhaisuus. Määritelmä 5.6: Olkoon N on epädeterministinen Turingin kone, jonka kaikki laskennat kaikilla syötteillä pysähtyvät. Koneen N aikavaativuus on funktio f : N N, missä f(n) on suurin määrä laskenta-askelia, jonka N tekee missään laskennassa syötteellä, jonka pituus on n. Huom. Epädeterministinen aikavaativuus ei ole tarkoitettu suoraan mallintamaan minkään todellisen tietokoneen suoritusaikaa. Se on vain abstrakti matemaattinen käsite, jonka hyödyllisyys tulee kohta ilmi. Tekninen huomio: Tarkastelemme siis epädeterministisen laskentapuun pisintä haaraa kullakin syötteellä. Lyhimmän haaran tarkasteleminen ei ole mielekästä, koska koneeseen voidaan helposti lisätä turhia lyhyitä hylkääviä laskentoja. Lyhimmän hyväksyvän laskennan tarkasteleminen johtaisi oleellisesti samoihin tuloksiin kuin ylläoleva määritelmä. 282

Lause 5.7: [Sipser Thm. 7.11] Jos kieli voidaan tunnistaa ajassa f(n) toimivalla epädeterministisellä Turingin koneella, se voidaan tunnistaa ajassa 2 O(f(n)) toimivalla deterministisellä yksinauhaisella Turingin koneella. Todistushahmotelma: Sivuilla 250 254 on esitetty muunnos epädeterministisestä Turingin koneesta kolmenauhaiseksi deterministiseksi. Laskenta käy läpi epädeterministisen laskentapuun haarat, joita on korkeintaan b f(n). Yhden haaran läpikäynti vie deterministisen ajan O(f(n)). Kolmenauhaisen koneen aikavaativuus on siis O(f(n)b f(n) ) = 2 O(f(n)). Yksinauhaiseen koneeseen siirtyminen antaa vaativuuden O((2 O(f(n)) ) 2 ) = O(2 2 O(f(n)) ) = 2 O(f(n)). Huomaa, että 2 f(n) on yleensä paljon suurempi kuin moninauhaisen koneen yhteydessä esiintynyt f(n) 2. Ryhdymme nyt tutkimaan tätä eroa. 283

Polynominen aikavaativuus [Sipser luku 7.2] Määritelmä 5.8: Turingin koneen M aikavaativuus on polynominen, jos se on O(n k ) jollain k N. Tällöin sanomme, että M toimii polynomisessa ajassa. Kieli kuuluu luokkaan P, jos se voidaan tunnistaa yksinauhaisella deterministisellä polynomisessa ajassa toimivalla Turingin koneella. Lauseen 5.6 nojalla yksinauhainen ja moninauhainen Turingin kone ovat polynomisesti ekvivalentteja laskennan malleja: luokan P sisältö ei muuttuisi, vaikka sen määritelmässä käytettäisiin moninauhaisia koneita. Sama pätee myös monille muille Turingin koneen muunnelmille ja esim. RAM-koneelle (s. 260). Sen sijaan ei tiedetä, että epädeterministiset ja deterministiset Turingin koneet olisivat polynomisesti ekvivalentteja (ja yleisesti epäillään, että eivät ole). Palaamme tähän pian. 284

Polynominen aikavaativuus on siis tekniseltä kannalta sopivan tasoinen aikavaativuusluokka: se ei ole herkkä pienille tai vähän suuremmillekaan muutoksille laskennan mallissa. Polynominen aikavaativuus on myös sovellusten kannalta keskeinen ominaisuus: yleisesti ottaen ajassa n k toimivat algoritmit skaalatuvat suurille syötteille, ajassa 2 n toimivat eivät skaalaudu. Tähän pitää suhtautua tietyin varauksin: esim. aikavaativuus O(n 100 ) ei varmasti skaalaudu hyvin pahimman tapauksen analyysi ei aina ole tarkoituksenmukaista pientenkin syötteiden ratkaiseminen voi olla tärkeää. Erityisesti luokkaa P tarkastelemalla emme halua väittää, että esim. aikavaativuuksien O(n 2 ) ja O(n 3 ) välinen ero ei olisi tärkeä; päinvastoin se on hyvinkin tärkeä. Olemme vain valmiit hetkeksi unohtamaan tuon eron saadaksemme paremman kuvan vielä tärkeämmästä erosta polynomisten aikavaativuuksien O(n k ) ja eksponentiaalisten aikavaativuuksien O(2 nk ) välillä. 285

Esimerkki 5.9: [Sipser Thm. 7.14] Kurssilta Tietorakenteet tiedämme, että ongelma Annettu: Kysymys: verkko G = (V, E), solmut s V ja t V onko verkossa G polku s t voidaan ratkaista ajassa O( V + E ) esim. leveyssuuntaisella etsinnällä. Liittääksemme tämän tuloksen nyt esillä olevaan käsitteistöön ja erityisesti luokkaan P meidän on ensin määriteltävä ongelma formaalina kielenä. Olkoon siis PATH = { G, s, t verkossa G on polku s t }, missä G, s, t on mikä tahansa järkevä tapa koodata verkko ja sen kaksi solmua jonkin aakkoston merkkijonoksi. Järkevyys pitää tässä sisällään erityisesti sen, että koodin pituuden tulee olla polynominen verkon solmujen lukumäärän suhteen. Esim. vierusmatriisia käyttämällä saadaan helposti koodinpituus O( V 3 ). Nyt PATH P. Tämän todistamiseksi toteamme, että kurssilta Tietorakenteet tutun leveyssuuntaisen etsinnän tekemät O( V + E ) laskenta-askelta voidaan selvästi kukin toteuttaa syötteen koon suhteen polynomisessa ajassa Turingin koneella. 286

Lause 5.10: Jos kieli L on yhteydetön, niin L P. Todistus: Jos L on yhteydetön, sillä on Chomskyn normaalimuodossa oleva kielioppi. Voimme siis annetulla w ratkaista, päteekö w L, käyttämällä CYK-algoritmia (s. 178). Algoritmin suoritus vaatii O(n 3 ) iteraatiota. Kun algoritmi muunnetaan Turingin koneeksi, esim. taulukon table indeksointi ei enää toimi vakioajassa. Kuitenkin on selvää, että Turingin koneella iteraation kukin yksittäinen askel voidaan suorittaa ajassa O(n k ) jollain (melko pienellä) k N. Saamme siis kielelle L Turingin koneen, jonka aikavaativuus on O(n k+3 ). Yleisemmin voimme todeta, että ongelma kuuluu luokkaan P, jos se voidaan esittää formaalina kielenä ja sillä on ratkaisualgoritmi, joka toimii ajassa O(n k ) normaalien (esim. kurssilla Tietorakenteet esitettyjen) laskuperusteiden mukaan. 287

Epädeterministinen polynominen aikavaativuus [Sipser luku 7.3] Määritelmä 5.11: Kieli kuuluu luokkaan NP (nondeterministic polynomial time), jos se voidaan tunnistaa epädeterministisellä Turingin koneella, jonka aikavaativuus on O(n k ) jollain k N. Lauseen 5.7 mukaan jos A NP, niin A voidaan ratkaista deterministisessä ajassa 2 O(nk) jollain k N. Mitään oleellisesti tämän tarkempaa ei pystytä nykyisillä tiedoilla päättelemään. Luokka NP on kuitenkin käytännössä tärkeä, koska se sisältää monia tärkeitä ongelmia, joiden vaativuutta ei tiedetä sen tarkemmin. Tämäkin tieto antaa vihjeitä siitä, millaisilla tekniikoilla ongelmaa kannattaa tai ei kannata yrittää ratkaista. 288

Esimerkki 5.12: Verkon Hamiltonin polku on polku, joka vierailee jokaisessa solmussa tasan kerran. Tarkastelemme versiota, jossa verkko on suunnattu ja polun alku- ja loppusolmu annettu: HAMPATH = { G, s, t suunnatussa verkossa G on Hamiltonin polku s t }. HAMPATH on perusesimerkki ongelmasta, joka kuuluu luokkaan NP, mutta jonka kuuluminen luokkaan P on avoin ongelma. a b s s t c d t Verkossa on Hamiltonin polku (s,a,b,c,d,t) Verkossa ei ole Hamiltonin polkua 289

Kieli HAMPATH voidaan tunnistaa epädeterministisellä kaksinauhaisella Turingin koneella, joka ensin arvaa solmujonon p 1,..., p V ja sitten tarkistaa, syntyikö Hamiltonin polku: 1. Etsi syötteestä G, s, t verkon G solmujen lukumäärä V. 2. Kirjoita kakkosnauhalle jono p 1,..., p V, jossa on V lukua. Kukin luku p i valitaan epädeterministisesti joukosta { 1,..., V }. 3. Jos p 1 ei ole solmun s järjestysnumero, niin hylkää. Jos p V ei ole solmun t järjestysnumero, niin hylkää. Jos p i = p j joillakin i j, niin hylkää. 4. Kaikilla i = 1,..., V 1, tarkista, onko verkossa G kaari solmusta numero p i solmuun numero p i+1. Jos ei ole, niin hylkää. 5. Hyväksy. Tässä siis on ajateltu, että verkon G koodaus samalla kiinnittää jonkin numeroinnin sen solmuille. Kohtien 3 5 tarkastusten yksityiskohdat riippuvat koodauksen yksityiskohdista, mutta millä tahansa järkevällä koodauksella tarkastukset voidaan selvästi tehdä polynomisessa ajassa. 290

Edellisen perusteella HAMPATH NP. Sen sijaan ei tiedetä, päteekö HAMPATH P; melko yleisesti arvellaan, että ei päde. Koska mahdollisia polkuja s t voi olla verkon koon V suhteen eksponentiaalinen määrä, mikään raakaan voimaan perustuva etsintä ei takaa polynomista aikavaativuutta. Lauseen 5.7 perusteella (tai analysoimalla jotain raakaan voimaan perustuvaa algoritmia) tiedämme kuitenkin, että HAMPATH TIME(2 nk ) jollain k N. 291

Esimerkki 5.13: Suuntaamattoman verkon klikki on solmujoukko, jonka jokaista solmuparia yhdistää kaari. Allaolevassa verkossa on neljän solmun klikki { c, d, e, g } ja useita pienempiä klikkejä, esim. { c, d, e }; { a, c, d }; { b, f } ja { b }. a c b d e f g Perusongelma on löytää verkosta mahdollisimman suuri klikki. Määrittelemme vastaavan formaalin kielen: CLIQUE = { G, k suuntaamattomassa verkossa G on k solmua käsittävä klikki }. CLIQUE on vaativuudeltaan hyvin samansukuinen ongelma kuin HAMPATH. 292

Kielelle CLIQUE saadaan samantapaisella arvaa ja testaa -algoritmi kuin Hamiltonin poluille: 1. Etsi syötteestä G, k haluttu klikin koko k. 2. Valitse epädeterministisesti solmujoukko C V, jossa on k solmua. 3. Tarkista kaikki parit (u, v) C C. Jos kaikilla näistä (u, v) E, niin hyväksy. Muuten hylkää. Johtopäätökset ovat kuten aiemmin: CLIQUE NP CLIQUE TIME(2 nk ) jollain k N ei tiedetä, kuuluuko CLIQUE luokkaan P. 293

Esimerkki 5.14: Toteutuvuusongelmassa (satisfiability) on annettu propositiologiikan kaava, joka siis koostuu totuusarvoisista muuttujista x 1, x 2, x 3,... ja loogisista operaattoreista (negaatio ei ), (konjunktio ja ) sekä (disjunktio tai ). Kaava on toteutuva, jos sen muuttujille voidaan valita sellaiset totuusarvot, että kaava tulee todeksi. Esim. kaava (x 1 x 4 ) ((( x 1 ) x 2 ) (x 3 ( x 2 ))) on toteutuva, kuten nähdään vaikkapa valitsemalla x 1 = False, x 2 = True, x 3 = False ja x 4 = True. Sen sijaan kaava (x 1 ( x 2 )) (x 2 ( x 1 )) (x 1 x 2 ) (( x 1 ) ( x 2 )) ei ole toteutuva, sillä mitkään muuttujien x 1 ja x 2 arvot eivät samanaikaisesti toteuta kaikkia neljää ehtoa x 1 ( x 2 ), x 2 ( x 1 ), x 1 x 2 ja (( x 1 ) ( x 2 )). Toteutuvuusongelmaa vastaava formaali kieli SAT = { ϕ propositiologiikan kaava ϕ on toteutuva } kuuluu luokkaan NP, mikä taas nähdään arvaa ja testaa -algoritmilla. 294

P vs. NP -ongelma [Sipser luku 7.4] Koska selvästi P NP, niin jompi kumpi seuraavista pätee: P = NP luokka P on luokan NP aito osajoukko. Vaihtoehto 1: P=NP Vaihtoehto 2: NP P Kysymys, päteekö P = NP, on ollut tietojenkäsittelyteorian keskeinen avoin ongelma 1970-luvun alusta lähtien. Se on yksi Millennium Prize -ongelmista, matematiikan suurista avoimista ongelmista, joiden ratkaisusta on luvattu miljoonan dollarin palkinto. 295

Jos pätee P = NP, niin Hamiltonin polut, klikkiongelma ja toteutuvuusongelma, sekä satoja muita tunnettuja luokan NP ongelmia, voidaan ratkaista polynomisessa ajassa. Koska lukuisista yrityksistä huolimatta millekään näistä ongelmista ei ole keksitty polynomisessa ajassa toimivaa algoritmia, arvellaan yleisesti, että pätee P NP, mutta kenelläkään ei ole hyvää ideaa, miten tämä voitaisiin todistaa. Monilla ongelmilla, mukaan lukien HAMPATH, CLIQUE ja SAT, on vieläkin vahvempi kytkös P vs. NP -ongelmaan. Ensimmäisenä tämä kytkös osoitettiin SAT -ongelmalle. 296

Lause 5.15 (Cook-Levin): P = NP. [Sipser Thm. 7.27] SAT P, jos ja vain jos Tämä lause siis sanoo, että tasan toinen seuraavista pätee: SAT P ja P = NP SAT P ja P NP. Jossittelu lauseessa ei tarkoita, että esim. väittämällä SAT P voisi olla useita totuusarvoja. Joko se on tosi tai se on epätosi, emme vain (ainakaan toistaiseksi) tiedä, kumpi. Jos siis löytäisimme polynomisessa ajassa toimivan algoritmin SAT -ongelmalle, niin pätisi P = NP ja kaikki muutkin luokan NP ongelmat voitaisiin ratkaista polynomisessa ajassa. Toisaalta, jos pystymme osoittamaan, että P NP, se tarkoittaa, että SAT -ongelmalle ei ole olemassa polynomisessa ajassa toimivaa algoritmia. Emme esitä Cookin-Levinin lauseen todistusta, mutta selvitämme hieman siihen keskeisesti liittyvää NP-täydellisyyden käsitettä. 297

Tarvitsemme ensin pari teknistä apumääritelmää. Määritelmä 5.16: Turingin kone M laskee funktion f : Σ Σ, jos millä tahansa syötteellä w kone M pysähtyy tilanteeseen, jossa nauhan sisältö on f(w). Funktio f on laskettavissa polynomisessa ajassa, jos jokin polynomisessa ajassa toimiva Turingin kone laskee sen. Määritelmä 5.17: Olkoot A ja B aakkoston Σ formaaleja kieliä. Sanomme, että kieli A palautuu polynomisesti kieleen B, ja kirjoitamme A P B, jos jollain polynomisessa ajassa laskettavalla funktiolla f on ominaisuus w A f(w) B kaikilla w Σ. Tällöin f on polynominen palautus kielestä A kieleen B. 298

f B A fa A fa B Σ Σ Kielen A polynominen palautus f kieleen B. 299

Edellisten määritelmien keskeinen sovellus on seuraava: Lause 5.18: [Sipser Thm. 7.31] Jos A P B ja B P, niin A P. Todistus: Olkoon f funktio, jolla w A f(w) B, kuten palautuksen määritelmässä. Nyt kieli A voidaan tunnistaa seuraavalla algoritmilla: 1. Syötteellä w laske ensin z = f(w). 2. Jos z B, niin hyväksy. Jos z B, niin hylkää. Funktiota f koskevasta oletuksesta seuraa, että algoritmi hyväksyy, jos w A, ja hylkää, jos w A. Jos f on polynominen palautus, eli lisäksi laskettavissa polynomisessa ajassa, niin algoritmin askel 1 voidaan tehdä polynomisessa ajassa. Jos lisäksi B P, niin myös askel 2 voidaan tehdä polynomisessa ajassa. 300

Määritelmä 5.19: Kieli B on NP-täydellinen (NP-complete), jos B NP ja kaikilla A NP pätee A P B. Edellä mainitut ongelmat HAMPATH, CLIQUE ja SAT voidaan kaikki osoittaa NP-täydellisiksi. Lause 5.20: [Sipser Thm. 7.35] Jos B on NP-täydellinen ja B P, niin P = NP. Todistus: Seuraa suoraan määritelmästä ja lauseesta 5.18. Intuitiivisesti NP-täydelliset ongelmat ovat luokan NP vaikeimpia mahdollisia ongelmia: Jos yhdellekin sellaiselle löytyisi polynomisessa ajassa toimiva algoritmi, tästä seuraisi heti P = NP. Kääntäen jos P NP, niin erityisesti NP-täydelliset ongelmat jäävät luokan P ulkopuolelle. 301

Cookin-Levinin lause seuraa nyt seuraavasta tuloksesta: Lause 5.21: [Sipser Thm. 7.37] SAT on NP-täydellinen. Todistuksen perusidea: Olkoon A NP. Siis A = L(N) jollain polynomisessa ajassa toimivalla epädeterministisellä Turingin koneella N. Koneen N rakenteen perusteella muodostetaan polynomisessa ajassa laskettava funktio f N. Funktion arvo f N (w) on propositiokaava, joka simuloi koneen N laskentaa syötteellä w. Jos koneella on hyväksyvä laskenta, niin f N (w) on toteutuva, muuten ei. Kaavan f N (w) muodostamisen yksityiskohdat ovat jossain määrin teknisiä. Kun SAT on todistettu NP-täydelliseksi, voidaan tämän avulla todistaa (hieman) kevyemmällä tekniikalla monien muiden ongelmien NP-täydellisyys. NP-täydellisiä ongelmia tunnetaan satoja (ellei tuhansia). Ne liittyvät verkkoihin, logiikkaan, pakkausongelmiin ja lukuisiin muihin yleisiin ja erityisiin sovelluksiin. NP-täydelliset ongelmat ovat tehokkaan laskettavuuden rajamailla, joten niiden algoritmiikka on haastavaa. Asiaa käsitellään mm. kursseilla Algoritmien suunnittelu ja analyysi, Diskreetti optimointi. 302

Lopuksi Kurssin sisältöä voidaan tarkastella kahdesta näkökulmasta: 1. Perustiedot formaaleista kielistä ja niiden tunnistamisesta; esim. kielen määritteleminen äärellisen automaatin, säännöllisen lausekkeen tai yhteydettömän kieliopin avulla, em. formalismien väliset yhteydet, Turingin kone yleisenä algoritmin mallina ja laskennallisen vaikeuden perustulokset (ratkeamattomuus, NP-täydellisyys) 2. Johdatus tietojenkäsittelyteoriaan ja sen metodiikkaan; erityisesti matematiikan soveltaminen laskennan mallintamiseen ja miten väitteet perustellaan täsmällisesti. Käydään lyhyesti läpi kurssin sisältöä tältä kannalta. 303

Säännölliset kielet Käytännön ohjelmoinnissa hyödyllistä: tilasiirtymäkone laskennan mallina säännölliset lausekkeet ja äärelliset automaatit Teoreettisia ajatusmalleja: epädeterministinen laskenta mallien väliset konversiot (esim. NFA DFA) laskulaitteen ja kuvausformalismin ekvivalenssi (DFA vs. säännöllinen lauseke) luokan sulkeumaominaisuudet mahdottomuustodistukset (pumppauslemma) 304

Yhteydettömät kielet Käytännön ohjelmoinnissa hyödyllistä: kielen kuvaaminen kieliopilla jäsentämisen peruskäsitteet, erityisesti jäsennyspuu Teoreettisia ajatusmalleja: samat kuviot kuin säännöllisillä kielillä, teknisesti haastavammassa tilanteessa Algoritmisia tekniikoita: iteratiiviset algoritmit (nollautuvat muuttujat jne.) CYK-algoritmi ja taulukointi 305

Laskettavuus ja laskennan vaativuus Tärkeitä peruskäsitteitä: Churchin-Turingin teesi; universaali Turingin kone ratkeamattomat ongelmat polynominen aikavaativuus NP-täydelliset ongelmat Todistustekniikoita yms.: ratkeamattomuustodistukset laskennan aikavaativuuden mallintaminen polynomisesti ekvivalentit laskennan mallit (esim. yksi- vs. moninauhainen Turingin kone) epädeterministinen aikavaativuus; polynominen palautus. 306

Muista antaa kurssipalaute! Loppu 307