Algoritmit 2. Luento 13 Ti Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

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:

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

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

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

6. Approksimointialgoritmit

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Muita vaativuusluokkia

Algoritmit 2. Luento 2 Ke Timo Männikkö

3. Laskennan vaativuusteoriaa

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

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

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

Algoritmit 2. Luento 1 Ti Timo Männikkö

Kombinatorinen optimointi

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

6.1 Rekursiiviset palautukset

Algoritmit 2. Luento 3 Ti Timo Männikkö

3. Laskennan vaativuusteoriaa

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

10. Satunnaisalgoritmit

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Datatähti 2019 loppu

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

SAT-ongelman rajoitetut muodot

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 2. Luento 8 To Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Onko algoritmiselle ongelmalle löydetty ratkaisualgoritmi riittävän hyvä?

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

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

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

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 1. Demot Timo Männikkö

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Algoritmit 1. Luento 7 Ti Timo Männikkö

4.3. Matemaattinen induktio

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

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

Johdatus matematiikkaan

Polynomiset palautukset ja NP-täydellisyys

Algoritmi on periaatteellisella tasolla seuraava:

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

Algoritmit 2. Luento 4 To Timo Männikkö

Johdatus graafiteoriaan

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

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Verkon värittämistä hajautetuilla algoritmeilla

Tietorakenteet, laskuharjoitus 7, ratkaisuja

isomeerejä yhteensä yhdeksän kappaletta.

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

Algoritmit 2. Demot Timo Männikkö

Seminaari: Hajautetut algoritmit syksy 2009

Säännöllisen kielen tunnistavat Turingin koneet

Tietotekniikan valintakoe

1.4 Funktioiden kertaluokat

Tehtävä 1. Päättele resoluutiolla seuraavista klausuulijoukoista. a. 1 {p 3 } oletus. 4 {p 1, p 2, p 3 } oletus. 5 { p 1 } (1, 2) 7 (4, 6)

Algoritmit 2. Luento 4 Ke Timo Männikkö

Transkriptio:

Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö

Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 2/35

Merkkijonon sovitus Merkkijono taulukossa T, pituus n Yksittäinen merkki T [i], missä 0 i n 1 Alimerkkijono T [i..j], missä 0 i j n 1 Mallimerkkijono P, pituus m Tehtävä: Löytyykö P merkkijonosta T Toisin sanoen: Onko jollain i T [i.. i + m 1] = P[0.. m 1] Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 3/35

Merkkijonon sovitus Raa an voiman menetelmä: Etsitään P:tä merkki kerrallaan T :n ensimmäisestä merkistä alkaen Ellei löydy, etsitään T :n toisesta merkistä alkaen Jne. Pahimman tapauksen aikavaativuus Θ(nm) Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 4/35

Merkkijonon sovitus sovitus(t, p) { for (i = 0; i < n-m+1; i++) { j = 0; while ( j < m && t[i+j] == p[j]) j++; if (j == m) return i; } return -1; // ei löytynyt } Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 5/35

Merkkijonon sovitus Tehokkaampia menetelmiä: Esikäsitellään mallimerkkijono Kerätty tieto tallennetaan aputaulukkoon Aputaulukon tietoa käytetään hyväksi varsinaisessa sovitusvaiheessa Esimerkiksi: Horspoolin algoritmi Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 6/35

Horspoolin algoritmi Mallimerkkijono P asetetaan merkkijonon T alkuun Tarkastellaan P:tä lopusta alkaen Jos kaikki merkit täsmäävät, P löytyi Muuten P:tä siirretään eteenpäin (oikealle) Siirto voi olla useampia askeleita Jatketaan kunnes P löytyy tai kunnes tullaan T :n loppuun Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 7/35

Horspoolin algoritmi Mallimerkkijonon siirto: Siirto tehdään mahdollisimman pitkälle siten, että mahdollista sopivaa alimerkkijonoa ei kuitenkaan ohiteta Siirron suuruus päätetään siitä T :n merkistä, jota sovitettiin P:n viimeiseen merkkiin Useita eri tapauksia Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 8/35

Horspoolin algoritmi Tapaus: Mallimerkkijonossa ei ole lainkaan sovitettavaa merkkiä (tässä esimerkissä d): a b c a c b d x x x x x a c a c c Siirretään koko P:n pituuden verran: a b c a c b d x x x x x a c a c c Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 9/35

Horspoolin algoritmi Tapaus: Mallimerkkijonossa on sovitettava merkki, mutta ei viimeisen merkin kohdalla: a b c a c b d x x x x x a c d c c Siirretään vastaava oikeanpuoleisin merkki viimeisen merkin kohdalle (kaksi askelta): a b c a c b d x x x x x a c d c c Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 10/35

Horspoolin algoritmi Tapaus: Vain osa merkeistä täsmää, ja viimeistä merkkiä ei esiinny P:ssä muualla: a b c a c b d x x x x x a c a b d Siirretään koko P:n pituuden verran: a b c a c b d x x x x x a c a b d Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 11/35

Horspoolin algoritmi Tapaus: Vain osa merkeistä täsmää, ja viimeinen merkki esiintyy P:ssä muualla: a b c a c b d x x x x x a c d b d Oikeanpuoleisin merkki (P:n viimeistä merkkiä huomioimatta) viimeisen merkin kohdalle: a b c a c b d x x x x x a c d b d Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 12/35

Horspoolin algoritmi Siirtymät lasketaan etukäteen taulukkoon Taulukko indeksoidaan kaikilla mahdollisilla tekstissä ja mallissa esiintyvillä merkeillä Merkin c siirtymä: s(c) = mallimerkkijonon pituus m, jos c ei esiinny mallin (m 1):n ensimmäisen merkin joukossa s(c) = oikeanpuoleisimman merkin c etäisyys mallin viimeiseen merkkiin, jos c on (m 1):n ensimmäisen merkin joukossa Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 13/35

Esimerkki Mallimerkkijono: a c a b d Pituus m = 5, merkkien lukumäärä k = 4 Siirtymätaulukko: a b c d s 2 1 3 5 Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 14/35

Horspoolin algoritmi 1. Muodostetaan siirtymätaulukko 2. Mallimerkkijono tekstin alkua vasten 3. Toistetaan kunnes haettu merkkijono löytyy tai malli siirtyy tekstin lopun ohi: Alkaen mallin viimeisestä merkistä verrataan mallin ja tekstin merkkejä Jos eri merkit, haetaan siirtymätaulukosta vastaava siirtymä Siirtymän määrää tekstissä mallin viimeisen merkin kohdalla oleva merkki Siirretään mallia oikealle siirtymän verran Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 15/35

Esimerkki Merkkijono: a a b b a a b a b Mallimerkkijono: a b a b Siirtymätaulukko: a b s 1 2 Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 16/35

Esimerkki jatkuu a a b b a a b a b a b a b a a b b a a b a b a b a b a a b b a a b a b a b a b a a b b a a b a b a b a b Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 17/35

Horspoolin algoritmi Merkkijono t, pituus n Mallimerkkijono p, pituus m Merkistön merkkien lukumäärä k Siirtymätaulukko s, pituus k Siirtymätaulukon muodostaminen: for (i = 0; i < k; i++) s[i] = m; for (j = 0; j < m-1; j++) s[p[j]] = m - 1 - j; Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 18/35

Horspoolin algoritmi Mallimerkkijonon sovitus: i = m - 1; while (i < n) { j = 0; while (j < m && p[m-1-j] == t[i-j]) j = j + 1; if (j == m) return i-m+1; else i = i + s[t[i]]; } return -1; Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 19/35

Horspoolin algoritmi Pahimman tapauksen aikavaativuus Θ(nm) Satunnaisella tekstillä huomattavasti nopeampi kuin raa an voiman algoritmi Käytännössä lähes Θ(n) Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 20/35

Kauppamatkustajan ongelma Tehtävä: Etsi lyhin reitti, joka käy täsmälleen kerran jokaisessa n:ssä kaupungissa Triviaaliratkaisu: Tutkitaan kaikki reitit Mutta: Mahdollisten reittien lukumäärä kertaluokkaa n! Käytännössä tehtävä voidaan ratkaista näin vain pienellä n Tietokoneiden tehon kasvattaminen ei auta, sillä lukumäärä kasvaa ylieksponentiaalisesti Kombinatorinen räjähdys Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 21/35

Laskennallinen vaativuus Algoritmi ratkaisee ongelman polynomisessa ajassa, jos pahimman tapauksen aikavaativuus on Θ(p(n)), missä p polynomi Ratkeava ongelma: Voidaan ratkaista polynomisessa ajassa Ratkeamaton ongelma: Ei voida ratkaista polynomisessa ajassa Kauppamatkustajan ongelmalle ei tunneta polynomisia algoritmeja Onko sellaisia olemassa? Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 22/35

Päätösongelmat Joukon S päätösongelma: Kuuluuko annettu syöttötieto x joukkoon S Vastaus joko kyllä tai ei (joko 1 tai 0) Yleisesti x ja S:n alkiot voidaan esittää bittijonoina Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 23/35

Päätösongelmat Esimerkkejä: Onko annettu binääriluku parillinen: S = {parillisten lukujen binääriesitykset} Onko annettu binääriluku alkuluku: S = {alkulukujen binääriesitykset} Sisältääkö annettu verkko Hamiltonin kehän (= verkon silmukka, joka kulkee täsmälleen kerran jokaisen solmun kautta): S = {Hamiltonin kehän sisältävien verkkojen binääriesitykset} Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 24/35

Aikavaativuus Aikavaativuusfunktiot: time A (x) = Algoritmin A syötteellä x suorittamien laskenta-askelten lukumäärä time A (n) = max{time A (x) : x = n} ( x syöttötiedon koko tai pituus) Polynominen algoritmi: Aikavaativuutta time A (n) rajoittaa jokin n:n polynomi Vaativuusluokka P: P = { päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla } Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 25/35

Epädeterministinen algoritmi Vaikka ongelman ratkaiseminen on vaikeaa, voi annetun ratkaisun tarkistaminen olla helppoa Esimerkkejä: Hamiltonin kehä -ongelma: Verkon solmuille arvataan oikea järjestys Helppo tarkistaa, että muodostuu Hamiltonin kehä Yhdistettyjen lukujen tunnistamisongelma: Luvun x tekijät y ja z arvataan Helppo tarkistaa, että x = yz Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 26/35

Epädeterministinen algoritmi Epädeterministinen arvausvaihe : Muodostetaan päätösongelman esiintymälle ratkaisuehdotus Deterministinen tarkistusvaihe : Tarkistetaan deterministisellä algoritmilla, onko ratkaisuehdotus esiintymän ratkaisu Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 27/35

Epädeterministinen algoritmi Epädeterministinen algoritmi ratkaisee päätösongelman Ongelman jokaiselle kyllä-esiintymälle se palauttaa vastauksen kyllä jollakin suorituksella Epädeterministinen algoritmi on epädeterministinen polynominen algoritmi, jos tarkistusvaihe toimii polynomiajassa Vaativuusluokka NP: NP = { päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla } Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 28/35

NP-luokan ongelmia Propositiologiikan toteutuvuusongelma (SAT): Onko proposiotiolause toteutuva, ts. onko olemassa sellaista totuusjakaumaa joka tekee lauseesta toden Kauppamatkustajan päätösongelma (TSP): Sisältääkö verkko Hamiltonin kehän, jonka pituus on enintään k Kauppamatkustajan ongelma: Etsi Hamiltonin kehä, jonka pituus on minimaalinen Tämä ei ole päätösongelma, vaan optimointiongelma Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 29/35

NP-luokan ongelmia Solmupeiteongelma (VC): Sisältääkö verkko enintään k:n solmun solmupeitteen (solmujoukko, joka peittää jokaisesta kaaresta ainakin toisen päätesolmun) Riippumaton joukko -ongelma (IS): Sisältääkö verkko vähintään k riippumatonta solmua (solmujoukko, jonka solmujen välillä ei ole yhtään kaarta) Klikkiongelma (CLIQUE): Sisältääkö verkko vähintään k:n solmun muodostaman klikin (solmujoukko, jonka kaikkien solmuparien välillä on kaari) Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 30/35

Vaativuusluokat Selvästi P NP On olemassa NP-ongelmia, joille ei tunneta polynomisia algoritmeja On olemassa myös ongelmia, jotka eivät kuulu joukkoon NP Onko P = NP? Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 31/35

Polynominen palautus Päätösongelma T 1 on polynomisesti muunnettavissa päätösongelmaksi T 2, jos on olemassa funktio f, joka muuntaa T 1 :n esiintymän T 2 :n esiintymäksi siten, että f kuvaa T 1 :n jokaisen kyllä-esiintymän T 2 :n kyllä-esiintymäksi ja jokaisen T 1 :n ei-esiintymän T 2 :n ei-esiintymäksi f on laskettavissa polynomisessa ajassa Tällöin merkitään T 1 p T 2 Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 32/35

Polynominen palautus T 1 p T 2 Palautusfunktio f muuntaa ongelman T 1 syötetapaukset x ongelman T 2 vastaaviksi tapauksiksi f (x) T 1 on yksinkertaisempi kuin T 2 Jos T 2 voidaan ratkaista polynomisessa ajassa, myös T 1 voidaan ratkaista polynomisessa ajassa Esimerkiksi: VC p IS p CLIQUE Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 33/35

NP-täydellisyys Määritelmä: Ongelma T on NP-täydellinen, jos T NP S p T kaikilla S NP Lemma: Ongelma T on NP-täydellinen, jos T NP S p T jollakin NP-täydellisellä S Kaikki edellä esitetyt ongelmat (SAT, TSP, VC, IS, CLIQUE) ovat NP-täydellisiä Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 34/35

NP-täydelliset ongelmat Luokan NP vaikeimmat ongelmat Jos jokin niistä pystytään ratkaisemaan polynomisessa ajassa, kaikki NP-luokan ongelmat pystytään ratkaisemaan polynomisessa ajassa Jos ongelman koko ei ole suuri, voidaan käydä läpi kaikki ratkaisuvaihtoehdot Muuten käytetään esim. heuristisia algoritmeja ja tyydytään tarpeeksi hyvään ratkaisuun Algoritmit 2 Kevät 2017 Luento 13 Ti 2.5.2017 35/35