Algoritmit 2. Luento 1 Ti Timo Männikkö

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

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. Demot Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

1.4 Funktioiden kertaluokat

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

5 Kertaluokkamerkinnät

3. Laskennan vaativuusteoriaa

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

4. Algoritmien tehokkuus

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

Algoritmit 1 Syksy 2008

Tutkimusmenetelmät-kurssi, s-2004

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

6.1 Rekursiiviset palautukset

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmianalyysin perusteet

A TIETORAKENTEET JA ALGORITMIT

Nopea kertolasku, Karatsuban algoritmi

2. Algoritmien analysointimenetelmistä

Algoritmit 2. Luento 11 Ti Timo Männikkö

Tietorakenteet ja algoritmit - syksy

Algoritmit 1. Luento 12 Ti Timo Männikkö

Muita vaativuusluokkia

Numeeriset menetelmät

Algoritmit 1. Luento 12 Ke Timo Männikkö

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

1 Erilaisia tapoja järjestää

Matematiikan tukikurssi

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Johdatus matematiikkaan

MS-A0401 Diskreetin matematiikan perusteet

Numeeriset menetelmät

Algoritmit 1. Luento 13 Ma Timo Männikkö

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

58131 Tietorakenteet ja algoritmit (syksy 2015)

(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 2. Demot Timo Männikkö

9 Erilaisia tapoja järjestää

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Laskennan vaativuus ja NP-täydelliset ongelmat

Matematiikan tukikurssi


811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Luento 4 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:

811312A Tietorakenteet ja algoritmit I Johdanto

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Numeeriset menetelmät

Algoritmit 1. Demot Timo Männikkö

2. Algoritmien analysointimenetelmistä

2. Algoritmien analysointimenetelmistä

Tietorakenteet, laskuharjoitus 3, ratkaisuja

2.2.1 Ratkaiseminen arvausta sovittamalla

Talousmatematiikan perusteet: Luento 18. Määrätty integraali Epäoleellinen integraali

Numeeriset menetelmät

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

3 Yleistä estimointiteoriaa. Olemme perehtuneet jo piste-estimointiin su-estimoinnin kautta Tässä luvussa tarkastellaan piste-estimointiin yleisemmin

Algoritmit 2. Luento 13 Ti Timo Männikkö

3 = Lisäksi z(4, 9) = = 21, joten kysytty lineaarinen approksimaatio on. L(x,y) =

Algoritmit 2. Luento 4 Ke Timo Männikkö

Numeeriset menetelmät TIEA381. Luento 12. Kirsi Valjus. Jyväskylän yliopisto. Luento 12 () Numeeriset menetelmät / 33

Tietorakenteet ja algoritmit I TRAI /SJ Luentomuistiinpanoja

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

7.4 Sormenjälkitekniikka

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

6.8 Erityisfunktioiden sovelluksia

Numeeriset menetelmät

MS-A0401 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0401 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0401 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

Algoritmit 1. Luento 7 Ti Timo Männikkö

Rinnakkaistietokoneet luento S

Muista tutkia ihan aluksi määrittelyjoukot, kun törmäät seuraaviin funktioihin:

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

Tietorakenteet, laskuharjoitus 2,

811120P Diskreetit rakenteet

Transkriptio:

Algoritmit 2 Luento 1 Ti 14.3.2017 Timo Männikkö

Luento 1 Algoritmi Algoritmin valinta Algoritmin analysointi Algoritmin suoritusaika Peruskertaluokkia Kertaluokkamerkinnät Kertaluokkien ominaisuuksia Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 2/24

Algoritmi Askel askeleelta suoritettava menetelmä, tekniikka tai ohje jonkin tehtävän suorittamiseksi tai jonkin ongelman ratkaisemiseksi Algoritmin vaatimuksia: Askelmäärä äärellinen Antaa oikean vastauksen Riittävän tehokas Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 3/24

Ongelman ratkaiseminen Ongelman esiintymä: Ongelma tietyillä lähtötiedoilla Samalla ongelmalla eri esiintymiä Voidaan haluta: Paras ratkaisu useiden mahdollisten ratkaisujen joukosta Hyvä ratkaisu, vaikka ei välttämättä paras Parempi kuin tunnetut ratkaisut Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 4/24

Algoritmin tehokkuus Algoritmin tarvitsemat resurssit: Muistitila, kaistanleveys jne. Erityisesti suoritusaika Algoritmin analysointi: Tehokkuuden selvittäminen Muutama pieni esiintymä Resursseilla ei suurta merkitystä Suuri tai vaikea ongelma, useita esiintymiä Algoritmi valittava huolella Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 5/24

Algoritmin valinta Halutaan valita paras tai riittävän hyvä algoritmi Empiirisesti: Toteutetaan (ohjelmoidaan) algoritmit Mitataan suoritusaikaa tai jonkin muun resurssin käyttöä Teoreettisesti: Määritellään matemaattisesti suoritusaika tai jonkin muun resurssin käyttö Resurssin käyttö esitetään syöttötiedon koon funktiona Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 6/24

Algoritmin valinta Empiirinen tapa: Voidaan tehdä tarkkoja mittauksia Käytännössä hankalaa/työlästä/mahdotonta Teoreettinen tapa: Riippumaton käytetystä tietokoneesta, ohjelmointikielestä, toteutusympäristöstä, ohjelmointitaidosta jne. Tehokkuutta ei kuitenkaan voida mitata esim. sekunneissa Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 7/24

Algoritmin analysointi Suoritusajan vaativuus: Lasketaan/arvioidaan algoritmin askelien/operaatioiden lukumääriä Perusoperaationa useimmin suoritettava operaatio, aikaa vievin operaatio tms. Esimerkiksi sijoitus, vertailu jne. Määrätään perusoperaatioiden lukumäärät syöttötiedon koon funktiona Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 8/24

Algoritmin suoritusaika Paras mahdollinen suoritusaika: Ei yleensä kiinnostava Huonoin mahdollinen suoritusaika: Tarpeellinen, usein helposti laskettavissa Keskimääräinen suoritusaika: Usein kiinnostavin, voi olla vaikea laskea Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 9/24

Algoritmin suoritusaika Invarianssiperiaate: Saman algoritmin eri toteutukset eroavat tehokkuudeltaan toisistaan korkeintaan vakiokertoimisen tekijän verran Algoritmin suoritusajan kertaluokka on g(n), jos on olemassa vakio c > 0 ja algoritmin toteutus, joka kykenee ratkaisemaan jokaisen kokoa n olevan tehtävän esiintymän ajassa cg(n) aikayksikköä Kertaluokka g(n) kuvaa suoritusajan kasvunopeutta Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 10/24

Algoritmin suoritusaika Suoritusajan kasvunopeuden mukaan voidaan verrata algoritmien suhteellisia tehokkuuksia Kun syöttötiedon koko kasvaa tarpeeksi suureksi, kasvunopeus tulee merkittäväksi Puhutaan algoritmin suoritusajan asymptoottisesta tehokkuudesta Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 11/24

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 2 Kevät 2017 Luento 1 Ti 14.3.2017 12/24

Ongelman ratkeavuus Käyttökelpoisia vain algoritmit, joiden suoritusaika ongelman koon n suhteen kasvaa korkeintaan yhtä nopeasti kuin jokin n:n polynomi Jos algoritmin suoritusaika kasvaa eksponentiaalisesti, se soveltuu vain pienten ongelmien ratkaisuun Ratkeava ongelma: Löytyy algoritmi, jonka pahimman tapauksen suoritusaika polynominen Ratkeamaton tai huonosti ratkeava ongelma: Tunnetaan vain algoritmeja, joiden suoritusaika eksponentiaalinen Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 13/24

Kertaluokkamerkintöjä Asymptoottinen yläraja: O(g(n)) = {f (n) : N R + c, n 0 > 0 : 0 f (n) cg(n) n n 0 } Asymptoottinen alaraja: Ω(g(n)) = {f (n) : N R + c, n 0 > 0 : 0 cg(n) f (n) n n 0 } Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 14/24

Kertaluokkamerkintöjä Asymptoottinen aito yläraja: o(g(n)) = {f (n) : N R + c > 0 n 0 > 0 : 0 f (n) < cg(n) n n 0 } Asymptoottinen aito alaraja: ω(g(n)) = {f (n) : N R + c > 0 n 0 > 0 : 0 cg(n) < f (n) n n 0 } Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 15/24

Kertaluokkamerkintöjä Asymptoottinen tarkka raja: Θ(g(n)) = {f (n) : N R + c 1, c 2, n 0 > 0 : 0 c 1 g(n) f (n) c 2 g(n) n n 0 } Usein merkitään f (n) = Θ(g(n)) oikean merkinnän f (n) Θ(g(n)) sijaan Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 16/24

Esimerkki 2n 2 O(n 3 ) c, n 0 > 0 : 0 2n 2 cn 3 n n 0 2n 2 cn 3 2 cn Tosi kun valitaan esimerkiksi c = 2 ja n 0 = 1 2n 2 o(n 3 ) c > 0 n 0 > 0 : 0 2n 2 < cn 3 n n 0 2n 2 < cn 3 2 < cn n > 2/c Tosi kun n 0 valitaan siten että n 0 > 2/c Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 17/24

Esimerkki jatkuu 2n 2 Θ(n 2 ) c 1, c 2, n 0 > 0 : 0 c 1 n 2 2n 2 c 2 n 2 n n 0 c 1 n 2 2n 2 c 2 n 2 c 1 2 c 2 Tosi kun valitaan esimerkiksi c 1 = c 2 = 2 ja n 0 = 1 Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 18/24

Kertaluokkamerkinnät f (n) O(g(n)) f on samaa tai alempaa kertaluokkaa kuin g f (n) Ω(g(n)) f on samaa tai ylempää kertaluokkaa kuin g f (n) Θ(g(n)) f on samaa kertaluokkaa kuin g Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 19/24

Kertaluokkien ominaisuuksia f (n) Θ(g(n)) f (n) O(g(n)) ja g(n) O(f (n)) f (n) Ω(g(n)) ja g(n) Ω(f (n)) f (n) Θ(g(n)) ja g(n) Θ(h(n)) f (n) Θ(h(n)) f (n) Θ(g(n)) g(n) Θ(f (n)) f (n) O(g(n)) g(n) Ω(f (n)) Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 20/24

Kertaluokkien ominaisuuksia lim n f (n) g(n) lim n f (n) g(n) = 0 lim n f (n) g(n) = = C > 0 f (n) Θ(g(n)) { { f (n) O(g(n)) f (n) / Θ(g(n)) f (n) Ω(g(n)) f (n) / Θ(g(n)) Jos raja-arvoa ei ole määritelty, kertaluokkapäätelmiä ei voi tehdä Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 21/24

Esimerkki f (n) = 50n 2 + 25n + 10 lim n 50n 2 + 25n + 10 n 2 = 50 f (n) Θ(n 2 ) lim n 50n 2 + 25n + 10 n 3 = 0 f (n) O(n 3 ) lim n 50n 2 + 25n + 10 n = f (n) Ω(n) Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 22/24

Raja-arvojen laskeminen Määrittelemätön raja-arvo muotoa 0 0 tai L Hôpitalin sääntö: Jos lim f (n) = lim g(n) = 0 tai, mutta f (n) ja g (n) ovat olemassa ja g (n) 0 kaikilla riittävän suurilla n, niin lim n f (n) g(n) = lim n f (n) g (n) jos jälkimmäinen raja-arvo on olemassa Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 23/24

Esimerkki lim n n 2 2 n =? f (n) = n 2, g(n) = 2 n lim f (n) = lim g(n) = f (n) = 2n, g (n) = 2 n ln 2 lim f (n) = lim g (n) = f (n) = 2, g (n) = 2 n (ln 2) 2 lim n n 2 2 n = lim n n 2 O(2 n ), n 2 / Θ(2 n ) 2 2 n (ln 2) 2 = 0 Algoritmit 2 Kevät 2017 Luento 1 Ti 14.3.2017 24/24