Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tietorakenteet ja algoritmit - syksy

Algoritmit 1. Luento 3 Ti Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit I Johdanto

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

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

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

811120P Diskreetit rakenteet

Laskennan vaativuus ja NP-täydelliset ongelmat

Algoritmit 1 Syksy 2008

Algoritmit 1. Demot Timo Männikkö

811120P Diskreetit rakenteet

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

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

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Luku 8. Aluekyselyt. 8.1 Summataulukko

Algoritmit 1. Demot Timo Männikkö

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 2. Luento 11 Ti Timo Männikkö

4.3. Matemaattinen induktio

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Numeeriset menetelmät

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko

Algoritmit 2. Luento 3 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

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

Numeeriset menetelmät

Algoritmit 2. Demot Timo Männikkö

13 Lyhimmät painotetut polut

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

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

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

Algoritmit 2. Luento 4 Ke Timo Männikkö

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

10. Painotetut graafit

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Nopea kertolasku, Karatsuban algoritmi

A TIETORAKENTEET JA ALGORITMIT

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Johdatus verkkoteoriaan 4. luento

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

6. Approksimointialgoritmit

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT & OPPIMINEN

Esimerkkejä vaativuusluokista

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Luento 9 Ti Timo Männikkö

811120P Diskreetit rakenteet

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

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

Ohjelmoinnin perusteet Y Python

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

58131 Tietorakenteet ja algoritmit (syksy 2015)

Numeeriset menetelmät

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Ratkeavuus ja efektiivinen numeroituvuus

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

Algoritmit 1. Luento 4 Ke Timo Männikkö

Transkriptio:

Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö

Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 2/18

Algoritmi Algoritmi: Askel askeleelta suoritettava menetelmä, tekniikka tai ohje jonkin tehtävän suorittamiseksi tai jonkin ongelman ratkaisemiseksi Hyvä algoritmi: Oltava ainakin riittävän tehokas Algoritmin toteutus (yleensä) tietokoneella: Vaatii sille sopivat tietorakenteet Tietorakenne: Systemaattinen tapa tallentaa algoritmin tarvitsema tieto Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 3/18

Esimerkkejä P 1 : P 2 : Annettu kokonaisluvut n ja m Laske tulo n m Löytyy tehokkaita ratkaisualgoritmeja Annettu kokonaisluvut a 1, a 2,..., a n Järjestä luvut kasvavaan järjestykseen Löytyy tehokkaita ratkaisualgoritmeja Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 4/18

Esimerkkejä P 3 : Annettu verkko G Sisältääkö G Eulerin polun (= yhtenäinen polku, jossa jokainen tie täsmälleen kerran) Löytyy tehokkaita ratkaisualgoritmeja 2 4 1 3 5 Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 5/18

Esimerkkejä P 4 : Annettu verkko G Sisältääkö G Hamiltonin kehän (= silmukka, jossa jokainen solmu täsmälleen kerran) Ongelma kuuluu NP-täydellisten ongelmien joukkoon Ei luultavasti ole olemassa tehokasta ratkaisualgoritmia Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 6/18

Esimerkkejä P 5 : Annettu tietokoneohjelma A ja sen syöte x Pysähtyykö ohjelman A suoritus syötteellä x Pysähdysongelma (halting problem) Ei ole olemassa ratkaisualgoritmia (Turing 1936) Osittaisratkaisu toteuttamalla ohjelma: Jos pysähtyy, vastaus on kyllä Jos ei pysähdy äärellisessä ajassa, vastaus jää auki Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 7/18

Esimerkkejä P 6 : Annettu tietokoneohjelma A Pysähtyykö ohjelman A suoritus kaikilla syötteillä Ei ole olemassa edes edellisen kaltaista osittaisratkaisua Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 8/18

Algoritmi Jono ristiriidattomia, askel askeleelta suoritettavia käskyjä Yleisemmin: Ohje, suunnitelma, resepti jne. Täsmällisemmin: Ongelman ratkaisumenetelmä, joka voidaan toteuttaa tietokoneohjelmana Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 9/18

Algoritmin toteutus Algoritmilla syötteet ja tulosteet: Muuntaa syöttötiedot tulostustiedoiksi Laskennallinen ongelma Tarvitaan sopiva tietorakenne Algoritmin vaatimuksia: Askelmäärä äärellinen Antaa oikean vastauksen Riittävän tehokas Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 10/18

Ongelman ratkaiseminen Ongelman esiintymä: Ongelma tietyillä lähtötiedoilla Samalla ongelmalla eri esiintymiä Voidaan haluta: Paras ratkaisu useiden mahdollisten ratkaisujen joukosta Hyvä ratkaisu, vaikka ei välttämättä paras Parempi kuin tunnetut ratkaisut Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 11/18

Algoritmin tehokkuus Algoritmin tarvitsemat resurssit: Muistitila, kaistanleveys jne. Erityisesti: Suoritusaika Algoritmin analysointi: Tehokkuuden selvittäminen Muutama pieni esiintymä Resursseilla ei suurta merkitystä Suuri tai vaikea ongelma, useita esiintymiä Algoritmi valittava huolella Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 12/18

Algoritmin suoritusaika Voidaan periaatteessa mitata: Suoritetaan algoritmi erilaisilla ja erikokoisilla esiintymillä Mutta: Algoritmi on toteutettava (ohjelmoitava) Laitteiston ja ohjelmointiympäristön vaikutus Käytännössä voidaan tutkia vain rajoitettu joukko esiintymiä Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 13/18

Algoritmin analysointi Yleinen mittari suoritusajalle: Ei tarvitsisi toteuttaa algoritmia Riippumaton laitteistosta ja ohjelmoinnista Huomioidaan kaikki mahdolliset syöttötiedot Suoritusajan vaativuus: Lasketaan/arvioidaan algoritmin askelien/operaatioiden lukumääriä Määrätään suoritusajan riippuvuus syöttötiedon koosta Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 14/18

Esimerkki: Taulukon summa int laskesumma(int[] t, int n) { int summa = 0; for (int i = 0; i < n; i++) { summa = summa + t[i]; } return summa; } Voidaan laskea operaatioiden lukumäärä koon n funktiona (ei riipu taulukon alkioista) Suoritusaika muotoa T (n) = n t 1 + t 2 Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 15/18

Esimerkki: Taulukon suurin alkio int haesuurin(int[] t, int n) { int suurin = t[0]; for (int i = 1; i < n; i++) { if (suurin < t[i]) suurin = t[i]; } return suurin; } Operaatioiden lukumäärä riippuu myös taulukon alkioista Suoritusaika vaihtelee Silmukan runko suoritetaan aina n 1 kertaa Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 16/18

Esimerkki: Haku taulukosta int haealkio(int[] t, int n, int alkio) { for (int i = 0; i < n; i++) { if (t[i] == alkio) return i; } return -1; } Ei tiedetä, montako kertaa silmukan runko suoritetaan Vähintään kerran, enintään n kertaa Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 17/18

Keskimääräinen suoritusaika Haku taulukosta: Jos haettava alkio on k:s alkio, suoritetaan k vertailua Oletus: Jokaisen alkion haku todennäköisyydellä 1/n Keskimääräinen vertailujen lukumäärä 1 n (1 + 2+ + n) = 1 n = 1 n n(n + 1) 2 n i=1 i = n + 1 2 Algoritmit 1 Kevät 2017 Luento 1 Ti 10.1.2017 18/18