Algoritmit 2. Luento 14 To Timo Männikkö

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

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 8 To Timo Männikkö

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

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

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

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

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

6. Approksimointialgoritmit

Algoritmit 2. Luento 6 To Timo Männikkö

Laskennan vaativuus ja NP-täydelliset ongelmat

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 2. Luento 4 Ke Timo Männikkö

Muita vaativuusluokkia

3. Laskennan vaativuusteoriaa

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

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. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

1.4 Funktioiden kertaluokat

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

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

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 2. Demot Timo Männikkö

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

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

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

6.1 Rekursiiviset palautukset

Algoritmit 2. Luento 13 Ti Timo Männikkö

3. Laskennan vaativuusteoriaa

Algoritmit 2. Demot Timo Männikkö

Kombinatorinen optimointi

Algoritmit 2. Luento 12 To Timo Männikkö

10. Painotetut graafit

10. Satunnaisalgoritmit

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 2. Luento 11 Ti 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

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

SAT-ongelman rajoitetut muodot

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

Tietorakenteet ja algoritmit - syksy

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

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 2. Luento 9 Ti Timo Männikkö

4. Joukkojen käsittely

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

isomeerejä yhteensä yhdeksän kappaletta.

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

5 Kertaluokkamerkinnät

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

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

4 Tehokkuus ja algoritmien suunnittelu

Dominointianalyysi. Teppo Niinimäki. Helsinki Approksimointialgoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

13 Lyhimmät painotetut polut

Verkon värittämistä hajautetuilla algoritmeilla

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Nopea kertolasku, Karatsuban algoritmi

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

A TIETORAKENTEET JA ALGORITMIT

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Johdatus graafiteoriaan

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

Polynomiset palautukset ja NP-täydellisyys

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

Transkriptio:

Algoritmit 2 Luento 14 To 2.5.2019 Timo Männikkö

Luento 14 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydelliset ongelmat Kertaus ja tenttivinkit Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 2/36

Kauppamatkustajan ongelma Tehtävä: Etsi lyhin reitti, joka käy täsmälleen kerran jokaisessa n:ssä kaupungissa Triviaaliratkaisu: Tutkitaan kaikki reitit Mutta: Jos jokaisen kaupunkiparin välillä on tie, mahdollisia reittejä on (n 1)! kappaletta Käytännössä tehtävä voidaan ratkaista näin vain pienellä n Tietokoneiden tehon kasvattaminen ei auta, sillä reittien lukumäärä kasvaa ylieksponentiaalisesti Kombinatorinen räjähdys Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 3/36

Laskennallinen vaativuus Algoritmi ratkaisee ongelman polynomisessa ajassa, jos pahimman tapauksen aikavaativuus on Θ(p(n)), missä p(n) on polynomi Ratkeava ongelma: Voidaan ratkaista polynomisessa ajassa Ratkeamaton (tai huonosti ratkeava) ongelma: Ei voida ratkaista polynomisessa ajassa Kauppamatkustajan ongelmalle ei tunneta polynomisia algoritmeja Onko sellaisia olemassa? Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 4/36

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: x {0, 1} ja S {0, 1} Indikaattorifunktio 1 S : {0, 1} {0, 1} { 1, kun x S 1 S (x) = 0, kun x / S Lasketaan funktion 1 S arvo annetulla x Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 5/36

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 (= silmukka, joka kulkee täsmälleen kerran jokaisen solmun kautta): S = {Hamiltonin kehän sisältävien verkkojen binääriesitykset} Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 6/36

Aikavaativuus Aikavaativuusfunktiot: time A (x) = Algoritmin A syötteellä x suorittamien laskenta-askelien lukumäärä time A (n) = max{time A (x) x = n} ( x syötteen koko tai pituus) Polynominen algoritmi: Aikavaativuusfunktiota time A (n) rajoittaa jokin n:n polynomi Vaativuusluokka P: P = { päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla } Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 7/36

Epädeterministinen algoritmi Vaikka ongelman ratkaiseminen on vaikeaa, voi annetun ratkaisun tarkastaminen olla helppoa Esimerkkejä: Hamiltonin kehä -ongelma: Verkon solmuille arvataan oikea järjestys Helppo tarkastaa, muodostuuko Hamiltonin kehä Yhdistettyjen lukujen tunnistamisongelma: Luvun x tekijät y ja z arvataan Helppo tarkastaa, onko x = yz Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 8/36

Epädeterministinen algoritmi Epädeterministinen arvausvaihe : Muodostetaan päätösongelman esiintymälle ratkaisuehdokas Deterministinen tarkastusvaihe : Tarkastetaan deterministisellä algoritmilla, onko ratkaisuehdokas esiintymän ratkaisu Deterministinen = Algoritmin askeleet määräävät jokaisessa tilanteessa suoritettavat toiminnot yksikäsitteisesti Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 9/36

Epädeterministinen algoritmi Epädeterministinen algoritmi ratkaisee päätösongelman, jos se palauttaa ongelman jokaiselle kyllä-esiintymälle vastauksen kyllä jollain algoritmin suorituksella Epädeterministinen algoritmi on epädeterministinen polynominen algoritmi, jos tarkastusvaihe toimii polynomisessa ajassa Vaativuusluokka NP: NP = { päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla } Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 10/36

Vaativuusluokat Selvästi P NP Polynominen ratkaisualgoritmi kelpaa tarkastusvaiheen deterministiseksi algoritmiksi 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 2019 Luento 14 To 2.5.2019 11/36

NP-luokan ongelmia Propositiologiikan toteutuvuusongelma (SAT): Onko propositiolause 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 korkeintaan k Kauppamatkustajan ongelma: Etsi Hamiltonin kehä, jonka pituus on minimaalinen Tämä ei ole päätösongelma, vaan optimointiongelma Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 12/36

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 2019 Luento 14 To 2.5.2019 13/36

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ät T 2 :n esiintymiksi 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 2019 Luento 14 To 2.5.2019 14/36

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 T 2 on ainakin yhtä vaikea kuin T 1 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 2019 Luento 14 To 2.5.2019 15/36

NP-täydellisyys Määritelmä: Ongelma T on NP-täydellinen, jos T NP S p T kaikilla S NP Ongelma T on NP-luokan ongelma Jokainen NP-luokan ongelma voidaan palauttaa polynomisesti ongelmaksi T Osoittaminen NP-täydelliseksi suoraan määritelmästä hankalaa: Polynominen palautus pitäisi osoittaa kaikille NP-luokan ongelmille Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 16/36

NP-täydellisyys Lemma: Ongelma T on NP-täydellinen, jos T NP S p T jollain NP-täydellisellä S Todistus: Olkoon S p T jollain NP-täydellisellä S Määritelmän mukaan S p S kaikilla S NP S p T kaikilla S NP T on NP-täydellinen Osoittaminen NP-täydelliseksi lemman avulla: Etsitään jokin S, joka on jo todistettu NP-täydelliseksi, ja osoitetaan että S p T Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 17/36

NP-täydelliset ongelmat Kaikki edellä mainitut NP-luokan ongelmat (SAT, TSP, VC, IS, CLIQUE) ovat NP-täydellisiä Yleisesti NP-täydelliset ongelmat ovat luokan NP vaikeimmat ongelmat Jos jokin niistä pystyttäisiin ratkaisemaan polynomisessa ajassa, kaikki NP-luokan ongelmat pystyttäisiin ratkaisemaan polynomisessa ajassa Toistaiseksi NP-täydellisille ongelmille ei ole löydetty polynomisia algoritmeja, mutta ei ole myöskään osoitettu, että sellaisia ei voisi olla olemassa Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 18/36

NP-täydelliset ongelmat NP-kovat ongelmat: Voimassa NP-täydellisyyden määritelmän ehto S p T kaikilla S NP Ainakin yhtä vaikeita kuin NP-luokan vaikeimmat ongelmat, mutta eivät välttämättä NP-luokan ongelmia Useimmat NP-täydelliset päätösongelmat voidaan muotoilla vastaavanlaisiksi optimointiongelmiksi Yleensä ainakin yhtä vaikeita kuin vastaavat päätösongelmat, joten myös ne luokitellaan NP-koviksi, vaikka eivät olekaan päätösongelmia Esimerkiksi kauppamatkustajan päätösongelma TSP ja vastaava kauppamatkustajan ongelma Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 19/36

NP-täydelliset ongelmat NP-täydellisten tai NP-kovien ongelmien ratkaiseminen: Jos ongelman koko ei ole suuri, voidaan käydä läpi kaikki ratkaisuvaihtoehdot Käytetään samalla peruutusmenetelmän tai rajoitehakumenetelmän tyyppistä vaihtoehtojen karsintaa Muuten käytetään esimerkiksi polynomisessa ajassa toimivia heuristisia algoritmeja ja tyydytään vain tarpeeksi hyvään ratkaisuun Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 20/36

Kertaus ja tenttivinkit Algoritmin suunnittelu: Suunnittelumenetelmät Algoritmin esitys: Sanallisesti, pseudokoodina Algoritmin analysointi: Aikavaativuuden kertaluokka Tietorakenteiden valinta: Tietoalkiot ja operaatiot Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 21/36

Algoritmien analysointi Suoritusajan vaativuus: Lasketaan/arvioidaan algoritmin askelien/operaatioiden lukumääriä Määrätään suoritusajan riippuvuus syöttötiedon koosta Oleellista suoritusajan asymptoottinen kertaluokka Paras mahdollinen suoritusaika, pahin mahdollinen suoritusaika, keskimääräinen suoritusaika Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 22/36

Asymptoottinen kertaluokka Θ(g(n)) = funktiot, jotka asymptoottisesti yhtäsuuria kuin g(n) Peruskertaluokkia: Θ(1), Θ(log n), Θ(n), Θ(n log n), Θ(n 2 ), Θ(n 3 ) Yleinen polynominen: Θ(n k ) Eksponentiaalinen: Θ(2 n ) Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 23/36

Prioriteettijono ja keko Minimiprioriteettijono: Perusoperaatiot (lisää alkio, poista pienin) Muita operaatioita perusoperaatioiden avulla Kekorakenne: Perusoperaatiot (lisäys, poisto) Toteutus taulukolla Aikavaativuus Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 24/36

Järjestäminen eli lajittelu Kekolajittelu: Muodostetaan alkioista keko Vaihdetaan ensimmäinen ja viimeinen alkio Jätetään viimeinen alkio keon ulkopuolelle Korjataan yhtä alkiota pienemmän keon osittainen järjestys kuntoon Jatketaan kunnes keossa enää yksi alkio Kekolajittelun aikavaativuus: Keko-operaatioiden aikavaativuus Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 25/36

Hajautus Yhteentörmäysten käsittely: Ketjutus Avoin osoitteenmuodostus Avoin osoitteenmuodostus: Hajautusfunktiot Lineaarinen etsintä Neliöllinen etsintä Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 26/36

B-puu Astetta m oleva B-puu Perusoperaatiot (haku, lisäys, poisto) Lisäys: Poisto: Tarvittaessa solmujen halkaisu Tarvittaessa alkioiden siirto tai solmujen yhdistäminen Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 27/36

Muita tietorakenteita Puut: Nelipuu Trie-rakenteet Joukot: Lista, taulukko, bittivektori Esitys ja operaatiot Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 28/36

Suunnittelumenetelmät Raaka voima: Ongelman suoraviivainen ratkaiseminen Osittaminen: Ositus osatehtäviin, rekursiivinen ratkaiseminen, ratkaisun kokoaminen Taulukointi: Osatehtävien ratkaisujen taulukointi, taulukon täyttäminen vaiheittain Ahne menetelmä: Parhaimmalta näyttävän vaihtoehdon valinta Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 29/36

Ositus ja rekursio Aikavaativuuden rekursioyhtälö: { c 1, kun n = 1 T (n) = at (n/b) + cn α, kun n = b k, k 1 Osituksen tasapainoisuus Rekursioyhtälön muodostaminen Master-lauseen soveltaminen (Lausetta ei tarvitse muistaa ulkoa) Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 30/36

Ahneita algoritmeja Verkon lyhin virittävä puu: Kruskalin menetelmä Primin menetelmä Merkkitiedon tiivistäminen: Huffmanin koodi Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 31/36

Raa an voiman algoritmeja Verkon 3-väritysongelma: Väritysvaihtoehtojen läpikäynti Peruutus Pelipuiden läpikäynti: Voittoarvojen määrittäminen Tehostaminen α-β-karsinnalla Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 32/36

Heuristisia algoritmeja Kauppamatkustajan ongelma: Linin ja Kernighanin 2-vaihtoalgoritmi Geneettiset algoritmit Simuloitu jäähdytys Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 33/36

Vaativuusluokat P = päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla NP = päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla Epädeterministinen arvaus Deterministinen polynominen tarkastus Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 34/36

NP-täydellisyys Päätösongelman muuntaminen toiseksi päätösongelmaksi Ongelma T NP on NP-täydellinen, jos jokainen ongelma S NP voidaan muuntaa polynomisessa ajassa ongelmaksi T NP-täydelliset ongelmat: Luokan NP vaikeimmat ongelmat Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 35/36

Onnea tenttiin! Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 36/36