811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto



Samankaltaiset tiedostot
1. Johdanto Algoritmeista ja tietorakenteista

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811120P Diskreetit rakenteet

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Luento 1 Ti Timo Männikkö

811120P Diskreetit rakenteet

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit - syksy

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

4 Tehokkuus ja algoritmien suunnittelu

811120P Diskreetit rakenteet

Algoritmit 1. Luento 2 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

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

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Nopea kertolasku, Karatsuban algoritmi

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

Algoritmit 1. Demot Timo Männikkö

58131 Tietorakenteet ja algoritmit (syksy 2015)

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

10. Painotetut graafit

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

3. Laskennan vaativuusteoriaa

Zeon PDF Driver Trial

Algoritmin määritelmä [Sipser luku 3.3]

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Uolevin reitti. Kuvaus. Syöte (stdin) Tuloste (stdout) Esimerkki 1. Esimerkki 2

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Abstraktiot ja analyysi algoritmit ja informaation esitykset

Turingin koneen laajennuksia

Algoritmit 2. Luento 14 Ke Timo Männikkö

Ohjelmoinnin peruskurssi Y1

ALGORITMIT & OPPIMINEN

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 2. Luento 8 To Timo Männikkö

Ohjelmoinnin peruskurssi Y1

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

MS-A0402 Diskreetin matematiikan perusteet

Ohjelmoinnin perusteet Y Python

Verkon värittämistä hajautetuilla algoritmeilla

Esimerkkejä vaativuusluokista

Luento 2: Viivan toteutus

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Harjoitustyön testaus. Juha Taina

Ohjelmoinnin perusteet Y Python

6.4. Järjestyssuhteet

Täydentäviä muistiinpanoja laskennan rajoista

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

Kuinka määritellään 2 3?

Tietorakenteet, laskuharjoitus 2,

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

Tietorakenteet (syksy 2013)

1. Universaaleja laskennan malleja

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

811120P Diskreetit rakenteet

Algoritmit 2. Luento 7 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

5 Kertaluokkamerkinnät

Ratkeavuus ja efektiivinen numeroituvuus

A TIETORAKENTEET JA ALGORITMIT

1 Erilaisia tapoja järjestää

Yhteydettömän kieliopin jäsennysongelma

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Epäyhtälöt ovat yksi matemaatikon voimakkaimmista

Ohjelmoinnin peruskurssi Y1

811120P Diskreetit rakenteet

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Määrittelydokumentti

811120P Diskreetit rakenteet

Malliratkaisut Demo 1

Ohjelmoinnin perusteet Y Python

11. Javan toistorakenteet 11.1

2 Sanoja järjestävän funktion ohjelmoiminen

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

Algoritmit 2. Luento 13 Ti Timo Männikkö

Talousmatematiikan perusteet ORMS.1030

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Talousmatematiikan perusteet ORMS.1030

T : Max-flow / min-cut -ongelmat

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

ITKP102 Ohjelmointi 1 (6 op)

Transkriptio:

811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto

Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2

I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien alkuperä Käsite 800-luvulla teoksesta al-kitāb al-mukhtaşar fī hisāb al-jabr wa-l-muqābala Sisälsi mm. yhtälöiden systemaattista ratkaisua Kirjoittaja matemaatikko Muhammad ibn Mūsā al- Khwārizmī Kirjoittajan nimestä sana algoritmi 811312A TRA, Johdanto 3

I.1.2. Algoritmin määritelmä Ei standardia määritelmää Formaaleja määritelmiä 1930-luvulta lähtien Tässä kurssissa epämuodollisesti: 1. Äärellinen käskyjono 2. Suorittaa ennalta määritellyn tehtävän annetuilla syötteillä 3. Askeleet ovat tarkasti määriteltyjä (mekaanisia) 4. Päättyy äärellisessä ajassa Yleensä vaaditaan myös deterministisyyttä Tuottaa samalla syötteellä aina saman tuloksen 811312A TRA, Johdanto 4

I.1.2. Algoritmit ja laskennalliset ongelmat Algoritmi ratkaisu laskennalliseen ongelmaan, esimerkiksi järjestämisongelma: Syöte: Lukujono a 1,a 2, a n, missä n on jokin positiivinen kokonaisluku Tulostus: Syötteen luvut järjestyksessä a 1, a 2, a n, niin että a 1 a 2 a n Ongelman ilmentymä: Ongelma konkreettisella syötteellä Järjestämisongelman ilmentymä: Järjestä luvut 34,11,9,7,22,15 811312A TRA, Johdanto 5

I.1.3 Esimerkkejä algoritmien sovelluskohteista Sovellukset taloudessa tyypillisesti optimointialgoritmeja, esim. jakelun optimointi Geenisekvenssien käsittely (esim. Human Genome Project) Internet: algoritmeja tiedon hakemiseen, keräämiseen ja lajitteluun Tietojen salaus (esim. sähköisessä kaupankäynnissä) Konenäkö (esim. hahmontunnistus videokuvasta) 811312A TRA, Johdanto 6

I.1.4 Algoritmien rajoituksista Kaikki ongelmat eivät algoritmisesti ratkeavia Esimerkiksi päätellä syötteenä saadusta tietokoneohjelman koodista päättyykö ohjelman suoritus Olemassa ongelmia, joihin algoritmi, mutta algoritmia ei tunneta Joidenkin ongelmien parhaat ratkaisualgoritmit suorituskelvottomia hitautensa vuoksi 811312A TRA, Johdanto 7

I.1.5 Algoritmin esittäminen Tällä kurssilla käytetään pseudokoodia: Syöte: Taulukko A[1,..,n], n >= 1 Tulostus: Suurin luvuista A[1],, A[n] MAKSIMI(A) 1. i = 2 2. x = A[1] 3. while i <= n 4. if A[i] > x 5. x = A[i] 6. i = i+1 7. return x 811312A TRA, Johdanto 8

I.1.6 Tietorakenteet Tapa, jolla algoritmi 1. säilöö ja 2. järjestää käyttämäänsä dataa Sopivin rakenne määräytyy laskennallisen tehtävän mukaan Eri tietorakenteiden ominaisuudet tunnettava, kun suunnittelee tai valitsee algoritmia Myöhemmin kurssilla tarkastellaan erilaisia tietorakenteita 811312A TRA, Johdanto 9

I.2. Algoritmien analyysistä Miksi analysoidaan? 1. Varmistetaan, että algoritmi toimii oikein Päättyminen Asianmukainen tulos 2. Algoritmin suorituskyvyn tarkastelu 811312A TRA, Johdanto 10

I.2.1 Algoritmin suorituskyky Algoritmin kuluttamien resurssien määrä Muistin kulutus (tilakompleksisuus) Algoritmin suoritusaika suhteessa syötteen kokoon Aikakompleksisuus Tällä kurssilla keskitytään aikakompleksisuuteen 811312A TRA, Johdanto 11

I.2.1.1 Syitä tutkia aikakompleksisuutta Osataan valita hitaan ja nopean algoritmin väliltä Algoritmien suorituskyvyn rajojen tunteminen Hyvä tietää ongelmia, joihin ei tunneta nopeaa ratkaisua Nopeakaan tietokone ei korjaa kehnon algoritmin suoriutumista 811312A TRA, Johdanto 12

N f(n) 20 40 60 80 100 500 1000 n 2μs 4μs 6μs 8μs 10μs 50μs 0.1ms n lg(n) 8.6μs 21.3μs 35μs 50μs 66μs 0.45ms 1ms n 2 40 μs 0.16ms 0.36ms 0.64ms 1ms 0.025s 0.1s n 3 0.8ms 6.4ms 0.022s 0.05s 0.1s 1.25s 1min40s 2 n 0.1s 1.27 päivää n! 7700 vuotta 2.6 10 33 vuotta 3660 vuotta 3.8 miljardia vuotta Algoritmin suoritusaikoja vaihtelevalla syötteen koolla (N). Oletetaan, että algoritmin suoritettavien askelten lukumäärä riippuu funktiosta f(n), missä n on syötteen koko ja että tietokone suorittaa noin 10 000 000 perusoperaatiota sekunnissa. 811312A TRA, Johdanto 13