Algoritmit 1. Luento 2 Ke Timo Männikkö

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

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

1.4 Funktioiden kertaluokat

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Muita vaativuusluokkia

Algoritmit 1. Luento 10 Ke Timo Männikkö

3. Laskennan vaativuusteoriaa

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1 Syksy 2008

Algoritmit 1. Luento 10 Ke Timo Männikkö

5 Kertaluokkamerkinnät

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

4. Algoritmien tehokkuus

Nopea kertolasku, Karatsuban algoritmi

MS-A0401 Diskreetin matematiikan perusteet

4 Tehokkuus ja algoritmien suunnittelu

Tutkimusmenetelmät-kurssi, s-2004

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmit 1. Luento 8 Ke Timo Männikkö

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Numeeriset menetelmät

Algoritmianalyysin perusteet

Tietorakenteet, laskuharjoitus 2,

Algoritmit 2. Luento 3 Ti Timo Männikkö

Numeeriset menetelmät

Algoritmit 1. Luento 5 Ti Timo Männikkö

2. Algoritmien analysointimenetelmistä

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

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

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

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Laskennan vaativuus ja NP-täydelliset ongelmat

Algoritmit 2. Luento 3 Ti Timo Männikkö

2. Algoritmien analysointimenetelmistä

2. Algoritmien analysointimenetelmistä

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Algoritmit 1. Demot Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

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 1. Luento 13 Ti Timo Männikkö

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

10. Painotetut graafit

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

1 Erilaisia tapoja järjestää

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

811312A Tietorakenteet ja algoritmit I Johdanto

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

Algoritmi on periaatteellisella tasolla seuraava:

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

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

6.1 Rekursiiviset palautukset

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

4. Joukkojen käsittely

Numeeriset menetelmät

MS-C1340 Lineaarialgebra ja

Esimerkkejä vaativuusluokista

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

10. Satunnaisalgoritmit

Lisää pysähtymisaiheisia ongelmia

58131 Tietorakenteet ja algoritmit (syksy 2015)

8. Lajittelu, joukot ja valinta

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

Algoritmit 2. Demot Timo Männikkö

2.2.1 Ratkaiseminen arvausta sovittamalla

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Algoritmit 1. Luento 13 Ma Timo Männikkö

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

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

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Transkriptio:

Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö

Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 2/26

Algoritmi Jono ristiriidattomia, askel askeleelta suoritettavia käskyjä Yleisemmin: Ohje, suunnitelma, resepti jne. Täsmällisemmin: Ongelman ratkaisumenetelmä, joka voidaan toteuttaa tietokoneohjelmana Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 3/26

Esimerkki: Taulukon summa int laskesumma(int[] t, int n) { int summa = 0; for (int i = 0; i < n; i++) { summa = summa + t[i]; } return summa; } Voidaan laskea operaatioiden lukumäärä koon n funktiona (ei riipu taulukon alkioista) Suoritusaika muotoa T (n) = n t 1 + t 2 Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 4/26

Esimerkki: Taulukon suurin alkio int haesuurin(int[] t, int n) { int suurin = t[0]; for (int i = 1; i < n; i++) { if (suurin < t[i]) suurin = t[i]; } return suurin; } Operaatioiden lukumäärä riippuu myös taulukon alkioista Suoritusaika vaihtelee Silmukan runko suoritetaan aina n 1 kertaa Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 5/26

Esimerkki: Haku taulukosta int haealkio(int[] t, int n, int alkio) { for (int i = 0; i < n; i++) { if (t[i] == alkio) return i; } return -1; } Ei tiedetä, montako kertaa silmukan runko suoritetaan Vähintään kerran, enintään n kertaa Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 6/26

Algoritmin analysointi Valitaan perusoperaatio (tai useampi operaatio) Useimmin suoritettava operaatio, aikaa vievin operaatio tms. Esimerkiksi: Sijoitus, vertailu jne. Lasketaan perusoperaatioiden lukumäärät syöttötiedon koon funktiona Edelliset esimerkit: Taulukon koko n Perusoperaatioiden lukumäärä f (n) Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 7/26

Algoritmien esitys Ohjelmointikielet: Täsmällinen esitys Yksityiskohdat voivat häivyttää olennaisia ideoita Pseudokoodi: Ohjelmointikielten lauseiden tapaisia rakenteita Voidaan kuvata joitain osia myös vapaammin Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 8/26

Algoritmien esitys Nykyisin useimmissa tietokoneissa von Neumann -arkkitehtuuri Operaatiot suoritetaan peräkkäin, yksi kerrallaan Algoritmit suunniteltu tämän mukaisesti Myös muita formalismeja: Turingin kone, lambda-kalkyyli, rekursio Churchin-Turingin teesi Formalisoinnit ekvivalentteja Algoritminen ratkeavuus sama formalisoinnista riippumatta Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 9/26

Algoritmin analysointi Invarianssiperiaate : Algoritmin järkevät toteutukset poikkeavat aikavaativuudeltaan enintään vakiotekijän verran Jätetään huomiotta vaativuusfunktioiden vakiokertoimet Analysoidaan menetelmän tehokkuuden kertaluokkaa Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 10/26

Esiintymän koko Syöttötieto x, sen tallennustila x = n Teoriassa bittejä, käytännössä jokin luonteva suure Esimerkiksi: Järjestäminen: Alkioiden lukumäärä Verkko-ongelmat: Solmujen tai kaarien lukumäärä Matriisilaskenta: Matriisin suurin dimensio tai alkioiden lukumäärä Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 11/26

Suoritusaika Paras mahdollinen suoritusaika: Ei yleensä kiinnostava Huonoin mahdollinen suoritusaika: Tarpeellinen, usein helposti laskettavissa Keskimääräinen suoritusaika: Usein kiinnostavin, voi olla vaikea laskea Tasoitettu analyysi: Suoritusaikoja painotetaan tapausten esiintymiskertojen mukaisessa suhteessa Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 12/26

Kertaluokka Olkoon suoritusaika muotoa an 2 + bn + c, a > 0, b, c vakioita Kiinnostaa suoritusajan kasvunopeus eli asymptoottinen käyttäytyminen Suurilla n termit bn ja c eivät merkittäviä Suurilla n vakiokerroin a ei merkittävä Jos n kasvaa kaksinkertaiseksi, suoritusaika kasvaa noin nelinkertaiseksi Suoritusajan kertaluokka on n 2 Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 13/26

Algoritmin tehokkuus Suoritusajan kertaluokka kuvaa algoritmin tehokkuutta Voidaan verrata eri algoritmien suhteellisia tehokkuuksia Suuri syöttötiedon koko Kannattaa valita asymptoottisesti tehokkaampi algoritmi Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 14/26

Asymptoottinen kertaluokka Ei-negatiiviset funktiot t A (n) ja t B (n) Funktiot ovat asymptoottisesti yhtä suuria eli kertaluokat ovat samat, jos lim n t A (n) t B (n) = C 0 Funktio t A (n) on asymptoottisesti pienempi, jos lim n t A (n) t B (n) = 0 Funktio t A (n) on asymptoottisesti suurempi, jos raja-arvo = Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 15/26

Asymptoottinen kertaluokka Merkitään: O(g(n)) = funktiot, jotka ovat asymptoottisesti pienempiä tai yhtäsuuria kuin g(n) Tarkemmin: O(g(n)) = {f (n) vakiot c, n 0 > 0 siten, että 0 f (n) cg(n) n n 0 } Jos f (n) O(g(n)), kirjoitetaan usein f (n) = O(g(n)) Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 16/26

Esimerkki f (n) = 100n 2 + 30n + 45 lim n 100n 2 + 30n + 45 n = f (n) O(n) lim n 100n 2 + 30n + 45 n 2 = 100 f (n) = O(n 2 ) lim n 100n 2 + 30n + 45 n 3 = 0 f (n) = O(n 3 ) Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 17/26

Asymptoottinen kertaluokka O(g(n)) = funktiot, jotka ovat asymptoottisesti pienempiä tai yhtäsuuria kuin g(n) 100n 2 + 30n + 45 = O(n 2 ) 100n 2 + 30n + 45 = O(n 3 ) 100n 2 + 30n + 45 = mikä tahansa vielä suurempi kertaluokka Käytännössä pyritään selvittämään kertaluokka mahdollisimman tarkasti tai tiukasti O(n 2 ) = pienin kertaluokka, joka sisältää funktion Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 18/26

Funktioiden kertaluokkia Polynomit: 10n + 8 = O(n) 12n 3 + 4n 2 = O(n 3 ) a k n k + a k 1 n k 1 + + a 1 n + a 0 = O(n k ) Logaritmifunktio: log a n = log bn log b a a, b > 1, missä log a n = O(log b n) a, b > 1 1 log b a 0 Vakiofunktio: funktion suoritusaika ei riipu n:stä = O(1) Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 19/26

Ominaisuuksia O(cg(n)) = O(g(n)) c > 0 f (n) = O(g(n)) ja g(n) = O(h(n)) f (n) = O(h(n)) f 1 (n) = O(g 1 (n)) ja f 2 (n) = O(g 2 (n)) f 1 (n) + f 2 (n) = O(max(g 1 (n), g 2 (n))) f 1 (n) = O(g 1 (n)) ja f 2 (n) = O(g 2 (n)) f 1 (n)f 2 (n) = O(g 1 (n)g 2 (n)) Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 20/26

Kertaluokkamerkintöjä Asymptoottinen yläraja O(g(n)) Asymptoottinen alaraja Ω(g(n)) Asymptoottinen tarkka raja Θ(g(n)) Asymptoottinen aito yläraja o(g(n)) Asymptoottinen aito alaraja ω(g(n)) Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 21/26

Ongelman koko ja suoritusaika Esimerkki: Neljä algoritmia Suoritusaikojen funktiot 100n, 5n 2, 1 2 n3, 2 n Suurin ongelma, joka voidaan ratkaista ajassa 1000 ja 10 000: T (n) 1000 10 000 lisäys 100n 10 100 10 5n 2 14 44 3.1 1 2 n3 12 27 2.3 2 n 10 13 +3 polynominen polynominen polynominen eksponentiaalinen Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 22/26

Peruskertaluokkia log n n n log n n 2 n 3 2 n 0 1 0 1 1 2 1 2 2 4 8 4 2 4 8 16 64 16 3 8 24 64 512 256 4 16 64 256 4096 65536 5 32 160 1024 32768 4294967296 6 64 384 4096 262144 1.8 10 19 Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 23/26

Peruskertaluokkia 1 Vakioaika; riippumaton syöttötiedon koosta log n Logaritminen; esim. ongelman kokoa pienennetty murto-osaan (kantaluku ei vaikuta kertaluokkaan) n Lineaarinen; esim. jokin operaatio tehdään kaikille alkioille n log n Esim. ongelma jaettu osaongelmiin, jotka ratkaistaan rekursiivisesti, ja lopuksi kootaan alkuperäisen ongelman ratkaisu Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 24/26

Peruskertaluokkia (jatkuu) n 2 Neliöllinen; esim. käsitellään kaikki alkioparit n 3 Kuutiollinen; esim. jotkin matriisien laskuoperaatiot n k Yleinen polynominen kertaluokka; sanotaan että ongelma on ratkeava 2 n Eksponentiaalinen kertaluokka; sanotaan että ongelma on huonosti ratkeava tai ratkeamaton Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 25/26

NP-täydelliset ongelmat On olemassa ongelmia, joille ei tunneta polynomisia algoritmeja Suuri osa näistä kuuluu NP-täydellisten ongelmien joukkoon Jos jollekin NP-täydelliselle ongelmalle löytyy polynominen algoritmi, kaikki joukon ongelmat ratkeavat polynomisessa ajassa Merkitään: P = polynomisessa ajassa ratkeavat ongelmat NP = ongelmat, joiden ratkaisujen oikeellisuus voidaan tarkastaa polynomisessa ajassa Onko P = NP? Algoritmit 1 Kevät 2017 Luento 2 Ke 11.1.2017 26/26