Esimerkkejä polynomisista ja ei-polynomisista ongelmista



Samankaltaiset tiedostot
3. Laskennan vaativuusteoriaa

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

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

Algoritmi on periaatteellisella tasolla seuraava:

3. Laskennan vaativuusteoriaa

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

Muita vaativuusluokkia

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:

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Turingin koneen laajennuksia

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

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

6. Approksimointialgoritmit

Laskennan vaativuus ja NP-täydelliset ongelmat

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

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

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

Lisää pysähtymisaiheisia ongelmia

10. Satunnaisalgoritmit

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Algoritmit 1. Luento 2 Ke Timo Männikkö

Rekursiiviset palautukset [HMU 9.3.1]

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Algoritmit 1. Luento 1 Ti Timo Männikkö

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

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

1.4 Funktioiden kertaluokat

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

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

Algoritmien suunnittelu ja analyysi

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

A TIETORAKENTEET JA ALGORITMIT

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

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

6.1 Rekursiiviset palautukset

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Algoritmit 2. Luento 14 To Timo Männikkö

Diskreetit rakenteet

Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

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

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Johdatus graafiteoriaan

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Täydentäviä muistiinpanoja laskennan rajoista

7.4 Sormenjälkitekniikka

4.3. Matemaattinen induktio

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 1. Luento 9 Ti Timo Männikkö

Yhteydettömän kieliopin jäsennysongelma

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmin määritelmä [Sipser luku 3.3]

Algoritmit 1. Luento 13 Ma Timo Männikkö

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

SAT-ongelman rajoitetut muodot

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Nopea kertolasku, Karatsuban algoritmi

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Formalisoidaan hieman täsmällisemmin, millaisia suoritustakuita satunnaisalgoritmeilta voidaan vaatia.

Verkon värittämistä hajautetuilla algoritmeilla

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja

Algoritmit 2. Luento 1 Ti Timo Männikkö

Lyhin kahden solmun välinen polku

Pienin virittävä puu (minimum spanning tree)

Laskennan teoria

10. Painotetut graafit

811120P Diskreetit rakenteet

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

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

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

5.3 Ratkeavia ongelmia

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

Rajoittamattomat kieliopit

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 1. Demot Timo Männikkö

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

2.2.1 Ratkaiseminen arvausta sovittamalla

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Alaraja vertailuihin perustuvalle järjestämiselle

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 2. Luento 9 Ti Timo Männikkö

Transkriptio:

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia (nähdään helposti) pääkysymys: mitkä niistä ratkeavat polynomisessa ajassa osoittautuu, että tämä on yllättävän vaikea kysymys Kuten ratkeavuustarkasteluissa, meidän pitää tehdä joitain teknisiä esitysmuoto-oletuksia. luokat P, PSPACE jne. määritelty luokkina formaaleja kieliä ts. formaalisti ongelmien syötteet ovat merkkijonoja käytännön ongelmissa syötteet ovat verkkoja, loogisia kaavoja, joukkoja jne. täytyy sopia syötteiden esittämisestä merkkijonoina 162

Esimerkki: suunnattu verkko Kurssilla Tietorakenteet opittuun tapaan suunnattu verkko G = (V, E) voidaan esittää esim. vierusmatriisina tai vieruslistana. a b V = { a, b, c } E = { (a, b), (a, c), (c, a) } c Vierusmatriisi A 1 2 3 1 0 1 1 2 0 0 0 3 1 0 0 a = v 1, b = v 2, c = v 3 A(i, j) = 1 joss (v i, v j ) E Vieruslista ((2, 3), (), (1)) Alilista i sisätää ne j joilla (v i, v j ) E Vierusmatriisi tai vieruslista voidaan esittää merkkijonona sillä tavalla kuin tällaisia rakenteita koodataan esim. ASCII-jonoiksi normaalisssa ohjelmoinnissa. 163

kun sanomme että jokin esim. verkkoja koskeva päätösongelma ratkeaa polynomisessa ajassa, tarkoitamme että vastaava merkkijonoesityksistä koostuva formaali kieli kuuluu luokkaan P jatkossa ei kiinnitetä huomiota esitystavan yksityiskohtiin, vaan oletetaan se tehdyksi jollain järkevällä tavalla lopputulos on, että muodollinen määritelmä on sama kuin esim. kurssilta Tietorakenteet tuttu polynominen aikavaativuus pitää kuitenkin muistaa, että aikavaativuus määritellään syötteen pituuden suhteen järkevä pitää sisällään sen, että syötteen koko ei kasva liikaa Huom. tärkeä erikoistapaus: luonnollisen luvun n koodin pituus on O(log n) (esim. binääriesitys log 2 n + 1 bittiä) 164

Esimerkkejä verkko-ongelmista vierusmatriisiesityksen koko on O(n 2 ), vieruslistaesityksen koko O(n + m) = O(n 2 ) missä n = V ja m = E (huom. m = O(n 2 )) verkon tapauksessa oletetaan, että syötteen pituus on polynominen verkon solmujen lukumäärän n suhteen siis ongelmaa vastaavan formaalin kielen kuuluminen luokkaan P tarkoittaa samaa kuin että ongelma ratkeaa solmujen lukumäärän n suhteen polynomisessa ajassa Kurssilla Tietorakenteet opitun perustella esim. seuraavat ongelmat ratkeavat polynomisessa ajassa: onko suunnatussa (tai suuntaamattomassa) verkossa G polku solmusta u solmuun v (syvyyssuuntainen etsintä O(n + m)) onko painotetussa verkossa G solmusta u solmuun v polku, jonka kustannus on korkeintaan c (Dijkstran algoritmi O(n log n + m)) Huom. nämä on tässä muotoiltu päätösongelmina; palaamme pian kysymykseen etsintä- ja optimointiongelmista 165

Eulerin kehä Verkko Eräs Eulerin kehä Eulerin kehä on polku, joka käyttää verkon jokaista kaarta tasan kerran ja palaa lähtöpisteeseensä Kysymys Onko annetussa suuntaamattomassa verkossa Eulerin kehä? ratkeaa polynomisessa ajassa perustuu havaintoon, että Eulerin kehä on olemassa, jos ja vain jos verkko on yhtenäinen ja jokaisen solmun aste on parillinen (Euler 1736) 166

Hamiltonin kehä (Hamiltonian Circuit, HC) Verkko Eräs Hamiltonin kehä Hamiltonin kehä on polku, joka käy jokaisessa solmussa tasan kerran ja palaa lähtöpisteeseensä Ongelmalle Onko annetussa suuntaamattomassa verkossa Hamiltonin kehä? ei tunneta polynomisessa ajassa toimivaa algoritmia Pidetään luultavana, ettei tällaista algoritmia ole olemassa, eli että HC P 167

Hamiltonin kehä -ongelmalle on seuraava naiivi ratkaisualgoritmi: Olkoon G = (V, E) missä V = { v 1,..., v n }. Toista kaikilla jonon (v 1, v 2, v 3,..., v n ) permutaatioilla (u 1, u 2, u 3,..., u n ): Jos (u j, u j+1 ) E kun j = 1,..., n 1 ja (u n, u 1 ) E niin palauta kyllä Palauta ei. toimii selvästi polynomisessa tilassa; siis HC PSPACE tarkistettavia permutaatioita n! kappaletta, yhden tarkistus selvästi polynomisessa ajassa (n/2) n/2 n! n n Siis HC E, mutta tämän algoritmin aikavaativuus ei polynominen HC on NP-täydellinen ongelma, mistä lisää pian 168

Päätösongelmaan HC liittyy myös ilmeinen etsintäongelma: Syöte: suuntaamaton verkko G = (V, E) Tuloste: jokin verkon G Hamiltonin kehä H E jos olemassa; ei ole muuten ol. funktio HC(G) ratkaisee Hamiltonin kehä -ongelman, ts. palauttaa tosi joss verkossa G on Hamiltonin kehä seuraava algoritmi ratkaisee vastaaavan etsintäongelman: /* Olkoon E = { e 1,..., e m }. */ H := E; for i := 1 to m do if HC(V, H { e i }) then H := H { e i }; return H. erityisesti jos HC P niin etsintäongelma ratkeaa polynomisessa ajassa tosin luultavasti HC P jolloin etsintäongelmakaan ei tietysti ratkea polynomisessa ajassa 169

Alkulukutestaus luonnollinen luku n 2 on alkuluku jos luvun n ainoat tekijät ovat 1 ja n PRIMES = { n n alkuluku } ongelmalle PRIMES on äskettäin löydetty polynomisessa ajassa toimiva ratkaisualgoritmi ( PRIMES is in P, M. Agrawal, N. Kayal ja N. Saxena, 2002) aikavaativuuspolynomi on korkeaa astetta, käytännössä aiemmat satunnaisuuteen perustuvat algoritmit saattavat olla parempia huom. ongelma on testata luku n sen pituuden O(log n) suhteen polynomisessa ajassa; itse luvun n suhteen polynominen aika saavutetaan triviaalisti (mikä ei auta jos n on esim. 1000-bittinen) tässä tapauksessa etsintäongelma näyttäisi olevan vaikeampi kuin päätösongelma: edelleenkään ei osata tehokkaasti jakaa lukua alkutekijöihin tehokas algoritmi tekijöihin jaolle murtaisi monet salausmenetelmät 170

Yleistetty tammipeli Annettu: mielivaltainen pelitilanne n n tammilaudalla Kysymys: voiko musta pelaaja pakottaa voiton itselleen Ongelma ratkeaa eksponentiaalisessa ajassa ja polynomisessa tilassa tietyillä tasapelisäännöillä; ratkeavuus polynomisesta ajassa avoin (veikkaus: ei) Yleistetty go-peli Annettu: mielivaltainen pelitilanne n n go-laudalla Kysymys: voiko musta pelaaja pakottaa voiton itselleen Ongelma ratkeaa eksponentiaalisessa mutta ei polynomisessa ajassa; ratkeavuus polynomisessa tilassa avoin 171

Epädeterministiset vaativuusluokat Äskeisten esimerkkien jälkeen palataan nyt teorian kehittelyyn. halutaan määritellä epädeterministisen Turingin koneen aika- ja tilavaativuus epädeterministinen aikavaativuus hyödyllinen käsite ongelmien analysoimisessa; ei realistinen mitta ongelman ratkaisuajalle oikeilla tietokoneilla yksittäisen laskennan aika- ja tilavaativuus voidaan määritellä kuten deterministisessä tapauksessa epädeterministisellä koneella N voi syötteellä x olla useita laskentoja, joten määritellään time N (x) = pisimmän koneen N laskennan pituus syötteellä x space N (x) = eniten tilaa vievän koneen N laskennan tilavaativuus syötteellä x 172

pahimman tapauksen aikavaativuus time N (n) jne. kuten ennen pisin laskenta ja eniten tilaa voivat vaikuttaa oudoilta valinnoilta, mutta tällä ei itse asiassa ole suurta merkitystä: Lause Jos A = L(N) missä N on yksinauhainen epädeterministinen Turingin kone ja jokaisella x A koneen N lyhimmän hyväksyvän laskennan pituus on O( x k ), niin A = L(N ) missä N on yksinauhainen epädeterministinen Turingin kone ja time N (x) = O( x 2k ). Todistushahmotelma Muodostetaan ensin kaksinauhainen N, joka aluksi kirjoittaa kakkosnauhalle O( x k ) nollaa ja sen jälkeen simuloi konetta N käyttäen kakkosnauhaa käskylaskurina (vrt. harj. 4. teht. 5.) Tämä kaksinauhainen kone toimii ajassa O(n k ), joten sitä voidaan simuloida yksinauhaisella ajassa O(n 2k ). 173