Tutkimusmenetelmät-kurssi, s-2004



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

Algoritmit 1. Luento 2 Ke Timo Männikkö

1.4 Funktioiden kertaluokat

4 Tehokkuus ja algoritmien suunnittelu

3. Laskennan vaativuusteoriaa

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

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Luento 1 Ti Timo Männikkö

Nopea kertolasku, Karatsuban algoritmi

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmianalyysin perusteet

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 2. Demot Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Tietorakenteet ja algoritmit - syksy

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

1 Erilaisia tapoja järjestää

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

5 Kertaluokkamerkinnät

4. Algoritmien tehokkuus

Algoritmit 1. Demot Timo Männikkö

8. Lajittelu, joukot ja valinta

4.3. Matemaattinen induktio

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Tietorakenteet, laskuharjoitus 3, ratkaisuja

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Algoritmit 1. Demot Timo Männikkö

Tutki ja kirjoita -kurssi, s-2005

Algoritmit 2. Luento 14 Ke 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).

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

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

Tietorakenteet, laskuharjoitus 1,

FYSA220/K2 (FYS222/K2) Vaimeneva värähtely

Algoritmit 1. Luento 3 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (syksy 2015)

Algoritmi on periaatteellisella tasolla seuraava:

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

Algoritmit 1. Luento 1 Ti Timo Männikkö

811120P Diskreetit rakenteet

Algoritmit 1. Luento 14 Ke Timo Männikkö

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

2.3 Keskimääräisen tapauksen analyysi

Algoritmit 1. Luento 10 Ke Timo Männikkö

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

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

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Ohjelmien automaattisen verifioinnin reunamailla

MS-A0401 Diskreetin matematiikan perusteet

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

2 Sanoja järjestävän funktion ohjelmoiminen

6.1 Rekursiiviset palautukset

2.2.1 Ratkaiseminen arvausta sovittamalla

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

2. Algoritmien analysointimenetelmistä

2. Algoritmien analysointimenetelmistä

MS-A0402 Diskreetin matematiikan perusteet

Analyysi 1. Harjoituksia lukuihin 1 3 / Syksy Osoita täsmällisesti perustellen, että joukko A = x 4 ei ole ylhäältä rajoitettu.

Tiraka, yhteenveto tenttiinlukua varten

Koe ma 1.3 klo salissa A111, koeaika kuten tavallista 2h 30min

2. Algoritmien analysointimenetelmistä

Algoritmit 2. Demot Timo Männikkö

Tietojenkäsittelyteorian alkeet, osa 2

Tietorakenteet (syksy 2013)

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

1. Esitä rekursiivinen määritelmä lukujonolle

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Algoritmit 2. Luento 8 To Timo Männikkö

Kytkentäkentät - Rekursio, Cantor-verkko. Kytkentäkentän ominaisarvoja

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen.

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

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

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

A TIETORAKENTEET JA ALGORITMIT

7.4 Sormenjälkitekniikka

FUNKTIONAALIANALYYSIN PERUSKURSSI Johdanto

Analyysi: päättely ja tulkinta. Hyvän tulkinnan piirteitä. Hyvän analyysin tulee olla. Miten analysoida laadullista aineistoa

4. Joukkojen käsittely

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

Algoritmit 2. Luento 11 Ti Timo Männikkö

Havaitsevan tähtitieteen peruskurssi I

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Shorin algoritmin matematiikkaa Edvard Fagerholm

Numeeriset menetelmät

Epälineaaristen yhtälöiden ratkaisumenetelmät

Funktion määrittely (1/2)

Transkriptio:

Algoritmitutkimuksen menetelmistä Tutkimusmenetelmät-kurssi, s-2004 Pekka Kilpeläinen Kuopion yliopisto Tietojenkäsittelytieteen laitos Algoritmitutkimuksen menetelmistä p.1/20

Sisällys Tänään Tietojenkäsittelytiede tutkimusalana Algoritmitutkimuksen käsitteet ja tulokset Analyyttiset menetelmät Ensi viikolla Kokeelliset menetelmät Algoritmisten tulosten raportointi Algoritmitutkimuksen menetelmistä p.2/20

TKT tutkimusalana Ks. esim. E. Ukkonen: Tietojenkäsittelytiede. Luku 1.2 teoksessa Hyvönen, Karanta, Syrjänen (toim.) Tekoälyn ensyklopedia, Gaudeamus, 1993. TKT (Computer Science) on menetelmätiede, kohteena tietojenkäsittelymenetelmät tietojenkäsittelyongelmat, algoritmit abstraktiot kuvaustavat: tiedon esitystavat, ohjelmointi- ja kuvauskielet,... rajapinnat tietorakenteet, tietomallit suunnittelumenetelmät e.m. toteuttaminen ja soveltaminen Algoritmitutkimuksen menetelmistä p.3/20

TKT:n tutkimustulokset? Uusi menetelmä, toteutustapa tai sovellus Menetelmään, toteutustapaan tai soveltamiseen liittyvä uusi tieto Tieteellisyys: tiedon paikkansapitävyys perusteltu olemassaoleva tieto formaali todistus empiirinen koe Algoritmitutkimuksen menetelmistä p.4/20

Algoritmitutkimuksen luonnehdintaa Algoritmitutkimus klassista tietojenkäsittelytiedettä Eleganttia: eksakteja ja yleisiä tuloksia Haastavaa: hyviä (= osin vaikeita) ongelmia Relevanttia: läheinen yhteys sovelluksiin Algoritmitutkimuksen menetelmistä p.5/20

Korkeantason näkemys IDEAALI- MAAILMA malli. deduktio idealisoitu ratkaisu abstraktio tulkinta REAALI- MAAILMA ongelma suora ratkaisu (mahd. liian mutkikas) ratkaisu Algoritmitutkimuksen menetelmistä p.6/20

Algoritmit Algoritmi: täsmällisesti määritellyn tk-tehtävän automatisoitavissa oleva ratkaisu tietokoneohjelma ei sama; pikemmin ohjelmien komponentteja mielellään yleisen ongelman ratkaisu Oikea/hyvä algoritmi? Toimii oikein Toimii tehokkaasti Seuraavaksi esimerkki formaalista oikeellisuus- ja tehokkuustarkastelusta Algoritmitutkimuksen menetelmistä p.7/20

Algoritmin oikeellisuus Annettava oikea vastaus jokaiseen ratkaistavan ongelman tapaukseen Esimerkki: Pikalajittelu Lajittelutehtävä: Järjestä jono S = s 1,..., s n jonoksi S = s 1,..., s n s.e. s 1 s 2 s n Huom: Täsmällisyyden ja määritelmien merkitys; Tutkija luo tietoon järjestystä! Algoritmitutkimuksen menetelmistä p.8/20

Pikalajittelu ( Hajota-ja-hallitse ) procedure QuickSort(S): if S 1 then return S; else Valitse jakoalkio s S; Osita S jonoiksi S <s, S =s ja S >s ; return QuickSort(S <s ) S =s QuickSort(S >s ); endif; Metodi 1: Mallintaminen: Algoritmi on toteutusten oleelliset piirteet säilyttävä yksinkertaistus Algoritmitutkimuksen menetelmistä p.9/20

Pikalajittelun oikeellisuus Lause Proseduuri QuickSort toimii oikein. Todistus Induktio alkioiden lkm n = S suhteen. Metodi 2: Matemaattinen induktio: 1 P (k) 2 P (k), P (k + 1),..., P (n 1) P (n) P (n) kaikilla n k Algoritmitutkimuksen menetelmistä p.10/20

Algoritmin tehokkuus Resurssien (aika, muisti) tarve tietyn kokoisilla syötteillä? riippuvuutena syötteen koosta (n) huomion kohteena algoritmin skaalautuvuus Yksinkertaistuksia: keskitytään riittävän suuriin syötteisiin (n n 0 ) eliminoidaan ohjelmointitaidon sekä suoritusympäristön ja laitteiston vaikutus: analysoidaan perusoperaatioiden lukumäärää Asymptoottiset kertaluokka-arviot (Mielekkäitä? Yleensä, mutta hyvä olla kriittinen.) Algoritmitutkimuksen menetelmistä p.11/20

Kertaluokka-arviot Yläraja: T (n) = O(f(n)), jos T (n) cf(n) kun n n 0 joillain c, n 0. Aito pienemmyys: T (n) = o(f(n)) jos lim n T (n)/f(n) = 0 Vast. alaraja T (n) = Ω(f(n)) ja tarkka kertaluokka T (n) = Θ(f(n)) Välittömiä sievennystekniikoita: c f(n) = O(f(n)) Θ(f(n)) Ω(f(n)) (vakiokertoimien c > 0 merkityksettömyys) f(n) ± g(n) = Θ(f(n)), jos g(n) = o(f(n)) (alempiasteisten termien merkityksettömyys) Algoritmitutkimuksen menetelmistä p.12/20

Pahin ja keskimääräinen tapaus Huom: Samankokoistenkin syötteiden resurssintarve voi vaihdella (Kuva) Pahimman tapauksen analysointi: Edut ja haitat: + : analyysi yksinkertaistuu T max (n) = max T (w) w =n + : takuu: kompleksisuus ei koskaan huonompi : liian pessimistinen, jos pahin tapaus harvinainen Algoritmitutkimuksen menetelmistä p.13/20

Pikalajittelun pahin tapaus Lause Pikalajittelun T max (n) = Θ(n 2 ). Tod. Merk. T (n) = T max (n). Ositus vaatii (jollain b) ajan bn Kun n 2, T (n) bn + T (n 1) (jakoalkio min tai max). bn + b(n 1) + T (n 2) b(n + (n 1) + + 2) nx n(n + 1) = b i = b( 2 i=2 1) = Ω(n 2 ) Metodi 3: Kaavamanipulointi Algoritmitutkimuksen menetelmistä p.14/20

Pikalajittelun pahin tapaus (2) Toisaalta kukin alkio s S jakoalkiona enintään kerran rekursiivisia kutsuja O(n) kpl, ja kussakin ositustyö O(n); Siten T (n) = O(n 2 ), joten T (n) = Θ(n 2 ). Metodi 4: Kombinatorinen havainnointi Käytännössä pikalajittelu huomattavasti pahinta tapaustaan parempi (Ks. seur.) Algoritmitutkimuksen menetelmistä p.15/20

Keskimääräinen kompleksisuus T avg (n) = w =n p(w)t (w) Kompleksisuuden odotusarvo: keskikompleksisuus painotettuna tapausten w esiintymistodennäköidyydellä p(w) Edut ja haitat: + : kuva keskimääräisestä käyttäytymisestä : tapausten todennäköisyysjakauma? : analyysin vaikeutuminen Algoritmitutkimuksen menetelmistä p.16/20

Pikalajittelu keskimäärin (Aho, Hopcroft & Ullman, 1974, s. 93 95) Lause Pikalajittelun T avg (n) = O(n log n). Tod. Merk. T (n) = T avg (n). Jakaumaoletus: syötteet erillisten alkioiden permutaatioita, kukin yhtä usein. T (0) = T (1) = a (vakio). Onnistukoon proseduurin paikallinen työ ajassa bn. Jakaumaoletus kullakin i = 1,..., n on S <s = i 1 ja S >s = n i todennäköisyydellä 1/n Kun n 2, T (n) bn + 1/n = bn + 2/n nx (T (i 1) + T (n i)) i=1 n 1 X i=0 T (i) (1) Algoritmitutkimuksen menetelmistä p.17/20

Pikalajittelu keskimäärin (2) Osoitetaan T (n) cn ln n, kun n 2 ja c = 2(a + b): Perustapaus: T (2) 2b + 2a 2(a + b)2 ln 2; OK Induktioaskel: Kirjoitetaan yläraja (1) muotoon bn + 2/n[T (0) + T (1) + n 1 X i=2 T (i)] bn + 4a/n + 2c/n n 1 X i=2 i ln i P n 1 i=2 i ln i R n 2 x ln xdx (n2 ln n)/2 n 2 /4 Arvioidaan: Siten T (n) bn + 4a/n + cn ln n cn/2 Nyt bn + 4a/n cn/2, joten T (n) cn ln n Metodi 5: Reaalianalyysi, tn-laskenta, lukuteoria ym. Algoritmitutkimuksen menetelmistä p.18/20

Pikalajittelu käytännössä Logaritmit kasvavat hitaasti, joten O(n log n)-algoritmi skaalautuu lähes yhtä hyvin kuin lineaarinen Pikalajittelu käytännössä parhaita lajittelumenetelmiä (esim. virtuaalimuistin käytön suhteen) Kokeellinen algoritmitutkimus Algoritmitutkimuksen menetelmistä p.19/20

Yhteenveto Teoreettisen algoritmitutkimuksen tulokset algoritmit, niiden oikeellisuus ja kompleksisuus Metodit analyyttis-deduktiivisia, matemaattisia Muita näkökohtia: toteutettavuus, käyttökelpoisuus, teoreettisen tarkastelun validius, todellinen tehokkuus,... Kokeellinen algoritmitutkimus Algoritmitutkimuksen menetelmistä p.20/20