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

Samankaltaiset tiedostot
Johnsonin periaatteet:

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

Tutki ja kirjoita -kurssi, s-2005

Tutkimusmenetelmät-kurssi, s-2004

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet

Algoritmit 1. Luento 2 Ke Timo Männikkö

C.C. McGeoch, Toward an experimental method for algorithm simulation. algorithm simulation = algoritmin testaus, experimental algorithmics

4 Tehokkuus ja algoritmien suunnittelu

5 Kertaluokkamerkinnät

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Algoritmit 1. Luento 3 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 2. Luento 1 Ti Timo Männikkö

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

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

7.4 Sormenjälkitekniikka

(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ä.

1.4 Funktioiden kertaluokat

3. Laskennan vaativuusteoriaa

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 2. Luento 14 Ke Timo Männikkö

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

Algoritmit 2. Luento 7 Ti Timo Männikkö

ITKP102 Ohjelmointi 1 (6 op)

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Harjoitus 3 (viikko 39)

Tarkennamme geneeristä painamiskorotusalgoritmia

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Muistutus aikatauluista

Tietorakenteet, laskuharjoitus 3, ratkaisuja

1. Tarkastellaan seuraavaa stokastista Petri-verkkoa: p 2. p 1. lock write 1

Algoritmit 1. Luento 1 Ti Timo Männikkö

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 1. Demot Timo Männikkö

Verkon värittämistä hajautetuilla algoritmeilla

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

Tilastollinen testaus. Vilkkumaa / Kuusinen 1

Matematiikka ja tilastotiede. Orientoivat opinnot /

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

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

1 Erilaisia tapoja järjestää

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Algoritmit 1. Demot Timo Männikkö

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

811312A Tietorakenteet ja algoritmit I Johdanto

4. Algoritmien tehokkuus

58131 Tietorakenteet ja algoritmit (syksy 2015)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Sovellettu todennäköisyyslaskenta B

Java-kielen perusteita

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

ITKP102 Ohjelmointi 1 (6 op)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Algoritmit 2. Luento 2 Ke Timo Männikkö

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

TAMPEREEN TEKNILLINEN YLIOPISTO

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Suunnitteluvaihe prosessissa

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Mat Operaatiotutkimuksen projektityöseminaari

Lisää pysähtymisaiheisia ongelmia

Algoritmit 1. Luento 10 Ke Timo Männikkö

Minimilatenssiongelman ratkaisualgoritmeja (valmiin työn esittely)

Algoritmit 2. Luento 2 To Timo Männikkö

Mallilukujärjestys Teknistieteellinen kandidaattiohjelma Tietotekniikka, 2. vuosikurssi

A TIETORAKENTEET JA ALGORITMIT

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Dynaaminen ohjelmointi ja vaikutuskaaviot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

January 31 to February 6, 2011

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

PSY181 Psykologisen tutkimuksen perusteet, kirjallinen harjoitustyö ja kirjatentti

3.4 Peruutus (backtracking)

10. Painotetut graafit

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Yhteydettömän kieliopin jäsennysongelma

Harjoitustyön testaus. Juha Taina

TYÖELÄMÄOPINNOT laaja-alainen maisteriohjelma. Info kevät 2018

Algoritmit 2. Luento 13 Ti Timo Männikkö

1 Puu, Keko ja Prioriteettijono

Rajoittamattomat kieliopit (Unrestricted Grammars)

ohjelman arkkitehtuurista.

Käytettävyys verkko-opetuksessa Jussi Mantere

T Harjoitustyöluento

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Transkriptio:

Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms. http://www.research.att.com/~dsj/papers/experguide.pdf Moret & Shapiro, Algorithms and Experiments: The New (and Old) Methodology. Journal of Universal Computer Science 7, 5 (2001), 434-446. Moret, Towards a Discipline of Experimental Algorithmics, DIMACS Series in Discrete Mathematics and Theoretical Computer Science. http://www.cs.unm.edu/~moret/dimacs_algorithmics.ps

Alan lähteitä: ACM Journal of Experimental Algorithms (http://www.acm.org/dl) Konferensseja: SODA ACM-SIAM Symposium on Discrete Algortims (http://www.acm.org/dl) WAE Workshop on Algorithm Engineering (LNCS) ALENEX Workshop on Algorithm Engineering and Experimentation (LNCS) Yksittäisiä artikkeleita eri lehdissä ja konferensseissa Kurssin suorittaminen: johonkin algoritmiin tutustuminen (tai uuden kehittäminen) kirjallisuusselvityksen tekeminen ko. algoritmista algoritmin kokeellinen tutkiminen jossain tilanteessa testien raportointi artikkelina yksin / kaksin oma aihe / annettu aihe

Miten algoritmeja voi analysoida? 1. Asymptoottiset ylärajat Miten algoritmin resurssitarve käyttäytyy, kun tapauksen koko kasvaa? + riippumaton toteutuksesta, sillä resurssitarve ilmaistaan jonkun tapaukseen liittyvän suureen avulla (koodauksessa tarvittavien bittien määrä, tapauksen luonnollinen mittayksikkö [vrt. graafialgoritmit ja solmujen lukumäärä]) - asymptoottinen tulos ei välttämättä kerro mitään tapauksista, jotka ovat mielenkiintoisia sovellusten kannalta n

- asymptoottisesti tehokas voi olla hidas pienillä syötteillä - asymptoottinen tulos kertoo vain kasvuvauhdin, ei vakiokertoimien suuruutta kokeellista tutkimusta tarvitaan vakiokertoimien selvittämiseen ja käyttäytymisen selvittämiseen sovellusten kannalta mielenkiintoisissa instansseissa

2. Keskimääräisen tapauksen analyysi vaatia tietoa tai oletuksia syötteiden jakaumista usein matemaattisesti vaativia 3. Tehtyjen operaatioiden tarkka lukumäärä (keskimäärin, pahimassa tapauksessa) Knuth: MIXAL-kieli 4. Approksimointialgoritmien hyvyys normaalit resurssivaatimukset ratkaisun hyvyys: kuinka lähelle optimia päästään suhteellinen virhe ε-approksimointialgoritmit PTAS

5. Kokeellinen analyysi Kysymyksiä: mitä testataan/mihin verrataan? miten testisyötteet valitaan? mitä mitataan? miten tuloksia analysoidaan? miten tulokset raportoidaan?

Miten algoritmeja Olli Nevalaisen mukaan pitää esitellä? 1. Idea sanallisena. Algoritmin toimintaperiaate kuvataan aivan yleisin termein. 2. Pseudokielinen kuvaus. Tekstissä kuvataan käytetyt merkinnät, syötteet, tulosteet ja sisäiset muuttujat. 3. Pseudokielinen algoritmi. Luonnollisen kielen lauseita ohjataan tavanomaisilla ohjelmointikielen kontrollirakenteilla (if then else, while do, repeat until, jne.); käytetään muuttujia, sijoituslauseita yms. ohjelmointikielten ilmauksia; myös matemaattisia merkintöjä voi käyttää abstraktiotason nostamiseksi (summalauseke vs. silmukka). 4. Koodi jollain yleisesti käytetylllä kielellä (esim. liitteenä tai muuten saatavilla). 5. Algoritmin toimintaperiaatteen esittely kommenttien avulla. Periaatteen läpikäynti aliohjelmittain tai muuten järkeviin kokonaisuuksiin jaettuna. 6. Algoritmin toimintaperiaatteen esittely esimerkkien avulla. Esimerkkien on oltava tarpeeksi yksinkertaisia, mutta toisaalta tarpeeksi yleisiä (!). Mielenkiintoisia erikoistapauksia voi käsitellä erikseen. 7. Algoritmin oikeellisuustodistus. (Ei aina tarpeen teoreemojen muodossa.) 8. Algoritmin hyvyyden arviointi. (Tämän kurssi aihe!)

Johnson, A theoretician s guide to the experimental analysis of algorithms näkökulma 1: teoreettisen algorimtitutkimuksen täydentäminen (ei niinkään algoritmin etsiminen tiettyyn sovellukseen) näkökulma 2: kokeellisen tutkimuksen tulosten raportoiminen artikkelina kokeellisen algoritmitutkimuksen tyyppejä 1. Sovellustutkimus. Parhaan mahdollisen algoritmin etsintä tiettyyn sovellukseen. 2. Kuka keksii parhaan algoritmin? (a horse race paper) Algoritmin testaaminen tunnettujen benchmark-tapausten avulla. (esim. TSP) 3. Vaikean keskimääräisen tapauksen analyysin korvaaminen testeillä (experimental average-case paper) 4. Algorimin ominaisuuksien tarkempi tutkiminen testien avulla. (experimental analysis paper)

Johnsonin periaatteet: 1. Tee testejä, joilla on uutuusarvoa. 2. Perusta työsi kirjallisuuteen. 3. Tee testejä, jotka mahdollistavat yleiset johtopäätökset. 4. Laadi testisi tehokkaiksi. 5. Käytä tarpeeksi tehokkaita ratkaisuja. 6. Mahdollista testiesi uudelleen ajaminen ja suunnittele testit niin, että tulokset ovat riippumattomia testiympäristöstä. 7. Tee testiesi tulokset vertailukelpoisiksi toisille tutkijoille. 8. Kerro testeistäsi tarpeeksi tarkasti. 9. Tee tuloksista perusteltuja johtopäätöksiä ja etsi selityksiä testien tuloksille. 10. Esitä tuloksesi havainnollisesti.