Algoritmit 2 Luento 13 Ti 8.5.2018 Timo Männikkö
Luento 13 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys Kertaus ja tenttivinkit Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 2/33
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 2018 Luento 13 Ti 8.5.2018 3/33
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 2018 Luento 13 Ti 8.5.2018 4/33
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 2018 Luento 13 Ti 8.5.2018 5/33
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 2018 Luento 13 Ti 8.5.2018 6/33
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 2018 Luento 13 Ti 8.5.2018 7/33
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, että muodostuu Hamiltonin kehä Yhdistettyjen lukujen tunnistamisongelma: Luvun x tekijät y ja z arvataan Helppo tarkastaa, että x = yz Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 8/33
Epädeterministinen algoritmi Epädeterministinen arvausvaihe : Muodostetaan päätösongelman esiintymälle ratkaisuehdotus Deterministinen tarkastusvaihe : Tarkastetaan deterministisellä algoritmilla, onko ratkaisuehdotus esiintymän ratkaisu Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 9/33
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 tarkastusvaihe toimii polynomiajassa Vaativuusluokka NP: NP = { päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla } Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 10/33
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 2018 Luento 13 Ti 8.5.2018 11/33
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 2018 Luento 13 Ti 8.5.2018 12/33
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 2018 Luento 13 Ti 8.5.2018 13/33
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 2018 Luento 13 Ti 8.5.2018 14/33
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 2018 Luento 13 Ti 8.5.2018 15/33
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 2018 Luento 13 Ti 8.5.2018 16/33
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 2018 Luento 13 Ti 8.5.2018 17/33
Kertaus ja tenttivinkit Algoritmin suunnittelu: Suunnittelumenetelmät Algoritmin esitys: Sanallisesti, pseudokoodina Algoritmin analysointi: Aikavaativuuden kertaluokka Tietorakenteiden valinta: Tietoalkiot ja operaatiot Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 18/33
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 2018 Luento 13 Ti 8.5.2018 19/33
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 2018 Luento 13 Ti 8.5.2018 20/33
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 2018 Luento 13 Ti 8.5.2018 21/33
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 2018 Luento 13 Ti 8.5.2018 22/33
Hajautus Yhteentörmäysten käsittely: Ketjutus Avoin osoitteenmuodostus Avoin osoitteenmuodostus: Hajautusfunktiot Lineaarinen etsintä Neliöllinen etsintä Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 23/33
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 2018 Luento 13 Ti 8.5.2018 24/33
Muita tietorakenteita Puut: Nelipuu Trie-rakenteet Joukot: Lista, taulukko, bittivektori Esitys ja operaatiot Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 25/33
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 2018 Luento 13 Ti 8.5.2018 26/33
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 2018 Luento 13 Ti 8.5.2018 27/33
Ahneita algoritmeja Verkon lyhin virittävä puu: Kruskalin menetelmä Primin menetelmä Merkkitiedon tiivistäminen: Huffmanin koodi Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 28/33
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 2018 Luento 13 Ti 8.5.2018 29/33
Heuristisia algoritmeja Kauppamatkustajan ongelma: Linin ja Kernighanin 2-vaihtoalgoritmi Geneettiset algoritmit Simuloitu jäähdytys Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 30/33
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 2018 Luento 13 Ti 8.5.2018 31/33
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 2018 Luento 13 Ti 8.5.2018 32/33
Onnea tenttiin! Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 33/33