Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.
|
|
- Tuomas Salonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 5. Verkkoalgoritmeja Eräs keskeinen algoritmien suunnittelutekniikka on Palauta ongelma johonkin tunnettuun verkko-ongelmaan. Palauttaminen edellyttää usein ongelman ja algoritmin pientä modifioimista, joten on tärkeä ymmärtää hyvin perusalgoritmien keskeiset toimintaperiaatteet. Tämän luvun jälkeen opiskelija tuntee yksityiskohtaisesti syvyyssuuntaisen haun (DFS) ja sen analyysin suunnatussa ja suuntaamattomassa verkossa osaa soveltaa DFS:ää osana muiden verkko-ongelmien ratkaisua tuntee maksimivuo-ongelman peruspiirteet ja osaa palauttaa muita ongelmia maksimivuo-ongelmaan osaa ratkaista maksimivuo-ongelman Edmondsin-Karpin algoritmilla tuntee kehittyneempien maksimivuoalgoritmien yleisperiaateet Ei pidä unohtaa aiemminkaan opittuja algoritmeja (osa kurssilla Tietorakenteet): leveyssuuntainen haku, Dijkstra, Floyd-Warshall, Kruskal, Prim. 251
2 5.1 Syvyyssuuntainen haku Perusalgoritmi on tuttu kurssilta Tietorakenteet. Oletetaan, että verkko G = (V, E) on annettu vieruslistoina L[v], v V. Tuloksena saadaan verkon syvyyssuuntainen virittävä metsä T E ja solmujen esi- ja jälkinumerot prenum[v] ja postnum[v], v V. DFS: T := ; pre := 1; post := 1 for v V do new[v] := True for v V do if new[v] then DFS-Visit(v) DFS-Visit(v): prenum[v] := pre; pre := pre + 1; new[v] := False for w L[v] do if new[w] then T := T { (v, w) } DFS-Visit(w) postnum[v] := post; post := post + 1; Sama algoritmi toimii suunnatuille ja suuntaamattomille verkoille. (Jälkimmäisessä tapauksessa vain aina w L[v] v L[w].) Lopputuloksen tulkinta kuitenkin on hieman erilainen. Tarkastellaan ensin suunnattuja verkkoja. 252
3 Lause Verkon G = (V, E) syvyyssuuntainen haun aikavaativuus on O( V + E ). Todistus Muut osat kuin DFS-Visit-kutsut vievät selvästi ajan O( V ). Kullakin v V kutsu DFS-Visit(v) suoritetaan tasan kerran, sillä kutsu merkitsee solmun v heti vanhaksi eikä siihen enää mennä. Kutsun DFS-Visit(v) aikavaativuus lukuunottamatta rekursiivisia DFS-Visit-kutsuja on selvästi O(1 + L[v] ). Siis kaikkiaan DFS-Visit-kutsut vievät ajan O( v V (1 + L[v] )) = O( V + E ). 253
4 Syvyyssuuntainen haku jakaa kaaret puukaariin T ja poikittaiskaariin E T. Tämä jako, ja solmujen numeroinnit, eivät ole yksikäsitteisiä, vaan riippuvat vieruslistojen järjestyksestä ja solmujen valintajärjestyksestä proseduurin DFS for-silmukassa. Suunnatussa verkossa poikittaiskaaret jaetaan edelleen: etenevät kaaret: solmusta sen aitoihin jälkeläisiin takautuvat kaaret: solmusta sen esivanhempiin (mukaanlukien solmusta itseensä) sivuttaiskaaret: kaikki muut puu etenevä takautuva 10 sivuttais Eräs mahdollinen esinumerointi ja kaarten jaottelu verkossa 254
5 Lemma Jos (v, w) on sivuttaiskaari, niin prenum[v] > prenum[w] ja postnum[v] > postnum[w]. Todistus Oletetaan (v, w) E. Jos v = w, niin (v, w) on määritelmän mukaan takautuva. Oletetaan v w. Jos prenum[v] < prenum[w], niin kutsun DFS-Visit(v) tapahtuessa w on uusi. Siis w tulee solmun v jälkeläiseksi. Olkoon toisaalta prenum[v] > prenum[w] mutta postnum[v] < postnum[w]. Siis kutsun DFS-Visit(v) päättyessä kutsu DFS-Visit(w) on vielä kesken, joten v on solmun w jälkeläinen. 255
6 Topologinen järjestäminen Annettu: suunnattu syklitön verkko (Directed Acyclic Graph, DAG) G = (V, E). Määrättävä: kullekin solmulle v V järjestysnumero s[v] siten, että s[v] < s[w] jos (v, w) E Ratkaisu: s[v] = V postnum(v) Perustelu: Olkoon (v, w) E. Syklittömyyden takia takautuvia kaaria ei ole. Jos (v, w) on etenevä tai puukaari, algoritmista nähdään suoraan postnum[v] > postnum[w]. Jos (v, w) on sivuttaiskaari, niin postnum[v] > postnum[w] edellisen lemman perusteella. Muita helppoja DFS:n sovelluksia: saavutettavuuden testaaminen, syklittömyyden testaaminen 256
7 Vahvasti yhtenäiset komponentit Suunnatussa verkossa G merkitään u v jos solmusta u on polku solmuun v. Määritellään ekvivalenssirelaatio u v (u v ja v u). Ekvivalenssirelaation ekvivalenssiluokat ovat verkon vahvasti yhtenäiset komponentit. Algoritmi: verkon G vahvasti yhtenäiset komponentit 1. Laske verkon G solmujen jälkinumerot postnum[v]. 2. Muodosta G r, joka on muuten kuin G mutta kaarten suunnat on vaihdettu. 3. Suorita verkossa G r syvyyssuuntainen haku siten, että proseduurissa DFS solmut käsitellään jälkinumeroiden postnum mukaan laskevassa järjestyksessä. 4. Syntyvän virittävän metsän jokainen puu on samalla verkon G vahvasti yhtenäinen komponentti. 257
8 Lause Algoritmi laskee vahvasti yhtenäiset komponentit oikein ja ajassa O( V + E ). Todistus Aikavaativuus on selvä. Pitää osoittaa, että u ja v ovat samassa vahvasti yhtenäisessä komponentissa joss ne ovat samassa verkon G r syvyyssuuntaisessa virittävässä puussa. Jatkossa polut ja numeroinnit viittaavat alkuperäiseen verkkoon G ellei muuta mainita. : Jos verkossa G sekä u v että v u, niin sama pätee myös verkossa G r. Siis u ja v päätyvät samaan puuhun. : Olkoot u ja v samassa virittävässä puussa, jonka juuri on x. Siis u x ja v x. Riittää osoittaa, että myös x u ja x v. Osoitetaan x v; väite x u menee samaan tapaan. Jos v = x, asia on selvä. Muuten postnum[x] > postnum[v]. Toisaalta koska v x, kutsu DFS-Visit[x] alkaa ennen kuin DFS-Visit[v] päättyy. Siis v on solmun x jälkeläinen verkon G syvyyssuuntaisessa virittävässä metsässä, ja erityisesti x v. 258
9 Syvyyssuuntainen haku suuntaamattomassa verkossa Algoritmi ja sen aikavaativuus ovat samat kuin suunnatussa tapauksessa. Kaarten suuntaamattomuudesta seuraa, että sivuttaiskaaria ei synny. Haku siis jakaa kaaret kahteen luokkaan: puukaaret (joukko T ) muodostavat virittävän metsän takautuvat kaaret (joukko E T ) yhdistävät esivanhempia ja jälkeläisiä suuntaamaton verkko eräs esinumerointi, jako puukaariin (yhtenäinen) ja takautuviin (pisteet) 259
10 2-yhtenäiset komponentit ja artikulaatiopisteet: esimerkkisovellus syvyyssuuntaiselle haulle suuntaamattomassa verkossa Oletamme jatkossa, että käsiteltävä verkko on yhtenäinen. (Muuten käsitellään kukin yhtenäinen komponentti erikseen.) Yhtenäisen verkon solmu on artikulaatiopiste jos sen poistaminen (siihen liittyvine kaarineen) tekee verkosta epäyhtenäisen. Verkko on 2-yhtenäinen jos sillä ei ole artikulaatiopisteitä. Esim. tietoliikenneverkon tapauksessa 2-yhtenäisyys tarkoittaa, että yhden solmun poistuminen ei estä muiden solmujen välisiä yhteyksiä. Tämä yleistyy ilmeisellä tavalla k-yhtenäisyydeksi, k 2. Alustava intuitiivinen määrittely: verkon 2-yhtenäiset komponentit ovat sen maksimaaliset 2-yhtenäiset osaverkot. 260
11 a artikulaatipisteet b e c d f g Artikulaatiopisteet a a b e e c d f g 2-yhtenäiset komponentit (solmujoukot { a, b, c, d }, { a, e } ja { e, f, g }) 261
12 Kerrataan määritelmiä: solmujono (v 1,..., v k ) on polku jos (v i, v i+1 ) E kaikilla 1 i k 1 polku (v 1,..., v k ) on yksinkertainen jos v 1, v 2,..., v k ovat kaikki eri solmuja polku (v 1,..., v k ) on kehä jos v 1 = v k kehä (v 1,..., v k ) on yksinkertainen jos v 1, v 2,..., v k 1 ovat kaikki eri solmuja Huomaa erikoistapaus: jos (u, v) E niin (u, v) on yksinkertainen kehä. Määritellään nyt kaarijoukossa E ekvivalenssirelaatio seuraavasti: e e jokin yksinkertainen kehä sisältää sekä kaaren e että kaaren e. Olkoot relaation ekvivalenssiluokat E 1,..., E k. Kun i = 1,..., k, muodostukoon V i V niistä solmuista, jotka esiintyvät luokan E i kaaren päätepisteenä. Verkon G 2-yhtenäiset komponentit ovat nyt osaverkot G i = (V i, E i ), i = 1,..., k. 262
13 Lemma Olkoon G = (V, E) yhtenäinen, ja sen 2-yhtenäiset komponentit G i = (V i, E i ), i = 1,..., k. 1. G i on 2-yhtenäinen kaikilla i. 2. Jos i j niin V i V j a on verkon G artikulaatiopiste joss a V i V j joillain i j. Todistus Selvästi kaikki G i ovat yhtenäisiä. (1): Olkoon a, u, v V i. Väitetään, että jos a { u, v } niin solmujen u ja v välillä on ainakin yksi polku joka ei kulje solmun a kautta. Jos (u, v) E i, asia on selvä. Muuten on olemassa kaksi eri kaarta (u, u ) E i ja (v, v ) E i, ja nämä kaaret ovat jollakin yksinkertaisella kehällä. Kehä antaa kaksi eri polkua solmujen u ja v välille, ja a voi olla vain toisella niistä. 263
14 (2): Tehdään vastaoletus { u, v } V i V j, i j, u v. Koska ei voi olla V i V j, on olemassa jokin x V i { u, v }. Tällä x on olemassa joukon E i kaarista koostuva kehä, joka kulkee solmujen u, v ja x kautta. Vastaavasti jollain y V j { u, v } jokin joukon E j kaarista koostuva kehä kulkee pisteiden u, v ja y kautta. Näiden kehien paloja yhdistämällä saadaan yksinkertainen kehä, joka sisältää kaaria sekä joukosta E i että joukosta E j ; ristiriita. u u v v komponentin E i kaaria komponentin E j kaaria. 264
15 (3), : Olkoon a verkon G artikulaatiopiste. Siis joillain u, v kaikki polut u v kulkevat pisteen a kautta. Olkoon jollain tällaisella polulla x ja y solmua a välittömästi ympäröivät solmut: u x a y v. Jos kaaret (x, a) ja (a, y) kuuluisivat samaan komponenttiin, ne olisivat jollain yksinkertaisella kehällä. Tästä kehästä saataisiin solmujen u ja v välille vaihtoehtoinen polku joka ei kulje solmun a kautta; ristiriita. Siis (x, a) E i ja (a, y) E j joillain i j, ja tällöin a V i V j. (3), : Olkoon a V i V j, i j. Siis (x, a) E i ja (a, y) E j joillain x, y. Jos solmujen x ja y välillä olisi polku, joka ei kulje solmun a kautta, syntyisi kehä jolla olisi kaaret (x, a) E i ja (a, y) E j ; ristiriita. Siis kaikki polut x y kulkevat solmun a kautta ja se on artikulaatiopiste. 265
16 Tavoitteena on löytää artikulaatiopisteet ja 2-yhtenäiset komponentit syvyyssuuntaisen haun yhteydessä. Tarkastellaan ensin, miten artikulaatiopisteet tunnistetaan, jos syvyyssuuntainen virittävä puu T ja takautuvat kaaret E T on valmiiksi annettu. Jos a ei ole artikulaatiopiste, erityisesti solmun a jokaisesta lapsesta on solmun a isään polku, joka ei kulje solmun a kautta. Koska sivuttaiskaaria ei ole, tällä polulla on oltava kaari solmun a jälkeläisestä solmun a aitoon esivanhempaan. Tarkemmin pätee seuraava: Lause Olkoon verkko G = (V, E) yhtenäinen ja S = (V, T ) sen syvyyssuuntainen virittävä puu. Nyt a V on verkon G artikulaatiopiste joss 1. a on puun S juuri ja sillä on ainakin kaksi lasta, tai 2. a ei ole puun S juuri ja sillä on lapsi s, jonka mistään jälkeläisestä (s itse mukaanlukien) ei ole takautuvaa kaarta mihinkään solmun a aitoon esivanhempaan. 266
17 Todistus Tapaus jossa a on juuri on selvä. Oletetaan että a ei ole juuri. : Oletetaan, että a ei ole artikulaatiopiste ja s on solmun a lapsi. Siis erityisesti solmusta s on polku (v 1,..., v k ) solmun a vanhempaan p kulkematta solmun a kautta. Olkoon j pienin, jolla v j ei ole solmun s jälkeläinen. Tällainen j on olemassa, koska v k = p ei ole solmun s jälkeläinen. Koska sivuttaiskaaria ei ole, v j on solmun s aito esivanhempi. Koska lisäksi v j a, kaari (v j 1, v j ) on takautuva kaari solmun s jälkeläisestä solmun a aitoon esivanhempaan. 267
18 : Oletetaan että jokaisella solmun a lapsella s on jälkeläinen v, josta on takautuva kaari johonkin solmun a aitoon esivanhempaan. Väitetään, että kaikilla x, y V on polku x y kulkematta solmun a kautta. Väitetään, että kummastakin solmusta x ja y on puun juureen polku kulkematta solmun a kautta. Väite selvästi seuraa tästä. Todistus on sama solmuille x ja y, tarkastellaan tapausta x. Jos x ei ole solmun a jälkeläinen, haluttu polku muodostuu suoraan puukaarista. Olkoon x nyt solmun a jälkeläinen. Olkoon s se solmun a lapsi, jonka jälkeläinen x on, ja olkoon v solmun s jälkeläinen, josta on takautuva kaari solmun a aitoon esivanhempaan w. Solmusta x solmuun v päästään puukaaria pitkin solmuun v nousematta solmun s yläpuolelle ja erityisesti käymättä solmussa a. Kaari (v, w) oletuksen mukaan ei sisällä solmua a. Solmusta w päästään juureen suoraan puukaaria pitkin kulkematta solmun a kautta. 268
19 Edellä esitetyn ehdon tehokas tarkastaminen perustuu ns. Low-arvojen laskemiseen. Käytetään yksinkertaisuuden vuoksi solmujen niminä niiden esinumeroita; siis v = prenum[v]. Kullakin v olkoon A(v) niiden solmujen joukko, joihin on kaari jostain solmun v jälkeläisestä. Huomaa, että joukossa A(v) on vain solmun v jälkeläisiä ja esivanhempia. Asetetaan Low[v] = min ({ v } A(v)). Siis Low[v] on juurta lähinnä oleva solmu, johon pääsee solmusta v kulkemalla ensin puussa alaspäin ja sitten mahdollisesti kerran ylöspäin pitkin takautuvaa kaarta. Erityisesti solmun a lapsen s jostain jälkeläisestä on takautuva kaari johonkin solmun a aitoon esivanhempaan joss Low[s] < a. Siis a on artikulaatiopiste joss jollain sen lapsella s pätee Low[s] a. Low-arvot saadaan selvästi palautuskaavasta Low[v] = min({ v } { w (v, w) takautuva } { Low[w] w solmun v lapsi }) 269
20 Lasketaan nyt Low-arvot tällä palautuskaavalla syvyyssuuntaisen haun yhteydessä. Koska verkko oletetaan yhtenäiseksi, yksi ylätason kutsu seuraavaan proseduuriin DFS-Visit2 millä tahansa solmulla käy koko verkon läpi. DFS-Visit2(v): pre := pre + 1; prenum[v] := pre new[v] := False Low[v] := prenum[v] for w L[v] do if new[w] then T := T { (v, w) } p[w] := v DFS-Visit2(w) if Low[w] prenum[v] then v on artikulaatiopiste tai puun juuri Low[v] := min { Low[v], Low[w] } else if w p[v] then % (v, w) takautuva Low[v] := min { Low[v], prenum[w] } Edellä esitettyjen ominaisuuksien perusteella helppo induktio osoittaa, että algoritmi laskee Low-arvot ja tunnistaa artikulaatiopisteet oikein, kunhan vielä puun juuri käsitellään erikoistapauksena. Katsomme vielä, miten saamme tulostetuksi 2-yhtenäiset komponentit. 270
21 Algoritmi: 2-yhtenäiset komponentit 1. Alusta T :=, pre := 0; P := tyhjä pino, new[v] := True kaikilla v. 2. Suorita DFS-Visit2(v 0 ) mielivaltaisella v 0 V. Aina kun algoritmi löytää solmun w L[v], paina kaari (v, w) pinoon P ellei sitä ole jo aiemmin painettu. Kun DFS-Visit2(v) solmua w käsitellessään toteaa, että v on artikulaatiopiste tai juuri, poista pinosta kaaret kaareen (v, w) asti (tämä mukaanlukien). Nämä kaaret muodostavat yhden 2-yhtenäisen komponentin. Seuraavaksi katsomme ensin esimerkin algoritmin toiminnasta ja todistamme sitten sen aikavaativuuden ja oikeellisuuden. 271
22 Verkko 6 7 Virittävä puu ja takautuvat kaaret v Low[v] (1, 2)(2, 3)(3, 4) (4, 5)(5, 6)(6, 4)(5, 7)(7, 4) }{{} (1, 2)(2, 3) (3, 4) }{{} (1, 2) (2, 3)(3, 8)(8, 2) }{{} (1, 2)(2, 9)(9, 1) }{{} Pinon kehitys ja tulostetut komponentit 272
23 Aikavaativuus: Syvyyssuuntaisen haun analyysista seuraa, että aikavaativuus on O( V + E ), kunhan osoitetaan miten vakioajassa testataan onko kaari (v, w) joskus aiemmin painettu pinoon. 1. Jos new[w] = True, kaarta ei ole aiemmin kohdattu eikä siis etenkään painettu pinoon. 2. Jos new[w] = False ja v < w, niin w on solmun v jälkeläinen, joten (v, w) on viety pinoon. 3. Jos new[w] = False, w < v ja w = p[v], niin kaari (v, w) on viety pinoon juuri ennen kutsua DFS-Visit2(v). 4. Jos new[w] = False, w < v ja w p[v], niin w on solmun v kaukaisempi esivanhempi josta kuitenkaan ei tultu suoraan solmuun v, joten kutsussa DFS-Visit2(w) ei vielä ole ehditty listan L[w] alkioon v eikä kaarta (v, w) siis ole painettu pinoon. Siis voidaan testata vakioajassa, onko kaari (v, w) aiemmin viety pinoon. (Tapauksessa 2 se on voitu jo ehtiä poistaakin pinosta.) Koska verkko on yhtenäinen, E V 1 ja aikavaativuudeksi tulee O( E ). 273
24 Lause Algoritmi tulostaa oikeat 2-yhtenäiset komponentit. Todistus Kaikilla w pätee Low[w] v 0, missä v 0 on puun juuri. Siis kaikilla juuren lapsilla w pino tyhjennetään kutsun DFS-Visit2(w) päätyttyä. Erityisesti lopuksi pino on tyhjä ja jokainen kaari on tulostettu tasan kerran. Todistetaan induktiolla komponenttien lukumäärän b suhteen, että kullakin kerralla tulostettavat kaaret muodostavat yhden kokonaisen komponentin. Tapauksessa b = 1 verkossa ei ole artikulaatiopisteitä, joten juurella on tasan yksi lapsi. Kun tämä lapsi on käsitelty, pinossa on kaikki verkon kaaret, jotka tulostetaan. 274
25 Oletetaan, että algoritmi toimii, kun komponentteja on b 1. Olkoot v ja w ne solmut, joiden kohdalla ensimmäisen kerran käy Low[w] v kun v = p[w]. Siis v on ensimmäinen löydetty artikulaatiopiste, ja ennen kutsun DFS-Visit2(w) päättymistä pinosta ei ole poistettu mitään. Täten kutsun DFS-Visit2(w) päätyttyä tulostetaan ja poistetaan tasan ne kaaret, joilla ainakin toinen päätepiste on solmun v jälkeläinen. Selvästi nämä kaaret muodostavat yhden 2-yhtenäisen komponentin. Ensimmäisen komponentin tulostamisen jälkeen algoritmi toimii kuten sillä verkolla, joka saadaan poistamalla ensimmäinen komponentti mutta jättämällä solmu v. Induktio-oletuksesta siis seuraa, että loputkin komponentit tulostuvat oikein. 275
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
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
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
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.
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
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ä
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
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
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
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.
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
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
verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari
Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on
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
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!
Tarkennamme geneeristä painamiskorotusalgoritmia
Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi
58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)
58131 Tietorakenteet Erilliskoe 11.11.2008, ratkaisuja (Jyrki Kivinen) 1. (a) Koska halutaan DELETEMAX mahdollisimman nopeaksi, käytetään järjestettyä linkitettyä listaa, jossa suurin alkio on listan kärjessä.
Näytetään nyt relaatioon liittyvien ekvivalenssiluokkien olevan verkon G lohkojen särmäjoukkoja. Olkoon siis f verkon G jokin särmä.
Tehtävä 6 : 1 Oletetaan ensin joukon X olevan sisältymisen suhteen minimaalinen solmut a ja b toisistaan erotteleva joukon V(G)\{a, b} osajoukko. Olkoon x joukon X alkio. Oletuksen nojalla joukko X\{x}
Johdatus graafiteoriaan
Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 62 Luku 2 Yhtenäisyys 2.1 Polku 2.2 Lyhin painotettu polku 2.3 Yhtenäinen graafi 2.4 Komponentti 2.5 Aste
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ä
b) Olkoon G vähintään kaksi solmua sisältävä puu. Sallitaan verkon G olevan
Tehtävä 7 : 1 a) Olkoon G jokin epäyhtenäinen verkko. Tällöin väittämä V (G) 2 pätee jo epäyhtenäisyyden nojalla. Jokaisella joukolla X on ehto X 0 voimassa, joten ehdot A < 0 ja F < 0 toteuttavilla joukoilla
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
isomeerejä yhteensä yhdeksän kappaletta.
Tehtävä 2 : 1 Esitetään aluksi eräitä havaintoja. Jokaisella n Z + symbolilla H (n) merkitään kaikkien niiden verkkojen joukkoa, jotka vastaavat jotakin tehtävänannon ehtojen mukaista alkaanin hiiliketjua
Tehtävä 8 : 1. Tehtävä 8 : 2
Tehtävä 8 : 1 Merkitään kirjaimella G tarkasteltavaa Petersenin verkkoa. Olkoon A joukon V(G) niiden solmujen joukko, joita vastaavat solmut sijaitsevat tehtäväpaperin kuvassa ulkokehällä. Joukon A jokaisella
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.
811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta
811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta jälkiosasta IV Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden aikakompleksisuus
= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120
Tehtävä 1 : 1 Merkitään jatkossa kirjaimella H kaikkien solmujoukon V sellaisten verkkojen kokoelmaa, joissa on tasan kolme särmää. a) Jokainen verkko G H toteuttaa väitteen E(G) [V]. Toisaalta jokainen
Algoritmit 1. Luento 9 Ti Timo Männikkö
Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward
Puiden karakterisointi
Puiden karakterisointi LuK-tutkielma Airta Ella 2502661 Matemaattisten tieteiden laitos Oulun yliopisto Syksy 2018 Sisältö Johdanto 2 1 Johdatus verkkoteoriaan 3 1.1 Verkko käsitteenä.........................
811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku
811312A Tietorakenteet ja algoritmit 2016-2017 V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi 811312A
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
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
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
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
Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.
Väite: T (n) (a + b)n 2 + a. Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m. Huomaa että funktion x x 2 + (m 1 x) 2 kuvaaja on ylöspäin aukeava paraabeli, joten funktio saavuttaa suurimman
Alaraja vertailuihin perustuvalle järjestämiselle
Alaraja vertailuihin perustuvalle järjestämiselle Edellä esitetyt järjestämisalgoritmit ovat kaikki vertailuihin perustuvia: ne käsittelevät järjestettäviä arvoja vain testaamalla järjestysehtoja A[i]
Esimerkkejä polynomisista ja ei-polynomisista ongelmista
Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia
3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.
3. Hakupuut Hakupuu on listaa tehokkaampi dynaamisen joukon toteutus. Erityisesti suurilla tietomäärillä hakupuu kannattaa tasapainottaa, jolloin päivitysoperaatioista tulee hankalampia toteuttaa mutta
A274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT GRAAFITEHTÄVIÄ JA -ALGORITMEJA Lähteet: Timo Harju, Opintomoniste Keijo Ruohonen, Graafiteoria (math.tut.fi/~ruohonen/gt.pdf) GRAAFIN LÄPIKÄYMINEN Perusta useimmille
Äärellisten mallien teoria
Äärellisten mallien teoria Harjoituksen 4 ratkaisut Tehtävä 1. Määritä suurin aste k, johon saakka kuvan verkot G ja G ovat osittaisesti isomorfisia: Ratkaisu 1. Huomataan aluksi, että G =4 G : Ehrenfeucht-Fraïssé
Kurssikoe on maanantaina 29.6. Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.
HY / Avoin ylioisto Johdatus yliopistomatematiikkaan, kesä 201 Harjoitus 7 Ratkaisut palautettava viimeistään perjantaina 26.6.201 klo 16.00. Huom! Luennot ovat salissa CK112 maanantaista 1.6. lähtien.
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 =
811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta
811312A Tietorakenteet ja algoritmit 2018-2019 Kertausta jälkiosasta V Hashtaulukot ja binääriset etsintäpuut Hashtaulukot Perusajatus tunnettava Tiedettävä mikä on tiivistefunktio Törmäysongelman hallinta:
Tehtävä 4 : 2. b a+1 (mod 3)
Tehtävä 4 : 1 Olkoon G sellainen verkko, jonka solmujoukkona on {1,..., 9} ja jonka särmät määräytyvät oheisen kuvan mukaisesti. Merkitään lisäksi kirjaimella A verkon G kaikkien automorfismien joukkoa,
Tietorakenteet ja algoritmit. Verkot. Ari Korhonen
Tietorakenteet ja algoritmit Verkot Ari Korhonen 1 10. VERKOT ( graphs ) 10.1 Yleistä 10.2 Terminologiaa 10.3 Verkon esittäminen 10.4 Verkon läpikäyntialgoritmit (graph traversal) 10.5 Painotetut verkot
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
Kysymys: Voidaanko graafi piirtää tasoon niin, että sen viivat eivät risteä muualla kuin pisteiden kohdalla?
7.7. Tasograafit Graafi voidaan piirtää mielivaltaisen monella tavalla. Graafin ominaisuudet voivat näkyä selkeästi jossain piirtämistavoissa, mutta ei toisessa. Eräs tärkeä graafiryhmä, pintagraafit,
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
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
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
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
Lyhin kahden solmun välinen polku
Lyhin kahden solmun välinen polku Haluamme etsiä lyhimmän polun alla olevan ruudukon kohdasta a kohtaan b vierekkäisten (toistensa sivuilla, ylä- ja alapuolella olevien) valkoisten ruutujen välinen etäisyys
Suunnatun verkon syklittömyyden testaaminen
Suunnatun verkon syklittömyyden testaaminen Suunnatussa verkossa on sykli, jos ja vain jos siinä on ainakin yksi takautuva kaari. Ongelma siis palautuu takautuvien kaarten havaitsemiseen. Tarkastellaan
Yhtenäisyydestä. Johdanto. Lähipisteavaruus. Tuomas Korppi
Solmu 2/2012 1 Yhtenäisyydestä Tuomas Korppi Johdanto Tarkastellaan kuvassa 1 näkyviä verkkoa 1 ja R 2 :n (eli tason) osajoukkoa. Kuvan 2 verkko voidaan jakaa kolmeen osaan niin, että osien välillä ei
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
1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:
Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return
Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.
Tietorakenteet, kevät 2012 Kurssikoe 2, mallivastaukset 2. (a) Järjestämistä ei voi missään tilanteessa suorittaa nopeammin kuin ajassa Θ(n log n), missä n on järjestettävän taulukon pituus. Epätosi: Yleisessä
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
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:
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
Näin ollen saadaan tulos rad(g) diam(g). Toisaalta huomataan, että verkon G kaikilla solmuilla x ja y pätee kolmioepäyhtälön nojalla havainto
Tehtävä 3 : 1 Olkoon G mielivaltainen epätyhjä verkko. Erityisesti siltä ei vaadita äärellisyyttä. Polut ovat verkon G koosta riippumatta määritelmän mukaan aina äärellisiä, joten kahden solmun välisen
Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:
Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen
Polkuintegraali yleistyy helposti paloitain C 1 -poluille. Määritelmä Olkoot γ : [a, b] R m paloittain C 1 -polku välin [a, b] jaon
Polkuintegraali yleistyy helposti paloitain C 1 -poluille. Määritelmä 4.1.3. Olkoot : [a, b] R m paloittain C 1 -polku välin [a, b] jaon P = {a = t 1 < < t k = b} ja joukko D R m sellainen, että ([a, b])
Fibonacci-kasoilla voidaan toteuttaa samat operaatiot kuin binomikasoilla.
4.2 Fibonacci-kasat Fibonacci-kasoilla voidaan toteuttaa samat operaatiot kuin binomikasoilla. Pääsiallinen ero on, että paljon Decrease-Key-operaatioita sisältävät jonot nopeutuvat. Primin algoritmi pienimmälle
(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ä.
Loppu seuraa suoralla laskulla: n n Tave TR = p j (1 + b (i, j)) j=1 = 1 + 1 i
4. Joukkojen käsittely
4 Joukkojen käsittely Tämän luvun jälkeen opiskelija osaa soveltaa lomittuvien kasojen operaatioita tuntee lomittuvien kasojen toteutuksen binomi- ja Fibonacci-kasoina sekä näiden totetutusten analyysiperiaatteet
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
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
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
Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.
Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa. Vastaus 2. Vertaillaan
Miten osoitetaan joukot samoiksi?
Miten osoitetaan joukot samoiksi? Määritelmä 1 Joukot A ja B ovat samat, jos A B ja B A. Tällöin merkitään A = B. Kun todistetaan, että A = B, on päättelyssä kaksi vaihetta: (i) osoitetaan, että A B, ts.
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
Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?
Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Vastaus
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
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
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
811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta
811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden
Ratkaisu: a) Kahden joukon yhdisteseen poimitaan kaikki alkiot jotka ovat jommassakummassa joukossa (eikä mitään muuta).
Matematiikan laitos Johdatus Diskreettiin Matematiikaan Harjoitus 1 03.11.2010 Ratkaisuehdotuksia Aleksandr Nuija 1. Tarkastellaan joukkoja A = {1,3,4}, B = {2,3,7,9} ja C = {2, 5, 7}. Määritä joukot (a)
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
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
Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)
Salausmenetelmät Veikko Keränen, Jouko Teeriaho (RAMK, 2006) LUKUTEORIAA JA ALGORITMEJA 3. Kongruenssit à 3.1 Jakojäännös ja kongruenssi Määritelmä 3.1 Kaksi lukua a ja b ovat keskenään kongruentteja (tai
TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012
TIEA241 Automaatit ja, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 2. helmikuuta 2012 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti lueteltava
Diskreetin matematiikan perusteet Esimerkkiratkaisut 3 / vko 10
Diskreetin matematiikan perusteet Esimerkkiratkaisut / vko 0 Tuntitehtävät - lasketaan alkuviikon harjoituksissa ja tuntitehtävät - loppuviikon harjoituksissa. Kotitehtävät - tarkastetaan loppuviikon harjoituksissa.
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
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
Tehtävä 10 : 1. Tehtävä 10 : 2
Tehtävä 0 : Kuvassa Etelä-Amerikan valtioita vastaavat solmut on sijoitettu toisiinsa nähden niiden pääkaupunkien keskinäistä sijaintia vastaavalla tavalla. Kuvioon on joukon {0,, 2, 3 alkioilla merkitty
Eulerin verkkojen karakterisointi
Eulerin verkkojen karakterisointi Pro Gradu -tutkielma Jenni Heikkilä 373175 Matemaattisten tieteiden laitos Oulun yliopisto Syksy 018 Sisältö Johdanto 1 Verkkojen peruskäsitteet 3 1.1 Verkon määrittely.........................
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
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:
8 Kanta Tässä luvussa tarkastellaan aliavaruuden virittäjävektoreita, jotka muodostavat lineaarisesti riippumattoman jonon. Merkintöjen helpottamiseksi oletetaan luvussa koko ajan, että W on vektoreiden
Liite: Verkot. TKK (c) Ilkka Mellin (2004) 1
Liite: Verkot TKK (c) Ilkka Mellin (2004) 1 : Mitä opimme? Verkkoteoria on hyödyllinen sovelletun matematiikan osa-alue, jolla on sovelluksia esimerkiksi logiikassa, operaatiotutkimuksessa, peli-ja päätösteoriassa
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
Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna
Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtinä tilanteet joista ei siirtymää,
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
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
A274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT VERKOT ELI GRAAFIT Lähteet: Timo Harju, Opintomoniste Keijo Ruohonen, Graafiteoria (math.tut.fi/~ruohonen/gt.pdf) HISTORIAA Verkko- eli graafiteorian historia on saanut
Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin
Yhteydettömien kielioppien ja pinoautomaattien yhteys [Sipser s. 117 124] Todistamme, että yhteydettömien kielioppien tuottamat kielet ovat tasan samat kuin ne, jotka voidaan tunnistaa pinoautomaatilla.
Tietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
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
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