TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

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

811312A Tietorakenteet ja algoritmit I Johdanto

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet

4 Tehokkuus ja algoritmien suunnittelu

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

TIE Tietorakenteet ja algoritmit 25

Ohjelmoinnin perusteet Y Python

Mukautuvat järjestämisalgoritmit

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

1. Johdanto Algoritmeista ja tietorakenteista

2. Perustietorakenteet

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Algoritmit 1. Luento 10 Ke Timo Männikkö

9 Erilaisia tapoja järjestää

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Algoritmit 1. Luento 2 Ke Timo Männikkö

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmoinnin perusteet Y Python

11/20: Konepelti auki

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

Täydentäviä muistiinpanoja laskennan rajoista

Lisää pysähtymisaiheisia ongelmia

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

17/20: Keittokirja IV

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

A TIETORAKENTEET JA ALGORITMIT

TOIMINNALLINEN MÄÄRITTELY MS

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

ohjelman arkkitehtuurista.

Algoritmit 2. Luento 1 Ti Timo Männikkö

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Kokonaislukuoptiomointi Leikkaustasomenetelmät

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Lähteet. OHJ-2010 TIETORAKENTEIDEN KÄYTTÖ lukuvuosi Terhi Kilamo

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

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Tietueet. Tietueiden määrittely

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

Johdatus diskreettiin matematiikkaan (syksy 2009) Harjoitus 3, ratkaisuja Janne Korhonen

Turingin koneen laajennuksia

Ohjelmoinnin peruskurssien laaja oppimäärä

Rajapinnat ja olioiden välittäminen

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

Ohjelmoinnin perusteet Y Python

5 Kertaluokkamerkinnät

Tietorakenteet ja algoritmit CSE- A1140 (5 op)

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Tämä on helpompi ymmärtää, kun tulkitaan keko täydellisesti tasapainotetuksi binääripuuksi, jonka juuri on talletettu taulukon paikkaan

Yhteydettömän kieliopin jäsennysongelma

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Y CSE- A1141 (5 op)

Ohjelmointi 1 Taulukot ja merkkijonot

1. Mitä tehdään ensiksi?

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

Ohjelmiston toteutussuunnitelma

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

Matematiikan tukikurssi, kurssikerta 5

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Ohjelmoinnin peruskurssien laaja oppimäärä

Zeon PDF Driver Trial

Kimppu-suodatus-menetelmä

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Verkon värittämistä hajautetuilla algoritmeilla

A TIETORAKENTEET JA ALGORITMIT

TAMPEREEN TEKNILLINEN YLIOPISTO

Malliratkaisut Demot

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

TIE Principles of Programming Languages CEYLON

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

Oppimistavoitematriisi

Koodaamme uutta todellisuutta FM Maarit Savolainen

7/20: Paketti kasassa ensimmäistä kertaa

Oppimistavoitematriisi

Tieto- ja tallennusrakenteet

Chomskyn hierarkia ja yhteysherkät kieliopit

ALGORITMIT & OPPIMINEN

8/20: Luokat, oliot ja APIt

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

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

Tiraka, yhteenveto tenttiinlukua varten

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

KOODAUSPLÄJÄYS. Ohjelmoinnin perusteet

Harjoitus 3 ( )

Transkriptio:

TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit

TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen Tietorakenteet ja algoritmit. Useimmat algoritmit ovat peräisin kirjasta Introduction to Algorithms; Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Lisäksi luentomonistetta koottaessa on käytetty seuraavia kirjoja: Introduction to The Design & Analysis of Algorithms; Anany Levitin Olioiden ohjelmointi C++:lla; Matti Rintala, Jyke Jokinen Tietorakenteet ja Algoritmit; Ilkka Kokkarinen, Kirsti Ala-Mutka The C++ Standard Library; Nicolai M. Josuttis

TIE-20100 Tietorakenteet ja algoritmit 3 1 Johdanto Mietitään ensin hiukan syitä tietorakenteiden ja algoritmien opiskelulle Algorithms in the world

TIE-20100 Tietorakenteet ja algoritmit 4 1.1 Miksi? Mitkä ovat sinun elämääsi eniten vaikuttavat algoritmit? Picture: Chris Watt

TIE-20100 Tietorakenteet ja algoritmit 5 Tietokoneohjelmia ei ole olemassa ilman algoritmeja algoritmeihin törmäät esimerkiksi seuraavissa sovelluksissa:

TIE-20100 Tietorakenteet ja algoritmit 6

TIE-20100 Tietorakenteet ja algoritmit 7 aina, kun käytät tietokonetta, käytät myös algoritmeja.

TIE-20100 Tietorakenteet ja algoritmit 8 1.2 Kaikki pennillä? Via: The Washington Post

TIE-20100 Tietorakenteet ja algoritmit 9 Tietorakenteita tarvitaan ohjelmissa käsiteltävän tiedon tallettamiseen ja sen käsittelyn mahdollistamiseen ja helpottamiseen tietorakenteita on monia eivätkä ne kaikki sovi kaikkiin tilanteisiin ohjelmoijan pitää osata valita tilanteeseen sopivin vaihtoehtojen käyttäytyminen, vahvuudet ja heikkoudet on tunnettava Modernit ohjelmointikielet tarjoavat valmiina helppokäyttöisiä tietorakenteita. Näiden ominaisuuksien sekä käyttöön vaikuttavien rajoitteiden tuntemiseksi tarvitaan perustietorakenneosaamista

TIE-20100 Tietorakenteet ja algoritmit 10

TIE-20100 Tietorakenteet ja algoritmit 11 Kuinka moni on turhautunut ohjelman tai esimerkiksi kännykän hitauteen? toiminnallisuus on toki ensisijaisen tärkeää kaikille ohjelmille, mutta tehokkuus ei ole merkityksetön sivuseikka on tärkeää huomioida ja miettiä ratkaisujaan myös ajan- ja muistinkäytön kannalta valmiin kirjaston käyttö näyttää usein suoraviivaisemmalta kuin onkaan Näitä asioita käsitellään tällä kurssilla

TIE-20100 Tietorakenteet ja algoritmit 12 2 Käsitteitä ja merkintöjä Tässä luvussa esitellään kurssilla käytettävää käsitteistöä ja merkintätapoja. Luvussa käsitellään myös pseudokoodiesityksen ja ohjelmointikielisen koodin eroja. Esimerkkinä käytetään järjestämisalgoritmia INSERTION-SORT.

TIE-20100 Tietorakenteet ja algoritmit 13 2.1 Tavoitteet Kurssin keskeisenä tavoitteena on antaa opiskelijalle käyttöön peruskoneisto kuhunkin ohjelmointitehtävään sopivan ratkaisun valitsemiseen ja omien ratkaisujen tehokkuuden arvioimiseen karkealla tasolla. Kurssilla keskitytään tilanteeseen sopivan tietorakenteen valintaan. Lisäksi käsitellään käytännön tilanteissa usein vastaan tulevia ongelmatyyppejä ja algoritmeja, joilla ne voi ratkaista.

TIE-20100 Tietorakenteet ja algoritmit 14 Kurssilla keskitytään lähinnä ns. hyviin algoritmeihin. Painotus on siis siinä, miten algoritmin ajankulutus kasvaa syötekoon kasvaessa, eikä niinkään yksityiskohtien optimoinnissa.

TIE-20100 Tietorakenteet ja algoritmit 15 2.2 Peruskäsitteistöä Tietorakenne

TIE-20100 Tietorakenteet ja algoritmit 16 Tapa tallettaa ja järjestää tietoa: tietoa pystytään lisäämään ja hakemaan algoritmien avulla. talletettua tietoa voidaan muokata tietorakenteita on useamman tasoisia: tietorakenne voi koostua toisista tietorakenteista

TIE-20100 Tietorakenteet ja algoritmit 17 Algoritmi: Kuva 1: kuva: Aldo Cortesi

TIE-20100 Tietorakenteet ja algoritmit 18 Joukko ohjeita tai askeleita jonkin ongelman ratkaisemiseksi Hyvin määritelty laskentamenetelmä, joka saa syötteenään alkion tai joukon alkioita ja ja tuottaa tuloksenaan alkion tai joukon alkioita Tapa tuottaa syötteestä tulos

TIE-20100 Tietorakenteet ja algoritmit 19 hyvin määritelty = jokainen askel on kuvattu niin tarkasti, että lukija (ihminen tai kone) osaa suorittaa sen jokainen askel on määritelty yksikäsitteisesti samat vaatimukset pätevät askelten suoritusjärjestykselle suorituksen tulee päättyä äärellisen askelmäärän jälkeen

TIE-20100 Tietorakenteet ja algoritmit 20 Algoritmi ratkaisee jonkin hyvin määritellyn (laskenta)tehtävän. laskentatehtävä määrittelee, missä suhteessa tulosten tulee olla annettuihin syötteisiin esimerkiksi: taulukon järjestäminen syötteet: jono lukuja a 1, a 2,..., a n tulokset: luvut a 1, a 2,..., a n suuruusjärjestyksessä pienin ensin lentoyhteyksien etsiminen syötteet: lentoreittiverkosto eli kaupunkeja joiden välillä lentoyhteyksiä tulokset: Lentojen numerot, yhteyden tiedot ja hinta.

TIE-20100 Tietorakenteet ja algoritmit 21 laskentatehtävän esiintymä eli instanssi saadaan antamalla tehtävän syötteille lailliset arvot järjestämistehtävän instanssiesimerkki: 31, 41, 59, 26, 41, 58 Algoritmi on oikea (correct), jos se pysähtyy ja antaa oikeat tulokset aina kun sille on annettu laillinen syöte.

TIE-20100 Tietorakenteet ja algoritmit 22 algoritmin tai laskentatehtävän määritelmä saa kieltää osan muodollisesti mahdollisista syötteistä

TIE-20100 Tietorakenteet ja algoritmit 23 algoritmi voi olla virheellinen kolmella tavalla antaa väärän lopputuloksen kaatuu kesken suorituksen ei koskaan lopeta virheellinenkin algoritmi on joskus hyvin käyttökelpoinen, jos virhetiheys hallitaan! esim. luvun testaus alkuluvuksi

TIE-20100 Tietorakenteet ja algoritmit 24 Periaatteessa mikä tahansa menetelmä kelpaa algoritmien esittämiseen, kunhan tulos on tarkka ja yksikäsitteinen. yleensä algoritmit toteutetaan tietokoneohjelmina tai laitteistoina käytännön toteutuksessa on otettava huomioon monia insinöörinäkökohtia sopeuttaminen käyttötilanteeseen syötteiden laillisuuden tarkistukset virhetilanteiden käsittely ohjelmointikielen rajoitukset laitteiston ja kielen aiheuttamat nopeus- ja tarkoituksenmukaisuusnäkökohdat ylläpidettävyys modulaarisuus jne. algoritmin idea hukkuu helposti toteutusyksityiskohtien alle