811312A Tietorakenteet ja algoritmit II Algoritmien analyysi

Samankaltaiset tiedostot
2. Algoritmien analyysi

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 2, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit , Harjoitus 1 ratkaisu

T Datasta tietoon, syksy 2005 Laskuharjoitus 8.12., ratkaisuja Jouni Seppänen

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Algoritmit 2. Luento 8 To Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

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

MATP153 Approbatur 1B Harjoitus 1, ratkaisut Maanantai

Algoritmit 1. Luento 11 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

811120P Diskreetit rakenteet

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Tehtäviä neliöiden ei-negatiivisuudesta

1.4 Funktioiden kertaluokat

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Insinöörimatematiikka IA

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 5 (6 sivua)

Algoritmit 1. Demot Timo Männikkö

1 Eksponenttifunktion määritelmä

Analyysi A. Harjoitustehtäviä lukuun 1 / kevät 2018

Algoritmit 1. Demot Timo Männikkö

( ) k 1 = a b. b 1) Binomikertoimen määritelmän mukaan yhtälön vasen puoli kertoo kuinka monta erilaista b-osajoukkoa on a-joukolla.

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

5 Kertaluokkamerkinnät

RATKAISUT x 2 3 = x 2 + 2x + 1, eli 2x 2 2x 4 = 0, joka on yhtäpitävä yhtälön x 2 x 2 = 0. Toisen asteen yhtälön ratkaisukaavalla saadaan

Ryhmän osajoukon generoima aliryhmä ja vapaat ryhmät

On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen.

Kertaa tarvittaessa induktiota ja rekursiota koskevia tietoja.

Tietorakenteet ja algoritmit - syksy

Matematiikan tukikurssi. Kertausta 1. välikokeeseen. Tehtävät

Äärettämän sarjan (tai vain sarjan) sanotaan suppenevan eli konvergoivan, jos raja-arvo lims

811312A Tietorakenteet ja algoritmit I Johdanto

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

811120P Diskreetit rakenteet

Matematiikan tukikurssi

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Matematiikan tukikurssi

58131 Tietorakenteet ja algoritmit (syksy 2015)

811120P Diskreetit rakenteet

Diskreetin Matematiikan Paja Ratkaisuja viikolle 4. ( ) Jeremias Berg. n(n + 1) 2. k =

2.2.1 Ratkaiseminen arvausta sovittamalla

LIITTEET Liite A Stirlingin kaavan tarkkuudesta...2. Liite B Lagrangen kertoimet...3

Tietorakenteet, laskuharjoitus 2,

Algoritmit 1. Luento 1 Ti Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

S Laskennallinen systeemibiologia

Algoritmit 2. Demot Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

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

Nopea kertolasku, Karatsuban algoritmi

2 avulla. Derivaatta on nolla, kun. g( 3) = ( 3) 2 ( 3) 5 ( 3) + 6 ( 3) = 72 > 0. x =

Algoritmit 1. Luento 5 Ti Timo Männikkö

Solmu 3/ toteutuu kaikilla u,v I ja λ ]0,1[. Se on aidosti konveksi, jos. f ( λu+(1 λ)v ) < λf(u)+(1 λ)f(v) (2)

1 Erilaisia tapoja järjestää

Matematiikan tukikurssi

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

Luento 6 Luotettavuus Koherentit järjestelmät

Algoritmit 2. Luento 1 Ti Timo Männikkö

1. (Jatkoa Harjoitus 5A tehtävään 4). Monisteen esimerkin mukaan momenttimenetelmän. n ne(y i Y (n) ) = 2E(Y 1 Y (n) ).

3 x < < 3 x < < x < < x < 9 2.

Epäyhtälöoppia matematiikkaolympialaisten tehtäviin

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

Luento 7 Luotettavuus Koherentit järjestelmät

5. Lineaarisen optimoinnin perusprobleemat

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

3 10 ei ole rationaaliluku.

4 KORKEAMMAN KERTALUVUN LINEAARISET DIFFERENTIAALIYHTÄLÖT. Kertaluvun n lineaarinen differentiaaliyhtälö ns. standardimuodossa on

11. Javan toistorakenteet 11.1

Algoritmit 2. Luento 7 Ti Timo Männikkö

8. Lajittelu, joukot ja valinta

4.3. Matemaattinen induktio

Otantajakauma. Otantajakauman käyttö päättelyssä. Otantajakauman käyttö päättelyssä

Sormenjälkimenetelmät

9 Erilaisia tapoja järjestää

Algoritmit 1. Luento 10 Ke Timo Männikkö

1 sup- ja inf-esimerkkejä

Algoritmit 1. Luento 13 Ti Timo Männikkö

Zeon PDF Driver Trial

Algoritmianalyysin perusteet

4.3 Signaalin autokorrelaatio

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

MS-A0402 Diskreetin matematiikan perusteet Yhteenveto, osa I

Otantajakauman käyttö päättelyssä

MATEMATIIKAN JA TILASTOTIETEEN LAITOS

Transkriptio:

811312A Tietoraketeet ja algoritmit 2016-2017 II Algoritmie aalyysi

Sisältö 1. Algoritmie oikeellisuus 2. Algoritmie suorituskyvy aalyysi 3. Master Theorem 811312A TRA, Algoritmie aalyysi 2

II.1. Algoritmie oikeellisuus Yksi osa algoritmie aalyysistä Varmistaa, että algoritmi toimii oikei Osittaie oikeellisuus Jos algoritmi päättyy, se tuottaa oikea tulokse Täydellie oikeellisuus Algoritmi päättyy ja tuottaa oikea tulokse Algoritmi oikeaksi todistamie = Todistettava osittaie oikeellisuus ja algoritmi päättymie 811312A TRA, Algoritmie aalyysi 3

II.1.1 Algoritmi oikeaksi todistamie Tällä kurssilla ei käytetä formaaleja meetelmiä Oikea tulokse varmistamie: käytetää väitteitä, jotka osoitetaa oikeaksi ja joista seuraa algoritmi oikeellisuus Usei ivariatteja = omiaisuuksia, jotka ovat voimassa tietyssä kohdassa koko algoritmi suoritukse aja Päättymise varmistamie: käytetää kovergetteja Yleesä arvoja, jotka pieeevät tai kasvavat ja päättävät algoritmi, ku saavat joku tiety arvo 811312A TRA, Algoritmie aalyysi 4

II.1.1.1 Esimerkki: Kolme luvu maksimi Syöte: Luvut a,b ja c Tulostus: Suuri luvuista a,b ja c MAKSIMI3a,b,c) 1. x = a 2. if b > x 3. x = b 4. // VÄITE 1: x = maxa,b) 5. if c > x 6. x = c 7. // VÄITE 2: x = maxa,b,c) 8. retur x 811312A TRA, Algoritmie aalyysi 5

II.1.1.2 Esimerkki: Tauluko arvoje miimi Syöte: Taulukko A[1,..,], >= 1 Tulostus: Piei luvuista A[1],, A[] MINIMIA) 1. i = 2 i o kovergetti 2. x = A[1] 3. while i <= do Silmukkaivariatti: 4. if A[i] < x Ku i=k, rivillä 3 muuttuja 5. x = A[i] 6. i = i+1 x arvo o piei tauluko 7. retur x arvoista A[1],, A[k-1] 811312A TRA, Algoritmie aalyysi 6

II.1.1.3 Esimerkki: Haoi torit Alkutilae: N kiekkoa Tavoite: 1 2 3 Sääöt: 1. Kiekkoja siirretää yksi kerrallaa paalusta toisee 2. Vai pieemmä kieko saa siirtää toise päälle Keksi siirtosarja tuottava algoritmi 811312A TRA, Algoritmie aalyysi 7

II.1.1.3 Esimerkki: Haoi torit 2) Syöte: Luku N >= 1 ja paaluje umerot A, B ja C Tulostus: Siirtojärjestys N:lle kiekolle paalusta A paaluu B käyttämällä apua paalua C SIIRRÄN,A,B,C) 1. if N==1 2. tulosta A -> B 3. else 4. SIIRRÄN-1,A,C,B) 5. tulosta A -> B 6. SIIRRÄN-1,C,B,A) 7. retur N o kovergetti Väite: Mistä tahasa laillisesta asemasta, jossa N pieitä kiekkoa ovat paalussa A, algoritmi tulostaa laillise siirtosarja, missä ämä N pieitä kiekkoa paaluu B käyttäe apua paalua C eikä siiä siirretä mitää muita kiekkoja. 811312A TRA, Algoritmie aalyysi 8

II.1.1.4 Esimerkki: Lisäyslajittelu Syöte: Taulukko A[0,1,..,-1], >= 1 Tulostus: Järjestys A[0] <= <= A[-1] INSERTION_SORTA) 1. for j = 1 to -1 2. k = A[j] 3. i = j-1 4. while i>=0 ad A[i]>k 5. A[i+1] = A[i] 6. i = i-1 7. A[i+1] = k Ivariatti: Rivillä 1 alkiot A[0, j-1] samat kui alkup. taulukossa, mutta suuruusjärjestyksessä A[0] <= <= A[j-1] i o kovergetti: while päättyy joka for-kierroksella 811312A TRA, Algoritmie aalyysi 9

II.2 Algoritmie suorituskyvy aalyysi Tällä kurssilla ollaa kiiostueita aikakompleksisuudesta = algoritmi vaatima suoritusaja suhteesta algoritmi syöttee kokoo Tarvitaa abstrakti malli koeelle, joka suorittaa algoritmia Tässä käytetää hajasaatikoetta radom-access machie) 811312A TRA, Algoritmie aalyysi 10

II.2.1 Hajasaatikoe Samalaisista muistipaikoista koostuva muisti Prosessori, jolla käytettävissää rekistereitä Dataa mielivaltaisista muistipaikoista rekistereihi Arvoja rekistereistä takaisi muistii Rekistereissä loogisia ja aritmeettisia operaatioita Ohjelma käskyjoukko Em. muisti- ja aritmeettisia operaatioita Suoritusta ohjaavia kotrollikäskyjä Käskyt suoritetaa peräkkäi, ts. ei riakkaista suorittamista 811312A TRA, Algoritmie aalyysi 11

II.2.1 Hajasaatikoe 2) Kaikki perusoperaatiot vaativat sama aja Eroaa reaalikoeista Reaalikoeissa o muitaki perusoperaatioita kui hajasaatikoeessa Aalyysitulokset silti yleesä melko hyviä reaalikoeilleki 811312A TRA, Algoritmie aalyysi 12

II.2.2 Aalyysi: Iteratiiviset algoritmit II.2.2.1 Esimerkki: tauluko summa HUOM! Tässä oletetaa, että koodiriveillä eri suoritusajat c 1,c 2,c 3 Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko alkioide summa SUMMAA) kust. suorituskerrat 1. sum = 0 c1 1 2. for j = 1 to c2 3. sum = sum+a[j] c3 4. retur sum 811312A TRA, Algoritmie aalyysi 13

II.2.2.1 Esimerkki: tauluko summa 2) Saadaa suoritusajaksi c 3 1 c2 c ) Siis muotoa A + B Tällaisia algoritmeja saotaa lieaarisiksi Voidaa suorittaa erittäi suurilla taulukoilla 811312A TRA, Algoritmie aalyysi 14

II.2.2.2 Esimerkki: vaihtolajittelu HUOM! Tässä oletetaa, että koodiriveillä eri suoritusajat c 1,c 2,,c 6 Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko luvut järjestyksessä A[1] <= <= A[] VAIHTOLAJITTELUA) kust. suorituskerrat 1. for i = 1 to c1 2. for j = 1 to c2 = 2 3. if i<j && A[i]>A[j] c3 2 4. x = A[i] c4 i, j 5. A[i] = A[j] c5 i, j 6. A[j] = x c6 i, j ti, j) ti, j) ti, j) ti,j) = 1, jos ehto A[i] > A[j] o tosi ja ti,j) =0 muute. 811312A TRA, Algoritmie aalyysi 15

II.2.2.2 Esimerkki: vaihtolajittelu 2) Saadaa suoritusajaksi 2 c1 c2 c3) c4 c5 c6 ) ti, j) Riippuu tauluko alkuperäisestä järjestyksestä Paras tapaus c c2 c3) Huooi tapaus 1 2 2 c2 c3 c4 c5 c6)/2) c1 -c4 c5 c6)/2) Keskimääräie tapaus 2 c2 c3 c4 c5 c6)/4) c1 -c4 c5 c6)/4) i,j 811312A TRA, Algoritmie aalyysi 16

II.2.2.2 Esimerkki: vaihtolajittelu 4) Paraettu versio: Syöte: Taulukko A[1,..,], >= 1 Tulostus: Luvut järjestyksessä A[1] <= <= A[] VAIHTOLAJITTELU2A) 1. for i = 1 to -1 2. for j = i+1 to 3. if A[i] > A[j] 4. x = A[i] 5. A[i] = A[j] 6. A[j] = x 811312A TRA, Algoritmie aalyysi 17

II.2.2.2 Esimerkki: vaihtolajittelu 5) Paraettu algoritmi oi puolet opeampi kui alkuperäie Suoritusaika silti luokkaa A 2 + B Paratuiko oleellisesti? Tällaiset algoritmit eliöllisiä Suoritusaika pitkä erittäi suurilla taulukoilla 811312A TRA, Algoritmie aalyysi 18

II.2.3 Aalyysi: Asymptoottie merkitätapa Työlästä ja useimmite vaikeaa) laskea tarkkaa suoritusaikaa -> Samaistetaa suoritusajat, jotka ovat samaa luokkaa Esim. ajat 2+3 ja 7+9 samaa luokkaa Esim. ajat 5 2 + 2 ja 21 2 + samaa luokkaa Kummassaki tapauksessa aikafuktiot kasvavat samalla tavalla Aikakompleksisuude käsittelyssä Käytetää s. asymptoottista tarkastelua Käytettävät merkiät: O-merkitä, Θ-merkitä ja - merkitä 811312A TRA, Algoritmie aalyysi 19

II.2.3 Aalyysi: Asymptoottie merkitätapa II.2.3.1 O-merkitä Olkoo g) joki fuktio. Silloi Og)) o iide fuktioide joukko, joita voidaa rajoittaa ylhäältä fuktiolla g: O g )) { f positiiviset vakiot 0 f ) ) ja c g ),aia O olemassa c 0 ku,että sellaiset Fuktio g o fuktio f asymptoottie yläraja Merkitää f) Є Og)) HUOM! Cormei kirjassa epätarkasti f) = Og)) 0 } 811312A TRA, Algoritmie aalyysi 20

c g) f) 0 Fuktio f kasvua voidaa ylhäältä rajoittaa fuktiolla g, jote f) Є Og))

II.2.3.1 O-merkitä 2) Esimerkkejä: f) = 2 2 + 3 f) Є O 2 ), f) Є O 3 ), f) Є O) f) = lg) f) Є O 2 ) 811312A TRA, Algoritmie aalyysi 22

II.2.3.2 -merkitä Olkoo g) joki fuktio. Silloi g)) o iide fuktioide joukko, joita voidaa rajoittaa sekä ylhäältä että alhaalta fuktiolla g: g )) { f ) O olemassa sellaiset positiiviset vakiot c 1 g ) f ) c 2 c 1, c 2 ja 0,että g ),aia ku 0 } Fuktio g asymptoottisesti tarkka raja fuktiolle f Merkitää f) Є g)) HUOM! Cormei kirjassa epätarkasti f) = g)) 811312A TRA, Algoritmie aalyysi 23

c 2 g) f) c 1 g) 0 Fuktio f kasvua voidaa ylhäältä ja alhaalta rajoittaa fuktiolla g, jote f) Є g))

II.2.3.2 -merkitä 2) Esimerkkejä: f) = 2 2 + 3 f) Є 2 ), f) Є 3 ), vaikka f) Є O 3 ) f) = lg) f) Є 2 ), vaikka f) Є O 2 ) 811312A TRA, Algoritmie aalyysi 25

II.2.3.3 -merkitä Olkoo g) joki fuktio. Silloi g)) o iide fuktioide joukko, joita voidaa rajoittaa alhaalta fuktiolla g: g )) { f positiiviset vakiot 0 c g ) ) O olemassa c ja f ),aia 0 ku,että sellaiset Fuktio g o fuktio f asymptoottie alaraja Merkitää f) Є g)) HUOM! Cormei kirjassa epätarkasti f) = g)) 0 } 811312A TRA, Algoritmie aalyysi 26

f) c g) 0 Fuktio f kasvua voidaa alhaalta rajoittaa fuktiolla g, jote f) Є g))

II.2.3.4 Merkitöje omiaisuuksia Kaikki merkiät trasitiivisia: Jos f ) O g )) ja g ) O h )), ii f ) O h )) Jos f ) g )) ja g ) h )), ii f ) h )) Jos f ) g )) ja g ) h )), ii f ) h )) 811312A TRA, Algoritmie aalyysi 28

II.2.3.5 Esimerkki: vaihtolajittelu Aiemmassa vaihtolajitteluesimerkissä aikakompleksisuus kaikissa tapauksissa luokkaa Θ 2 ) Paraettu algoritmi oi puolet opeampi kui alkuperäie: kompleksisuus silti luokkaa Θ 2 ) Ei siis paratuut oleaisesti ku tarkastellaa asymptoottisesti HUOM! Jos tarkastellaa vai aikakompleksisuusluokkaa, ei kustauksilla c 1,, c 6 ole merkitystä! Seuraus: Voidaa olettaa vakiokestoiset operaatiot samaarvoisiksi -> Tarkastelu helpottuu 811312A TRA, Algoritmie aalyysi 29

II.2.3.5 Esimerkki: vaihtolajittelu 2) Kaikki suoritusajat luokkaa Θ 2 ) Yleesä keskitytää huooimma tapaukse tarkasteluu Yläraja suoritusajalle Joskus myös keskimääräie tapaus kiiostava Esim. Quicksort, huooi tapaus Θ 2 ), keskimääräie Θ lg)) Yleesä paras tapaus ei oleellie Usei harviaie erikoistapaus 811312A TRA, Algoritmie aalyysi 30

II.2.3.6 Sisäkkäiste silmukoide kompleksisuus Tutkitaa algoritmia ALGORITMI) 1. for i1 = 1 to 2. for i2 = 1 to... k. for ik = 1 to k+1. k sisäkkäistä silmukkaa. // Joki vakioaikaie operaatio HUOM! Kaikki ideksit kulkevat 1.. eivätkä riipu toisistaa. Muute seuraava tarkastelu ei välttämättä päde. 811312A TRA, Algoritmie aalyysi 31

II.2.3.6 Sisäkkäiste silmukoide kompleksisuus 2) Algoritmi suoritusaika muotoa a k k Miksi? a k-1 k-1 a 1 Aioastaa korkei termi vaikuttaa kompleksisuusluokkaa -> Algoritmi luokkaa Θ k ) Jos algoritmi kompleksisuusluokka o O k ) sitä saotaa polyomiaikaiseksi Polyomiaikaisia algoritmeja pidetää laskeallisesti sovellettavia a 0 811312A TRA, Algoritmie aalyysi 32

II.2.4 Aalyysi: Rekursiiviset algoritmit Rekursiivisille algoritmeille tarvitaa uusia meetelmiä: 1. Rekursiopuu avulla tarkastelu 2. Iduktiivie päättely 3. Rekursioyhtälö muodostamie ja Master Theorem 811312A TRA, Algoritmie aalyysi 33

II.2.4.1 Esimerkki: Haoi torit Syöte: Luku N >= 1 ja paaluje umerot A, B ja C Tulostus: Siirtojärjestys N:lle kiekolle paalusta A paaluu B käyttämällä apua paalua C SIIRRÄN,A,B,C) 1. if N==1 the 2. tulosta A -> B 3. else 4. SIIRRÄN-1,A,C,B) 5. tulosta A -> B 6. SIIRRÄN-1,C,B,A) 7. ed if 8. retur 811312A TRA, Algoritmie aalyysi 34

II.2.4.1 Esimerkki: Haoi torit 2) Rekursiopuu: Ku N>1, haaraatuu kahtee osaa ja tekee yhde vakioaikaise operaatio vertailu + tulostus) je Tasolla N-1 loppuu, kuki haara tekee yhde vakioaikaise operaatio Koska jakaatuu kahtia, tasolla k tehdää 2 k operaatiota -> Kaikkiaa 1+2+4+ +2 N-1 = 2 N -1 operaatiota Algoritmi kompleksisuusluokka o Θ2 N ) Piirrä kuva! 811312A TRA, Algoritmie aalyysi 35

II.2.4.1 Esimerkki: Haoi torit 3) Iduktiivie päättely: Merkitää algoritmi askelmäärä = TN), ku kiekkoja N Selvästi T1) = 1 Jos TN-1) tuetaa, TN) = 1 + 2 TN-1) Ns. rekursioyhtälö Arvataa TN) = 2 N -1 ja todetaa iduktiivisesti, että pitää paikkasa 811312A TRA, Algoritmie aalyysi 36

811312A TRA, Algoritmie aalyysi 37 II.2.4.2 Master Theorem )). ) ii arvoilla, luvu suurilla riittävä 1 ja jollaki vakiolla ) ) / jos ja 0 jollaki vakiolla ) ) Jos 3) ) lg ) ii ), ) Jos 2) ). ) ii 0, jollaki vakiolla ) ) Jos 1) ratkaisulle pätee: ) ) ) / ) tai ) ) / ) Rekursio fuktio. ja 1 kokoaislukuvakioita 1, Lause M.Olkoot log log log log log f T c f c b f a f T f T O f f b T a T f b T a T f b a a a a a a b b b b b

II.2.4.2 Master Theorem 2) Lausetta M voidaa soveltaa atamaa rekursiivise algoritmi kompleksisuusluokka, kuha rekursioyhtälö o muodostettu HUOM! Ei sovellu kaikkii tapauksii Esimerkiksi Haoi torie yhtälö ei ratkea lauseella M 811312A TRA, Algoritmie aalyysi 38

II.2.4.2 Master Theorem 2) Ratkaise lausee M avulla a) Rekursio T ) 4T / 2) 2 Vastaus: T ) ) b) Rekursio T ) 4T / 2) 2 Vastaus: T ) lg ) c) Rekursio T ) 4T / 2) 3 Vastaus: T ) ) d) Rekursio T ) 2T / 2) Vastaus: Lausetta ei voi soveltaa tähä tapauksee 2 3 lg 811312A TRA, Algoritmie aalyysi 39

II.2.4.3 Esimerkki: Lomituslajittelu Syöte: Taulukko A[1,..,], >= 1, luvut 1 <= p <= q <= Tulostus: Tauluko alkiot A[p..q] suuruusjärjestyksessä LOMITUSLAJITTELUA,p,q) 1. if p < q 2. r = p q) / 2 3. LOMITUSLAJITTELUA,p,r) 4. LOMITUSLAJITTELUA,r+1,q) 5. LOMITAA,p,r,q) 6. retur LOMITA: A[p] A[r] A[r+1] A[q] 3 5 8 9 2 6 7 8 2 3 5 6 7 8 8 9 811312A TRA, Algoritmie aalyysi 40

II.2.4.3 Esimerkki: Lomituslajittelu 2) Algoritmi rekursiivie: aluksi lajitellaa lista alkiot A[p..r] ja A[r+1..q], sitte lomitetaa järjestyksessä olevat osalistat ii, että A[p..q] järjestyksessä Selvästi lomittamie voidaa tehdä lieaarisessa ajassa Kumpiki osalista käydää kerra läpi Saadaa rekursio T ) 2T / 2) c Lauseella M: T ) lg ) 811312A TRA, Algoritmie aalyysi 41