Kierros 7: Verkkoalgoritmeja (osa I)

Samankaltaiset tiedostot
CS-A1140 Tietorakenteet ja algoritmit

Kierros 8: Verkkoalgoritmeja (osa II)

CS-A1140 Tietorakenteet ja algoritmit

S Laskennallinen systeemibiologia

12. Liikenteenhallinta verkkotasolla

Kuvausta f sanotaan tällöin isomorfismiksi.

Vastaa tehtäviin 1-4 ja valitse toinen tehtävistä 5 ja 6. Vastaat siis enintään viiteen tehtävään.

Säännöllisestä lausekkeesta deterministiseksi tilakoneeksi: esimerkki

Puolijohdekomponenttien perusteet A Ratkaisut 1, Kevät Tarvittava akseptoridouppaus p-tyypin kerrokseen saadaan kaavalla

Matematiikan johdantokurssi, syksy 2017 Harjoitus 6, ratkaisuista. 1. Onko jokin demojen 5 tehtävän 3 relaatioista

Diskreetin matematiikan perusteet Laskuharjoitus 6 / vko 13

ELEC-E8419 tentti joulukuu 2016

Knauf Safeboard Säteilysuojalevy 03/2009. Knauf Safeboard Säteilysuojalevy. 0% lyijyä. 100% turvallisuus.

solmujoukko V omassa säiliössä (sekvenssi) kaarijoukko E kaarialkio-säiliössä kussakin kaarialkiossa viite sen alku- ja loppusolmuun

TASORITILÄN ASENNUS SEKÄ ALUSVALUN SIISTIMINEN ANKKURIREIKIEN PORAUS POIKKILEIKKAUS REUNAPALKISTA KANNATTIMEN KOHDALLA ALUSVALU KANNATTIMEN ASENNUS

Asentajan viiteopas. Jaetut ilmastointilaitteet RZQG71L9V1B RZQG100L9V1B RZQG125L9V1B RZQG140L9V1B RZQG71L8Y1B RZQG100L8Y1B RZQG125L8Y1B RZQG140L7Y1B

Pakkauksen sisältö: Sire e ni

Näytä tai jätä tarkistettavaksi tämän jakson tehtävät viimeistään tiistaina ylimääräisessä tapaamisessa.

Koestusnormit: VDE 0660 osa 500/IEC Suoritettu koestus: Nimellinen virtapiikkien kestävyys I pk. Ip hetkellinen oikosulkuvirta [ka]

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

13 Lyhimmät painotetut polut

LIITE 8A: RAKENNELUVUN 137 YHTÄLÖITÄ

1.3 Toispuoleiset ja epäoleelliset raja-arvot

Johdatus graafiteoriaan

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 5 Demonstraatiotehtävien ratkaisut. ja kaikki a Σ ovat säännöllisiä lausekkeita.

3 Integraali ja derivaatta

Digitaalinen videonkäsittely Harjoitus 5, vastaukset tehtäviin 25-30

Pythagoraan lause. Pythagoras Samoslainen. Pythagoraan lause

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

Sähkömagneettinen induktio

YHDYSKUNTALAUTAKUNTA TALOUSARVIOEHDOTUS 2018 TALOUSSUUNNITELMA

Variations on the Black-Scholes Model

Diskreetin matematiikan perusteet Ratkaisut 4 / vko 11

Algoritmit 1. Luento 9 Ti Timo Männikkö

II.1. Suppeneminen., kun x > 0. Tavallinen lasku

Syksyn 2015 Pitkän matematiikan YO-kokeen TI-Nspire CAS -ratkaisut

Rahoitusriskit ja johdannaiset Matti Estola Luento 5. Termiinihinnan määräytyminen

Asentajan viiteopas. Daikin Altherma - Matalan lämpötilan Split ERHQ BA ERLQ CA EHVH/X11+16S18CB EHVH/X11+16S26CB

Asennusopas. Daikin Altherma - Matalan lämpötilan Monoblocin varalämmitin EKMBUHCA3V3 EKMBUHCA9W1. Asennusopas. Suomi

Asennusohje EPP-0790-FI-4/02. Kutistemuovijatkos Yksivaiheiset muovieristeiset. Cu-lanka kosketussuojalla 12 kv & 24 kv.

TIE Tietorakenteet ja algoritmit 261

K Ä Y T T Ö S U U N N I T E L M A Y H D Y S K U N T A L A U T A K U N T A

ELEC- E8419 välikoe b) Yhtiö A ilmoittaa että sillä on liian korkea jännite solmussa 1.

Kertymäfunktio. Kertymäfunktio. Kertymäfunktio: Mitä opimme? 2/2. Kertymäfunktio: Mitä opimme? 1/2. Kertymäfunktio: Esitiedot

Määritelmä Olkoon C R m yksinkertainen kaari ja γ : [a, b] R m sen yksinkertainen parametriesitys, joka on paloittain C 1 -polku.

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Integraalilaskentaa. 1. Mihin integraalilaskentaa tarvitaan? MÄNTÄN LUKIO

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (Predikaattilogiikka )

Riemannin integraalista

Hakemus- ja ilmoituslomake LAPL, BPL, SPL, PPL, CPL, IR lupakirjoja varten vaadittava lentokoe- ja tarkastuslentolausunto

Teoriaa tähän jaksoon on talvikurssin luentomonisteessa luvussa 10. Siihen on linkki sivulta

Lue tämä Pika-asennusopas ennen koneen käyttöä varmistuaksesi asetusten ja asennuksen oikeasta suorituksesta.

Käydään läpi: ääriarvo tarkastelua, L Hospital, integraalia ja sarjoja.

LINSSI- JA PEILITYÖ TEORIAA. I Geometrisen optiikan perusaksioomat

3.3 KIELIOPPIEN JÄSENNYSONGELMA Ratkaistava tehtävä: Annettu yhteydetön kielioppi G ja merkkijono x. Onko

Lämmönsiirto (ei tenttialuetta)

SATE1050 Piirianalyysi II syksy / 8 Laskuharjoitus 2 / Transientti-ilmiö (ratkaisut muodostaen diff. yhtälöt, EI saa käyttä Laplace-muunnosta!

1. Laske sivun 104 esimerkin tapaan sellainen likiarvo luvulle e, että virheen itseisarvo on pienempi kuin 10 5.

6 Hypertekstin rakenne ja navigointi

Sinilause ja kosinilause

Neliömatriisin A determinantti on luku, jota merkitään det(a) tai A. Se lasketaan seuraavasti: determinantti on

ICS-C2000 Tietojenkäsittelyteoria Kevät 2015

// Tulostetaan liukulukutyyppinen muuttuja riviä vaihtamatta // yhden desimaalin tarkkuudella. System.out.printf("%.

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

Jäykän kappaleen tasokinetiikka harjoitustehtäviä

Laskennan mallit Erilliskoe , ratkaisuja (Jyrki Kivinen)

Polynomien laskutoimitukset

a) Määritä signaalin x[n] varianssi (keskimääräinen teho) σ x c) Määritä signaalikvantisointikohinasuhde SQNR, kun tiedetään, että

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Yhteysopas. Windows-ohjeet paikallisesti liitettyä tulostinta varten. Mitä paikallinen tulostaminen on? Ohjelmiston asentaminen CD-levyltä

θ 1 θ 2 γ γ = β ( n 2 α + n 2 β = l R α l s γ l s 22 LINSSIT JA LINSSIJÄRJESTELMÄT 22.1 Linssien kuvausyhtälö

2.2 Automaattien minimointi

Asennusopas. Daikin Altherma Matalan lämpötilan Monoblocin varalämmitin EKMBUHCA3V3 EKMBUHCA9W1. Asennusopas. Suomi

Kytkentäopas. Windows-ohjeet paikallisesti liitettyä tulostinta varten. Mitä paikallinen tulostaminen on? Ohjelmiston asentaminen CD-levyltä

Asentajan ja käyttäjän viiteopas

Analyysi 2. Harjoituksia lukuihin 1 3 / Kevät Anna sellainen välillä ] 2, 2[ jatkuva ja rajoitettu funktio f, että

( ) Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 321 Päivitetty Saadaan yhtälö. 801 Paraabeli on niiden pisteiden ( x,

Asentajan ja käyttäjän viiteopas

2. Laske tehtävän 1 mukaiselle 320 km pitkälle johdolle nimellisen p- sijaiskytkeän impedanssit ja admittanssit, sekä piirrä sijaiskytkennän kuva.

Graafinen ohjeisto. Julkis- ja yksityisalojen toimihenkilöliitto Jyty

ELEMENTTIMENETELMÄN PERUSTEET SESSIO 19: Gaussin integrointi emojanan alueessa.

VEKTOREILLA LASKEMINEN

Jotta rakentaminen ja sen ylläpitäminen onnistuu Junkohalli Oy:n voimin seuraavat 22 vuotta, esitämme että

SARJAT JA DIFFERENTIAALIYHTÄLÖT Funktiojonot 1

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2016

Riemannin integraali

Esimerkki 8.1 Määritellään operaattori A = x + d/dx. Laske Af, kun f = asin(bx). Tässä a ja b ovat vakioita.

y 1 = f 1 (t,y 1,,y n ) y 2 = f 2 (t,y 1,,y n ) (1) y n = f n (t,y 1,,y n ) DY-ryhmään liittyvä alkuarvotehtävä muodostuu ryhmästä (1) ja alkuehdoista

11. MÄÄRÄTTY INTEGRAALI JA TILAVUUS

Automaattinen puheentunnistus. Teemu Hirsimäki Informaatiotekniikan laboratorio

OSA 1: POLYNOMILASKENNAN KERTAUSTA, BINOMIN LASKUSÄÄNTÖJÄ JA YHTÄLÖNRATKAISUA

Huoltotiedote. Letkun vaihto. Mallit. Ilmoitus moottorin omistajalle. Veneliikkeen moottorivarasto. Huolto-osavarasto. Tarkastus

3 Mallipohjainen testaus ja samoilutestaus

Reaalinen lukualue. Millainen on luku, jossa on päättymätön ja jaksoton desimaalikehitelmä?

TALO C - TALO D, HOVIPOIKA, ASEMAPIIROS MAAKAAPELOINTI, AUTOPAIKAT, VALAISTUS VARSINAIS-SUOMEN ASUMISOIKEUS HOVIPOIKA-HOVINEITO

ILMAILUHALLINTO LUFTFARTSFÖRVALTNINGEN FINNISH CIVIL AVIATION AUTHORITY

Lyhyt johdatus joukko-oppiin ja relaatioihin

ystävät LUONNON LAHJA Kaneli & appelsiini Minun valintani 1). Tuemme yhteisöjä, joista eteeriset öljymme ovat per

t P1 `UT. Kaupparek. nro Y-tunnus Hämeenlinnan. hallinto- oikeudelle. Muutoksenhakijat. 1( UiH S<

Malliratkaisut Demot

Transkriptio:

Kirros 7: Vrkkoloritmj (os I) Tommi Junttil Alto Univrsity Shool o Sin Dprtmnt o Computr Sin CS-A40 Dt Struturs n Alorithms Autumn 207 Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 / 55

Sisältö: Vrkot Vrkkojn sitystpoj Lvyshku Syvyyshku Topoloinn järjstäminn Vhvsti yhtnäist komponntit Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 2 / 55

Mtrili kirjss Introution to Alorithms, 3r. (onlin vi Alto li): Kpplt 22. 22.4 Linkkjä: MIT 6.006 OCW vio on rth-irst srh MIT 6.006 OCW vio on pth-irst srh n topoloil sort Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 3 / 55

Erilisi vrkkoj j vrkostoj jok puolll: titokonn suoritin on vrkko loiikkporttj intrnt sosilist vrkostot krtt riippuvuusvrkot (kurssin sititovtimukst jn) jn j jn Mtmttist vrkot: tärkä strktio näistä Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 4 / 55

Os intrntist vuonn 2005: (kuv: Mtt Britt, Crtiv Commons-lisnssi, l h) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 5 / 55

Euroopn E-titä: (kuv: puli omin, läh) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 6 / 55

Mtmttisi prusmäärittlyjä Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 7 / 55

Suuntmttomt vrkot Krtust puuloritmin kirrokslt Suuntmton vrkko on pri (V,E), missä V on (ylnsä äärllinn) joukko solmuj (nl. vrtx, no) j E on joukko kri solmujn välillä li joukko 2-osjoukkoj muoto {u, v} sitn, ttä u,v V j u v Esimrkki Trkstlln vrkko (V, E), missä solmut ovt V = {,,,,,,,h} j krijoukko on E = {{,},{,},{,},{,}, {,},{,},{,},{,},{,}}. Vrkko on kuvttu oikll, solmut ympyröinä j krt viivoin solmujn välillä silmukt li krt solmun j sn itsnsä välillä ivät siis ol nyt sllittuj suuntmttomiss vrkoiss Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 8 / 55

polku solmust v 0 solmuun v k on skvnssi (v 0,v,...,v k ) solmuj sitn, ttä {v i,v i+ } E jokisll i = 0,,...k ; polun pituus on k Solmu v on svutttviss solmust u jos on olmss polku solmust u solmuun v. Huom, ttä jokinn solmu u on svutttviss itsstään kosk (u) on 0 skln pituinn polku Polku on yksinkrtinn jos kikki solmut siinä ovt rillisiä Vrkko on yhtnäinn jos jokinn solmu siinä on svutttviss jokisst muust solmust Esimrkki Oikll olv vrkko sisältää (i-yksinkrtisn) polun (,,,,, ) solmust solmuun sisältää yksinkrtisn 2 skln polun (,, ) solmust solmuun on yhtnäinn mutt krn {, } poistminn tkisi siitä i-yhtnäisn Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 9 / 55

Sykli (nl. yl) on polku (v 0,v,...,v k ) missä k 3 j v 0 = v k Sykli (v 0,v,...,v k ) on yksinkrtinn jos v,v 2,...,v k ovt rillisiä Vrkko on syklitön (nl. yli) jos siinä i ol yhtään yksinkrtist sykliä Esimrkki Vsmmnpuolinn vrkko i ol syklitön kosk s sisältää yksinkrtisn syklin (,,,) Oiknpuolinn vrkko on syklitön Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 0 / 55

Suunntut vrkot Suunntuiss vrkoiss krill on suunt Suunnttu vrkko (nl. irt rph, irph) on pri (V, E), missä V on (ylnsä äärllinn) joukko solmuj j E V V on joukko kri solmujn välillä: pri (u,v) E trkoitt krt solmust u solmuun v Esimrkki Trkstlln vrkko (V, E), missä solmut ovt V = {,,,,,,,h} j krijoukko on E = {(,),(,),(,), (,),(,),(,),(,),(,),(,), (,),(,)} S on kuvttu oikll; krin suunt on nyt kuvttu nuolll Huom silmukk solmust itsnsä j kksi (ri suuntiin mnvää) krt solmujn j välillä Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 / 55

Solmun lähtöst (nl. out-r) on solmust lähtvin krtn lukumäärä j mlist (nl. in-r) siihn spuvin krtn määrä k-krn mittinn polku solmust u solmuun u on k + solmun skvnssi (v 0,v,...,v k ) sitn, ttä v 0 = u, v k = u j (v i,v i+ ) E kikill i = 0,,...,k Polku on yksinkrtinn jos sn kikki solmut ovt rillisiä Polku (v 0,v,...,v k ) on sykli jos k j v 0 = v k Esimrkki Oiknpuolisss vrkoss solmun mlist on 2 j lähtöst (), (,,) j (,,) ovt yksinkrtisi polkuj sykljä ovt (,), (,,,), (,,,) j (,,) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 2 / 55

Suunntut syklittömät vrkot Suunntut syklittömät vrkot (nl. irt yli rph, DAG) ovt suunnttujn vrkkojn liluokk, joit siintyy usss sovlluskohtss (ks. sim. tämä wikipi-sivu) Esimrkki Monss sovlluksss nntn sioill ti tphtumill kskinäinn prrnssi ti järjstys wth pnts trousrs lt unrshirt ti shirt soks ht jkt shos Tälläisiss tpuksiss syklit ovt pätoivottuj kosk tällöin sim. tphtumi i voisi thä ollnkn (jonkun pitää tphtu nnn toist j toisinpäin) Yksinkrtisn simrkkinä yllä on riippuvuusvrkko vtkpplin välill pukutumisprosssiss Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 3 / 55

Vrkkojn sitysmuotoj Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 4 / 55

Jott vrkkoj voitisiin tutki loritmill, n täytyy sittää jossin titorkntss Suuntmttomss vrkoss on korkintn n(n ) 2 krt j suunntuss korkintn n 2 Vrkko on hrv jos sn krtn määrä on pini suhtss kikkin mhollistn krtn määrään; jos näin i ol, vrkko on tihä Mitään trkk rj hrvuull j tihyll i ol Kksi ylisintä vrkkojn sitysmuoto ovt npuruusmtriisit, lähinnä tihill vrkoill, skä npuruuslistt Kummsskin olttn solmujoukon olvn {0,,..., n }, jolloin niin vull voin inksoi tulukoit jn Jos solmujn nimt/intittit ovt monimutkismpi rkntit kutn vikkp mrkkijonoj, voin käyttää ssositiivist kuvust näiltä pinill kokonisluvuill, jott its vrkkoloritmit voivt toimi kokonisluvuill Survt simrkit käyttävät kuitnkin symolisi nimiä kutn luttvuun prntmisksi Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 5 / 55

Npuruusmtriisit Suunntun vrkon G = ({0,,..., n }, E) npuruusmtriisi on inäärinn n n-mtriisi A = ( u,v ), missä lkio u,v on jos (u,v) E j 0 muutoin Mtriisi on hlppo sittää muistiss rivi riviltä ittivktorin, jonk pituus on n 2 (ti vstvsti n2 -lkioisn tulukkon 32-ittisiä kokonislukuj); lkion 32 u,v rvo löytyy vktorin inksistä un + v Esimrkki: Suunnttu vrkko j sn npuruusmtriisisitys 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Bittivktorin mtriisi on 00000000000000000000000000000000000000 Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 6 / 55

Suuntmttomn vrkon G = ({0,,..., n }, E) npuruusmtriisi voin nähä llä sittyn mtriisin ionlin yläpuolisn osn Kun 0 u < v < n, lkio u,v on jos {u,v} E j 0 muutoin Jos mtriisin yläkolmio sittään rivi riviltä ittivktoriss, lkio u,v löytyy inksistä un u(u+) 2 + (v u ) Esimrkki: Suuntmton vrkko j sn npuruusmtriisisitys 0 0 0 0 0 0 0 0 0 0 0 0 Bittivktorin mtriisi on 000000000000 j krt {, } vstv itti löytyy inksistä 2 7 2(2+) + (6 2 ) = 4 3 + 3 = 4 kun nimt kuvutuvt 2 ) luvuill survsti: 0 2 3 4 5 6 Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 7 / 55

Anlyysiä: Hyvä sitysmuoto tihill (j pinhköill) vrkoill Krn lisääminn j poistminn vkioikist Uun solmun lisääminn työlästä Solmumääriltään suurmpin vrkkojn sittäminn vi pljon muisti: suunntun vrkon, joss on miljoon solmu, npuruusmtriisin sitys ittivktorin vi yli 00 itvu muisti Solmun npurin läpikäynti i ol optimlist jos solmun stluku on pini vrrttun solmujn lukumäärään n kosk pitää trkstll jokist ko. rivin sityksn O(n) tvu Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 8 / 55

Npuruuslistt Tässä sitysmuooss jokisn solmuun on liittty list sn npurist Luonnollissti myös (ynmisi) tulukoit voin käyttää listojn sijn Esimrkki: Suunnttu vrkko j sn npuruuslistsitys Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 9 / 55

Esimrkki: Suunntun vrkon npuruuslistsitys tiiviimmässä muooss Solmut ovt nyt {0,,...,6} Solmun u npurit löytyvät nyt ostulukost s[strt[u],strt[u+]-] ti s[strt[u],s.lnth-] viimisimmän solmun u = 6 tpuksss 4 2 6 strt 0 0 2 2 4 3 7 4 8 5 9 6 0 0 3 s 0 4 2 3 5 4 0 5 3 6 6 7 6 8 5 9 0 0 3 5 Yllä olvss sitysmuooss näissä khss tulukoss on yhtnsä V + E kokonislukulkiot Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 20 / 55

Anlyysiä: Tiivis sitysmuoto hrvoill vrkoill: muistinkäyttö on O( V + E ) ikä O( V 2 ) Uun solmun lisääminn on kuolttusti vkioikinn oprtio jos käyttään ynmisi tulukoit Krin lisääminn j poistminn phimmss tpuksss linriikist suhtss ko. solmun stlukuun kun käyttään nsimmäisn simrkin listsitystä Solmun npurin läpikäynti thokst Ylisimmin käyttty sitystp monss sovlluskohtss kosk vrkot ovt usin solmumäärältään suuri mutt mlko hrvoj Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 2 / 55

Solmuttriuuttin sitys Monss vrkkoloritmiss on trpn liittää solmuihin ynmissti muuttuv t li ttriuuttj Tämä voin thä monll tp mutt jos/kun solmujoukko on {0,,...,n }, niin hlpoin tp on yksinkrtissti vrt n-lkioinn tulukko, jonk u:s lkio sisältää solmun u ttriuutin/ttriuutit Jtkon joik-nlyysissä olttn, ttä solmuttriuuttin lukminn j sttminn voin thä vkiojss Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 22 / 55

Lvyshku Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 23 / 55

Lvyshku Myös nimllä lvyssuuntinn läpikäynti (nl. rth-irst srh, BFS) Thoks vrkonläpikäyntiloritmi, jok löytää nntull lähtösolmull s kikki solmut, jotk voin svutt lkn solmust s, skä (rään) lyhimmän polun solmust s kuhunkin näistä In on loitt lähtösolmust s j käyä läpi kikki siitä lähtvät krt. Npurist n, joiss i ol vilä viriltu, littn FIFO-jonokurin omvn jonon loppuun. Solmuj ottn jonost yksi krrlln j näin npurit käsitllään smll tvll. Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 24 / 55

Aloritmin suorituksn ikn jokinn solmu on värittty vlkoisksi jos sitä i ol vilä svutttu, hrmksi, jos s on svutttu mutt siitä lähtviä kri i ol vilä käyty läpi mustksi, jos s on jo svutttu j kikki siitä lähtvät krt on myös käsitlty Lisäksi jokisn solmuun t liittään ttriuuttin täisyys li lyhimmän polun pituus solmust s solmuun t j ltäjäsolmu, jok on yhllä lyhimmällä polull solmust s solmuun t s solmu, jok on nnn solmu t Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 25 / 55

Psuokooin Brth-irst-srh(G, s): or h vrtx v V \ {s}: // Initiliz olors, istns n prssors v.olor WHITE v.ist v.pr NIL Q /0 // Q is FIFO-quu s.olor GRAY // Initiliz th sour vrtx s to ry s.ist 0 s.pr NIL nquu(q, s) whil Q is not mpty: u quu(q) // Tk th rlist ry vrtx rom th quu or h v with {u,v} E: // Trvrs h rom it i v.olor = WHITE: // Th nihour v hs not yt n visit? v.olor GRAY // Color it ry v.ist u.ist + // Stor th istn v.pr u // An th pth rom th sour nquu(q, v) // Put it t th n o th quu u.olor := BLACK // All s rom u trvrs Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 26 / 55

Esimrkki Lvyshku suuntmttomss vrkoss, joss on kksi yhtnäistä komponntti. Lähtösolmu on Jokisss vrkoss ll on sittty solmujn värit, täisyys solmust j ltäjäsolmu. Vrkot kuvvt tilntit whil-silmukn suorituskrtojn luss skä loritmin lopuss (viiminn vrkko). Kunkin solmun krt on käyty läpi milivltisss järjstyksssä 2 2 0 0 0 0 2 2 2 3 3 0 0 0 Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 27 / 55

Suunntuill vrkoill vihtn vin rivi or h v with {u,v} E riviksi or h v with (u,v) E Esimrkki Lvyshku suunntull vrkoll Lähtvät krt käyään ts läpi milivltisss järjstyksssä 2 0 0 0 0 2 2 2 3 3 0 0 0 Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 28 / 55

Aloritmin suorituksn lopuss solmu on must jos s on svutttviss lähtösolmust vlkoinn jos sitä i voi svutt lähtösolmust Lisäksi jokisll mustll solmull täisyysttriuutti krtoo lyhimpin polkujn pituun lähtösolmust tähän solmuun j surmll ltäjäsolmuj tkspäin sn slvill yksi lyhin polku lähtösolmust ko. solmuun Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 29 / 55

Phimmn tpuksn joik-nlyysiä: Jokinn solmu littn jonoon krrn Jokinn kri käyään läpi kksi krt suuntmttomill vrkoill; krrn kummnkin krn pään muuttuss hrmst mustksi krrn suunntuill vrkoill kun krn lähtösolmu muuttuu hrmst mustksi Solmujn littminn jonoon j poistminn jonost on vkioikist loritmin joik on O( V + E ) Suuntmttomin vrkkojn yhtnäistn komponnttin löytäminn on hlppo j thokst lvyshun vull Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 30 / 55

Syvyyshku Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 3 / 55

Syvyyshku Myös nimllä syvyyssuuntinn läpikäynti (nl. pth-irst srh, DFS) Toinn systmttinn tp käyä vrkkoj läpi Löytää myös kikki lähtösolmust svutttvt solmut Ei kuitnkn tuot lyhimpiä polkuj ti täisyyksiä Mutt löytää vrkost rknntt, jot voin hyöyntää muiss loritmiss I (supp prusvrsio): Aloittn virilmn solmuiss lähtösolmust lkn Virilln rkursiivissti nykyisn viriltvn solmun vlkoisiss npuriss Kun solmuss virilu lk, värjätään s hrmksi Kun kikiss sn npuriss on viriltu, värjätään solmu mustksi Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 32 / 55

Psuokooin Dpth-irst-srh(G, s): or h vrtx v V : v.olor WHITE v.pr NIL visit(u): u.olor GRAY or h v with {u,v} E: i v.olor = WHITE: v.pr u visit(v) u.olor BLACK visit(s) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 33 / 55

Esimrkki Syvyyshku suuntmttomss vrkoss Kuvt ll näyttävät tilntn jokisn visit-kutsun luss (viriltu solmu u on piirrtty sinisllä) j tilntn loritmin lopuss (viiminn kuv) Solmun npurit on käyty läpi milivltisss järjstyksssä Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 34 / 55

Suunntull vrkoll vihtn vin jälln rivi or h v with {u,v} E riviksi or h v with (u,v) E Esimrkki Syvyyshku suunntuss vrkoss Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 35 / 55

Phimmn tpuksn joik-nlyysiä: Jokisss solmuss virilln krrn (solmun tul oll vlkoinn, jott siinä viriltisiin j s muuttn hti virilun luss hrmksi) Kun solmuss virilln, jokinn siitä lähtvä kri käyään läpi loritmi toimii jss O( V + E ) Jälln surmll ltäjäsolmujn ttriuuttj tkspäin löytään polku lähtösolmust ko. solmuun. Polku i kuitnkn ol välttämättä lyhin mhollinn. Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 36 / 55

Ljnnttu vrsio Ljnntn prusvrsiot lisäämällä jokisn solmuun kksi uutt viriluiklim-ttriuutti: loitusiklim krtoo jnhtkn, jolloin solmuss virilu loitttiin (solmu värjättiin hrmksi), j loptusiklim krtoo jnhtkn, jolloin virilu loptttiin (solmu värjättiin mustksi) Aiklimt ovt ksvvi kokonislukuj lkn luvust Aiklimojn lisäksi ljnntn loritmi niin, ttä i ol yhtä lähtösolmu vn ottn (milivltissti ti jollin strtill) uusi lähtösolmuj niin kun kunns kikiss solmuiss on viriltu Ei löytä nää vin yhstä solmust svutttvi solmuj vn myös vrkon rknntt Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 37 / 55

Psuokooin Dpth-irst-srh(G = (V, E)): or h vrtx v V : v.olor WHITE v.pr NIL tim 0 visit(u): // Innr rursiv untion or trvrsin vrtis tim tim + u.strt = tim u.olor GRAY or h v with {u,v} E: // (u,v) E or irt rphs i v.olor = WHITE: v.pr u visit(v) u.olor BLACK tim tim + u.inish = tim or h vrtx u V : i u.olor = WHITE: visit(u) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 38 / 55

Esimrkki Trkstlln oikll näkyvää suunnttu vrkko Ossyvyyshut (visit-unktion kutsut pääloritmin viimisllä rivillä) loitttu solmuist kkosjärjstyksssä Solmujn krt käyty läpi milivltisss järjstyksssä Eltäjäsolmuist tulvt krt mrkitty sinisllä Suunnttu vrkko: 3/6 2/9 /0 /6 y z s t x w v u 4/5 7/8 2/3 4/5 Sm rilill piirrttynä: /0 /6 s t Solmun virinn pri / krtoo solmun loitus- j loptusiklimt j 3/6 y 2/9 z w 7/8 v 2/3 u 4/5 4/5 x Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 39 / 55

Eltäjäsolmuist tulvt krt muoostvt syvyyshkumtsän 2 Formlisti tämä on livrkko G pr = (V,E pr ), missä E pr = {(u.pr,u) u V j u.pr NIL} Syvyyhkumtsä voi koostu usst syvyyshkupuust 3, joist jokisn juuri on ossyvyyshun nsimmäisksi viriltu solmu Syvyyshkumtsä vrkoll i ol yksikäsittinn vn riippuu syvyyshun suoritusjärjstyksstä Trkstlln solmuun u liitttyjn iklimojn muoostm ikväliä [u.strt, u.inish] Khn ri solmun u j v ikvälill pät yksi survist: [u.strt,u.inish] j [v.strt,v.inish] ivät likk toisin [u.strt,u.inish] on kokonn välin [v.strt,v.inish] sisällä [v.strt,v.inish] on kokonn välin [u.strt,u.inish] sisällä 2 myös nimllä syvyyssuuntinn mtsä 3 myös nimllä syvyyssuuntispuu Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 40 / 55

Esimrkki Trkstlln oikll näkyvää suunnttu vrkko Syvyyshkumtsän krt on korostttu sinisllä Suunnttu vrkko: 3/6 2/9 y z /0 /6 s t Solmut z, y, x j w voin svutt solmust s syvyyshkumtsässä j niin ikvälit ovt solmun s ikvälin sisällä Solmujn t, v j u, jotk kuuluvt ri puuhun kuin s syvyyshkumtsässä, ikvälit ivät likk solmun s ikvälin knss x w v 4/5 7/8 2/3 Sm rilill piirrttynä: /0 /6 s t 2/9 z v 2/3 3/6 y w 7/8 u 4/5 u 4/5 4/5 x Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 4 / 55

Olttn, ttä olln thty syvyyshku suunntull vrkoll Voin luokitll krt hun tuloksn suhtn Puukrt (nl. tr s) ovt syvyyshkupuuhun kuuluvt krt Tkutuvt krt (nl. k s) ovt kri, jotk johtvt solmust johonkin sn syvyyshkupuun ltäjäsolmuun (tämä sisältää silmukkkrt) Etnvät krt (nl. orwr s) ovt kri, jotk johtvt solmust johonkin sn syvyyshkupuun jälkläissolmuun Poikittiskrt (nl. ross s) koostuvt lopuist krist Suuntmttomill vrkoill tkutuvt j tnvät krt käsittään ylnsä smn sin j poikittiskri i ol Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 42 / 55

Esimrkki Trkstlln oikll näkyvää suunnttu vrkko j sn syvyyshku Puukrt on korostttu sinisllä Suunnttu vrkko: 3/6 2/9 y z /0 /6 s t Tkutuvt krt ovt: (x,z) j (u,t) Etnvät krt ovt: (s,w) Poikittiskrt ovt: (u,v), (v,s), (v,w) j (w,x) x w v 4/5 7/8 2/3 Sm rilill piirrttynä: /0 /6 s t 2/9 z v 2/3 u 4/5 u 4/5 3/6 y w 7/8 4/5 x Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 43 / 55

Os krityypistä on hlppo tunnist syvyyshun ikn Jos visit(u) -kutsuss trkstlln krt (u,v) E, niin kri on puukri jos v on vlkoinn tkutuv kri jos v on hrm j tnvä ti poikittiskri jos v on must Suunnttu vrkko on syklitön jos j vin jos syvyyshkumtsä i sisällä tkutuvi kri suunntun vrkon syklittömyys voin tunnist jss O( V + E ) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 44 / 55

Topoloinn järjstäminn Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 45 / 55

Suunntun syklittömän vrkon (V, E) topoloinn järjstys on linrinn järjstys solmujoukoll V niin, ttä jokisll krll (u,v) E sn lähtösolmu u on järjstyksssä nnn tulosolmu v Slvästi tälläist järjstystä i voi muoost suunntuill vrkoill, joiss on sykljä, ikä niitä voi siis järjstää topoloissti Esimrkki Trkstlln jälln oikll olv suunnttu syklitöntä vrkko pnts trousrs ti unrshirt shirt ht Topoloisi järjstyksiä sill ovt mm. wth lt soks jkt shos pnts,unrshirt,trousrs,shirt,lt,ti,soks,shos,wth,jkt,ht 2 wth,pnts,soks,trousrs,shos,lt,unrshirt,ht,shirt,ti,jkt Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 46 / 55

Topoloinn järjstys voin lsk syvyyshku käyttämällä: suorittn syvyyshku vrkoll muutn normlisti mutt kun solmun läpikäynti on vlmis (s värittään mustksi), niin lisätään s tuloksn tllttvn linkittyn listn lkuun koko hun lopuss pluttn rknnttu list Aloritmin oikllisuun prusi on surv: kun solmu värittään mustksi syklittömässä vrkoss, niin kikki siitä svutttvt solmut on jo immin värittty mustiksi j tätn sn jälkn rknnttvss topoloisss järjstyksssä Syklittömissä vrkoiss solmust svutttvt solmut ivät voi oll hrmit kosk n olisivt tällöin syvyyshun rkursiopinoss (hkupolull) j tätn trkstltvn solmun ltäjiä: vrkoss olisi tällöin sykli Topoloinn järjstäminn voin siis thä jss O( V + E ) kosk yllä kuvttu loritmi on syvyyshun vrintti Muitkin loritmj on (sim. tämä wikipi-sivu) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 47 / 55

Esimrkki Trkstlln jälln oikll olv vrkko Solmujn virn on kirjttu rään syvyyshun iklimt [9,20] pnts unrshirt [,0] [,6] trousrs [5,6] ti shirt [2,7] ht [8,9] wth [2,3] lt soks [7,8] [2,22] jkt [3,4] shos [4,5] Tämän syvyyshun synnyttämä topoloinn järjstys on wth,pnts,soks,trousrs,shos,lt,unrshirt,ht,shirt,ti,jkt Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 48 / 55

Vhvsti yhtnäist komponntit Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 49 / 55

Vhvsti yhtnäistn komponnttin tsiminn voin myös thä syvyyshun vull Suunntun vrkon G = (V, E) vhvsti yhtnäinn komponntti (nl. stronly onnt omponnt, SCC) on mksimlinn osjoukko C V jonk kikill solmuill u,v C pät, ttä solmu v on svutttviss solmust u j solmu u on svutttviss solmust v Tätn jokinn vrkon sykli on jonkin vhvsti yhtnäisn komponntin sisällä Jokinn solmu, jok i kuulu yhtnkään sykliin, muoost omn yksikkökomponnttins Esimrkki Trkstlln oikll olv vrkko y z s t Sn vhvsti yhtnäist komponntit ovt {s}, {t,u}, {v} j {w,x,y,z} x w v u Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 50 / 55

Suunntun vrkon G komponnttivrkko G SCC = (V SCC,E SCC ) on suunnttu vrkko, jonk solmujoukko V SCC koostuu vrkon G vhvsti yhtnäisistä komponntist, j joss on kri (C,C ) V SCC komponnttisolmust C toisn komponnttisolmuun C, C C, jos (u,v) on kri vrkoss G joillkin solmuill u C j v C Komponnttivrkko on syklitön. Miksi? Esimrkki Trkstlln llisn simrkin vrkko y z s t Sn komponnttivrkko on kuvttu oikll ll x w v u {s} {w, x, y, z} {t, u} {v} Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 5 / 55

Komponnttin lskminn Suunntun vrkon G = (V, E) vhvsti yhtnäistn komponnttin lskmisn linrisss, li O( V + E ), jss on moni loritmj (sim. tämä wikipi-sivu) Survss sittään vrsio Kosrjun loritmist S käyttää syvyyshku khsti: Thään syvyyshku vrkoll, jott sn sill viriluiklimt 2 Thään vrkon G = (V,E) trnspoosi G T kääntämällä krtn suunnt: G T = (V,E T ), missä E T = {(u,v) (v,u) E} 3 Thään syvyyshku trnspoosivrkoll G T mutt loittn oshut solmuist kääntisssä järjstyksssä suhtss nsimmäisn syvyyshun loptusiklimoihin Vhvsti yhtnäist komponntit sn nyt jälkimmäisn syvyyshun syvyyshkumtsistä Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 52 / 55

Trkstlln oiknpuolist vrkko 3/6 2/9 y z /0 /6 s t Sn vhvsti yhtnäist komponntit ovt {s}, {t,u}, {v} j {w,x,y,z} Kuvss on sittty myös rään syvyyshun iklimt j syvyyshkumtsän krt Vrkon trnspoosi on kuvttu oikll x 4/5 y w 7/8 z v 2/3 s u 4/5 t Huom, ttä vhvsti yhtnäist komponntit ovt smoj x w v u... j ttä komponnttivrkko on jälln syklitön j lkupräisn vrkon komponnttivrkon trnspoosi Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 53 / 55

Oiknpuolistn vrkkojn nnottiot kuvvt nsimmäisn syvyyshun loptusiklimojn mukn kääntisssä järjstyksssä thtyä syvyyshku trnspoosivrkoll Solmust t lkv oshku löytää komponntin {t, u} Solmust v lkv oshku komponntin {v} Syvyyshku trnspoosivrkoll /2 9/6 7/8 /4 y z s t x w v u 3/4 0/5 5/6 2/3 Sm ri lill piirrttynä: /4 5/6 7/8 9/6 t v s z Solmust s lkv oshku komponntin {s} u 2/3 x 3/4 Solmust z lkv oshku komponntin {w,x,y,z} y /2 0/5 w Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 54 / 55

Miksi tämä loritmi toimii oikin? I (toistus sittty kirjss): Ensimmäinn syvyyshku tuott loptusiklimoissn kääntisn topoloisn järjstyksn komponnttivrkon solmuill Vrkon trnspoosin komponnttivrkko on vrkon komponnttivrkon trnspoosi Toinn syvyyshku trnspoosill käy siis trnspoosin komponntit läpi inuktiivissti lkn komponntist, joist i ol kri toisiin trnspoosin komponnttivrkoss j 2 tämän jälkn käsitlln komponntin vin jos sn kikki surjkomponntit on jo käsitlty Vin komponnttin sisäist krt tulvt mukn syvyyshkumtsään (krt surjkomponnttihin ovt poikittiskri) Tommi Junttil (Alto Univrsity) Kirros 7 CS-A40 / Autumn 207 55 / 55