Algoritmien suunnittelu ja analyysi

Samankaltaiset tiedostot
Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Muita vaativuusluokkia

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

1. Universaaleja laskennan malleja

Laskennan teoria

Algoritmit 2. Luento 14 Ke Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

3. Laskennan vaativuusteoriaa

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

Tietorakenteet ja algoritmit - syksy

Laskennan teoria

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

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

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 2. Luento 13 Ti Timo Männikkö

1.4 Funktioiden kertaluokat

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

6. Approksimointialgoritmit

Algoritmi on periaatteellisella tasolla seuraava:

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

Laskennan vaativuus ja NP-täydelliset ongelmat

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

Algoritmit 2. Luento 14 To Timo Männikkö

811312A Tietorakenteet ja algoritmit I Johdanto

Turingin koneen laajennuksia

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM

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

Laskennan mallit

Algoritmit 2. Luento 8 To Timo Männikkö

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Esimerkkejä vaativuusluokista

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Muita universaaleja laskennan malleja

Mukautuvat järjestämisalgoritmit

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

Lisää pysähtymisaiheisia ongelmia

3. Laskennan vaativuusteoriaa

Algoritmit 1. Luento 11 Ti Timo Männikkö

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

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Algoritmin määritelmä [Sipser luku 3.3]

Algoritmit 1. Luento 12 Ke Timo Männikkö

Rekursiiviset palautukset [HMU 9.3.1]

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

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

Algoritmit 1. 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

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

7.4 Sormenjälkitekniikka

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Säännöllisen kielen tunnistavat Turingin koneet

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.

Algoritmit 1. Luento 8 Ke Timo Männikkö

5.3 Ratkeavia ongelmia

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

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

2. Laskettavuusteoriaa

4.3. Matemaattinen induktio

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:

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Algoritmit 2. Luento 13 Ti Timo Männikkö

10. Satunnaisalgoritmit

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

Algoritmit 2. Luento 1 Ti Timo Männikkö

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Tutkimusmenetelmät-kurssi, s-2004

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

1. Universaaleja laskennan malleja

Nopea kertolasku, Karatsuban algoritmi

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Algoritmit 1. Luento 13 Ma Timo Männikkö

2. Laskettavuusteoriaa

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

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

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

58131 Tietorakenteet ja algoritmit (syksy 2015)

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Täydentäviä muistiinpanoja laskennan rajoista

Transkriptio:

Algoritmien suunnittelu ja analyysi luennot kevätlukukaudella 2004 Jyrki Kivinen 58053-7 Algoritmien suunnittelu ja analyysi, 5 ov tietojenkäsittelytieteen laudatur-kurssi pakollinen algoritmien erikoistumislinjalla varsinaiset esitiedot Tietorakenteet, Laskennan teoria käytännössä tarvitaan riittävä matemaattinen kypsyys ; joidenkin asioiden tunteminen todennäköisyyslaskennasta ja differentiaali- ja integraalilaskennasta on avuksi 1

Opetus kurssilla luennot 21.1. 7.5. ke 14 16, pe 10 12 A414 (15 luentoviikkoa) harjoitukset alkavat 29.1., muuten ks. opetusohjelma (14 laskuharjoituskertaa) kurssikokeet 9.3. (viikot 1 7) ja 10.5. (viikot 8 14) laskuharjoitustilaisuudet perinteisiä Työmääräarvio (hyvin summittainen) kontaktiopetus luennot + harjoitukset + tentit = 15 4 + 14 2 + 2 4 = 96 tuntia harjoitustehtävien tekeminen ja muu itseopiskelu 6 tuntia/viikko 14 6 = 84 tuntia tentteihin kertaaminen 10 + 10 = 20 tuntia kokonaistyömäärä 5 40 = 200 tuntia 2

Arvostelu maksimi 60 pistettä: kokeet 24 + 24 p., harjoitukset 12 p. hyväksymisraja n. 30 p., arvosanan 3/3 raja n. 51 p. laskuharjoitustehtäviä 14 5 = 70 54 merkittyä tehtävää antaa täydet 12 pistettä 0 merkittyä tehtävää antaa 0 pistettä tällä välillä interpoloidaan lineaarisesti (eli noin 0,22 pistettä per tehtävä, eli 1 piste per 4,5 tehtävää) 3

Oppimateriaali luentojen kalvokopiot ilmestyvät mappiin (A412) ja kotisivulle laskuharjoitukset ja malliratkaisut samoin tentit perustuvat luentomateriaaliin Lähinnä kurssia vastaava oppikirja T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein: Introduction to Algorithms, toinen painos, MIT Press 2001. Toinen hyvä mutta suppeampi kirja R. E. Tarjan: Data Structures and Network Algorithms, SIAM 1983. jonkin verran materiaalia otetaan muista kirjoista ja artikkeleista kalvot on tarkoitettu luentojen tueksi, ei itseopiskeluun uutisryhmä hy.opiskelu.tktl.asa 4

Tavoitteet Kurssin suoritettuaan opiskelija osaa itsenäisesti soveltaa yleisimpiä perustekniikoita algoritmien suunnittelemisessa ja analysoimisessa ymmärtää hieman vaikeampiakin menetelmiä jos kohtaa niitä kirjallisuudessa tuntee perusteellisesti tärkeimmät verkkoalgoritmit tuntee joidenkin erityisalueiden (approksimointialgoritmit, satunnaisalgoritmit, rinnakkaisalgoritmit) kysymyksenasettelut ja osaa soveltaa perustekniikoita Yleisemmällä tasolla kurssi kehittää aiemmilla kursseilla (Tietorakenteet, Laskennan teoria) opittua taitoa analysoida algoritmiongelmia matemaattisesti. 5

Sisältö 1. Johdanto: peruskäsitteet, yleiset kysymyksenasettelut, (matemaattisten) perustietojen kertaus 2. Algoritmien analyysitekniikoita: iteratiiviset algoritmit, rekursiiviset algoritmit, aika- ja tilavaativuus, keskimääräisen tapauksen analyysi, tasoitettu analyysi 3. Algoritmien suunnittelutekniikoita: osittaminen, taulukointi, ahneet algoritmit, peruutus, paikallinen etsintä 4. Laskennan mallit ja alarajatodistukset: Turingin kone, RAM, laskentapiirit; päätöspuut ja järjestämisongelma 5. Algoritmeja joukkojen käsittelemiseen: universaali ja täydellinen hajautus, erillisten joukkojen yhdisteet 6. Algoritmeja verkko-ongelmiin: etenkin syvyyssuuntainen etsintä, lyhimmät polut, verkkovuot 6

7. Approksimointialgoritmit erit. NP-täydellisille ongelmille 8. Satunnaisalgoritmit: esimerkkejä, perustekniikoita 9. Rinnakkaisalgoritmit: PRAM-malli, perustekniikoita, rinnakkainen järjestäminen Erityisiä painopistealueita: rekursiivisten algoritmien analysointi rekursioyhtälöillä taulukointi algoritmien suunnittelutekniikkana verkkoalgoritmit 7

1. Johdanto Kerrataan peruskäsitteitä ja (matemaattisia) pohjatietoja. Tämän luvun jälkeen opiskelija tietää millä mittareilla algoritmin tehokkuutta arvioidaan (tällä kurssilla) osaa käsitellä sujuvasti funktioiden kertaluokkia ( iso O -notaatio ) ymmärtää polynomisen ja eksponentiaalisen vaativuusluokan eron 8

1.1 Johdattelevia esimerkkejä Algoritmi voidaan formalisoida Turingin koneiden tms. avulla. Usein (ja tällä kurssilla) pseudokoodi on käytännöllisempi. Esimerkki lisäysjärjestäminen insert-sort(a[1... n]): for j := 2 to n do x := A[j] i := j 1 while i > 0 and A[i] > x do A[i + 1] := A[i] i := i 1 end while A[i + 1] := x end for Ylläoleva esimerkki on esitetty yksityiskohtaisemmin kuin mitä jatkossa yleensä tehdään. Tämän kurssin tarpeisiin voidaan yleensä sanoa Järjestä taulukko A kasvavaan järjestykseen. (mikä tosin yleensä tarkoittaa jotain tehokkaampaa algoritmia). 9

Algoritmilla ratkaistaan laskennallinen ongelma: Annettu: syöte (eli ongelman tapaus) Halutaan: jokin tietty tuloste Yleensä syöte ja tuloste ajatellaan koodatuiksi jonkin äärellisen aakkoston merkkijonoiksi. Koodaukset ovat yleensä aika selviä eikä niihin tarvitse kiinnittää erityistä huomiota. Esimerkki Syötteenä suunnattu verkko V = { a, b, c } E = { (a, b), (a, c), (c, a) } 10

Vierusmatriisiesitys A 1 2 3 1 0 1 1 2 0 0 0 3 1 0 0 a = v 1, b = v 2, c = v 3 A(i, j) = 1 joss (v i, v j ) E Vierusmatriisi aakkoston { 0, 1, # } merkkijonona esim. #011#000#100#. Vieruslistaesitys ((2, 3), (), (1)) Alilista i sisätää ne j joilla (v i, v j ) E Vieruslista aakkoston { 0,..., 9, # } merkkijonona esim. ##2#3####1## (luvun k koodaus akkostossa { 0,..., 9 } vie log 10 k + 1 merkkiä.) 11

Jatkon kannalta tärkeä parametri syötteen koko periaatteessa (ja teoreettisissa tarkasteluissa) koodaavan merkkijonon pituus käytännössä jonkin luonnollinen suure (esim. solmujen lukumäärä V ) joka on polynomisessa suhteessa koodaavan merkkijonon pituuteen Funktiot f ja g ovat polunomisessa suhteessa jos f(s) = O(g(s) k ) ja g(s) = O(f(s)) k ) jollain k N. Huomaa että jos syötteenä on suuria luonnollisia lukuja, luvun n kooksi pitää ajatella O(log n). 12

Esimerkkejä laskennallisista ongelmista P1 Kertolasku Annettu kokonaisluvut n ja m Tulostettava nm syötteen koko O(log n + log m ) P2 Alkuluvut { 2, 3, 5, 7, 11, 13,... } Annettu positiivinen kokonaisluku n Tulostettava kyllä jos n alkuluku, ei muuten syötteen koko O(log n) P3 Järjestäminen Annettu kokonaislukujono S = (s 1,..., s n ) Tulostettava luvut suuruusjärjestyksessä syötteen koko n (?) 13

P4 Hamiltonin kehä Annettu suuntaamaton verkko G Tulostettava kyllä jos verkossa on polku joka käy tasan kerran jokaisessa solmussa ja palaa alkusolmuunsa; ei muuten Verkko Eräs Hamiltonin kehä 14

P5 Joukkopeite Annettu kokoelma jonkin perusjoukon osajoukkoja Tulostettava pienin määrä osajoukkoja, joka riittää peittämään koko perusjoukon Perusjoukko ja kokoelma sen osajoukkoja Joukkopeite jossa k = 3 osajoukkoa 15

P6 Pysähtymisongelma Annettu ohjelma P, syöte x Tulostettava kyllä jos ohjelma P pysähtyy syötteellä x; ei muuten (s.o. jos ohjelma jää ikuiseen silmukkaan) P7 Totaalisuusongelma Annettu ohjelma P Tulostettava kyllä jos ohjelma P pysähtyy kaikilla mahdollisilla syötteillä; ei muuten Kurssilla Laskennan teoria on tarkasteltu ongelmien ratkeavuutta: P6 ja P7 eivät ole ratkeavia, ts. niille ei ole olemassa ratkaisualgoritmia joka aina toimisi oikein P6 on osittain ratkeava, ts. sille on ratkaisualgoritmi joka voi ei-tapauksilla jäädä ikuiseen silmukkaan Tämän kurssin kannalta kiinnostavia ovat esim. ongelmat P1 P5, joilla helposti nähdään olevan jonkinlainen ratkaisualgoritmi mutta ongelmana on löytää tehokas ratkaisualgoritmi. 16

Huomioita ja kysymyksiä P2, P4, P6 ja P7 päätösongelmia (kyllä/ei) P5 optimointiongelma (löydettävä pienin/suurin/... ) P1 osataan ratkaista ajassa O((log n)(log m)) ja P3 ajassa O(n log n). Onko parempaan mahdollisuuksia? P2:lle löydettiin äskettäin polynomisessa ajassa toimiva algoritmi; aiemmin tunnettiin polynomisessa ajassa toimiva satunnaisalgoritmi. Vastaava etsintäongelma eli tekijöihinjako vaikuttaa nykytietämyksen valossa vaikeammalta. P4 on NP-täydellinen ongelma, joten polynomisessa ajassa toimivan algoritmin olemassaolo on merkittävä avoin ongelma Myös P5 ratkeaa polynomisessa ajassa jos ja vain jos P = NP. On kuitenkin tehokkaita tapoja löytää likimääräisesti pienin joukkopeite. 17

1.2 Algoritmitutkimuksen peruskysymyksiä Mikä on algoritmi? Miten kehitetään hyviä algoritmeja? Miten algoritmin hyvyyttä mitataan? Viimeiset kaksi kysymystä liittyvät läheisesti toisiinsa: algoritmeja kehitetään tavoitteena optimoida jokin hyvyysmitta (tai useampia mittoja samanaikaisesti). 18

Algoritmikäsitteen formalisointeja Turingin kone (Alan Turing, 1936) Ohjausyksikkö: kone tilassa q 1 Nauhapää osoittaa merkkiä B Työnauha sis. merkkijonon ABAAB 19

Koneen siirtymäfunktio määrää mikä merkki kirjoitetaan nauhapään kohdalle, mihin suuntaan nauhapää liikkuu ja mikä on seuraava tila kun on annettu nykyinen tila ja nauhapään alla oleva merkki. Motivaatio: yritetään tehdä abstrakti malli siitä, millaista laskentaa matemaatikko (tms.) voi tehdä mekaanisesti Turingin koneita on käsitelty kurssilla Laskennan teoria; niihin palataan lyhyesti myöhemmin. 20

Rekursiiviset funktiot luonnollisille luvuille (Kleene 1936) perusfunktiot ovat rekursiivisia: z: N N, z(x) = 0 (vakiofunktio nolla) s: N N, z(x) = x + 1 (seuraajafunktio) p i : N k N, z(x 1,..., x k ) = x i (projektiot) yhdistäminen: jos f ja g 1,..., g k ovat rekursiivisia niin h on rekursiivinen kun h(x 1,..., x m ) = f(g 1 (x 1,..., x m ),..., g k (x 1,..., x m )) rekursio: jos f ja g ovat rekursiivisia niin h on rekursiivinen kun h(0, x 1,..., x m ) = g(x 1,..., x m ) h(y + 1, x 1,..., x m ) = f(h(y, x 1,..., x m ), y, x 1,..., x m ) minimointi: jos f on rekursiivinen niin h on rekursiivinen kun h(x 1,..., x m ) = min { y f(y, x 1,..., x m ) = 0 } Motivaatio: määritellään sellaiset sulkeumaominaisuudet jotka laskettavien funktioiden joukon ainakin pitäisi toteuttaa. 21

RAM (Random Access Machine abstraktio tavalliselle tietokoneelle jossa prosessori ja muistia algoritmit esitetään konekieliohjelmina Muita formalismeja λ-kalkyyli (Church 1936) Postin systeemit (Post 1936) rajoittamattomat kieliopit (Chomsky 1955) Laskettavuuden peruslause: kaikki em. mallit ovat yhtä voimakkaita, ts. funktio on rekursiivinen jos ja vain jos se voidaan laskea Turingin koneella jne. Churchin-Turingin teesi väittää, että Turing-laskettavat funktiot ovat tasan se luokka funktioita, jotka voidaan laskea mekaanisesti annettuja sääntöjä noudattamalla. 22

Algoritmin suunnittelemisesta luovaa toimintaa, vähän yleisiä sääntöjä perustavanlaatuiset suunnittelutekniikat: osittaminen, taulukointi, ahneus, peruutus, karsiva etsintä; satunnaisalgoritmit palautukset tunnettuihin ongelmiin tehokkaiden perustietorakenteiden käyttö (hakupuut, tasapainoiset puut, keko,... ) 23

Algoritmin analysoimisesta peruslähtökohta oikeellisuus: kaikilla syötteillä oikea tuloste. oikeellisuusvaatimuksen lievennyksiä: satunnaisalgoritmit: sallitaan väärä vastaus pienellä todennäköisyydellä approksimointialgoritmit: sallitaan hieman suboptimaalinen ratkaisu optimointiongelmaan tyypillisin ongelma: algoritmin pahimman tapauksen aikavaatimuksen määrääminen (kertaluokan tarkkuudella; O-notaatio) aikavaatimuksen sijasta/lisäksi voidaan analysoida tilavaatimusta, prosessorien määrää, mikropiirin pinta-alaa,... pahimman tapauksen sijaan voidaan tarkastella keskimääräistä tapausta tai tehdä tasoitettu analyysi 24

Ongelman vaativuusanalyysi: onko annettu algoritmi jossain mielessä paras mahdollinen? siis halutaan alaraja ongelman vaativuudelle yleensä hyvin vaikea osoittaa usein vedotaan lisäoletuksiin ( jos P NP niin... ) tai rajoitetaan laskennan mallia (esim. vertailuihin perustuva järjestäminen) Esimerkki: järjestämisongelma lisäysjärjestäminen: aika O(n 2 ) ei optimaalinen, sillä esim. lomitusjärjestäminen (merge sort): aika O(n log n) mikä tahansa vertailuihin perustuva järjestämisalgoritmi joutuu tekemään O(n log n) vertailua, joten lomituslajittelu on jossain mielessä optimaalinen lisäysjärjestäminen helppo koodata, vakiotyötila pikajärjestäminen (quicksort) menee keskimäärin ajassa O(n log n); onko tällainen keskimääräinen tapaus käytännössä oikea? 25

1.3 Algoritmin tehokkuusmitat Olkoon T (x) algoritmin käyttämä aika syötteellä x ja x syötteen x koko (merkkijonon pituus, verkon solmujen lukumäärä tms.) Pahimman tapauksen aikavaativuus määritellään T max (n) = max { T (x) x = n } Keskimääräinen aikavaativuus: Olkoon P n todennäköisyysmitta kokoa n oleville syötteille: P n (x) 0 jos x = n, P n (x) = 0 jos x = n, x P n(x) = 1. Nyt T ave (n) = P n (x)t (x) x =n kuvaa toivottavasti tyypillistä käyttäytymistä paremmin kuin pessimistinen T max. Ongelmia: jakauman P n valinta: tasainen ei usein vastaa todellisuutta laskeminen vaikeaa usein hajonta ja hännät tärkeitä 26

Esimerkki kaksi algoritmia A ja B, joiden aikavaativuudet T A ja T B Kymmenen erilaista syötetapausta x 1,..., x 10 ; tasainen jakauma P n (x 1 ) = P n (x 2 ) =... = P n (x 10 ) = 1/10 Oletetaan T A (x 1 ) = T A (x 2 ) =... = T A (x 5 ) = 1, 0 s T A (x 6 ) = T A (x 7 ) =... = T A (x 10 ) = 2, 0 s joten Tave A (n) = 1, 5 s. Vastaavasti olkoon T B (x 1 ) = T B (x 2 ) =... = T B (x 9 ) = 0, 5 s joten T B ave = 1, 45 s. T B (x 10 ) = 10, 0 s Siis keskimäärin B on nopeampi, mutta hajonta on hyvin suuri. 27

Algoritmin A suoritusajan jakauma Algoritmin B suoritusajan jakauma 28

Keskimääräisen tapauksen sijaan voidaan analysoida suureita T p, 0 p 1: T p (n) = min { t P n (T (x) > t) p } missä kaikilla t R P n (T (x) > t) = T (x)>t P n (x) on todennäköisyys että suoritusaika on yli t Esimerkkitapauksessa T A p T B p (n) = 2, 0 s kun p < 0, 5 (n) = 0, 5 s kun 0, 1 p 1 T B p (n) = 10, 0 s kun p < 0, 1 29

Tasoitettu aikavaativuus (amortized): pahimman tapauksen analyysia, mutta kokonaisessa jonossa operaatioita kustannukset tasataan koko jonon kesken. Olkoon T (x 1,..., x n ) operaatiojonon (x 1,..., x n ) aikavaativuus. Määritellään T amort (n) = 1 n max { T (x 1,..., x n ) } Esimerkki: x i on lisäys, haku tai poisto tietokannasta. Kukin operaatio muuten ajassa O(log n), mutta jonon keskivaiheilla joudutaan uudelleenorganisoimaan jokin hakemisto mihin kuluu aika O(n). Nyt vaikka T amort (n) = O(log n) max T (x i ) = O(n). (Onko T amort tällaisessa tilanteessa oikea mitta?) 30

Mitä oikeastaan mitataan? sovelluksen kannalta kiinnostava suure on tietysti suoritukseen kuluva fysikaalinen aika todellinen aika kuitenkin riippuu laitteistosta jne. teoreettisissa tarkasteluissa arvioidaan alkeisoperaatioiden määrää (Turingin koneen siirtymät; RAM-koneen konekäskyt; järjestämisalgoritmin vertailut;... ) oletetaan, että kukin alkeisoperaatio voidaan toteuttaa vakioajassa fysikaalinen aika = O(alkeisoperaatioiden määrä) 31