9. Graafit Graafin abstrakti tietotyyppi
|
|
- Annikki Uotila
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 9. Graafit Graafeilla eli verkoilla esitetään yhteystietoja. Esimerkkejä niistä ovat kaupunkikartan kadut ja tietoverkon tietokoneet. Tämä luku tarkastelee verkkojen perusasioita Graafin abstrakti tietotyyppi Abstraktissa mielessä graafi (graph) G on yksinkertaisesti kärkien (vertices) eli solmujen (nodes) joukko V ja solmuparien eli kaarien eli särmien (arcs, edges) joukko E. 9. luku 453
2 Termejä ja perusominaisuuksia Graafin kaaret ovat joko suunnattuja (directed) tai suuntaamattomia (undirected). Kaari (u,v) on suunnattu solmusta u solmuun v, jos pari (u,v) on järjestetty u:n edeltäessä v:tä. Jos järjestystä ei ole määritelty, kaari on suuntaamaton, jolloin (u,v) on sama kuin (v,u). Esim Katsotaan graafia, joka kuvaa kurssin lähdeteoksen kirjoittajien yhteistyöntekijöitä tutkimuksessa. Kaaret ovat symmetrisiä (symmetric), sillä jos A on tehnyt yhteistyötä B:n kanssa, niin asia on myös toisinpäin (kuva 9.1.). 9. luku 454
3 Snoeyink Garg Tollis Goodrich Tamassia Vitter Preparata Chiang Kuva 9.1. Graafi yhteistyöntekijöiden välillä. 9. luku 455
4 Jos kaikki graafin kaaret ovat suuntaamattomia, puhutaan suuntaamattomasta graafista (undirected graph). Vastaavasti suunnatussa graafissa (directed graph, digraph) kaikki kaaret ovat suunnattuja. On myös sekamuotoisia (mixed) graafeja, joissa esiintyy molempia tyyppejä kaaria. Suuntaamaton kaari (u,v) voidaan korvata parilla suunnattuja (u,v) ja (v,u). Kaaren yhdistämät kaksi solmua ovat sen päätesolmut tai kärjet (endpoints, end vertices). Jos se on suunnattu, toinen niistä on alku (origin) ja toinen loppu (destination). Kaksi solmua ovat vierekkäisiä (adjacent), jos ne ovat saman kaaren päätesolmuja. Kaari on solmuun liittyvä tai kuuluva (incident), jos solmu on kaaren alku tai loppu. Solmun v ulkoaste outdeg(v) (outdegree) on siitä lähtevien suunnattujen kaarien lukumäärä ja sisäaste indeg(v) (in degree) siihen tulevien suunnattujen kaarien lukumäärä. Solmun v aste deg(v) (degree) on solmuun yhteydessä olevien kaarien määrä eli samalla sen vierekkäisten solmujen määrä. 9. luku 456
5 Esim Lentoreiteistä voidaan muodostaa graafi G, jonka solmut viittaavat lentokenttiin ja kaaret ovat niihin liittyviä lentovuoroja (kuva 9.2.). Kaaret ovat luonnollisesti suunnattuja, koska lennolla on aina määrätty suunta lähtöpaikasta kohteeseen. Kaksi lentokenttää ovat vierekkäisiä graafissa, jos niiden välillä on lentovuoro. Solmun v sisäaste on kyseiselle lentokentälle saapuvat lennot ja sen ulkoaste siitä lähtevät lennot. Graafin määritelmä viittaa kaarien osalta pikemmin niiden kokoelmaan kuin joukkoon sallien kahdella suuntaamattomalla kaarella olevan samat päätesolmut sekä kahdella suunnatulla kaarella olevan sama alkusolmu ja toisaalta sama loppusolmu. Tällaisia kaaria kutsutaan rinnakkaisiksi (parallel edges) tai monikaariksi (multiple edges). Esim 9.2. voisi sisältää näitä, kun kahden lentokentän välillä olisi useita lentovuoroja eri aikoihin. Eräs toinen erikoistapaus on kaari, joka yhdistää solmun itseensä. Tästä käytetään nimitystä itseissilmukka (self loop). 9. luku 457
6 SFO LAX AA 49 UA 877 UA 120 TW 45 ORD DL 335 DFW AA 411 AA 1387 AA 523 JFK AA 903 MIA BOS NW 35 DL 247 Kuva 9.2. Esimerkki suunnatusta graafista, joka esittää lentoreitistöä. Kaaren UA 120 alku ja loppusolmu ovat LAX ja ORD. LAX ja ORD ovat täten vierekkäisiä. Solmun DFW sisäaste on 3 ja ulkoaste luku 458
7 Yleensä graafeissa ei ole rinnakkaisia kaaria tai itseissilmukoita, jotka ovat poikkeuksellisia. Jos niitä ei esiinny, graafin sanotaan olevan yksinkertainen (simple), mikä yksinkertaistaa graafien tietorakenteiden ja algoritmien esitystä. Tällöin yksinkertaisen graafin kaaret muodostavat solmuparien joukon (set) eikä vain kokoelmaa. Tässä luvussa oletetaan tilanteen olevan tämä ellei toisin mainita. Esitettävien määritelmien laajentaminen erityistapausten huomioonottamiseksi olisi suoraviivaista, mutta jonkin verran työlästä. Oheiset ominaisuudet esittävät graafin kaarien ja solmujen määrien suhteet sekä solmujen asteet. Lause 9.1. Jos graafissa G on m kaarta, niin on v G deg( v ) = 2m. 9. luku 459
8 Perustelu: Kaari (u,v) lasketaan kahdesti esitetyssä summassa, kerran loppusolmunaan u ja toisen kerran loppusolmunaan v. Näin ollen kaarien kokonaisvaikutus solmujen asteisiin on kaksi kertaa kaarien määrä. Lause 9.2. Jos suunnatussa graafissa G on m kaarta, niin on v G in deg( v ) = outdeg( v) = m. v G Perustelu: Suunnatussa graafissa kaari (u,v) vaikuttaa yhden yksikön verran alkusolmun u ulkoasteeseen ja yhden yksikön verran loppusolmun v sisäasteeseen. Niinpä kaarten kokonaisvaikutus solmujen ulkoasteisiin on yhtä kuin kaarten lukumäärä ja samoin on sisäasteilla. 9. luku 460
9 Lause 9.3. Olkoon G yksinkertainen graafi, jossa on n solmua ja m kaarta. Jos G on suuntaamaton, niin on m n(n 1)/2, ja jos G on suunnattu, niin on m n(n 1). Perustelu: Suuntaamattomassa graafissa ei millään kahdella kaarella voi olla samoja päätesolmuja eikä ole itseissilmukoita. Tällöin graafin solmun maksimiaste on n 1. Täten lauseen 9.1. mukaan on 2m n(n 1). Suunnatussa graafissa ei millään kahdella kaarella voi olla samaa alkusolmua ja samaa loppusolmua eikä ole itseissilmukoita. Tällöin graafin solmun maksimisisäaste on n 1. Lauseen 9.2. mukaan on m n(n 1). Lauseen 9.3. tulema on esitettävissä myös muodossa, että n solmuisella yksinkertaisella graafilla on O(n 2 ) kaarta. Graafin polku (path) on vuorottelevien solmujen ja kaarien sekvenssi, joka alkaa solmusta ja päättyy solmuun siten, että jokainen kaari liittyy edeltäjä ja seuraajasolmuunsa. Sykli (cycle) on polku, joka alkaa ja loppuu samaan solmuun. 9. luku 461
10 Polku on yksinkertainen (simple), jos sen solmut ovat erillisiä. Sykli on yksinkertainen (simple), jos sen solmut ovat erillisiä ensimmäistä ja viimeistä lukuunottamatta. Suunnatulla polulla (directed path) kaikki kaaret ovat suunnattuja ja kuljetaan läpi niiden suunnissa, ja suunnatusssa syklissä (directed cycle) määritellään samoin. Esim tapauksessa (BOS, NW 35, JFK, AA 1387, DFW) on suunnattu yksinkertainen polku ja (LAX, UA 120, ORD, UA 877, DFW, AA 49, LAX) on suunnattu yksinkertainen sykli. Graafin G aligraafi (subgraph) on graafi H, jonka solmut ja kaaret ovat graafin G solmujen ja kaarten osajoukkoja. Esim tapauksessa solmut BOS, JFK ja MIA sekä kaaret AA 903 ja DL 247 muodostavat aligraafin. Virittävä aligraafi (spanning subgraph) on graafin G aligraafi, joka käsittää G:n kaikki solmut. Graafi on yhdistetty (connected), jos minkä tahansa solmuparin välillä on polku. Jos graafi ei ole yhdistetty, sen maksimaalisia yhdistettyjä aligraafeja kutsutaan G:n yhdistetyiksi komponenteiksi (connected components). 9. luku 462
11 Metsä (forest) on syklitön graafi. Puu (tree) on yhdistetty metsä eli yhdistetty syklitön graafi. Tämä puun määritelmä on hieman erilainen kuin luvussa 4, koska graafin tilanteessa ei määritelty juurta. Näiden erottamiseksi toisistaan voidaan luvun 4 puu nimetä juurelliseksi puuksi (rooted tree). Metsän yhdistetyt komponentit ovat (vapaita) puita. Graafin virittävä puu (spanning tree) on virittävä aligraafi, joka on (vapaa) puu. Em. määritteiden ominaisuuksia luetellaan seuraavassa. Lause 9.4. Kun suuntaamattomassa graafissa G on n solmua ja m kaarta, niin mainittavat ominaisuudet ovat (perustelu voi olla harjoituksena): Jos G on yhdistetty, niin on m n 1. Jos G on puu, niin on m = n 1. Jos G on metsä, niin on m n luku 463
12 Graafin metodit Abstraktissa tietotyypissä graafin paikat (positions) ovat sen solmut ja kaaret. Graafin alkiot voidaan näin ollen tallettaa joko solmuihin tai kaariin (tai molempiin). Graafi nähdään paikkasäiliönä (luku 4), jolloin graafin abstrakti tietotyyppi tukee metodeja size(), isempty(), elements(), positions(), replace(p,o) ja swap(p,q), missä p ja q viittaavat paikkoihin ja o alkioon. Graafit ovat hyvin monipuolisia rakenteita johtuen niiden erilaisista rakenneosista, solmuista ja kaarista. Graafien metodit jaotellaan kolmeen ryhmään: yleismetodit, suunnattuja kaaria käsittelevät metodit ja graafien päivitys ja muuntamismetodit. Olkoot v solmu, e kaari ja o solmuun tai kaareen talletettu alkio. Seuraavassa esitetään esimerkinomaisesti vain muutamia metodeja, joita voi kehittää lisää monia kymmeniä. Myöskään niiden virheenkäsittelyä ei tarkastella. 9. luku 464
13 Yleismetodeissa ei piitata kaarien suunnista. Ne antavat globaalia tietoa graafista. numvertices(): edges(): Palauttaa G:n solmujen lukumäärän. Palauttaa G:n kaarien luettelon. Seuraavantyyppisissä yleismetodeissa on solmuja ja kaaria argumentteina. degrees(v): Palauttaa solmun v asteen. endvertices(e): Palauttaa kaaren e päätesolmut. areadjacent(v,w): Palauttaa totuusarvon sen mukaan, ovatko v ja w vierekkäisiä solmuja. Kun otetaan huomioon kaarien suuntia, monia erilaisia metodeja on esitettävissä. indegree(v): Palauttaa solmun v sisäasteen. 9. luku 465
14 inadjacentvertices(v): Palauttaa luettelon kaikista solmulle v vierekkäisistä solmuista, jotka tulevat suunnattuja kaaria myöten v:hen. destination(e): Palauttaa suunnatun kaaren e loppusolmun. Päivitysmetodeilla voidaan lisätä tai poistaa kaaria ja solmuja. insertedge(v,w,o): Lisää ja palauttaa suuntaamattoman kaaren solmujen v ja w välistä sekä tallettaa alkion o tähän paikkaan. removevertex(v): Poistaa solmun v ja kaikki siihen liittyvät kaaret. Kuten mainittu, tässä esitettiin ainoastaan muutamia esimerkkejä lukuisista mahdollisista graafimetodeista. (Ne luetellaan tätä täydellisimmin myöhemmissä taulukoissa.) 9. luku 466
15 9.2. Graafien tietorakennetoteutukset Graafin abstrakti tietotyyppi toteutetaan yleensä yhtenä kolmesta vaihtoehdosta. Nämä rakenteet ovat kaarilista (edge list), vierekkyyslista (adjacency list) ja vierekkyysmatriisi (adjacency matrix). Kun näistä kaksi ensimmäistä sisältävät pelkästään tiedon jostakin solmusta ja kaaresta, niiden tarvitsema muistitila on O(n+m), missä n on solmujen ja m kaarien lukumäärät. Kolmas rakennevaihtoehto tarvitsee tilaa O(n 2 ), koska siinä varataan tilaa jokaiselle solmuparille riippumatta siitä, onko niiden välillä kaarta vai ei. Kaarilistarakenne Kaarilista on yksinkertaisin, mutta ei tehokkain graafin esitysmuoto. Solmu v tallettaa alkion o, mikä on eksplisiittisesti esitetty toteutuksen solmuoliossa. 9. luku 467
16 Kaikki solmuoliot talletetaan säiliöön V, joka on tavallisesti sekvenssi tai sanakirja. Jos sovelletaan järjestettyä sekvenssiä, solmuille annetaan järjestysnumero. Sanakirjan tapauksessa ne merkitään avaimilla. Solmun v solmuoliolla, jossa on alkio o talletettuna, on seuraavat tiedot sisältävät muuttujat : viittaus alkioon o solmuun liittyvien suuntaamattomien kaarien määrä, sisäaste ja ulkoaste viittaus solmuolion paikkaan säiliössä V Alkion o sisältävä kaari e esitetään eksplisiittisesti kaarioliolla. Kaarioliot talletetaan säiliöön E, joka on sekvenssi tai sanakirja. Kaarioliolla on seuraavat muuttujat: 9. luku 468
17 viittaus alkioon o Boolen muuttuja sille, onko kaari e suuntaamaton tai suunnattu viittaukset säiliön V solmuolioihin, jotka liittyvät kaaren e päätesolmuihin (e suuntaamaton) tai sen alku ja loppusolmuun (e suunnattu) viittaus kaariolion paikkaan säiliössä E Kaarilistasta on kuvassa 9.3. kaavamainen esitys. Kaarilistasta puhutaan, koska sen toteutus on usein sekvenssi (listana). Kaarilistarakenteen pääpiirre on suora haku kaarista näihin liittyviin solmuihin. Tämä tuottaa yksinkertaisia algoritmeja kaarien käsittelyyn. Sen sijaan käänteinen toiminto, solmuun liittyvien kaarien saanti, vaatii täydellisen haun kaarien säiliössä E. Näin ollen mm. metodi incidentedges(v) toimii ajassa, joka on suhteessa kaarien määrään (eikä solmujen). Taulukossa 9.1. on lueteltu tärkeimpien metodien suoritusajat, joiden perusteluja ei tässä tarkastella. 9. luku 469
18 SFO LAX AA 49 UA 877 UA 120 TW 45 ORD DFW AA 411 (a) DL 335 AA 1387 AA 523 JFK AA 903 MIA BOS NW 35 DL 247 Kuva 9.3. (alku) (a) Suunnattu graafi G kuvasta luku 470
19 E: NW 35 DL 247 AA 49 DL 335 AA1387 AA 523 AA 411 UA 120 AA 903 UA 877 TW 45 V: BOS LAX DFW JFK MIA ORD SFO (b) Kuva 9.3. (loppu) (b) Graafin G kaavamainen esitys kaarilistana. Selvyyden vuoksi viittaukset on tässä merkitty olioiden nimillä (eikä merkitty viittauksia nuolien yhteyteen). 9. luku 471
20 Taulukko 9.1. Graafimetodien suoritusajat, kun toteutus on kaarilistana, missä V ja E on toteutettu kahteen suuntaan linkitettyjen listojen sekvensseinä. Tilavaatimus on O(n+m), missä n on solmujen lukumäärä ja m kaarien lukumäärä. operaatio size, isempty, replaceelement, swap numvertice, numedges vertices edges, directededges, undirectededges elements, positions endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentedges, inincidentedges, outincidentedges, adjacentvertices, inadjacentvertices, outadjacentvertices, areadjacent insertvertex, insertedge, insertdirectededge, removeedge, makeundirected, reversedirection, setdirectionfrom, setdirectionto removevertex suoritusaika O(1) O(1) O(n) O(m) O(n+m) O(1) O(m) O(1) O(m) 9. luku 472
21 Vierekkyyslistarakenne Graafin G vierekkyyslistarakenne laajentaa kaarilistaa lisäten tietoa, joka tukee solmuun liittyvien kaarien suoraa saantia. Kun kaarilista katsoo kaari solmu suhdetta ainoastaan kaarien näkökulmasta, vierekkyyslista katsoo sitä molempien komponenttien näkökulmasta. Tämä symmetrinen lähestymistapa mahdollistaa graafin abstraktin tietotyypin solmumetodien toteuttamisen paljon nopeammiksi kuin kaarilistan yhteydessä, vaikka näiden muistitilankäyttö on samaa luokkaa suhteessa solmujen ja kaarien määriin. Vierekkyyslista sisältää seuraavat piirteet: kaikki kaarilistan rakenneosat ja lisäksi Solmun v solmuolio käsittää viittauksen säiliöön I(v), joka sisältää solmuun v liittyvien kaarien oliot. Kaaren (u,v) kaariolio käsittää viittaukset kaaren paikkoihin säiliöissä I(u) ja I(v). 9. luku 473
22 Solmun v säiliö I(v) toteutetaan yleensä sekvenssinä, mutta myös mm. sanakirja tai prioriteettijono tulevat kysymykseen kontekstista riippuen. Kun vierekkyyslistaa vielä hieman muunnetaan, saadaan mukaan mahdollisuus, että voi olla sekä suuntaamattomia että suunnattuja kaaria. Käytetään kolmea säiliötä I in (v), I out (v) ja I un (v), jotka sisältävät viittaukset kaariolioihin ja nämä ovat suunnattuja tulevia, suunnattuja lähteviä tai suuntaamattomia kaaria solmuun v liittyen. Kuvassa 9.4. on edeltävän lentoreitistöesimerkin kuvaus vierekkyyslistana. Siinä on lisätty edeltävään verrattuna vierekkyysrakenteet jokaista graafin solmua varten. Mukana ei ole suuntaamattomien kaarien säiliöitä, koska suuntaamattomia kaaria ei ollut mukana esimerkissä. Vierekkyysrakenteiden avulla voidaan nopeuttaa useiden graafimetodien toimintaa. 9. luku 474
23 E: NW 35 DL 247 AA 49 DL 335 AA1387 AA 523 AA 411 UA 120 AA 903 UA 877 TW 45 V: BOS LAX DFW JFK MIA ORD SFO in out NW 35 DL 247 in AA 49 AA 411 out UA120 in AA1387 UA 877 AA 523 out DL 335 AA 49 in NW 35 out AA1387 AA 903 TW 45 in TW 45 out Kuva 9.4. Vierekkyyslistan kaavamainen esitys lentoreitistön tapauksesssa. in DL 247 AA 903 out AA523 AA luku 475 in UA 120 DL 335 out UA 877
24 Taulukko 9.2. Graafimetodien suoritusajat, kun graafi on toteutettu vierekkyyslistana, jossa sekä säiliöt V ja E että vierekkyysrakennesäiliöt on toteutettu sekvensseinä ja nämä kahteen suuntaan linkitettyinä listoina. Tilavaatimus on O(n+m), missä n on solmujen lukumäärä ja m kaarien lukumäärä. operaatio suoritusaika size, isempty, replaceelement, swap numvertice, numedges vertices edges, directededges, undirectededges elements, positions endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentedges(v), inincidentedges(v), outincidentedges(v), adjacentvertices(v), inadjacentvertices(v), outadjacentvertices(v) areadjacent(u,v) insertvertex, insertedge, insertdirectededge, removeedge, makeundirected, reversedirection, setdirectionfrom, setdirectionto removevertex(v) O(1) O(1) O(n) O(m) O(n+m) O(1) O(deg(v)) O(min(deg(u),deg(v))) O(1) O(deg(v)) 9. luku 476
25 Vierekkyysmatriisirakenne Kuten vierekkyyslista, myös graafin vierekkyysmatriisirakenne laajentaa kaarirakennetta lisäkomponentilla. Nyt lisätään kaarilistan lisäksi matriisi (taulukko) A, josta saadaan määrättyä solmuparien vierekkäisyysominaisuus vakioajassa. Muutamien metodien nopeutus aiheuttaa toisaalta aiempaa suuremman tilavaatimuksen. Tulkitaan solmut nyt kokonaislukuina joukosta {0, 1,, n 1} ja kaaret tällaisten kokonaislukujen pareina. Viittaukset kaariin voidaan nyt tallettaa kaksiulotteisen n n taulukon A alkioihin. Vierekkyysmatriisiesitys laajentaa kaarilistaa seuraavasti (kuva 9.5.): Solmun v olio tallettaa erillisen kokonaislukuavaimen väliltä 0, 1,, n 1. Se on solmun v indeksi (index). Käytetään kuitenkin yksinkertaisuuden vuoksi nimitystä solmu i indeksin sijasta. 9. luku 477
26 Taulukon alkio A[i,j] käsittää viittauksen kaariolioon e, joka menee solmusta i solmuun j. Mikäli tämä on suuntaamaton, e talletetaan sekä alkioon A[i,j] että A[j,i]. Kun kahden solmun välillä ei ole kaarta, jätetään vastavaat alkiot tyhjiksi. Vaikka jotkut metodit nyt ovat nopeampia kuin edeltävien rakenteiden yhteydessä, muutamien muiden suoritusaika kasvaa, koska esim. solmumetodien tilanteissa on käytävä läpi kokonainen rivi tai sarake taulukosta. Lisäksi muistitilavaatimus kasvaa kertaluokkaan O(n 2 ). Myös mikä tahansa solmun lisäys tai poisto vaatii nyt koko taulukon läpikäynnin, joka on O(n 2 ). 9. luku 478
27 BOS DFW JFK LAX MIA ORD SFO (a) NW DL AA DL AA AA UA AA AA UA (b) Kuva 9.5. Vierekkyysmatriisi: (a) graafin G solmujen indeksit ja (b) taulukko A. TW luku 479
28 Taulukko 9.3. Graafimetodien suoritusajat, kun graafi on toteutettu vierekkyysmatriisina. Tilavaatimus on O(n 2 ), missä n on solmujen lukumäärä. Kaarien määrä on m. operaatio suoritusaika size, isempty, replaceelement, swap O(1) numvertice, numedges O(1) vertices O(n) edges, directededges, undirectededges O(m) elements, positions O(n+m) endvertices, opposite, origin, destination, O(1) isdirected, degree, indegree, outdegree incidentedges, inincidentedges, O(n) outincidentedges, adjacentvertices, inadjacentvertices, outadjacentvertices areadjacent O(1) insertedge, insertdirectededge, removeedge, O(1) makeundirected, reversedirection, setdirectionfrom, setdirectionto insertvertex, removevertex O(n 2 ) 9. luku 480
29 9.3. Graafin kulkeminen Kulkeminen (traversal) on järjestelmällinen tapa käydä graafi läpi tutkien kaikki solmut ja kaaret. Kulkeminen on tehokasta, kun se suoritetaan ajassa, joka on lineaarisessa suhteessa solmujen ja kaarien määrään. Tässä tarkastellaan suuntaamattomien graafien kulkemista. Syvyyshaku Ensimmäinen tarkasteltava menetelmä on syvyyshaku (depth first search), jota kuvan 9.6. tilanteet esittävät. Aloitetaan graafin määrätystä alkusolmusta s, joka kiinnitetään merkitsemällä se käydyksi. Solmu s on nyt nykyinen solmu u. Graafi käydään läpi ottamalla (mielivaltaisesti valittu) kaari (u,v). Jos tämä johtaa jo käytyyn solmuun v jossakin tilanteessa, palataan solmuun u. Jos toisaalta solmu v oli käymätön, mennään siihen ja merkitään se nykyiseksi ja käydyksi solmuksi. 9. luku 481
30 Edeltävää toimenpidettä toistetaan, kunnes tullaan umpikujaan eli solmuun, jonka kaikki viereiset solmut on aiemmin käyty. Tällöin peräännytään tultua reittiä takaisinpäin, kunnes löydetään sellainen käymätön kaari ja siis solmu, jolla on käymätön viereinen solmu. Tästä jatketaan taas eteenpäin käymättömiä solmuja edellisin ohjein. Prosessi loppuu, kun lopulta peräännytään alkusolmuun s. Syvyyshakua voidaan kuvata esittämällä kaaret sen mukaan, mihin suuntaan ne kuljetaan. Kaaret, joiden päästä saadaan uusi, ennenkäymätön solmu, ovat löytökaaria (discovery edges, tree edges), ja kaaret, joiden kautta tullaan aiemmin käytyihin, ovat perääntymiskaaria (back edges) (kuva 9.6.). Edellisten avulla saadaan haussa uusia solmuja ja jälkimmäisillä peräännytään. Löytökaarista saadaan tarvittaessa myös virittävä puu. Koodissa 9.1. on syvyyshakualgoritmin pseudokoodi. Siinä oletetaan olevan mukana mekanismi, jolla selvitetään, onko solmussa tai kaaressa käyty. 9. luku 482
31 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (a) (b) Kuva 9.6. (alku) Esimerkki syvyyshausta. Löytökaaret on merkitty yhtenäisillä viivoilla ja perääntymiskaaret katkoviivoilla: (a) syötegraafi ja (b) löytökaarien polku aina solmuun A asti, kunnes kohdataan perääntymiskaari (B,A). 9. luku 483
32 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (c) (d) Kuva 9.6. (jatkoa) (c) Solmun F saavuttaminen, joka on umpikuja, ja (d) Perääntymisen jälkeen solmuun C, josta on edetty kaaren (C,G) kautta jälleen umpikujaan, solmuun J. 9. luku 484
33 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (e) (f) Kuva 9.6. (loppu) (e) Perääntymisen jälkeen solmuun G ja (f) perääntymisen jälkeen solmuun N. 9. luku 485
34 Algorithm DFS(v): Input: solmu v graafista Output: kaaret merkittyinä löytö ja perääntymiskaarina for jokaiselle solmuun v liittyvälle kaarelle e do if kaari e on käymätön then olkoon w kaaren e toinen päätesolmu if solmu w on käymätön then merkitse e löytökaareksi kutsu rekursiivisesti algoritmia DFS(w) else merkitse e perääntymiskaareksi Koodi 9.1. Syvyyshakualgoritmi. 9. luku 486
35 Syvyyshakuun liittyy monia seikkoja, joista mainitaan esimerkkinä se, että kun perääntymiskaaret yhdistävät aina solmun v aiemmin käytyyn solmuun u, ne muodostavat syklin graafissa. Seuraava lause esittää muutamia ominaisuuksia. Lause 9.5. Olkoon G suuntaamaton graafi, jossa syvyyshaku aloitetaan solmusta s. Silloin ovat ominaisuudet: Kuljettaessa graafi käydään kaikki solmut läpi solmun s yhdistetyssä komponentissa. Löytökaaret muodostavat s:n yhdistetyn komponentin virittävän puun. Perustelu jätetään väliin, mutta se on esitettävissä vastaväitetodistusta käyttäen. yksinkertaista Syvyyshaku on suoritusajaltaan tehokas, kun solmussa tehtävät toimenpiteet (testi ja merkintä) ovat suoritettavissa vakioajassa O(1). 9. luku 487
36 Algoritmia kutsutaan täsmälleen kerran jokaista solmua kohti, ja jokainen kaari tutkitaan kahdesti, kerran sen kummastakin päätesolmusta käsin. Muutamin edellytyksin solmun testin ja merkinnän vakioaika, solmu ja kaarimetodien vakiollinen suoritusaika (vierekkyyslista, mutta ei matriisi) ja systemaattinen menettely käydä solmuun liittyvät kaaret ainoastaan kerran kussakin (vierekkyyslista) saadaan syvyyshaulle tehokas suoritus aikaan. Lause 9.6. Olkoon G graafi n solmuineen ja m kaarineen. Syvyyshaku toimii siinä ajassa O(n+m). Lisäksi on olemassa syvyyshakuun perustuvia algoritmeja, jotka toimivat ajassa O(n+m) ongelmille: Sen tutkiminen, onko G yhdistetty. Virittävän puun laskeminen, kunhan G on yhdistetty. G:n yhdistettyjen komponenttien laskeminen. Kahden solmun välisen polun etsiminen tai selvittäminen, ettei sitä ole. Mahdollisen syklin laskeminen. 9. luku 488
37 Leveyshaku Syvyyshaun tapaan leveyshaku (breadth first search) kulkee graafin yhdistetyn komponentin täysin läpi. Leveyshaku etenee konservatiivisesti tasoittain graafia (kuva 9.7.), kun taas sysyyshaussa sukellettiin syvyyksiin. Olkoon aloitussolmu s tasona 0. Se on aluksi kiintopisteenä, josta käydään seuraava taso 1 läpi eli solmun s vierekkäiset solmut. Solmuun tultaessa se merkitään käydyksi. Seuraavaksi käydään tason 1 solmujen vierekkäiset solmut läpi, ja tämä on taso 2. Näin jatketaan tasolta i tasolle i+1, kunnes kaikki solmut ja kaaret on käyty läpi. Leveyshaun kauniina piirteenä on, että jokainen solmu käydään läpi ja merkitään (nimetään, leimataan) lyhimmän polun mielessä eli minimimäärällä kaaria aloitussolmusta lukien. Jos solmu v sijaitsee leveyshaun tasolla i, sen lyhimmän polun pituus solmusta s on i. 9. luku 489
38 0 0 1 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (a) (b) Kuva 9.7. (alku) Esimerkki leveyshausta, jossa solmuihin liittyvät kaaret tutkitaan aakkosjärjestyksessä vierekkäisistä solmuista. Löytökaaret on merkitty yhtenäisillä nuolilla ja vastakkaiskaaret (ei vielä tässä) katkoviivoilla. (a) Graafi aloitusvaiheessa ja (b) tason 1 käsittely. 9. luku 490
39 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (c) (d) Kuva 9.7. (jatkoa) (c) Tason 2 käsittely ja (d) tason 3 käsittely. 9. luku 491
40 9. luku 492 A E I B C D N F J G H O K L P M (e) A E I B C D N F J G H O K L P M (f) Kuva 9.7. (loppu) (e) Tason 4 ja (f) tason 5 käsittelyt. E F B
41 Syvyyshaun tapaan leveyshaussa merkitään kaaret kahdella tyypillä. Uusiin solmuihin johtavat ovat jälleen löytökaaria, mutta aiemmin käytyihin johtavat ovat vastakkaiskaaria (cross edges) (kuva 9.7.(f)) erotuksena syvyyshakuun, sillä nämä eivät yhdistä solmua edeltäjiinsä. Leveyshaun pseudokoodiesitys on koodina 9.2. Se tarvitsee lisätilaa kaarien ja solmujen merkitsemiseen ja tasoihin liitettävien säiliöiden tallettamiseen. Algoritmi ei ole rekursiivinen. Leveyshaulla on monia ominaisuuksia, joita selostetaan seuraavasti. Lause 9.7. Olkoon G suuntaamaton graafi, jossa leveyshaku aloitetaan solmusta s. Silloin ovat ominaisuudet: Graafissa käydään läpi kaikki solmut s:n yhdistetyssä komponentissa. Löytökaaret muodostavat s:n yhdistetyn komponentin virittävän puun T, jota kutsutaan leveyshakupuuksi. Leveyshakupuun T polku solmusta s solmuun v tasolle i käsittää i kaarta ja mikä tahansa muu polku niiden välillä on ainakin yhtä pitkä. Jos (u,v) ei ole T:ssä, u:n ja v:n tasonumerot eroavat enintään yhdellä. 9. luku 493
42 Algorithm BFS(s): alustetaan säiliö L 0 sisältämään solmu s i 0 while L i ei ole tyhjä do luodaan tyhjä säiliö L i+1 for jokaiselle solmulle v säiliöstä L i do for jokaiselle solmuun v liittyvälle kaarelle e do if kaari e on käymätön then olkoon w kaaren e toinen päätesolmu if solmu w on käymätön then merkitään e löytökaareksi lisätään w säiliöön L i+1 else i i + 1 merkitään e vastakkaiskaareksi Koodi 9.2. Leveyshakualgoritmi. 9. luku 494
43 Lause 9.8. Olkoon G graafi n solmuineen ja m kaarineen. Leveyshaku graafissa G vaatii ajan O(m+n). On myös muita samassa ajassa toimivia, leveyshakuun perustuvia algoritmeja: Sen tutkiminen, onko G yhdistetty. G:n virittävän puun laskeminen, kunhan G on yhdistetty. G:n yhdistettyjen komponenttien laskeminen. G:n mille tahansa solmulle v lyhimmän polun laskeminen aloitussolmusta s. Kumpaa tulisi käyttää näistä menetelmistä, riippuu sovelluksesta. Esim. lyhimmän polun laskennassa leveyshaku on syvyyshakua parempi. Syvyyshaku on puolestaan soveliaampi vastattaessa monimutkaisiin yhteyskysymyksiin, kuten voidaanko jokainen graafin solmupari yhdistää kahdella erillisellä polulla. Nämä tulokset pätevät kuitenkin vain suuntaamattomille graafeille, joten seuraavaksi tarkastellaan suunnattuja. 9. luku 495
44 9.4. Suunnatut graafit Graafi on suunnattu, jos sen kaaret ovat suunnattuja. Saavutettavuus Saavutettavuuden (reachability) tärkeässä käsitteessä on kysymys siitä, mihin suunnatussa graafissa G päästään kulkemaan. Kulkeminen graafissa tapahtuu luonnollisesti kaarien määrätyissä suunnissa, mikä vaikuttaa itse prosessiin. Solmuilla u ja v sanotaan u:n saavuttavan v:n (ja v on saavutettavissa u:sta), jos on olemassa suunnattu polku u:sta v:hen. Suunnattu graafi G on vahvasti yhdistetty (strongly connected), jos mille tahansa sen solmuparille u ja v edellinen saavuttaa jälkimmäisen ja päinvastoin. G:n suunnattu sykli (directed cycle) on sellainen, jossa kaikki sen kaaret käydään suuntiensa mukaan läpi. G on syklitön (acyclic), jos siinä ei ole yhtään suunnattua sykliä (kuva 9.8.). 9. luku 496
45 BOS ORD JFK SFO DFW LAX MIA (a) Kuva 9.8. (alku) Esimerkkejä saavutettavuudesta suunnatussa graafissa: (a) suunnattu polku lentokentältä BOS kentälle LAX. 9. luku 497
46 BOS ORD JFK SFO DFW LAX MIA (b) Kuva 9.8. (jatkoa) (b) Suunnattu sykli (ORD, MIA, DFW, LAX, ORD). 9. luku 498
47 BOS ORD JFK SFO DFW LAX MIA (c) Kuva 9.8. (jatkoa) (c) Solmusta ORD saavutettavien solmujen ja kaarien aligraafi käsittää muut paitsi solmut JFK ja BOS. 9. luku 499
48 BOS ORD JFK SFO DFW LAX MIA (d) Kuva 9.8. (loppu) (d) Katkoviivoilla merkityt kaaret poistamalla saadaan syklitön suunnattu graafi. 9. luku 500
49 Suunnatun graafin G transitiivinen sulkeuma (transitive closure) G* käsittää G:n solmut ja kaaret (u,v), joille on olemassa suunnattu polku solmusta u solmuun v graafissa G. G* määritellään siis niin, että otetaan G ja lisätään sellaiset kaaret (u,v), joissa v on saavutettavissa solmusta u (eikä G: ssä ollut jo kyseisiä kaaria). Saavutettavuutta koskevia mielenkiintoisia kysymyksiä ovat suunnatun graafin tapauksessa seuraavat: Onko solmu v saavutettavissa solmusta u? Kaikkien sellaisten solmujen etsiminen, jotka ovat saavutettavissa solmusta s käsin. Onko G vahvasti yhdistetty? Onko G syklitön? G:n transitiivisen sulkeuman laskeminen. 9. luku 501
50 Suunnatun graafin kulkeminen Kuten suuntaamattomilla graafeilla, suunnatuillakin käytetään samankaltaisia kulkemisalgoritmeja. Ainoa ero on, että nyt on otettava huomioon kaarien suunnat. Seuraavaksi esitetään rekursiivinen suunnattu syvyyshakualgoritmi koodina 9.3. Sen käytöstä on esimerkki kuvassa 9.9. Algorithm DirectedDFS(v): merkitään solmu v käydyksi for jokaiselle solmun v lähtevälle kaarelle (v,w) do if solmussa w ei ole käyty then kutsu rekursiivisesti algoritmia DirectedDFS(w) Koodi 9.3. Suunnatun syvyyshaun algoritmi. 9. luku 502
51 BOS ORD JFK SFO DFW LAX MIA (a) Kuva 9.9. (alku) Esimerkki suunnatun graafin syvyyshausta: (a) välivaihe, jossa saavutetaan ensi kertaa aiemmin käyty solmu (DFW). 9. luku 503
52 1 BOS 7 SFO ORD 5 JFK 2 DFW 3 LAX 4 (b) MIA 6 Kuva 9.9.(loppu) (b) Päättynyt suunnatun graafin syvyyshaku, jossa on solmujen käyntijärjestys merkitty numeroin. 9. luku 504
53 Suunnatun graafin syvyyshakualgoritmi toimii suuntaamattoman tapaan ajassa O(n+m), missä n on solmujen ja m kaarien määrä. Muutamat suunnattuihin graafeihin liittyvät ongelmat, kuten sen selvittäminen, onko graafi vahvasti yhdistetty, tai transitiivisen sulkeuman laskeminen, vaativat ajan O(n(n+m)). Suunnatut syklittömät graafit Suunnattuja syklittömiä graafeja (directed acyclic graph, DAG) tarvitaan monissa sovelluksissa. Esimerkkinä on Java kielisen ohjelman luokkien välinen periytyminen. Olkoon G suunnattu syklitön graafi, jossa on n solmua. Sen topologinen järjestys (topological ordering) on solmujen järjestys v 1,, v n, missä jokaiselle kaarelle (v i,v j ) on i<j. Topologinen järjestys merkitsee, että mikä tahansa G:n suunnattu polku käy solmut läpi kasvavassa järjestyksessä. Kuvassa on kaksi esimerkkiä näistä. Topologinen järjestys lasketaan topologisen lajittelun (topological sorting) algoritmilla, mutta sitä ei esitetä tässä. 9. luku 505
54 9. luku 506 A B C D F E G I H (a) A B C D F E G I H (b) Kuva Kaksi topologista järjestystä samasta suunnatusta syklittömästä graafista. Järjestysnumero on merkitty solmun viereen.
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
Lisätiedot9. Graafit. Termejä ja perusominaisuuksia
9. raafit raafeilla eli verkoilla esitetään yhteystietoja. simerkkejä niistä ovat kaupunkikartan kadut ja tietoverkon tietokoneet. Tämä luku tarkastelee verkkojen perusasioita. 9.1. raafin abstrakti tietotyyppi
Lisätiedot10. 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ätiedotA274101 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
Lisätiedot10. 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ätiedot0 v i v j / E, M ij = 1 v i v j E.
Vieruspistematriisi Graafi esitetään tietokoneessa useimmiten matriisin avulla. Graafin G = (V, E), V = {v 1, v 2,..., v n } vieruspistematriisi (adjacency matrix)on n n matriisi M = (M ij ), missä n on
Lisätiedot6.4. Järjestyssuhteet
6.4. Järjestyssuhteet Joukon suhteilla voidaan kuvata myös alkioiden järjestystä tietyn ominaisuuden suhteen. Järjestys on myös kaksipaikkainen suhde (ja on monia erilaisia järjestyksiä). Suhde R joukossa
LisätiedotAlgoritmit 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ätiedotJohdatus 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ätiedot2. 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ätiedotJohdatus 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
LisätiedotAlgoritmi 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ätiedot13 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ätiedotGraafit 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ätiedot811312A 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
LisätiedotLuku 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ätiedotTIE Tietorakenteet ja algoritmit 261
TIE-20100 Tietorakenteet ja algoritmit 261 12 Graafit Seuraavaksi tutustutaan tietorakenteeseen, jonka muodostavat pisteet ja niiden välille muodostetut yhteydet graafiin. Keskitymme myös tyypillisimpiin
Lisätiedot1. (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
LisätiedotErä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ätiedotSilmukkaoptimoinnista
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ätiedot811312A 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ätiedot58131 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ä.
LisätiedotAlgoritmit 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ätiedotKysymys: 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,
LisätiedotJohdatus graafiteoriaan
Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 166 Luku 4 Erilaisia graafeja 4.1 Eulerin graafi 4.2 Hamiltonin graafi 4.3 Tasograafi 4.4 Graafin värittäminen
LisätiedotAlgoritmit 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ätiedotRakenteellinen tasapaino ja transitiivisyys
1 Hypermedian jatko-opintoseminaari 2008-2009 Rakenteellinen tasapaino ja transitiivisyys 20.2.2009 Seppo Pohjolainen 2 Rakenteellinen tasapaino Käsitteitä: Arvotettu graafi (signed graph) (+ tai - ) Suuntaamaton
LisätiedotA 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ätiedot8.5. Järjestyssuhteet 1 / 19
8.5. Järjestyssuhteet 1 / 19 Määritelmä Joukon suhteilla voidaan kuvata myös alkioiden järjestystä tietyn ominaisuuden suhteen. Järjestys on myös kaksipaikkainen suhde (ja on monia erilaisia järjestyksiä).
Lisätiedot811312A 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
LisätiedotGraafin virittävä puu 1 / 20
Graafin virittävä puu 1 / 20 Graafin virittävä puu PuuT on graafingvirittävä puu (spanning tree), jos se sisältää kaikkig:n pisteet. Virittäviä puita: 2 / 20 Yhdistämisongelma Yhdistämisongelma:(Connector
LisätiedotTietorakenteet 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ä
LisätiedotTietorakenteet 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:
LisätiedotTietorakenteet 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
Lisätiedot811312A 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:
Lisätiedot3. 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
LisätiedotAlgoritmit 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ätiedot14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut
JYVÄSKYLÄN YLIOPISTO 14. Luennon sisältö Kuljetustehtävä esimerkki Verkkoteoria ja optimointi verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut kevät 2012 TIEA382 Lineaarinen ja diskreetti
LisätiedotAlgoritmit 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ätiedotv 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ätiedotPARITUS 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ätiedotGraafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005
Graafin 3-värittyvyyden tutkinta T-79.165 Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Mikko Malinen, 36474R 29. maaliskuuta, 2005 Tiivistelmä Artikkelissa käydään läpi teoriaa, jonka avulla
LisätiedotAlgoritmit 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ätiedot58131 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ätiedotAlgoritmit 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ätiedotA274101 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
LisätiedotV. 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ätiedotOlkoon 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ätiedotPinot, 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ätiedotOikeasta 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ä
LisätiedotTKT20001 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ätiedotKurssikoe 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.
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotPienin 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ätiedotT 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ätiedot58131 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedot58131 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ätiedotMiten 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ätiedotAlgoritmit 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ätiedotSuunnatut, etumerkilliset ja arvotetut graafit Sosiaalisten verkostojen analysoinnin näkökulmalla
Suunnatut, etumerkilliset ja arvotetut graafit Sosiaalisten verkostojen analysoinnin näkökulmalla Hypermedian jatko-opintoseminaari 2008-2009 12.12.2008 Jaakko Salonen jaakko.salonen@tut.fi TTY / Hypermedialaboratorio
Lisätiedotuseampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero
Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op
LisätiedotAlgoritmit 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ätiedotAlgoritmit 1. Luento 4 Ke Timo Männikkö
Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,
LisätiedotKö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ätiedotA274101 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ätiedot8. Lajittelu, joukot ja valinta
8. Lajittelu, joukot ja valinta Yksi tietojenkäsittelyn klassisista tehtävistä on lajittelu (järjestäminen) (sorting) jo mekaanisten tietojenkäsittelylaitteiden ajalta. Lajiteltua tietoa tarvitaan lukemattomissa
Lisätiedot58131 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ätiedot58131 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ätiedotValitaan 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ätiedotverkkojen 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
LisätiedotHakupuut. 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ätiedotTieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotDiskreetit rakenteet
Diskreetit rakenteet 811120P 5 op 7. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1 Mikä on verkko? verkko (eli graafi) koostuu solmuista ja väleistä, jotka yhdistävät solmuja
Lisätiedot811312A 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ätiedotAlgoritmit 1. Luento 12 Ke Timo Männikkö
Algoritmit 1 Luento 12 Ke 15.2.2017 Timo Männikkö Luento 12 Pikalajittelu Pikalajittelun vaativuus Osittamisen tasapainoisuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu
LisätiedotJohdatus verkkoteoriaan 4. luento
Johdatus verkkoteoriaan 4. luento 28.11.17 Viikolla 46 läpikäydyt käsitteet Viikolla 47 läpikäydyt käsitteet Verkko eli graafi, tasoverkko, solmut, välit, alueet, suunnatut verkot, isomorfiset verkot,
LisätiedotTarkennamme 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
LisätiedotAlgoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö
Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu
LisätiedotT : Max-flow / min-cut -ongelmat
T-61.152: -ongelmat 4.3.2008 Sisältö 1 Määritelmät Esimerkki 2 Max-flow Graafin leikkaus Min-cut Max-flow:n ja min-cut:n yhteys 3 Perusajatus Pseudokoodi Tarkastelu 4 T-61.152: -ongelmat Virtausverkko
LisätiedotAVL-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ätiedotAlgoritmit 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ätiedotTietorakenteet, 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ätiedotMalliratkaisut 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ätiedotisomeerejä 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
Lisätiedot= 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
LisätiedotNä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}
Lisätiedotlähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa
Kekolajittelu Prioriteettijonolla toteutettu keko InsertItem ja RemoveMinElem: O(log(n)) Lajittelu prioriteettijonolla: PriorityQueueSort(lajiteltava sekvenssi S) alusta prioriteettijono P while S.IsEmpty()
LisätiedotValitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.
Joukon määritelmä Joukko on alkioidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Näin ei tässä
LisätiedotAlgoritmit 1. Luento 5 Ti Timo Männikkö
Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti
LisätiedotAlgoritmit 1. Luento 6 Ke Timo Männikkö
Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty
Lisätiedot8 Joukoista. 8.1 Määritelmiä
1 8 Joukoista Joukko on alkoidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukkooppi aksiomaattisesti. Näin ei tässä tehdä
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotOngelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?
Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? 2012-2013 Lasse Lensu 2 Ongelma 2: Milloin ongelmat muuttuvat oikeasti hankaliksi? 2012-2013 Lasse Lensu 3 Ongelma 3: Miten hankalia ongelmia
LisätiedotInduktiotodistus: 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
Lisätiedot