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

Samankaltaiset tiedostot
2.3 Keskimääräisen tapauksen analyysi

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

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

Tietorakenteet, laskuharjoitus 3, ratkaisuja

1.4 Funktioiden kertaluokat

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

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

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

Fibonacci-kasoilla voidaan toteuttaa samat operaatiot kuin binomikasoilla.

Algoritmit 1. Luento 3 Ti Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 2. Luento 2 To Timo Männikkö

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

Algoritmi on periaatteellisella tasolla seuraava:

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Algoritmit 1. Luento 1 Ti Timo Männikkö

4. Joukkojen käsittely

Nopea kertolasku, Karatsuban algoritmi

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

4.3. Matemaattinen induktio

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

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

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

3. Laskennan vaativuusteoriaa

Tietorakenteet, laskuharjoitus 7, ratkaisuja

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

Algoritmit 1. Luento 14 Ke Timo Männikkö

DIFFERENTIAALI- JA INTEGRAALILASKENTA I.1. Ritva Hurri-Syrjänen/Syksy 1999/Luennot 6. FUNKTION JATKUVUUS

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

A TIETORAKENTEET JA ALGORITMIT

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

Algoritmit 1. Luento 12 Ti Timo Männikkö

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Algoritmit 1. Luento 12 Ke Timo Männikkö

1 sup- ja inf-esimerkkejä

JOHDATUS TEKOÄLYYN TEEMU ROOS

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

2. Eukleideen algoritmi

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

811120P Diskreetit rakenteet

Ohjelmoinnin perusteet Y Python

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

Todista raja-arvon määritelmään perustuen seuraava lause: Jos lukujonolle a n pätee lima n = a ja lima n = b, niin a = b.

JOHDATUS LUKUTEORIAAN (syksy 2017) HARJOITUS 3, MALLIRATKAISUT

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

2 Funktion derivaatta

A TIETORAKENTEET JA ALGORITMIT

6. Approksimointialgoritmit

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Diskreetin Matematiikan Paja Ratkaisuhahmotelmia viikko 1. ( ) Jeremias Berg

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Tietorakenteet ja algoritmit - syksy

811120P Diskreetit rakenteet

Algoritmit 2. Luento 12 To Timo Männikkö

.. X JOHDATUS TEKOÄLYYN TEEMU ROOS

Algoritmit 2. Luento 13 Ti Timo Männikkö

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Algoritmit 2. Luento 7 Ti Timo Männikkö

C.C. McGeoch, Toward an experimental method for algorithm simulation. algorithm simulation = algoritmin testaus, experimental algorithmics

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

Tehtävä 1. Päättele resoluutiolla seuraavista klausuulijoukoista. a. 1 {p 3 } oletus. 4 {p 1, p 2, p 3 } oletus. 5 { p 1 } (1, 2) 7 (4, 6)

Vapaus. Määritelmä. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee:

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

JOHDATUS TEKOÄLYYN TEEMU ROOS

ITKP102 Ohjelmointi 1 (6 op)

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

2.2 Gaussin eliminaatio. 2.2 Gaussin eliminaatio. 2.2 Gaussin eliminaatio. 2.2 Gaussin eliminaatio

2017 = = = = = = 26 1

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Ratkaisu: a) Kahden joukon yhdisteseen poimitaan kaikki alkiot jotka ovat jommassakummassa joukossa (eikä mitään muuta).

Tutkimusmenetelmät-kurssi, s-2004

Transkriptio:

Loppu seuraa suoralla laskulla: n n Tave TR = p j (1 + b (i, j)) j=1 = 1 + 1 i<j n = 1 + 1 i<j n i=1 (p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i 1 + ((p j p i ) + p i ) p 1 i<j n i + p j p i p j = 1 + 2 p i + p j = T MF ave eli väite Tave TR T ave MF 1 i<j n pätee. (Keskimääräisen tapauksen analyysi loppuu tältä erää tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.) 105

2.4 Tasoitettu analyysi (amortized analysis) Esimerkki Pino, jossa tavalliset Push- ja Pop sekä MultiPop(k) (aluksi pino tyhjä): MultiPop(k): 1. i := k 2. while not Empty and i > 0 do 3. r := Pop 4. i := i 1 end while 5. return r Operaatioiden kustannukset (kertaluokka): Push 1 Pop 1 MultiPop(k) 1 + min { k, pinon koko } Suoritettaessa n operaatiota pino koko voi olla Θ(n), joten pahimmassa tapauksessa yksittäinenkin operaatio (nim. MultiPop(n)) voi viedä ajan Θ(n). Kuitenkin tasoitettu aikavaatimus on Θ(1)/operaatio, sillä erityisesti jokaista MultiPop(k)-operaation sisällä suoritettavaa Pop-operaatiota kohti on suoritettu yksi Push, joten kokonais-pop-määrä on O(n). Tehdään analyysi täsmällisemmin ensin tilinpitomenetelmällä ja sitten potentiaalimenetelmällä. 106

Analyysi kirjanpitomenetelmällä Jokaiselle operaatiolle määritellään tasoitettu kustannus, joka on puhtaasti laskennallinen apukeino ja voidaan valita analyysin kannalta sopivalla tavalla. Jokaisella operaatiolla on myös todellinen kustannus joka on sama (tai samaa kertaluokkaa tms.) kuin sen todellinen suoritusaika. Kunkin operaation yhteydessä ajatellaan tehtäväksi seuraavat lisätoimet: 1. algoritmi saa palkkioksi suoritettavan operaation tasoitetun kustannuksen verran rahaa 2. algoritmi voi tallettaa osan palkkiosta tietorakenteeseen, ja nostaa tietorakenteesta aiempia talletuksia 3. askelista 1 ja 2 jääneellä käteisellä maksetaan operaation todellinen kustannus Idea: jos aluksi tietorakenteessa ei ole talletuksia, ja jokaisen operaation todellinen kustannus kyetään maksamaan, niin (tod. kustannus) (tas. kustannus). operaatiot operaatiot 107

Esimerkki Pino-operaatiot kirjanpitomenetelmällä. Valitaan seuraavat tasoitetut kustannukset ( tulot ): Push Pop MultiPop(k) 2 yksikköä 0 yksikköä 1 yksikkö Jokaisen pinossa olevan alkion yhteydessä pidetään yksi yksikkö rahaa. Todelliset kustannukset ( menot ) on todettu aiemmin: Push 1 Pop 1 MultiPop(k) 1 + min { k, pinon koko } 108

Push: tulot 2 yksikköä; menot 1 yksikkö; talletetaan 1 yksikkö Pop: tulot 0 yksikköä; menot 1 yksikkö; nostetaan 1 yksikkö MultiPop(k): tulot 1 yksikkö; menot 1 + min { k, pinon koko } yksikköä; nostetaan min { k, pinon koko } yksikköä Selvästi aina menot + panot tulot + nostot joten koska alkusaldo on nolla (eli pino aluksi tyhjä) ja loppusaldo on ei-negatiivinen, eli koko operaatiojonolle kokonaismenot kokonaistulot todellinen aikavaatimus 2a+c missä a, b ja c ovat Push-, Pop- ja MultiPop-operaatioiden lukumäärät. Erityisesti siis n operaatiota vie ajan O(n). 109

Analyysi potentiaalimenetelmällä Jokaiseen tietorakenteen tilaan D liitetään potentiaali Φ(D). Olkoon D i tietorakenteen tila kun on suoritettu i operaatiota. Operaation numero i tasoitettu kustannus on ĉ i = c i + Φ(D i ) Φ(D i 1 ) missä c i on operaation todellinen kustannus. Siis n n n ĉ i = c i + (Φ(D i ) Φ(D i 1 )) i=1 = i=1 i=1 n c i + Φ(D n ) Φ(D 0 )). i=1 Jos voidaan osoittaa Φ(D i ) Φ(D 0 ) kaikilla i, niin operaatiojonon tasoitettu kustannus on yläraja todelliselle kustannukselle. 110

Esimerkki Pino-operaatiot potentiaalimenetelmällä Valitaan Φ(D) = pinon D koko. Siis Φ(D 0 ) = 0 ja Φ(D i ) 0 kaikilla i, joten (tod. aikavaatimus) (tas. aikavaatimus). Tasoitetut kustannukset: Push: c i = 1, Φ(D i 1 ) = m, Φ(D i ) = m + 1 jollain m, joten ĉ i = 1 + (m + 1) m = 2. Pop: c i = 1, Φ(D i 1 ) = m, Φ(D i ) = m 1 jollain m, joten ĉ i = 1 + (m 1) m = 0. MultiPop(k): c i = 1 + min { k, m }, Φ(D i 1 ) = m, Φ(D i ) = max { 0, m k } jollain m, joten ĉ i = 1 + min { k, m } + max { 0, m k } m = 1. Siis (tas. aikavaatimus) = 2a+c missä a, b ja c ovat Push-, Pop- ja MultiPop-operaatioiden lukumäärät. Erityisesti siis n operaatiota vie ajan O(n). 111

Sanakirjaongelma Teemme tasoitetun analyysin potentiaalimenetelmällä (Sleator & Tarjan, CACM 1985) Operaatiot ja perustoteutus listan L avulla samat kuin keskimääräisen tapauksen analyysissä. Operaatioiden kustannukset perustoteutuksessa: operaatio s t access(z) insert(z) delete(z) kustannus c t k missä z = L[k] l + 1 missä l on listan L pituus k missä z = L[k] Jos suoritetaan listan uudelleenjärjestelyjä, voi tästä tulla lisäkustannuksia. Seuraavassa vaihto tarkoittaa kahden peräkkäisen alkion sijaintien vaihtamista keskenään. Kohtuullinen malli vaihtokustannuksille: Ilmainen vaihto: juuri haetun tai lisätyn alkion siirtäminen kohti listan keulaa; kustannus 0 Maksulliset vaihdot: mikä tahansa muu vaihto; kustannus 1 Aiemmin käsitellyt algoritmit eivät tee maksullisia vaihtoja; esim. TR tekee yhden ja MF k 1 ilmaista vaihtoa hakua kohti. 112

Seuraavassa A on mielivaltainen algoritmi ja s mielivaltainen operaatiojono. Kun algoritmilla A suoritetaan operaatiojono s, merkitään C A (s) X A (s) F A (s) kokonaiskustannus lukuunottamatta mahdollisia vaihtoja maksullisten vaihtojen lukumäärä ilmaisten vaihtojen lukumäärä Siis algoritmin A kokonaiskustannus operaatiojonolla s on C A (s) + X A (s). Lause Kaikilla algoritmeilla A ja m operaation jonoilla s pätee Huomioita: C MF (s) 2C A (s) + X A (s) F A (s) m 2(C A (s) + X A (s)). pätee erityisesti jos A on valittu siten että se on optimaalinen juuri jonolle s siis vaikka jono s tunnettaisiin ennakolta ja tehtäisiin mielivaltaisia optimointeja, voitetaan yksinkertainen MF-heuristiikka korkeintaan kertoimella 2 keskimääräisille vaatimuksille tästä seuraa T MF ave (m) 2T A ave (m) millä tahansa jakaumalla 113

Todistus Kiinnitetään A ja s = (s 1,..., s m ). Olkoon L t algoritmin MF lista ja L t algoritmin A lista, kun on suoritettu operaatiot (s 1,..., s t 1 ). Kun L ja L ovat kaksi listaa, joissa kummassakin on täsmälleen samat l alkiota, olkoon Φ(L, L ) listojen L ja L välisten inversioiden lukumäärä eli niiden alkioparien määrä, jotka ovat listoissa L ja L eri järjestyksessä. Valitaan potentiaaliksi Φ(L t, L t ) ja tarkastellaan MF-algoritmin tasoitettua kustannusta ĉ t = c t + Φ(L t, L t ) Φ(L t 1, L t 1 ) missä c t on operaation s t todellinen kustannus MF-algoritmilla. Aluksi listat ovat tyhjät joten Φ(L 0, L 0 ) = 0. Aina Φ(L t, L t ) 0, joten m m T MF (s) = c t t=1 t=1 aiemmin esitetyn periaatteen mukaan. ĉ t 114

Määritellään nyt algoritmin A operaatioon s t liittyvät suureet a t x t f t todellinen kustannus lukuunottamatta mahdollisia vaihtoja maksullisten vaihtojen lukumäärä ilmaisten vaihtojen lukumäärä Osoitamme kaikille operaatioille mistä seuraa eli väite. T MF (s) ĉ t 2a t + x t f t 1 (1) m t=1 ĉ t m (2a t + x t f t 1) t=1 = 2C A (s) + X A (s) F A (s) m 115

Olkoon L t algoritmin A lista kun on suoritettu operaatiot (s 1,..., s n ) lukuunottamatta operaatioon s t mahdollisesti liittyviä vaihtoja. Kirjoitetaan ĉ t = c t + Φ(L t, L t ) Φ(L t 1, L t 1 ) + Φ(L t, L t ) Φ(L t, L t ). Todistamme epäyhtälön (1) kahdessa osassa: c t + Φ(L t, L t ) Φ(L t 1, L t 1 ) 2a t 1 (2) Φ(L t, L t ) Φ(L t, L t ) x t f t. (3) Kohta (3) on helppo: maksullinen vaihto lisää korkeintaan yhden inversion maksuton vaihto poistaa yhden inversion, koska se siirtää listalla L t alkiota kohti keulaa missä se jo on listalla L t Siis (3) pätee. Todistamme epäyhtälön (2) erikseen eri operaatiotyypeille. 116

Tapaus A: s t = access(z). Siis L t = L t 1. Olkoon z = L t 1 [k] = L t 1 [i]. Siis c t = k ja a t = i. Olkoon y niiden alkioiden lukumäärä, jotka ovat ennen alkiota z listassa L t 1 mutta alkion z jälkeen listassa L t 1. Siis k y 1 alkiota on ennen alkiota z kummassakin listassa. Alkion z siirtäminen listan L t 1 kärkeen purkaa y inversiota mutta luo k y 1 uutta, joten c t + Φ(L t, L t ) Φ(L t 1, L t 1 ) = k + (k y 1) y = 2(k y) 1. Nyt k y 1 i 1, koska alkion z edeltä listassa L t 1 pitää löytyä ainakin k y 1 alkiota. Siis 2(k y) 1 2i 1 = 2a t 1. 117

Tapaus B: s t = insert(z). Oletetaan toteutuksesta, että jos alkio z on jo listassa, toimitaan kuten tapauksessa access(z). Muuten MF lisää alkion listan loppuun ja välittömästi vaihtaa sen listan keulaan. Myös algoritmi A lisää alkion listan loppuun ja tekee sitten mahdollisesti vaihtoja. Jos alkio on jo listassa, analyysi palautuu tapaukseen A. Muuten olkoon listassa l alkiota, joten c t = a t = l + 1. Kun MF siirtää alkion z listansa keulaan, syntyy l inversiota, joten Siis Φ(L t, L t ) Φ(L t 1, L t 1 ) = l. c t + Φ(L t, L t ) Φ(L t 1, L t 1 ) = l + 1 + l = 2(l + 1) 1 = 2a t 1. 118

Tapaus C: s t = delete(z). Olkoon z = L t 1 [k] = L t 1 [i]. Siis c t = k ja a t = i. Olkoon y niiden alkioiden lukumäärä, jotka ovat ennen alkiota z listassa L t 1 mutta alkion z jälkeen listassa L t 1. Siis k y 1 alkiota on ennen alkiota z kummassakin listassa. Alkion z poistaminen purkaa ainakin y inversiota. Uusia ei tietenkään synny, joten Φ(L t, L t ) Φ(L t 1, L t 1 ) y. Nyt k y 1 i 1, koska alkion z edeltä listassa L t 1 pitää löytyä ainakin k y 1 alkiota. Siis c t + Φ(L t, L t ) Φ(L t 1, L t 1 ) k y i = a t 2a t 1. Vastaava tulos ei päde heuristiikoille TR ja FC: On olemassa sellaiset m operaation jonot n alkiolle, että ja T MF (s) = Θ(m) ja T TR (s) = Θ(nm) T MF (s ) = Θ(m) ja T FC (s ) = Θ(nm). 119

2.5 Tilavaativuuden analysointi Yleensä tarkastellaan työtilaa, siis tilavaativuutta poislukien syötteen ja tulosteen vaatima tila: S(x) = työtilan tarve syötteellä x Vastaavasti S max (n) ja S ave (n). Jos algoritmi varaa tilaa dynaamisesti, tilavaativuus on ilmeisesti suurin kerralla varattuna oleva muistin määrä. Erityisesti rekursiivisilla proseduureilla tilavaativuus on aktivaatiotietuepinon maksimikoko. Proseduurin P (X, n): var v 1 [n], v 2 [n],..., v m [n] begin... P (X 1, n 1 )... P (X 2, n 2 )... P (X k, n k )... end tilavaativuudelle S pätee m S(X, n) = Θ(1 + i=1 v i [n] + max 1 i k S(X i, n i )). Jos muuttujat v i [n] vievät vakiotilan, tilavaativuus on Θ(rekursion maksimisyvyys). 120