Verkkoalgoritmeja. Henry Niveri. hniveri(at)cc.hut.fi

Koko: px
Aloita esitys sivulta:

Download "Verkkoalgoritmeja. Henry Niveri. hniveri(at)cc.hut.fi"

Transkriptio

1 Verkkoalgoritmeja Henry Niveri hniveri(at)cc.hut.fi Seminaariesitelmä T Satunnaisalgoritmit Tietotekniikan laitos Teknillinen korkeakoulu Tiivistelmä Tässä esityksessä käsitellään satunnaisalgoritmien käyttöä verkkojen tutkimisessa. Johdannossa kuvataan yleisesti verkkoihin liittyviä ongelmia, joita voidaan ratkaista satunnaisalgoritmeilla. Pääasiallisesti esityksessä keskitytään verkon minimileikkauksen löytämiseen satunnaisalgoritmilla. 1

2 1 Johdanto Satunnaisalgoritmeilla voidaan ratkaista ongelmia, joiden ratkaisu on vaikeaa deterministisillä algoritmeilla. Satunnaisalgoritmeissa käytetään hyväksi sitä, että moneen ongelmaan on todennäköistä löytää ratkaisu satunnaisesti yrittämällä kuin determinisesti päättelemällä. Satunnaisuus algoritmissa aiheuttaa sen, että satunnaisalgoritmi ei tuota välttämättä samaa lopputulosta usealla eri ajokerralla. Tämä ominaisuus johtaa siihen, että jos tiedämme todennäköisyyden, jolla algoritmi tuottaa oikean tuloksen, voimme arvioida kuinka monen ajokerran jälkeen algoritmi tuottaa suurella todennäköisyydellä oikean tuloksen. Verkkoihin liittyvät ongelmat liittyvät usein koko verkon tietyn osajoukon tutkimiseen. Monesti verkosta halutaan löytää tiettyjen solmujen tai kaarien välisten relaatioiden ominaisuuksia. Tämä aiheuttaa sen että käytännössä verkon äärilaidoilla olevat solmut ja kaaret eivät usein tuota optimaalisia ratkaisuja ongelmaan. Jos tyydytään tiettyyn todennäköisyyteen ongelman ratkeamiseen, ei koko verkkoa tarvitse tutkia, kuten deterministinen algoritmi saattaisi joutua tekemään. 1.1 Satunnaisalgoritmityypit verkkoihin liittyvissä ongelmissa Satunnaisalgoritmit jaetaan kahteen pääluokkaan: Las Vegas ja Monte Carlo algoritmeihin. Las Vegas algoritmit tuottavat aina oikean tuloksen, kun taas Monte Carlo algoritmit saattavat tuottaa kyllin lähellä oikeaa ratkaisua olevan tuloksen. Molemmat algoritmityypit soveltuvat verkkoihin liittyvien ongelmien ratkaisuun Las Vegas algoritmit Las Vegas algoritmit soveltuvat ongelmiin, joissa on välttämätöntä löytää oikea ratkaisu ja riittää että ratkaisu löytyy todennäköisesti nopeammin kuin deterministisellä algoritmilla. Esimerkiksi matkapuhelinverkkoa suunniteltaessa aluksi päätetään tukiasemien paikat. Tämän jälkeen tukiasemat pitää yhdistää kaapeleilla. Pitemmät kaapelit maksavat enemmän, joten on tärkeää, että selvitään mahdollisimman lyhyillä kaapeleilla kuten kuvassa (1). Tämä ongelma muuttuu siis verkon pienimmän virittävän puun löytämiseksi, mikä on ratkaistavissa satunnaisalgoritmilla. Koska on ensiarvoisen tärkeää, että ongelmaan löydetään pienin virittävä puu on tässä tapauksessa Las Vegas tyyppinen algoritmi ainoa järkevä valinta. Verkon virittävä puu on suuntaamattoman verkon sellainen alipuu, joka sisältää kaikki verkon solmut kytkettynä toisiinsa. Painotetun verkon pienin virittävä puu on sellainen verkon virittävä puu, jonka kaarten painojen summa on pienempi tai yhtäsuuri kuin verkon muiden virittävien puiden(esimerkki virittavästä puusta kuvassa 1). Verkon pienimmän virittävän puun laskevia algoritmeja on tutkittu 1900-luvun alkupuolelta lähtien. Tunnetuimpia virittävän puun selvittäviä deterministisiä algoritmeja ovat Primin ja Kruskalin algoritmit, jotka pystyvät laskemaan pienimmän virittävän puun ajassa O(m log n), jossa m on kaarien lukumäärä ja n on solmujen lukumäärä. Tähän asti nopeimman deterministisen algoritmin,

3 joka löytää verkon pienimmän virittävän puun on kehittänyt Bernard Chazelle. Chazellen algoritmi pystyy laskemaan pienimmän virittävän puun ajassa O(mα(m, n)), jossa α on käänteinen Ackermanin funktio. Käänteinen Ackermanin funktio kasvaa erittäin hitaasti ja käytännössä se saa arvokseen alle 5 kaikilla käytännössä järkevän kokoisilla verkoilla. Nopeimmissa algoritmeissa käsitellään niin monimutkaisia tietorakenteita, että pienin virittävä puu etsitäänkin useimmiten yksinkertaisemmilla algoritmeilla. Satunnaisalgoritmeilla voidaan kuitenkin löytää verkon pienin virittävä puu melko yksinkertaisesti ajassa O(m + n) [1, p. 96]. Kuva 1: Puhelinverkon pienin virittävä puu 1.1. Monte-Carlo algoritmit Monte Carlo algoritmit sitä vastoin soveltuvat ongelmiin, joissa riittää tarpeeksi hyvä ratkaisu. Esimerkiksi sähköasemalla havaitaan, että sähköverkossa on oikosulku. Jotta sähköaseman yläpuolella verkkotopologiassa olevat laitteet eivät vahingoittuisi, on koko aseman virransyötö katkaistava tietyn ajanjakson jälkeen. Jos ennen tätä pystytään löytämään aseman alapuolella olevasta verkosta uusi jakelureitti, voidaan oikeita erotinlaitteita ohjaamalla säilyttää osa asiakkaista tyytyväisenä. Jos su- 3

4 urella todennäköisyydellä, saavutetaan pienin mahdollinen alue ilman sähköjä, on algoritmi hyvä. Jos taas algoritmi ei löytänyt parasta mahdollista ratkaisua, niin mikä tahansa ratkaisu on parempi kuin koko sähköaseman sulkeminen, joka katkaisisi sähköt useammalta asiakkaalta. Tällaisen ongelman ratkaisemiseen sopii siis Monte-Carlo tyyppinen algoritmi. Kuva : Vika sähköverkossa Verkon pienin leikkaus Verkon pienimmän leikkauksen(min-cut) löytämiseen käytettävät algoritmit perustuvat normaalisti verkkojen virtauksen analysointiin ja ovat monimutkaisia toteuttaa. Tässä kappaleessa esitellään yksinkertainen mutta tehokas min-cut satunnaisalgoritmi. Kappaleessa käsitellään suuntaamattomia ja kytkettyjä verkkoja. Min-cut algoritmeilla on tarkoitus löytää verkon pienin leikkaus. Käytännössä halutaan siis löytää se kaarien joukko, joka poistamalla verkko hajoaa kahdeksi erilliseksi verkoksi. Samalla jokaisesta solmusta lähtevien kaarien lukumäärä on vähintään pienimmän leikkauksen kaarien lukumäärä. Tätä tietoa voidaan käyttää hyväksi algoritmin tehokkuuden arvioinnissa. Pienimmän leikkauksen löytäminen on hyödyllistä esimerkiksi kommunikaatioverkkojen suunnittelussa, kun halutaan löytää verkon heikoimmat kohdat. Pienin leikkaus kertoo siis, missä kohdassa verkossa on pienin määrä redundattisuutta. Pienintä leikkausta voidaan käyttää myös hyväksi rinnakkaisalgoritmien suunnittelussa. Kommunikaatio eri prosessorien välillä aiheuttaa usein hitautta rinnakkaisesti suoritettavaan algoritmiin. Jos algoritmin suoritettavat osat ovat verkon solmuja, 4

5 saadaan kommunikaation määrä minimoitua jakamalla ongelma pienimmän leikkauksen kohdalta. Kuva 3: Katkoviiva osoittaa verkon pienimmän leikkauksen.1 Yksinkertainen min-cut algoritmi Verkon leikkaus voidaan löytää poistamalla kaaria, jotka yhdistävät solmuja. Kun verkosta poistetaan kaari kahden solmun väliltä, on olemassa tietty todennäköisyys että kaari ei kuulunut pienimpään leikkaukseen. Algoritmi päättyy kun jäljellä on enää vain solmua. Jos yksikään poistettu kaari ei kuulunut pienimpään leikkaukseen, on jäljelle jääneet kaaret oikea ratkaisu ongelmaan. Olkoon verkko G = (V,E), jossa V on verkon solmujen joukko ja E on verkon kaarien joukko. Kuvassa 3 siis V = {1,,3,4,5,6,7} ja E = {a,b,c,d,e,f,g,h,i,j,k,l,m,n}. Ajetaan kuvassa 3 olevalle verkolle yksinkertainen min-cut algoritmi: Valitse joukosta E satunnaisesti yksi kaari v jonka päätepisteet ovat x ja y Poista kaikki kaaret väliltä {x,y} Luo G:hen uusi solmu z, joka korvaa solmut x ja y siten että kaikki kaaret, jotka liittyvät solmuihin x tai y liittyvät myös solmuun z ja alkuperäiset solmut x ja y poistetaan verkosta Jos jäljellä on yli solmua, aloita alusta Koko algoritmin ajon aikana jäljellä olevat kaaret muodostavat yhden verkon leikkauksista. Algoritmin loputtua jäljellä olevat kaaret ovat verkon pienin leikkaus, jos koko algoritmin ajon aikana ei 5

6 Kuva 4: Kaaren a karsiminen verkosta ja solmujen 1 ja 3 yhdistäminen poistettu yhtään kaarta joka kuuluu pienimpään leikkaukseen. Kuinka suuri todennäköisyys on siihen, että jäljelle jääneet kaaret ovat verkon pienin leikkaus? Olkoon verkon G solmujen lukumäärä n, kaarien määrä pienimmässä leikkauksessa k. Tarkastellaan yhtä verkon pienintä leikkausta C. Verkossa G täytyy olla vähintään nk/ kaarta, koska muuten verkossa täytyisi olla ainakin yksi solmu, jolla on alle k naapurisolmua ja tällöin tähän solmuun liittyvät kaaret olisivat pienimpi leikkaus kuin määritelty pienin leikkaus. Siis kun poistamme ensimmäisen kaaren verkosta todennäköisyys, että poistimme C:hen kuuluvan kaaren on k/(nk/) = /n. Aina kun verkosta poistetaan kaari algoritmin ajon aikana, solmujen määrä vähenee yhdellä. Eli kun verkosta on karsittu i kaarta on verkossa jäljellä n-i+1 solmua, jolloin seuraava karsittu kaari kuuluu joukkoon C todennäköisyydellä /(n-i+1). n i=1 ( 1 ) = (n i + 1) n i=1 ( ) n i 1 (n i + 1) (1) = n j=3 j j = (n )! n! ( ) n = 1/ = Ω(n ) () Todennäköisyys, että yhdellä ajolla tämä algoritmi löytää pienimmän leikkauksen on siis suurempi kuin /n. Jos ajamme algoritmin n / kertaa, todennäköisyys, että emme löydä pienintä leikkausta on vähintään (1 n ) n / < 1/e (3) Käytännössä meillä on siis hyvin yksinkertainen Monte Carlo algoritmi, jolla saadaan suurella todennäköisyydellä oikeita ratkaisuja. Tämän yksinkertaisen algoritmin ajaminen vaatii aikaa O(n ) ja algoritmi pitää suorittaa vähintään Ω(n ) kertaa, että saamme kohtuullisella todennäköisyydellä oikean ratkaisun. Ratkaisun löytäminen kestää siis O(n 4 ). Parhaat deterministiset algoritmit maksi- 6

7 maalisen virtauksen löytämiseksi kestävät O(mn log(n /m)). Maksimaalisen virtauksen laskeminen tuottaa verkon pienimmän leikkauksen sivutuloksena kuten aiemmin mainittiin. Satunnaista min-cut algoritmia on siis tehostettava, jotta se tuottaa hyviä tuloksia nopemmin kuin deterministinen algoritmi.. Nopeutettu min-cut algoritmi Yllä esitellyn pienimmän leikkauksen löytävän algoritmin suurin ongelma on, että se löytää pienimmän leikkauksen melko pienellä todennäköisyydellä Ω(n ), jonka vuoksi se on ajettava liian useasti, että saamme suurella todennäköisyydellä oikean ratkaisun. Välituloksesta (1) näemme, että kun karsittujen kaarien määrä kasvaa, niin todennäköisyys, että poistamme pienimpää leikkaukseen kuuluvan kaaren kasvaa samalla. Eli kun verkko pienenee, niin algoritmi poistaa suuremmalla todennäköisyydellä kaaren, jota ei pitäisi poistaa. Algoritmia voisi siis luultavasti tehostaa sillä, että kun ongelman ratkaisujoukko(verkon koko) käy pienemmäksi, kasvatetaan todennäköisyyttä, jolla emme poista pienimpään leikkaukseen kuuluvaa kaarta. Oletetaan, että yksinkertaista min-cut algoritmia ajetaan kunnes jäljellä on vain t solmua. Tällöin algoritmi ei ole poistanut oikeaa ratkaisua todennäköisyydellä: n t i=1 ( ) n i 1 = (n i + 1) ( ) t / ( ) n = Ω ( ( ) ) t n (4) Algoritmin nopeuttaminen perustuu hajoita ja hallitse menetelmään. Poistetaan verkosta satunnaisalgoritmillamme rajallinen määrä solmuja kahdesti. Toistetaan kahdelle uudelle verkolle sama operaatio rekursiivisesti. Kun rekursiivisesti tutkitut verkot käyvät tarpeeksi pieniksi, pienimmän leikkauksen löytäminen tulee triviaaliksi, jolloin se ratkaistaan deterministisellä algoritmilla. Tällä algoritmilla meidän aiempi yksinkertainen algoritmi ajetaan useammin mutta, koska tutkittavien verkkojen koot pysyvät suurempina, todennäköisyys huonon kaaren poistamiseen pienenee. 1. n on verkon G solmujen lukumäärä. Toista kunnes n 6 (a) t 1 + n (b) Käytä yksinkertaista supistusalgoritmia verkkoon G kunnes jäljellä on vain t solmua saadaksesi verkon H 1 (c) Käytä yksinkertaista supistusalgoritmia verkkoon G kunnes jäljellä on vain t solmua saadaksesi verkon H (d) Kutsu rekursiivisesti tätä algoritmia verkoille H 1 ja H (e) Palauta pienempi verkko H 1 tai H 7

8 3. Etsi pienin leikkaus determinisesti pienestä verkosta Rekursio lopetetaan kun solmujen lukumäärä on pienempi kuin 7, koska tämän jälkeen t ei enää ole ole pienempi kuin jäljellä olevien solmujen lukumäärä. Nopeamman algoritmin tehon ymmärtää helpoiten ajattelemalla näitä kahta eri algoritmiä puina(5). Yksinkertainen algoritmi on puu, jossa on yksi juuri ja sillä O(n ) lehtisolmua, jotka kuvaavat jokaista algoritmin eri ajokertaa. Nopeutettu algoritmi on binääripuu, jonka juurena on alkuperäinen verkko G. Juuren ensimmäiset lapsisolmut ovat ensimmäisella rekursiokierroksella syntyneet verkot H 1 ja H. Näiden solmujen lapsisolmuja ovat taas seuraavat rekursioaskeleet ja niin edespäin. Eli nopeutettu algoritmi ei pienennä mahdollisten ratkaisujen joukkoa, vaan jakaa työn pienempiin osatekijöihin. Kuva 5: Yksinkertaisen ja nopeutetun min-cut algoritmin vertailu...1 Nopeutetun min-cut algoritmin tehokkuus Koska yksinkertainen supistusalgoritmi käyttää aikaa O(n ), niin on varmaa, että myös algoritmin edetessä tutkittavat puut supistuvat vähintään samassa ajassa. Algoritmissa tutkitaan rekursiivisesti puuta, joiden koko on 1 + n. Rekursiivinen min-cut algoritmi voidaan siis suorittaa vähintään ajassa T (n) = T ( 1 + n ) + O(n ) (5) Koska puun jokaisen horisontaalisen tason tutkimiseen kuluu aikaa O(n ) ja puussa on O(log n) 8

9 tasoa, koko algoritmin suorittaminen kestää siis T (n) = O(n log n) (6) Algoritmin edetessä, jokaisella rekursiokierroksella, muistissa täytyy pitää vain yhtä verkkoa. Jos rekursiossa ollaan edetty d askelta, on tutkittavassa verkossa enää jäljellä vain ω(n/ d/ ) solmua. Tilaa tarvitaan siis O ( d=0.. Nopeutetun min-cut algoritmin onnistumistodennäköisyys ) n d = O(n ) (7) Algoritmin ensimmäinen rekursiokierros karsii alkuperäisen verkon G solmuja n, niin kauan että solmuja on jäljellä t = 1 + n. Välituloksesta(4) nähdään, että pienin leikkaus on vielä jäljellä vähintään todennäköisyydellä ( ) ( t 1 + n/ ) = 1 n n (8) Seuraava todistus löytyy viitteestä ([1, Theorem 10.17, p.94]). Olkoon P(t) todennäköisyys, että nopeutettu min-cut algoritmi löytää pienimmän leikkauksen verkosta, jossa on t solmua. Rekursiivinen kutsu osaverkkoon H i ei poista pienintä leikkausta todennäköisyydellä P ( 1 + t ), jos osaverkko H i vielä sisälsi pienimmän leikkauksen. H i sisältää pienimmän leikkauksen vähintään todennäköisyydellä 1 (8). Eli rekursiivinen kutsu osaverkkoon H i ei poista pienintä leikkausta todennäköisyydellä 1 P ( 1 + t ). Koska rekursio jakaantuu kahteen osaverkkoon, todennäköisyys sille, että ainakin toinen rekursio kierros ei poista solmuja pienimmästä leikkauksesta on siis P (t) 1 (1 1 P ( 1 + t )) (9) Kuvataan rekursion syvyyttä sijoittamalla k = Θ(log t) ja olkoon p(k) pienin onnistumistodennäköisyys. Tällöin p(0) = 1 ja p(k + 1) = p(k) p(k) 4 (10) Kaava yksinkertaistuu lisää uudella sijoituksella q(k) = 4/p(k) 1 9

10 q(k + 1) = q(k) q(k) (11) Ylläolevasta rekursiosta voidaan induktiivisesti päätellä k < q(k) < k + H k (1) Jossa H i on harmooninen luku i k=1 1 k = Θ(log i) (13) Tästä seuraa q(k) = k + Θ(log k). Takaisin sijoittamalla näemme, että p(k) = Θ(1/k), johon sijoittamalla näemme että P (t) = Θ(1/ log t). Siis jos verkossa on n solmua, niin nopeutettu pienimmän leikkauksen löytävä algoritmi löytää oikean ratkaisun todennäköisyydellä Θ(1/ log n). Eli nopeutettu algoritmi pitää siis ajaa vähintään log n kertaa, että saamme suurella todennäköisyydellä oikean vastauksen. Siispä jos nopeutetun algoritmin ajaminen kestää O(n log n) (6) ja algoritmi pitää ajaa log n kertaa, algoritmimme löytää verkon pienimmän leikkauksen ajassa O(n log n). Jos paras deterministinen algoritmi löytää verkon pienimmän leikkauksen ajassa O(mn log(n /m)), jossa m on kaarien lukumäärä huomaamme, että satunnainen algoritmi on tehokkaampi kuin deterministinen algoritmi. Koska satunnaisalgoritmimme on Monte-Carlo algoritmi on siitä myös hyötyä, jos algoritmin sovelluskohteessa nopea suoritus on tärkeämpää, kuin täysin oikean ratkaisun löytäminen. 3 Yhteenveto Satunnaislgoritmit soveltuvat hyvin moniin verkkoihin liittyviin ongelmiin. Verkon pienimmän leikkauksen etsintää ja pienimmän virittävän puun löytämistä satunnaisalgoritmeilla tutkitaan koko ajan. Koska satunnaisalgoritmit soveltuvat useaan ongelmaan, joita voidaan ratkaista rinnakkaisen ja hajautetun laskennan avulla, hajautuksen yleistyessä tietotekniikassa, satunnaisalgoritmien käyttö mitä luultavimmin yleistyy. Satunnaisalgoritmien yleistyessä myös verkkoihin liittyviä ongelmia tullaan todennäköisesti ratkaisemaan yhä useammin satunnaisalgoritmeilla. 10

11 Viitteet [1] Motwani, R., Raghavan, P. Randomized algorithms. Cambridge University Press, [] Michael Mitzenmacher, Eli Upfal. Probability and Computing: Randomized Algorithms and Probabilistic Analysis. Cambridge University Press, 005. [3] ACM Special Interest Group for Automata and Computability Theory, ACM, Activity Group on Discrete Mathematics, SIAM Activity Group on Discrete Mathematics, Special Interest Group for Automata and Computability Theory, SIAM. Proceedings of the Fifth Annual ACM-SIAM Symposium on Discrete Algorithms. SIAM, 005. [4] Sanguthevar Rajasekaran. Handbook of Randomized Computing. Springer, 001. [5] Wikipedia,Minimum spanning tree, spanning tree, viitattu

7. Satunnaisalgoritmit (randomized algorithms)

7. Satunnaisalgoritmit (randomized algorithms) 7. Satunnaisalgoritmit (randomized algorithms) Satunnaisuudella on laskentaongelmien ratkaisemisessa moninaisia käyttötapoja. Tässä tarkastellaan lähinnä perinteisten algoritmien nopeuttamista, ja sitäkin

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten

Lisätiedot

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

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen Luento omatoimisen luennan tueksi algoritmiikan tutkimusseminaarissa 23.9.2002. 1 Sisältö Esitellään ongelmat Steiner-puu Kauppamatkustajan

Lisätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö 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

Lisätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli

Lisätiedot

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

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen) TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia

Lisätiedot

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

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Verkon värittämistä hajautetuilla algoritmeilla

Verkon värittämistä hajautetuilla algoritmeilla Verkon värittämistä hajautetuilla algoritmeilla 5 12 30 19 72 34 Jukka Suomela 15 77 18 4 9. tammikuuta 2012 19 2 68 Verkko 2 Verkko solmu 3 Verkko solmu kaari 4 Hajautettu järjestelmä solmu (tietokone)

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, 652013, vastauksia 1 [6 pistettä] Vastaa jokaisesta alla olevasta väittämästä onko se tosi vai epätosi ja anna lyhyt perustelu Jokaisesta kohdasta

Lisätiedot

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.

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. Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen

Lisätiedot

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

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä

Lisätiedot

4 Tehokkuus ja algoritmien suunnittelu

4 Tehokkuus ja algoritmien suunnittelu TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin

Lisätiedot

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto) 811 Tietorakenteet (kevät 9) Harjoitus 11, ratkaisuja (Topi Musto) 1. Bellmanin-Fordin algoritmin alustusvaiheen jälkeen aloitussolmussa on arvo ja muissa solmuissa on arvo ääretön. Kunkin solmun arvo

Lisätiedot

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

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1) MS-A0401 Diskreetin matematiikan perusteet Tentti ja välikokeiden uusinta 10.11.015 Kirjoita jokaiseen koepaperiin nimesi, opiskelijanumerosi ym. tiedot! Laskimia tai taulukoita ei saa käyttää tässä kokeessa!

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

Lisätiedot

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

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden

Lisätiedot

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

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

13 Lyhimmät painotetut polut

13 Lyhimmät painotetut polut TIE-20100 Tietorakenteet ja algoritmit 297 13 Lyhimmät painotetut polut BFS löytää lyhimmän polun lähtösolmusta graafin saavutettaviin solmuihin. Se ei kuitenkaan enää suoriudu tehtävästä, jos kaarien

Lisätiedot

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö Algoritmit 1 Luento 13 Ma 26.2.2018 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit 811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi

Lisätiedot

Pienin virittävä puu (minimum spanning tree)

Pienin virittävä puu (minimum spanning tree) Pienin virittävä puu (minimum spanning tree) Jatkossa puu tarkoittaa vapaata puuta (ks. s. 11) eli suuntaamatonta verkkoa, joka on yhtenäinen: minkä tahansa kahden solmun välillä on polku syklitön: minkä

Lisätiedot

Stabiloivat synkronoijat ja nimeäminen

Stabiloivat synkronoijat ja nimeäminen Stabiloivat synkronoijat ja nimeäminen Mikko Ajoviita 2.11.2007 Synkronoija Synkronoija on algoritmi, joka muuntaa synkronoidun algoritmin siten, että se voidaan suorittaa synkronoimattomassa järjestelmässä.

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 126 Luku 3 Puut 3.1 Puu 3.2 Virittävä puu 3.3 Virittävän puun konstruointi 3.4 Minimaalinen virittävä puu

Lisätiedot

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4

Lisätiedot

Malliratkaisut Demot

Malliratkaisut Demot Malliratkaisut Demot 4 3.4.017 Tehtävä 1 Tarkastellaan harjoituksen 1 nopeimman reitin ongelmaa ja etsitään sille lyhin virittävä puu käyttämällä kahta eri algoritmia. a) (Primin algoritmi) Lähtemällä

Lisätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella

Lisätiedot

v 8 v 9 v 5 C v 3 v 4

v 8 v 9 v 5 C v 3 v 4 Verkot Verkko on (äärellinen) matemaattinen malli, joka koostuu pisteistä ja pisteitä toisiinsa yhdistävistä viivoista. Jokainen viiva yhdistää kaksi pistettä, jotka ovat viivan päätepisteitä. Esimerkiksi

Lisätiedot

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö Algoritmit 2 Luento 8 To 4.4.2019 Timo Männikkö Luento 8 Algoritmien analysointi Algoritmien suunnittelu Rekursio Osittaminen Rekursioyhtälöt Rekursioyhtälön ratkaiseminen Master-lause Algoritmit 2 Kevät

Lisätiedot

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

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen) 58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 12.9.2018 ratkaisuja (Jyrki Kivinen) 1. [10 pistettä] Iso-O-merkintä. (a) Pitääkö paikkansa, että n 3 + 5 = O(n 3 )? Ratkaisu: Pitää paikkansa.

Lisätiedot

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö Algoritmit 2 Demot 1 27.-28.3.2019 Timo Männikkö Tehtävä 1 (a) 4n 2 + n + 4 = O(n 2 ) c, n 0 > 0 : 0 4n 2 + n + 4 cn 2 n n 0 Vasen aina tosi Oikea tosi, jos (c 4)n 2 n 4 0, joten oltava c > 4 Kokeillaan

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

Skedulointi, kuormituksen tasaus, robotin navigaatio

Skedulointi, kuormituksen tasaus, robotin navigaatio Skedulointi, kuormituksen tasaus, robotin navigaatio Esitelmä algoritmiikan tutkimusseminaarissa 17.2.2003 Kimmo Palin Tietojenkäsittelytieteen laitos Helsingin Yliopisto Skedulointi, kuormituksen tasaus,

Lisätiedot

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint. Yleiset hakupuut 4 Monitiehakupuu: Binäärihakupuu 0 1 3 5 6 7 8 v k 1 k k 3 v v 3 v 4 k 1 k 3 k 1 k k k 3 d lapsisolmua d 1 avainta Yleinen hakupuu? Tietorakenteet, syksy 007 1 Esimerkki monitiehakupuusta

Lisätiedot

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö Algoritmit 1 Luento 14 Ke 25.2.2015 Timo Männikkö Luento 14 Heuristiset menetelmät Heuristiikkoja kapsäkkiongelmalle Kauppamatkustajan ongelma Lähimmän naapurin menetelmä Kertaus ja tenttivinkit Algoritmit

Lisätiedot

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 28.3.2017 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot Algoritmit 2 Kevät 2017 Luento 5 Ti 28.3.2017 2/29 B-puu Algoritmit 2 Kevät 2017 Luento 5 Ti

Lisätiedot

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

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5. 2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö 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

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

Lisätiedot

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea. Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla

Lisätiedot

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö Algoritmit 2 Luento 9 Ti 17.4.2018 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen Huffmanin koodi LZW-menetelmä Taulukointi Editointietäisyys Algoritmit 2 Kevät 2018 Luento 9 Ti 17.4.2018 2/29 Merkkitiedon

Lisätiedot

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl.

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl. iskreetti matematiikka, syksy 00 arjoitus, ratkaisuista. seta 8 nollaa ja 8 ykköstä renkaaksi niin, että jokainen yhdistelmä 0000, 000,..., esiintyy täsmälleen kerran. Vihje: Tulkitse de ruijnin jonon

Lisätiedot

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013 Satunnaisalgoritmit Antti Tanhuanpää 25. maaliskuuta 2013 Johdanto Satunnaisalgoritmit ovat algoritmeja, jotka hyödyntävät satunnaisuutta osana laskentaansa. Ensimmäisen tällaisen algoritmin kehitti Michael

Lisätiedot

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

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu

Lisätiedot

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan. 5. Verkkoalgoritmeja Eräs keskeinen algoritmien suunnittelutekniikka on Palauta ongelma johonkin tunnettuun verkko-ongelmaan. Palauttaminen edellyttää usein ongelman ja algoritmin pientä modifioimista,

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( ) Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,

Lisätiedot

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö Johdatus diskreettiin matematiikkaan Harjoitus 5, 14.10.2015 1. Ratkaise rekursioyhtälö x n+4 2x n+2 + x n 16( 1) n, n N, alkuarvoilla x 1 2, x 2 14, x 3 18 ja x 4 42. Ratkaisu. Vastaavan homogeenisen

Lisätiedot

6. Approksimointialgoritmit

6. Approksimointialgoritmit 6. Approksimointialgoritmit Tässä luvussa käsitellään lyhyesti approksimointiin liittyvät peruskäsitteet ja joitain keskeisiä approksimoituvuustuloksia. Tavoitteena on, että opiskelija näkee approksimointialgoritmien

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet ) T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen

Lisätiedot

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö Algoritmit 2 Luento 12 Ke 26.4.2017 Timo Männikkö Luento 12 Rajoitehaku Kauppamatkustajan ongelma Lyhin virittävä puu Paikallinen etsintä Vaihtoalgoritmit Geneettiset algoritmit Simuloitu jäähdytys Algoritmit

Lisätiedot

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

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista). Esimerkki Lomitusjärjestäminen merge-sort(a, p, q): var k % paikallinen muuttuja, vakiotila 1. if p < q then 2. r := (p + q)/2 3. merge-sort(a, p, r) 4. merge-sort(a, r + 1, q) 5. merge(a, p, r, q) Olkoon

Lisätiedot

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot

Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia

Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia hyväksymispäivä arvosana arvostelija Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia Janne Korhonen Helsinki 8.12.2009 Seminaariraportti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen

Lisätiedot

Puumenetelmät. Topi Sikanen. S ysteemianalyysin. Laboratorio Aalto-yliopiston teknillinen korkeakoulu

Puumenetelmät. Topi Sikanen. S ysteemianalyysin. Laboratorio Aalto-yliopiston teknillinen korkeakoulu Puumenetelmät Topi Sikanen Puumenetelmät Periaate: Hajota ja hallitse Jaetaan havaintoavaruus alueisiin. Sovitetaan kuhunkin alueeseen yksinkertainen malli (esim. vakio) Tarkastellaan kolmea mallia Luokittelu-

Lisätiedot

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö Algoritmit 1 Luento 11 Ti 14.2.2017 Timo Männikkö Luento 11 Algoritminen ongelmanratkaisu Osittaminen Lomituslajittelu Lomituslajittelun vaativuus Rekursioyhtälöt Pikalajittelu Algoritmit 1 Kevät 2017

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille

Lisätiedot

Silmukkaoptimoinnista

Silmukkaoptimoinnista sta TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. joulukuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale

Lisätiedot

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö Algoritmit 1 Luento 12 Ti 19.2.2019 Timo Männikkö Luento 12 Osittamisen tasapainoisuus Pikalajittelun vaativuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu Algoritmit

Lisätiedot

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

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5. 2. MS-A000 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2..205 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x x 2 =

Lisätiedot

Matemaatiikan tukikurssi

Matemaatiikan tukikurssi Matemaatiikan tukikurssi Kurssikerta 1 1 Funktiot Funktion määritelmä Funktio on sääntö, joka liittää kahden eri joukon alkioita toisiinsa. Ollakseen funktio tämän säännön on liitettävä jokaiseen lähtöjoukon

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Vaihe E tiistai

Lisätiedot

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari Konsensusongelma hajautetuissa järjestelmissä Niko Välimäki 30.11.2007 Hajautetut algoritmit -seminaari Konsensusongelma Päätöksen muodostaminen hajautetussa järjestelmässä Prosessien välinen viestintä

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 8.5.2018 Timo Männikkö Luento 13 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys Kertaus ja tenttivinkit Algoritmit 2 Kevät

Lisätiedot

Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita.

Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita. Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita. Tehtävä 1 Mitä seuraavat käsitteet tarkoittavat? Monitahokas (polyhedron).

Lisätiedot

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö Algoritmit 2 Luento 4 Ke 22.3.2017 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2017 Luento 4

Lisätiedot

Harjoitus 3 (3.4.2014)

Harjoitus 3 (3.4.2014) Harjoitus 3 (3..) Tehtävä Olkoon kaaren paino c ij suurin sallittu korkeus tieosuudella (i, j). Etsitään reitti solmusta s solmuun t siten, että reitin suurin sallittu korkeus pienimmillään olisi mahdollisimman

Lisätiedot

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin Tietorakenteet, esimerkkivastauksia viikon laskareiin (a) Oletetaan seuraavan kuvan mukainen verkko ja etsitään lyyimpiä polkuja solmusta Ensimmäiseksi käsitellään solmu B, jonka etäisyys on kolme Seuraavaksi

Lisätiedot

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,

Lisätiedot

Harjoitus 3 (31.3.2015)

Harjoitus 3 (31.3.2015) Harjoitus (..05) Tehtävä Olkoon kaaren paino c ij suurin sallittu korkeus tieosuudella (i,j). Etsitään reitti solmusta s solmuun t siten, että reitin suurin sallittu korkeus pienimmillään olisi mahdollisimman

Lisätiedot

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet 58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 15.6.2018 malliratkaisut ja arvosteluperusteet 1. [10 pistettä] Hakemistorakenteet. Vertaa linkitettyjen listojen, tasapainoisten hakupuiden ja

Lisätiedot

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A) Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 017 Insinöörivalinnan matematiikan koe 30..017, Ratkaisut (Sarja A) 1. a) Lukujen 9, 0, 3 ja x keskiarvo on. Määritä x. (1 p.) b) Mitkä reaaliluvut

Lisätiedot

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät

Lisätiedot

PARITUS KAKSIJAKOISESSA

PARITUS KAKSIJAKOISESSA PARITUS KAKSIJAKOISESSA GRAAFISSA Informaatiotekniikan t iik seminaari i Pekka Rossi 4.3.2008 SISÄLTÖ Johdanto Kaksijakoinen graafi Sovituksen peruskäsitteet Sovitusongelma Lisäyspolku Bipartite matching-algoritmi

Lisätiedot

Yleinen paikallinen vakautuva synkronointialgoritmi

Yleinen paikallinen vakautuva synkronointialgoritmi Yleinen paikallinen vakautuva synkronointialgoritmi Panu Luosto 23. marraskuuta 2007 3 4 putki 1 2 α α+1 α+2 α+3 0 K 1 kehä K 2 K 3 K 4 Lähdeartikkeli Boulinier, C., Petit, F. ja Villain, V., When graph

Lisätiedot

Matematiikan ja tilastotieteen laitos Matematiikka tutuksi Harjoitus 2, malliratkaisut

Matematiikan ja tilastotieteen laitos Matematiikka tutuksi Harjoitus 2, malliratkaisut Matematiikan ja tilastotieteen laitos Matematiikka tutuksi Harjoitus, malliratkaisut 1.-5.9.009 1. Muodosta joukot A B, A B ja A\B sekä laske niiden alkioiden lukumäärät (mikäli kyseessä on äärellinen

Lisätiedot

Ei-yhteydettömät kielet [Sipser luku 2.3]

Ei-yhteydettömät kielet [Sipser luku 2.3] Ei-yhteydettömät kielet [Sipser luku 2.3] Yhteydettömille kielille pätee samantapainen pumppauslemma kuin säännöllisille kielille. Siinä kuitenkin pumpataan kahta osamerkkijonoa samaan tahtiin. Lause 2.25

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

Miten käydä läpi puun alkiot (traversal)?

Miten käydä läpi puun alkiot (traversal)? inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot