Algoritmit 2. Luento 14 Ke Timo Männikkö

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

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

58131 Tietorakenteet ja algoritmit (syksy 2015)

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Tietorakenteet ja algoritmit

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).

1.4 Funktioiden kertaluokat

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 2. Luento 9 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

10. Painotetut graafit

Algoritmit 1. Luento 5 Ti Timo Männikkö

4. Joukkojen käsittely

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

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

Algoritmit 2. Luento 12 To Timo Männikkö

Tietorakenteet ja algoritmit - syksy

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

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Demot Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Algoritmianalyysin perusteet

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

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

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

3SAT-ongelman NP-täydellisyys [HMU ]

4 Tehokkuus ja algoritmien suunnittelu

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

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Nopea kertolasku, Karatsuban algoritmi

5 Kertaluokkamerkinnät

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

Algoritmit 1. Luento 7 Ti Timo Männikkö

13 Lyhimmät painotetut polut

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

3. Laskennan vaativuusteoriaa

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

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Muita vaativuusluokkia

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

10. Painotetut graafit

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

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

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.

Algoritmit 2. Luento 8 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:

Laskennan vaativuus ja NP-täydelliset ongelmat

4. Algoritmien tehokkuus

REKURSIO. Rekursiivinen ohjelma Kutsuu itseään. Rekursiivinen rakenne. Rakenne sisältyy itseensä. Rekursiivinen funktio. On määritelty itsensä avulla

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Transkriptio:

Algoritmit 2 Luento 14 Ke 3.5.2017 Timo Männikkö

Luento 14 Ositus ja rekursio Rekursion toteutus Kertaus ja tenttivinkit Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 2/30

Ositus Tehtävän esiintymä ositetaan useammaksi pienemmäksi esiintymäksi Osatehtävät ratkaistaan, yleensä rekursiivisesti Osatehtävien ratkaisuista kootaan alkuperäisen tehtävän ratkaisu Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 3/30

Rekursio Algoritmi kutsuu itseään ratkaisun aikana Oltava lopetusehto, jotta rekursio päättyy Usein rekursiivinen ratkaisu on hyvin helppo löytää Mutta aina rekursio ei ole paras mahdollinen ratkaisu Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 4/30

Rekursion toteutus Algoritmin kutsu annetulla ongelmalla: Jos pieni yksinkertainen ongelma Ratkaistaan se ja palautetaan ratkaisu Muuten jaetaan ongelma pienempiin vastaavanlaisiin ongelmiin Ratkaistaan ne rekursiivisilla kutsuilla Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 5/30

Esimerkki: Taulukon summa Tehtävä: Laske taulukon lukujen summa Osittava ratkaisu: Jos taulukossa vain yksi luku, summa on tuo luku Jos taulukossa n kpl lukuja, missä n > 1 Lasketaan (n 1):n ensimmäisen luvun summa Lisätään siihen viimeinen luku Saadaan kaikkien n:n luvun summa Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 6/30

Rekursiivinen ratkaisu laskesumma(t, n) { if (n == 1) return t[0]; else return (laskesumma(t, n-1) + t[n-1]); } Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 7/30

Rekursiivinen ratkaisu laskesumma(t, n) { if (n == 1) return t[0]; else { alkusumma = laskesumma(t, n-1); summa = alkusumma + t[n-1]; return summa; } } Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 8/30

Toteutus ohjelmointikielellä public static int laskesumma(int[] t, int n) { if (n == 1) return t[0]; else { int alkusumma = laskesumma(t, n-1); int summa = alkusumma + t[n-1]; return summa; } } Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 9/30

Algoritmin toiminta Ensimmäisessä kutsussa n on koko taulukon pituus Siirrytään else-osaan Summaa ei voi laskea ennen kuin alkusumma on laskettu Tämän vaiheen suoritus jää toistaiseksi kesken Rekursiokutsu taulukon pituudella n-1 Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 10/30

Algoritmin toiminta jatkuu Saman algoritmin kutsu pituudella n-1 Siirrytään else-osaan Summaa ei voi laskea ennen kuin alkusumma on laskettu Tämän vaiheen suoritus jää toistaiseksi kesken Rekursiokutsu taulukon pituudella n-2 Jne. Huom: Kaikki suoritukset jäävät kesken odottamaan rekursion päättymistä Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 11/30

Algoritmin toiminta jatkuu Rekursio päättyy kun n pienenee arvoon 1 Jolloin palautetaan taulukon ensimmäinen luku Edellinen kesken jäänyt suoritus jatkuu Alkusumma saadaan paluuarvona Summa voidaan laskea Palautetaan summa Algoritmin tämän vaiheen suoritus päättynyt Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 12/30

Algoritmin toiminta jatkuu Edellinen kesken jäänyt suoritus jatkuu Alkusumma saadaan paluuarvona Summa voidaan laskea Palautetaan summa Algoritmin tämän vaiheen suoritus päättynyt Jne. Huom: Kesken jääneet suoritukset päättyvät päinvastaisessa järjestyksessä Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 13/30

Algoritmin toiminta jatkuu Algoritmin viimeinenkin kesken jäänyt suoritus viety loppuun Palataan sinne missä ensimmäinen kutsu tehtiin Algoritmin suoritus päättynyt Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 14/30

Kertaus ja tenttivinkit Algoritmin suunnittelu: Suunnittelumenetelmät Algoritmin esitys: Sanallisesti, pseudokoodina Algoritmin analysointi: Aikavaativuuden kertaluokka Tietorakenteiden valinta: Tietoalkiot ja operaatiot Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 15/30

Algoritmien analysointi Suoritusajan vaativuus: Lasketaan/arvioidaan algoritmin askelien/operaatioiden lukumääriä Määrätään suoritusajan riippuvuus syöttötiedon koosta Oleellista suoritusajan asymptoottinen kertaluokka Paras mahdollinen suoritusaika, huonoin mahdollinen suoritusaika, keskimääräinen suoritusaika Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 16/30

Asymptoottinen kertaluokka Θ(g(n)) = funktiot, jotka asymptoottisesti yhtäsuuria kuin g(n) Peruskertaluokkia: Θ(1), Θ(log n), Θ(n), Θ(n log n), Θ(n 2 ), Θ(n 3 ) Yleinen polynominen: Θ(n k ) Eksponentiaalinen: Θ(2 n ) Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 17/30

Prioriteettijono ja keko Minimiprioriteettijono: Perusoperaatiot (lisää alkio, poista pienin) Muita operaatioita perusoperaatioiden avulla Kekorakenne: Perusoperaatiot (lisäys, poisto) Toteutus taulukolla Aikavaativuus Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 18/30

Järjestäminen eli lajittelu Kekolajittelu: Muodostetaan alkioista keko Vaihdetaan ensimmäinen ja viimeinen alkio Jätetään viimeinen alkio keon ulkopuolelle Korjataan yhtä alkiota pienemmän keon osittainen järjestys kuntoon Jatketaan kunnes keossa enää yksi alkio Kekolajittelun aikavaativuus: Keko-operaatioiden aikavaativuus Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 19/30

Hajautus Yhteentörmäysten käsittely: Ketjutus Avoin osoitteenmuodostus Avoin osoitteenmuodostus: Hajautusfunktiot Lineaarinen etsintä Neliöllinen etsintä Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 20/30

B-puu Astetta m oleva B-puu Perusoperaatiot (haku, lisäys, poisto) Lisäys: Poisto: Tarvittaessa solmujen halkaisu Tarvittaessa alkioiden siirto tai solmujen yhdistäminen Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 21/30

Muita tietorakenteita Puut: Nelipuu Trie-rakenteet Joukot: Lista, taulukko, bittivektori Esitys ja operaatiot Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 22/30

Suunnittelumenetelmät Raaka voima: Ongelman suoraviivainen ratkaiseminen Osittaminen: Ositus osatehtäviin, rekursiivinen ratkaiseminen, ratkaisun kokoaminen Taulukointi: Osatehtävien ratkaisujen taulukointi, taulukon täyttäminen vaiheittain Ahne menetelmä: Parhaimmalta näyttävän vaihtoehdon valinta Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 23/30

Ositus ja rekursio Aikavaativuuden rekursioyhtälö: { c 1, kun n = 1 T (n) = at (n/b) + cn α, kun n = b k, k 1 Osituksen tasapainoisuus Rekursioyhtälön muodostaminen Master-lauseen soveltaminen (Lausetta ei tarvitse muistaa ulkoa) Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 24/30

Ahneita algoritmeja Verkon lyhin virittävä puu: Kruskalin menetelmä Primin menetelmä Merkkitiedon tiivistäminen: Huffmanin koodi Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 25/30

Raa an voiman algoritmeja Verkon 3-väritysongelma: Väritysvaihtoehtojen läpikäynti Peruutus Pelipuiden läpikäynti: Voittoarvojen määrittäminen Tehostaminen α-β-karsinnalla Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 26/30

Heuristisia algoritmeja Kauppamatkustajan ongelma: Linin ja Kernighanin 2-vaihtoalgoritmi Geneettiset algoritmit Simuloitu jäähdytys Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 27/30

Vaativuusluokat P = päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla NP = päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla Epädeterministinen arvaus Deterministinen polynominen tarkistus Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 28/30

NP-täydellisyys Päätösongelman muuntaminen toiseksi päätösongelmaksi Ongelma T NP on NP-täydellinen, jos jokainen ongelma S NP voidaan muuntaa polynomisessa ajassa ongelmaksi T NP-täydelliset ongelmat: Luokan NP vaikeimmat ongelmat Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 29/30

Onnea tenttiin! Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 30/30