9. Graafit. Termejä ja perusominaisuuksia
|
|
- Asta Tamminen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 9. raafit raafeilla eli verkoilla esitetään yhteystietoja. simerkkejä niistä ovat kaupunkikartan kadut ja tietoverkon tietokoneet. Tämä luku tarkastelee verkkojen perusasioita raafin abstrakti tietotyyppi bstraktissa mielessä graafi (graph) on yksinkertaisesti kärkien (vertices) eli solmujen (nodes) joukko V ja solmuparien eli kaarien eli särmien (arcs, edges) joukko. Termejä ja perusominaisuuksia raafin kaaret ovat joko suunnattuja (directed) tai suuntaamattomia (undirected). aari (u,v) on suunnattu solmusta u solmuun v, jos pari (u,v) on järjestetty u:n edeltäessä v:tä. os järjestystä ei ole määritelty, kaari on suuntaamaton, jolloin (u,v) on sama kuin (v,u). sim atsotaan graafia, joka kuvaa kurssin lähdeteoksen kirjoittajien yhteistyöntekijöitä tutkimuksessa. aaret ovat symmetrisiä (symmetric), sillä jos on tehnyt yhteistyötä B:n kanssa, niin asia on myös toisinpäin (kuva 9.1.). 9. luku luku 454 Snoeyink arg Tollis os kaikki graafin kaaret ovat suuntaamattomia, puhutaan suuntaamattomasta graafista (undirected graph). Vastaavasti suunnatussa graafissa (directed graph, digraph) kaikki kaaret ovat suunnattuja. n myös sekamuotoisia (mixed) graafeja, joissa esiintyy molempia tyyppejä kaaria. Suuntaamaton kaari (u,v) voidaan korvata parilla suunnattuja (u,v) ja (v,u). oodrich Vitter Tamassia aaren yhdistämät kaksi solmua ovat sen päätesolmut tai kärjet (endpoints, end vertices). os se on suunnattu, toinen niistä on alku (origin) ja toinen loppu (destination). Chiang uva 9.1. raafi yhteistyöntekijöiden välillä. reparata aksi solmua ovat vierekkäisiä (adjacent), jos ne ovat saman kaaren päätesolmuja. aari 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 luku 456
2 sim entoreiteistä voidaan muodostaa graafi, jonka solmut viittaavat lentokenttiin ja kaaret ovat niihin liittyviä lentovuoroja (kuva 9.2.). aaret ovat luonnollisesti suunnattuja, koska lennolla on aina määrätty suunta lähtöpaikasta kohteeseen. aksi 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. raafin 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). sim 9.2. voisi sisältää näitä, kun kahden lentokentän välillä olisi useita lentovuoroja eri aikoihin. räs toinen erikoistapaus on kaari, joka yhdistää solmun itseensä. Tästä käytetään nimitystä itseissilmukka (self loop). 9. luku 457 S X 49 U 877 U 120 TW 45 RD DW 411 D BS uva 9.2. simerkki suunnatusta graafista, joka esittää lentoreitistöä. aaren U 120 alku ja loppusolmu ovat X ja RD. X ja RD ovat täten vierekkäisiä. Solmun DW sisäaste on 3 ja ulkoaste 2. W 35 D luku 458 Yleensä graafeissa ei ole rinnakkaisia kaaria tai itseissilmukoita, jotka ovat poikkeuksellisia. os 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. sitettävien määritelmien laajentaminen erityistapausten huomioonottamiseksi olisi suoraviivaista, mutta jonkin verran työlästä. heiset ominaisuudet esittävät graafin kaarien ja solmujen määrien suhteet sekä solmujen asteet. ause 9.1. os graafissa on m kaarta, niin on deg( v ) = 2m. v erustelu: aari (u,v) lasketaan kahdesti esitetyssä summassa, kerran loppusolmunaan u ja toisen kerran loppusolmunaan v. äin ollen kaarien kokonaisvaikutus solmujen asteisiin on kaksi kertaa kaarien määrä. ause 9.2. os suunnatussa graafissa on m kaarta, niin on in deg( v ) = outdeg( v) = m. v v erustelu: Suunnatussa graafissa kaari (u,v) vaikuttaa yhden yksikön verran alkusolmun u ulkoasteeseen ja yhden yksikön verran loppusolmun v sisäasteeseen. iinpä kaarten kokonaisvaikutus solmujen ulkoasteisiin on yhtä kuin kaarten lukumäärä ja samoin on sisäasteilla. 9. luku luku 460
3 ause 9.3. lkoon yksinkertainen graafi, jossa on n solmua ja m kaarta. os on suuntaamaton, niin on m n(n 1)/2, ja jos on suunnattu, niin on m n(n 1). erustelu: 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. auseen 9.2. mukaan on m n(n 1). auseen 9.3. tulema on esitettävissä myös muodossa, että n solmuisella yksinkertaisella graafilla on (n 2 ) kaarta. raafin 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. olku 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. sim tapauksessa (BS, W 35,, 1387, DW) on suunnattu yksinkertainen polku ja (X, U 120, RD, U 877, DW, 49, X) on suunnattu yksinkertainen sykli. raafin aligraafi (subgraph) on graafi, jonka solmut ja kaaret ovat graafin solmujen ja kaarten osajoukkoja. sim tapauksessa solmut BS, ja sekä kaaret 903 ja D 247 muodostavat aligraafin. Virittävä aligraafi (spanning subgraph) on graafin aligraafi, joka käsittää :n kaikki solmut. raafi on yhdistetty (connected), jos minkä tahansa solmuparin välillä on polku. os graafi ei ole yhdistetty, sen maksimaalisia yhdistettyjä aligraafeja kutsutaan :n yhdistetyiksi komponenteiksi (connected components). 9. luku luku 462 etsä (forest) on syklitön graafi. uu (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. äiden erottamiseksi toisistaan voidaan luvun 4 puu nimetä juurelliseksi puuksi (rooted tree). etsän yhdistetyt komponentit ovat (vapaita) puita. raafin virittävä puu (spanning tree) on virittävä aligraafi, joka on (vapaa) puu. m. määritteiden ominaisuuksia luetellaan seuraavassa. ause 9.4. un suuntaamattomassa graafissa on n solmua ja m kaarta, niin mainittavat ominaisuudet ovat (perustelu voi olla harjoituksena): os on yhdistetty, niin on m n 1. os on puu, niin on m = n 1. os on metsä, niin on m n 1. raafin metodit bstraktissa tietotyypissä graafin paikat (positions) ovat sen solmut ja kaaret. raafin alkiot voidaan näin ollen tallettaa joko solmuihin tai kaariin (tai molempiin). raafi nähdään paikkasäiliönä (luku 4), jolloin graafin abstrakti tietotyyppi tukee metodeja size(), ismpty(), elements(), positions(), replace(p,o) ja swap(p,q), missä p ja q viittaavat paikkoihin ja o alkioon. raafit ovat hyvin monipuolisia rakenteita johtuen niiden erilaisista rakenneosista, solmuista ja kaarista. raafien metodit jaotellaan kolmeen ryhmään: yleismetodit, suunnattuja kaaria käsittelevät metodit ja graafien päivitys ja muuntamismetodit. lkoot v solmu, e kaari ja o solmuun tai kaareen talletettu alkio. Seuraavassa esitetään esimerkinomaisesti vain muutamia metodeja, joita voi kehittää lisää monia kymmeniä. yöskään niiden virheenkäsittelyä ei tarkastella. 9. luku luku 464
4 Yleismetodeissa ei piitata kaarien suunnista. e antavat globaalia tietoa graafista. numvertices(): edges(): alauttaa :n solmujen lukumäärän. alauttaa :n kaarien luettelon. Seuraavantyyppisissä yleismetodeissa on solmuja ja kaaria argumentteina. degrees(v): alauttaa solmun v asteen. endvertices(e): alauttaa kaaren e päätesolmut. aredjacent(v,w): alauttaa totuusarvon sen mukaan, ovatko v ja w vierekkäisiä solmuja. un otetaan huomioon kaarien suuntia, monia erilaisia metodeja on esitettävissä. indjacentvertices(v): alauttaa luettelon kaikista solmulle v vierekkäisistä solmuista, jotka tulevat suunnattuja kaaria myöten v:hen. destination(e): alauttaa suunnatun kaaren e loppusolmun. äivitysmetodeilla voidaan lisätä tai poistaa kaaria ja solmuja. insertdge(v,w,o): isää ja palauttaa suuntaamattoman kaaren solmujen v ja w välistä sekä tallettaa alkion o tähän paikkaan. removevertex(v): oistaa solmun v ja kaikki siihen liittyvät kaaret. uten mainittu, tässä esitettiin ainoastaan muutamia esimerkkejä lukuisista mahdollisista graafimetodeista. (e luetellaan tätä täydellisimmin myöhemmissä taulukoissa.) indegree(v): alauttaa solmun v sisäasteen. 9. luku luku raafien tietorakennetoteutukset raafin abstrakti tietotyyppi toteutetaan yleensä yhtenä kolmesta vaihtoehdosta. ämä rakenteet ovat kaarilista (edge list), vierekkyyslista (adjacency list) ja vierekkyysmatriisi (adjacency matrix). un näistä kaksi ensimmäistä sisältävät pelkästään tiedon jostakin solmusta ja kaaresta, niiden tarvitsema muistitila on (n+m), missä n on solmujen ja m kaarien lukumäärät. olmas rakennevaihtoehto tarvitsee tilaa (n 2 ), koska siinä varataan tilaa jokaiselle solmuparille riippumatta siitä, onko niiden välillä kaarta vai ei. aarilistarakenne aarilista on yksinkertaisin, mutta ei tehokkain graafin esitysmuoto. Solmu v tallettaa alkion o, mikä on eksplisiittisesti esitetty toteutuksen solmuoliossa. aikki solmuoliot talletetaan säiliöön V, joka on tavallisesti sekvenssi tai sanakirja. os 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 lkion o sisältävä kaari e esitetään eksplisiittisesti kaarioliolla. aarioliot talletetaan säiliöön, joka on sekvenssi tai sanakirja. aarioliolla on seuraavat muuttujat: 9. luku luku 468
5 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ä aarilistasta on kuvassa 9.3. kaavamainen esitys. aarilistasta puhutaan, koska sen toteutus on usein sekvenssi (listana). aarilistarakenteen 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ä. äin ollen mm. metodi incidentdges(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. S X 49 U 877 U 120 TW 45 RD D 335 DW 411 (a) uva 9.3. (alku) (a) Suunnattu graafi kuvasta 9.2. BS W 35 D luku luku 470 W 35 : D D U U 877 TW 45 V: BS X DW RD S (b) uva 9.3. (loppu) (b) raafin kaavamainen esitys kaarilistana. Selvyyden vuoksi viittaukset on tässä merkitty olioiden nimillä (eikä merkitty viittauksia nuolien yhteyteen). 9. luku 471 Taulukko 9.1. raafimetodien suoritusajat, kun toteutus on kaarilistana, missä V ja on toteutettu kahteen suuntaan linkitettyjen listojen sekvensseinä. Tilavaatimus on (n+m), missä n on solmujen lukumäärä ja m kaarien lukumäärä. operaatio size, ismpty, replacelement, swap numvertice, numdges vertices edges, directeddges, undirecteddges elements, positions endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentdges, inncidentdges, outncidentdges, adjacentvertices, indjacentvertices, outdjacentvertices, aredjacent insertvertex, insertdge, insertdirecteddge, removedge, makeundirected, reversedirection, setdirectionrom, setdirectionto removevertex suoritusaika (n) (m) (n+m) (m) (m) 9. luku 472
6 Vierekkyyslistarakenne raafin vierekkyyslistarakenne laajentaa kaarilistaa lisäten tietoa, joka tukee solmuun liittyvien kaarien suoraa saantia. un 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 (v), joka sisältää solmuun v liittyvien kaarien oliot. aaren (u,v) kaariolio käsittää viittaukset kaaren paikkoihin säiliöissä (u) ja (v). 9. luku 473 Solmun v säiliö (v) toteutetaan yleensä sekvenssinä, mutta myös mm. sanakirja tai prioriteettijono tulevat kysymykseen kontekstista riippuen. un vierekkyyslistaa vielä hieman muunnetaan, saadaan mukaan mahdollisuus, että voi olla sekä suuntaamattomia että suunnattuja kaaria. äytetään kolmea säiliötä in (v), out (v) ja un (v), jotka sisältävät viittaukset kaariolioihin ja nämä ovat suunnattuja tulevia, suunnattuja lähteviä tai suuntaamattomia kaaria solmuun v liittyen. uvassa 9.4. on edeltävän lentoreitistöesimerkin kuvaus vierekkyyslistana. Siinä on lisätty edeltävään verrattuna vierekkyysrakenteet jokaista graafin solmua varten. ukana ei ole suuntaamattomien kaarien säiliöitä, koska suuntaamattomia kaaria ei ollut mukana esimerkissä. Vierekkyysrakenteiden avulla voidaan nopeuttaa useiden graafimetodien toimintaa. 9. luku 474 in W 35 out W 35 D 247 : D D U U 877 TW 45 in V: BS X DW RD S out U120 in 1387 U out D in W 35 uva 9.4. Vierekkyyslistan kaavamainen esitys lentoreitistön tapauksesssa. out TW 45 in D out luku 475 in U 120 D 335 out U 877 in TW 45 out Taulukko 9.2. raafimetodien suoritusajat, kun graafi on toteutettu vierekkyyslistana, jossa sekä säiliöt V ja että vierekkyysrakennesäiliöt on toteutettu sekvensseinä ja nämä kahteen suuntaan linkitettyinä listoina. Tilavaatimus on (n+m), missä n on solmujen lukumäärä ja m kaarien lukumäärä. operaatio suoritusaika size, ismpty, replacelement, swap numvertice, numdges vertices edges, directeddges, undirecteddges elements, positions endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentdges(v), inncidentdges(v), outncidentdges(v), adjacentvertices(v), indjacentvertices(v), outdjacentvertices(v) aredjacent(u,v) insertvertex, insertdge, insertdirecteddge, removedge, makeundirected, reversedirection, setdirectionrom, setdirectionto removevertex(v) (n) (m) (n+m) (deg(v)) (min(deg(u),deg(v))) (deg(v)) 9. luku 476
7 Vierekkyysmatriisirakenne uten vierekkyyslista, myös graafin vierekkyysmatriisirakenne laajentaa kaarirakennetta lisäkomponentilla. yt lisätään kaarilistan lisäksi matriisi (taulukko), josta saadaan määrättyä solmuparien vierekkäisyysominaisuus vakioajassa. uutamien 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 alkioihin. Vierekkyysmatriisiesitys laajentaa kaarilistaa seuraavasti (kuva 9.5.): Taulukon alkio [i,j] käsittää viittauksen kaariolioon e, joka menee solmusta i solmuun j. ikäli tämä on suuntaamaton, e talletetaan sekä alkioon [i,j] että [j,i]. un 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. isäksi muistitilavaatimus kasvaa kertaluokkaan (n 2 ). yös mikä tahansa solmun lisäys tai poisto vaatii nyt koko taulukon läpikäynnin, joka on (n 2 ). Solmun v olio tallettaa erillisen kokonaislukuavaimen väliltä 0, 1,, n 1. Se on solmun v indeksi (index). äytetään kuitenkin yksinkertaisuuden vuoksi nimitystä solmu i indeksin sijasta. 9. luku luku BS DW X RD S (a) W 35 D D U U TW 45 (b) uva 9.5. Vierekkyysmatriisi: (a) graafin solmujen indeksit ja (b) taulukko. 9. luku 479 Taulukko 9.3. raafimetodien suoritusajat, kun graafi on toteutettu vierekkyysmatriisina. Tilavaatimus on (n 2 ), missä n on solmujen lukumäärä. aarien määrä on m. operaatio suoritusaika size, ismpty, replacelement, swap numvertice, numdges vertices (n) edges, directeddges, undirecteddges (m) elements, positions (n+m) endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentdges, inncidentdges, (n) outncidentdges, adjacentvertices, indjacentvertices, outdjacentvertices aredjacent insertdge, insertdirecteddge, removedge, makeundirected, reversedirection, setdirectionrom, setdirectionto insertvertex, removevertex (n 2 ) 9. luku 480
8 9.3. raafin kulkeminen ulkeminen (traversal) on järjestelmällinen tapa käydä graafi läpi tutkien kaikki solmut ja kaaret. ulkeminen on tehokasta, kun se suoritetaan ajassa, joka on lineaarisessa suhteessa solmujen ja kaarien määrään. Tässä tarkastellaan suuntaamattomien graafien kulkemista. deltä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. rosessi loppuu, kun lopulta peräännytään alkusolmuun s. Syvyyshaku nsimmäinen tarkasteltava menetelmä on syvyyshaku (depth first search), jota kuvan 9.6. tilanteet esittävät. loitetaan graafin määrätystä alkusolmusta s, joka kiinnitetään merkitsemällä se käydyksi. Solmu s on nyt nykyinen solmu u. raafi käydään läpi ottamalla (mielivaltaisesti valittu) kaari (u,v). os tämä johtaa jo käytyyn solmuun v jossakin tilanteessa, palataan solmuun u. os toisaalta solmu v oli käymätön, mennään siihen ja merkitään se nykyiseksi ja käydyksi solmuksi. 9. luku 481 Syvyyshakua voidaan kuvata esittämällä kaaret sen mukaan, mihin suuntaan ne kuljetaan. aaret, 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.). dellisten avulla saadaan haussa uusia solmuja ja jälkimmäisillä peräännytään. öytökaarista saadaan tarvittaessa myös virittävä puu. oodissa 9.1. on syvyyshakualgoritmin pseudokoodi. Siinä oletetaan olevan mukana mekanismi, jolla selvitetään, onko solmussa tai kaaressa käyty. 9. luku 482 (a) (b) (c) (d) uva 9.6. (alku) simerkki syvyyshausta. öytökaaret on merkitty yhtenäisillä viivoilla ja perääntymiskaaret katkoviivoilla: (a) syötegraafi ja (b) löytökaarien polku aina solmuun asti, kunnes kohdataan perääntymiskaari (B,). 9. luku 483 uva 9.6. (jatkoa) (c) Solmun saavuttaminen, joka on umpikuja, ja (d) erääntymisen jälkeen solmuun C, josta on edetty kaaren (C,) kautta jälleen umpikujaan, solmuun. 9. luku 484
9 (e) (f) lgorithm DS(v): nput: solmu v graafista utput: 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 DS(w) else merkitse e perääntymiskaareksi uva 9.6. (loppu) (e) erääntymisen jälkeen solmuun ja (f) perääntymisen jälkeen solmuun. oodi 9.1. Syvyyshakualgoritmi. 9. luku luku 486 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. ause 9.5. lkoon suuntaamaton graafi, jossa syvyyshaku aloitetaan solmusta s. Silloin ovat ominaisuudet: uljettaessa graafi käydään kaikki solmut läpi solmun s yhdistetyssä komponentissa. öytökaaret muodostavat s:n yhdistetyn komponentin virittävän puun. erustelu 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. 9. luku 487 lgoritmia kutsutaan täsmälleen kerran jokaista solmua kohti, ja jokainen kaari tutkitaan kahdesti, kerran sen kummastakin päätesolmusta käsin. uutamin 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. ause 9.6. lkoon graafi n solmuineen ja m kaarineen. Syvyyshaku toimii siinä ajassa (n+m). isäksi on olemassa syvyyshakuun perustuvia algoritmeja, jotka toimivat ajassa (n+m) ongelmille: Sen tutkiminen, onko yhdistetty. Virittävän puun laskeminen, kunhan on yhdistetty. :n yhdistettyjen komponenttien laskeminen. ahden solmun välisen polun etsiminen tai selvittäminen, ettei sitä ole. ahdollisen syklin laskeminen. 9. luku 488
10 eveyshaku Syvyyshaun tapaan leveyshaku (breadth first search) kulkee graafin yhdistetyn komponentin täysin läpi. eveyshaku etenee konservatiivisesti tasoittain graafia (kuva 9.7.), kun taas sysyyshaussa sukellettiin syvyyksiin. lkoon 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. äin jatketaan tasolta i tasolle i+1, kunnes kaikki solmut ja kaaret on käyty läpi. eveyshaun 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. os solmu v sijaitsee leveyshaun tasolla i, sen lyhimmän polun pituus solmusta s on i. 9. luku 489 (a) uva 9.7. (alku) simerkki leveyshausta, jossa solmuihin liittyvät kaaret tutkitaan aakkosjärjestyksessä vierekkäisistä solmuista. öytökaaret on merkitty yhtenäisillä nuolilla ja vastakkaiskaaret (ei vielä tässä) katkoviivoilla. (a) raafi aloitusvaiheessa ja (b) tason 1 käsittely. (b) 9. luku (c) (d) (e) (f) uva 9.7. (jatkoa) (c) Tason 2 käsittely ja (d) tason 3 käsittely. uva 9.7. (loppu) (e) Tason 4 ja (f) tason 5 käsittelyt. 9. luku luku 492
11 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ä. eveyshaun pseudokoodiesitys on koodina 9.2. Se tarvitsee lisätilaa kaarien ja solmujen merkitsemiseen ja tasoihin liitettävien säiliöiden tallettamiseen. lgoritmi ei ole rekursiivinen. eveyshaulla on monia ominaisuuksia, joita selostetaan seuraavasti. ause 9.7. lkoon suuntaamaton graafi, jossa leveyshaku aloitetaan solmusta s. Silloin ovat ominaisuudet: raafissa käydään läpi kaikki solmut s:n yhdistetyssä komponentissa. öytökaaret muodostavat s:n yhdistetyn komponentin virittävän puun T, jota kutsutaan leveyshakupuuksi. eveyshakupuun T polku solmusta s solmuun v tasolle i käsittää i kaarta ja mikä tahansa muu polku niiden välillä on ainakin yhtä pitkä. os (u,v) ei ole T:ssä, u:n ja v:n tasonumerot eroavat enintään yhdellä. 9. luku 493 lgorithm BS(s): alustetaan säiliö 0 sisältämään solmu s i 0 while i ei ole tyhjä do luodaan tyhjä säiliö i+1 for jokaiselle solmulle v säiliöstä 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 i+1 else merkitään e vastakkaiskaareksi i i + 1 oodi 9.2. eveyshakualgoritmi. 9. luku 494 ause 9.8. lkoon graafi n solmuineen ja m kaarineen. eveyshaku graafissa vaatii ajan (m+n). n myös muita samassa ajassa toimivia, leveyshakuun perustuvia algoritmeja: Sen tutkiminen, onko yhdistetty. :n virittävän puun laskeminen, kunhan on yhdistetty. :n yhdistettyjen komponenttien laskeminen. :n mille tahansa solmulle v lyhimmän polun laskeminen aloitussolmusta s. umpaa tulisi käyttää näistä menetelmistä, riippuu sovelluksesta. sim. lyhimmän polun laskennassa leveyshaku on syvyyshakua parempi. Syvyyshaku on puolestaan soveliaampi vastattaessa monimutkaisiin yhteyskysymyksiin, kuten voidaanko jokainen graafin solmupari yhdistää kahdella erillisellä polulla. ämä tulokset pätevät kuitenkin vain suuntaamattomille graafeille, joten seuraavaksi tarkastellaan suunnattuja. 9. luku Suunnatut graafit raafi on suunnattu, jos sen kaaret ovat suunnattuja. Saavutettavuus Saavutettavuuden (reachability) tärkeässä käsitteessä on kysymys siitä, mihin suunnatussa graafissa päästään kulkemaan. ulkeminen 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 on vahvasti yhdistetty (strongly connected), jos mille tahansa sen solmuparille u ja v edellinen saavuttaa jälkimmäisen ja päinvastoin. :n suunnattu sykli (directed cycle) on sellainen, jossa kaikki sen kaaret käydään suuntiensa mukaan läpi. on syklitön (acyclic), jos siinä ei ole yhtään suunnattua sykliä (kuva 9.8.). 9. luku 496
12 BS BS RD RD S S DW DW X X (a) (b) uva 9.8. (alku) simerkkejä saavutettavuudesta suunnatussa graafissa: (a) suunnattu polku lentokentältä BS kentälle X. 9. luku 497 uva 9.8. (jatkoa) (b) Suunnattu sykli (RD,, DW, X, RD). 9. luku 498 BS BS RD RD S S DW DW X X (c) uva 9.8. (jatkoa) (c) Solmusta RD saavutettavien solmujen ja kaarien aligraafi käsittää muut paitsi solmut ja BS. (d) uva 9.8. (loppu) (d) atkoviivoilla merkityt kaaret poistamalla saadaan syklitön suunnattu graafi. 9. luku luku 500
13 Suunnatun graafin transitiivinen sulkeuma (transitive closure) * käsittää :n solmut ja kaaret (u,v), joille on olemassa suunnattu polku solmusta u solmuun v graafissa. * määritellään siis niin, että otetaan ja lisätään sellaiset kaaret (u,v), joissa v on saavutettavissa solmusta u (eikä : ssä ollut jo kyseisiä kaaria). Saavutettavuutta koskevia mielenkiintoisia kysymyksiä ovat suunnatun graafin tapauksessa seuraavat: nko solmu v saavutettavissa solmusta u? aikkien sellaisten solmujen etsiminen, jotka ovat saavutettavissa solmusta s käsin. nko vahvasti yhdistetty? nko syklitön? :n transitiivisen sulkeuman laskeminen. Suunnatun graafin kulkeminen uten suuntaamattomilla graafeilla, suunnatuillakin käytetään samankaltaisia kulkemisalgoritmeja. inoa 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. lgorithm DirectedDS(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 DirectedDS(w) oodi 9.3. Suunnatun syvyyshaun algoritmi. 9. luku luku BS BS RD 7 RD 5 2 S S DW DW 3 X X 4 6 (a) (b) uva 9.9. (alku) simerkki suunnatun graafin syvyyshausta: (a) välivaihe, jossa saavutetaan ensi kertaa aiemmin käyty solmu (DW). uva 9.9.(loppu) (b) äättynyt suunnatun graafin syvyyshaku, jossa on solmujen käyntijärjestys merkitty numeroin. 9. luku luku 504
14 Suunnatun graafin syvyyshakualgoritmi toimii suuntaamattoman tapaan ajassa (n+m), missä n on solmujen ja m kaarien määrä. uutamat suunnattuihin graafeihin liittyvät ongelmat, kuten sen selvittäminen, onko graafi vahvasti yhdistetty, tai transitiivisen sulkeuman laskeminen, vaativat ajan (n(n+m)). 3 C 1 D 2 B 2 C 1 D 4 B Suunnatut syklittömät graafit Suunnattuja syklittömiä graafeja (directed acyclic graph, D) tarvitaan monissa sovelluksissa. simerkkinä on ava kielisen ohjelman luokkien välinen periytyminen lkoon 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 :n suunnattu polku käy solmut läpi kasvavassa järjestyksessä. uvassa on kaksi esimerkkiä näistä. Topologinen järjestys lasketaan topologisen lajittelun (topological sorting) algoritmilla, mutta sitä ei esitetä tässä. 9. luku (a) uva aksi topologista järjestystä samasta suunnatusta syklittömästä graafista. ärjestysnumero on merkitty solmun viereen. 9. luku (b)
9. Graafit. 9.1. Graafin abstrakti tietotyyppi
9. Graafit Graafeilla eli verkoilla esitetään yhteystietoja. Esimerkkejä niistä ovat kaupunkikartan kadut ja tietoverkon tietokoneet. Tämä luku tarkastelee verkkojen perusasioita. 9.1. Graafin abstrakti
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
10. Painotetut graafit
10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä
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
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
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
6.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
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
0 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
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
10. Painotetut graafit
10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä
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
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
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
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
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:
TIE 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
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ä.
Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.
5. Verkkoalgoritmeja Eräs keskeinen algoritmien suunnittelutekniikka on Palauta ongelma johonkin tunnettuun verkko-ongelmaan. Palauttaminen edellyttää usein ongelman ja algoritmin pientä modifioimista,
Johdatus 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
Silmukkaoptimoinnista
sta TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. joulukuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale
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
Rakenteellinen 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
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 =
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
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
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:
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
Graafin 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
14. 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
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
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
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
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
811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit
811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi
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
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,
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:
8.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ä).
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
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ä
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
PARITUS KAKSIJAKOISESSA
PARITUS KAKSIJAKOISESSA GRAAFISSA Informaatiotekniikan t iik seminaari i Pekka Rossi 4.3.2008 SISÄLTÖ Johdanto Kaksijakoinen graafi Sovituksen peruskäsitteet Sovitusongelma Lisäyspolku Bipartite matching-algoritmi
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.
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
Algoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
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
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
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
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ä
Graafin 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
Algoritmit 2. Luento 4 To Timo Männikkö
Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4
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ä
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
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.
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
A274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.
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ä
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
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
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
Suunnatut, 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
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
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
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
T : 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
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
Tieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
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
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
Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )
Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,
Algoritmit 2. Luento 4 Ke Timo Männikkö
Algoritmit 2 Luento 4 Ke 22.3.2017 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2017 Luento 4
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
Algoritmit 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,
Diskreetit 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
useampi 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
811312A Tietorakenteet ja algoritmit II Perustietorakenteet
811312A Tietorakenteet ja algoritmit 2017-2018 II Perustietorakenteet Sisältö 1. Johdanto 2. Pino 3. Jono 4. Lista 811312A TRA, Perustietorakenteet 2 II.1. Johdanto Tietorakenne on tapa, jolla algoritmi
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.
Algoritmit 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
Malliratkaisut Demot
Malliratkaisut Demot 4 3.4.017 Tehtävä 1 Tarkastellaan harjoituksen 1 nopeimman reitin ongelmaa ja etsitään sille lyhin virittävä puu käyttämällä kahta eri algoritmia. a) (Primin algoritmi) Lähtemällä
Algoritmit 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
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
lä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()
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
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
Algoritmit 1. Luento 12 Ti Timo Männikkö
Algoritmit 1 Luento 12 Ti 19.2.2019 Timo Männikkö Luento 12 Osittamisen tasapainoisuus Pikalajittelun vaativuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu Algoritmit
T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )
T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen
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
Valitsemalla 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ä
Algoritmit 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
8 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ä
Algoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018
Johdatus 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,
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
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
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
Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003
Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja
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
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ä.........................
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys