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

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

Algoritmit 1. Luento 2 Ke Timo Männikkö

Tietorakenteet op, 50 h. Luennot alkavat 7.9. ja päättyvät

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit I Johdanto

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 2. Luento 1 Ti Timo Männikkö

811120P Diskreetit rakenteet

Lyhyt kertaus osoittimista

811120P Diskreetit rakenteet

Nopea kertolasku, Karatsuban algoritmi

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

10. Painotetut graafit

Algoritmit 1. Demot Timo Männikkö

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (TIEA2.1)

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Luonnontieteiden tiedekunta Tampereen yliopisto

Kurssijärjestelyt. CS-1180 Verkkojulkaisemisen perusteet (5 op) Hanna Hämäläinen Informaatioverkostot / Mediatekniikan laitos

Algoritmit 2. Luento 14 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

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

1 Erilaisia tapoja järjestää

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

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

Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät 2018

4 Tehokkuus ja algoritmien suunnittelu

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Tutkimusmenetelmät-kurssi, s-2004

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet (TIEA2.1) Kevät Olio-ohjelmoinnin perusteet (eli Oope) Laajuus

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tietueet. Tietueiden määrittely

A TIETORAKENTEET JA ALGORITMIT

Kurssijärjestelyt. ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mari Hirvi Informaatioverkostot / Mediatekniikan laitos

Algoritmit 2. Luento 8 To Timo Männikkö

Kurssiesite Olio-ohjelmoinnin perusteet Kevät Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

(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ö

Numeeriset menetelmät

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

58131 Tietorakenteet ja algoritmit (syksy 2015)

Kurssiesite. Rakentamisen tekniikat RAK-C3004

ITKP102 Ohjelmointi 1 (6 op)

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tietorakenteet ja algoritmit

Harjoitus 4 (viikko 47)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Laskennan teoria

Algoritmit 2. Luento 2 Ke Timo Männikkö

Tutki ja kirjoita -kurssi, s-2005

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Algoritmit 2. Luento 2 To Timo Männikkö

SAS-ohjelmiston perusteet 2010

Luento 5. Timo Savola. 28. huhtikuuta 2006

Määrittelydokumentti

Ohjelmoinnin perusteet Y Python

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

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

Numeeriset menetelmät

Tietotekniikan valintakoe

JOHDATUS TEKOÄLYYN TEEMU ROOS

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

Sisältö. 22. Taulukot. Yleistä. Yleistä

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

7.4 Sormenjälkitekniikka

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

5 Kertaluokkamerkinnät

HAHMONTUNNISTUKSEN PERUSTEET

T harjoitustehtävät, syksy 2011

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Ohjelmointi 2 / 2010 Välikoe / 26.3

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

7/20: Paketti kasassa ensimmäistä kertaa

Ohjelmoinnin peruskurssien laaja oppimäärä

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Kurssiesite Lausekielinen ohjelmointi Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Shorin algoritmin matematiikkaa Edvard Fagerholm

10. Painotetut graafit

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Kurssiesite Lausekielinen ohjelmointi II Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

Transkriptio:

Kurssiesittely Tietojenkäsittelytieteiden laitos Tampereen yliopisto A215 Tietorakenteet Periodit I-II, syksy 2007 Luennot/vastuuhenkilö: Heikki Hyyrö Sähköposti: heikki.hyyro@cs.uta.fi Kurssin kotisivu: http://www.cs.uta.fi/tira/ 10 op (5 ov) laajuinen aineopintotasoinen kurssi Pakollinen osa tietojenkäsittelyopin kandidaatin tutkielmaa 26 luentokertaa (52 tuntia) Pinni B:n luentosali B1097 Tiistaisin klo 10-12 Keskiviikkoisin klo 10-12 Viimeinen luento ke 5.12 Tietorakenteet, syksy 2007 1 Kurssiesittely 13 viikkoharjoituskertaa (26 tuntia) Linnan luentosali K108 Kolme eri ryhmää: tiistaisin klo 12-14, 14-16 ja 16-18 Ohjaajat: Pekka Niemenlehto (pekka.niemenlehto@cs.uta.fi) ja Jyri Saarikoski (jyri.saarikoski@cs.uta.fi) Ensimmäiset harjoitukset ti 11.9, viimeiset ti 11.12 Tietorakenteet, syksy 2007 2 Kurssiesittely Harjoitustyö Tietorakenteisiin liittyvää ohjelmointia Javalla Aihe loka-marraskuussa Ohjaaja: Tuomas Talvensaari (tuomas.talvensaari@cs.uta.fi) Palautus tammikuussa 2008 Harjoitustyöhön liittyy tasapainotestin suorittaminen virtuaalilaboratoriossa Saatavaa testidataa voidaan hyödyntää harjoitustyön aineistona Tietorakenteet, syksy 2007 3

Kurssiesittely Kurssin läpipääsy vaatii seuraavat osasuoritukset Tentti (13.12, uusintatentti tammikuussa 2008) Maksimi 30 pistettä, läpipääsyyraja 12 Viikkoharjoitukset: vähintään 20% tehtynä Tuottaa 0-5 pistettä Pisterajat: 33,33% = 1 p, 46,66% = 2 p, 60% = 3 p, 73,33% = 4 p, 86,66% = 5 p Harjoitustyön hyväksytty palautus Arvostellaan asteikolla 0-10 pistettä Kurssiesittely Tasapainotesti Antaa 3 lisäsuoritetta viikkoharjoitustehtäväsaldoon Kurssinumero asteikolla 1..5 määräytyy kokonaispistemäärän mukaan (välillä 12-40) Harjoitustehtävien avulla saatavissa olevat pisteet ovat bonuspisteitä Kysymyksiä kurssijärjestelyistä tms.? Tietorakenteet, syksy 2007 4 Tietorakenteet, syksy 2007 5 Tietorakenne: tapa tallentaa ja organisoida tietoa tiedon lukemisen ja/tai päivittämisen kannalta sopivalla tavalla Tietorakenteet, syksy 2007 6 Esim. nimiluettelo näin... SMITH ANDERSON CLARK JOHNSON THOMAS RODRIGUEZ WILLIAMS JACKSON LEWIS JONES WHITE LEE BROWN HARRIS WALKER DAVIS MARTIN HALL MILLER THOMPSON ALLEN WILSON GARCIA YOUNG MOORE MARTINEZ HERNANDEZ TAYLOR ROBINSON KING Tietorakenteet, syksy 2007 7

...vain näin? ALLEN JOHNSON RODRIGUEZ ANDERSON JONES SMITH BROWN KING TAYLOR CLARK LEE THOMAS DAVIS LEWIS THOMPSON GARCIA MARTIN WALKER HALL MARTINEZ WHITE HARRIS MILLER WILLIAMS HERNANDEZ MOORE WILSON JACKSON ROBINSON YOUNG Tietorakenteet, syksy 2007 8 Tietorakenne: tapa tallentaa ja organisoida tietoa tiedon lukemisen ja/tai päivittämisen kannalta sopivalla tavalla Algoritmi: äärellinen joukko täsmällisesti määriteltyjä ohjeita jonkin tehtävän suorittamiseksi Korkean tason suunnittelussa kaksi tärkeää päämäärää: oikeellisuus tehokkuus Tietorakenteet, syksy 2007 9 Toteutukseen liittyviä tavoitteita vahvuus (eng. robustness) mukautuvuus uudelleenkäytettävyys Olioperustaisia suunnittelu/toteutusmenetelmiä abstraktio kapselointi modulaarisuus Sovellus Algoritmi1 Algoritmi2 Algoritmi3 Sovellus Algoritmi1 Algoritmi2 Algoritmi3 Tietorakenteet, syksy 2007 10 Tietorakenteet, syksy 2007 11

Algoritmien analysoinnista Algoritmin tehokkuuden mittaaminen? haluttaisiin muodostaa funktio f(n), joka kuvaa algoritmin suoritusaikaa Algoritmien analysoinnista Kokeellinen analyysi? algoritmin suoritusaika t Algoritmi 1 Algoritmi 2 Syötteen koko (parametri) n Tietorakenteet, syksy 2007 12 Tietorakenteet, syksy 2007 13 Algoritmien analysoinnista Kokeellinen analyysi + sinänsä varmin tapa tutkia tietyn algoritmin suorituskykyä tietyn tehtävän ratkaisussa - vaikea arvioida algoritmin suorituskykyä kaikilla mahdollisilla syötteillä - algoritmien yleisempi vertailu/luokittelu hankalaa - vaatii algoritmin toteuttamisen Algoritmien analysoinnista Ajatus 2: suoritettujen perusoperaatioiden tarkka analysointi muodostetaan algoritmille alhaisen tason koodiesitys (esim. kännetään konekielelle) määritetään t i = alhaisen tason komennon i vaatima suoritusaika määritetään n i = alhaisen tason komennon i suoritusten lukumäärä kokonaisaika = Σ i (n i t i ) Ehkä tarkkaa, mutta työlästä ja laite/kieliriippuvaista! Tietorakenteet, syksy 2007 14 Tietorakenteet, syksy 2007 15

Pseudokoodi Algoritmin tarkastelu paperilla: pseudokoodi Geneeristä ohjelmakoodia, jossa sivuutetaan tarpeettomat yksityiskohdat oleellista toiminta-askeleiden kuvaus, ei esim. pilkulleen tietynlainen syntaksi sekoitus luonnollista kieltä ja geneerisiä ohjelmointirakenteita (kontrollirakenteet, aliohjelmakutsut jne.) kuvaa algoritmin toiminnan riittävän täsmällisesti (asiayhteyden vaatimalla tarkkuudella) Tietorakenteet, syksy 2007 16 Pseudokoodi Algorithm OddCount(A, n) Input: Taulukko A, jossa n kokonaislukua Output: Tulostaa taulukon A parittomien lukujen lukumäärän odds 0 for i 0 to n 1 Do if A[i] on pariton then odds odds + 1 end if end for tulosta arvo odds return Tietorakenteet, syksy 2007 17 Pseudokoodi int OddCount( int A[ ], int n ) { /* Funktio OddCount C/C++ -kielellä */ int odds = 0, i = 0; for( i = 0; i < n; i++ ) { if( (A[i] % 2) == 1 ) { odds++; } } printf( %d\n, odds ); return; } Suoritusajan arviointi yleisellä tasolla Yhä ongelma: konkreettinen suoritusaika riippuu suoritusympäristöstä suoritusajan abstraktimpi tarkastelu? Suoritusaika kuitenkin aina verrannollinen suoritettujen operaatioiden lukumäärään funktion f(n) abstrakti aikayksikkö = suoritettavien alkeisoperaatioiden määrä Alkeisoperaatio: perusoperaatio, jonka suoritusaika oletetaan vakioksi Tietorakenteet, syksy 2007 18 Tietorakenteet, syksy 2007 19

Alkeisoperaatiot Esim. seuraavat voidaan katsoa alkeisoperaatioiksi arvon asetus muuttujaan taulukon alkion muistipaikan laskenta olioviitteen laskenta kahden arvon vertailu aritmeettinen operaatio metodikutsu metodin arvon palauttaminen Esimerkki alkeisoperaatioiden määrän laskennasta Algorithm OddCount(A, n) odds 0 1 operaatio for i 0 to n 1 Do 2 alkuoperaatiota, 3 operaatiota if A[i] on pariton then odds odds + 1 end if end for return odds 2 operaatiota 2 operaatiota 1 operaatio Yhteismäärä? vähintään? 1 + 2 + n (3 + 2) + 1 = 4 + 5n enintään? 1 + 2 + n (3 + 4) + 1 = 4 + 7n Tietorakenteet, syksy 2007 20 Tietorakenteet, syksy 2007 21 Toinen esimerkki Algorithm OCRepeat(A, n) for i 1 to n Do 2 alkuoperaatiota, 3 operaatiota OddCount(A, i) end for return 1 + kork. 4 + 7i operaatiota 1 operaatio Yhteismäärä enintään? 3+n (3+1)+Σ n i=1 (4+7i) = 3+4 n+4 n+7 Σ n i=1 i = 3+8 n+7 n(n+1)/2 Tietorakenteet, syksy 2007 22