CS-A1140 Tietorakenteet ja algoritmit

Samankaltaiset tiedostot
Kierros 7: Verkkoalgoritmeja (osa I)

CS-A1140 Tietorakenteet ja algoritmit

Kierros 8: Verkkoalgoritmeja (osa II)

S Laskennallinen systeemibiologia

12. Liikenteenhallinta verkkotasolla

Kuvausta f sanotaan tällöin isomorfismiksi.

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

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

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

Pakkauksen sisältö: Sire e ni

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

13 Lyhimmät painotetut polut

1.3 Toispuoleiset ja epäoleelliset raja-arvot

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

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

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

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

Johdatus graafiteoriaan

Pythagoraan lause. Pythagoras Samoslainen. Pythagoraan lause

3 Integraali ja derivaatta

Sähkömagneettinen induktio

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

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

Algoritmit 1. Luento 9 Ti Timo Männikkö

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

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

TIE Tietorakenteet ja algoritmit 261

Diskreetin matematiikan perusteet Ratkaisut 4 / vko 11

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

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

YHDYSKUNTALAUTAKUNTA TALOUSARVIOEHDOTUS 2018 TALOUSSUUNNITELMA

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

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

Variations on the Black-Scholes Model

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

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

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

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

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

Riemannin integraalista

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2015

Sinilause ja kosinilause

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

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

LINSSI- JA PEILITYÖ TEORIAA. I Geometrisen optiikan perusaksioomat

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

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

Polynomien laskutoimitukset

Jäykän kappaleen tasokinetiikka harjoitustehtäviä

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

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

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

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

Tampereen teknillinen yliopisto hum Konstruktiotekniikan laitos. MEC-2430 Elementtimenetelmän perusteet. Luento vk 1 Syksy 2012.

Graafinen ohjeisto. Julkis- ja yksityisalojen toimihenkilöliitto Jyty

VEKTOREILLA LASKEMINEN

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

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

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

SARJAT JA DIFFERENTIAALIYHTÄLÖT Funktiojonot 1

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

Riemannin integraali

Asentajan ja käyttäjän viiteopas

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

Lämmönsiirto (ei tenttialuetta)

Asentajan ja käyttäjän viiteopas

2.2 Automaattien minimointi

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

ILMAILUHALLINTO LUFTFARTSFÖRVALTNINGEN FINNISH CIVIL AVIATION AUTHORITY

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

Lyhyt johdatus joukko-oppiin ja relaatioihin

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

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

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

AUTOMAATTIEN SYNKRONISAATIOSTA

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

Preliminäärikoe Pitkä Matematiikka

Malliratkaisut Demot

3.7. Rekursiivisista lukujonoista

6 Hypertekstin rakenne ja navigointi

3 Mallipohjainen testaus ja samoilutestaus

Kognitiivinen mallintaminen I, kevät Harjoitus 1. Joukko-oppia. MMIL, luvut 1-3 Ratkaisuehdotuksia, MP

Laskennan mallit Erilliskoe , ratkaisuja (Jyrki Kivinen)

Forssan kaupunki Osavuosikatsaus YHDYSKUNTAPALVELUT. Arviointik r iteeri tr mittarit ja tavoitetaso ja t a v o i t e t a s o

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

SATE1050 Piirianalyysi II syksy kevät / 8 Laskuharjoitus 12 / Siirtojohdot taajuusalueessa, ketjumatriisi

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

Transkriptio:

CS-A40 Titorkntt j loritmit Kirros 7: Vrkkoloritmj (os I) Tommi Junttil Alto-yliopisto Prustitin korkkoulu Titotkniikn litos Syksy 206

Sisältö: Vrkot Vrkkojn sitystpoj Lvyshku Syvyyshku Topoloinn järjstäminn Vhvsti yhtnäist komponntit 2/55

Mtrili kirjss Introution to Alorithms, 3r. (onlin vi Alto li): Linkkjä: Kpplt 22. 22.4 MIT 6.006 OCW vio on rth-irst srh MIT 6.006 OCW vio on pth-irst srh n topoloil sort 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ä 4/55

Os intrntistä vuonn 2005: (kuv: Mtt Britt, Crtiv Commons-lisnssi, läh) 5/55

Euroopn E-titä: (kuv: puli omin, läh) 6/55

Mtmttisi prusmäärittlyjä 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 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 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 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ä /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 (,,) 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 jkt ti unrshirt shirt soks 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 ht 3/55

Vrkkojn sitysmuotoj 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 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 32 n2 -lkioisn tulukkon 32-ittisiä kokonislukuj); lkion 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 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+) kuvutuvt luvuill survsti: ( 0 2 3 4 5 6 2 +(6 2 ) = 4 3+3 = 4 kun nimt ) 7/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 9/55

Esimrkki: Suunnttu vrkko j sn npuruuslistsitys vilä 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 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 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 22/55

Lvyshku 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. 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 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 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 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 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 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 30/55

Syvyyshku 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 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) 33/55

34/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ä

35/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

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. 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 vrkon rknntt 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) 38/55

Esimrkki: Trkstlln oikll näkyvää suunnttu vrkko Suunnttu vrkko: 3/6 2/9 y z /0 /6 s t 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ä Solmun virinn pri / krtoo solmun loitus- j loptusiklimt j 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 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 40/55

Esimrkki: Trkstlln oikll näkyvää suunnttu vrkko Suunnttu vrkko: 3/6 2/9 y z /0 /6 s t Syvyyshkumtsän krt on korostttu sinisllä Solmut z, y, x j w voin svutt solmust s syvyyshkumtsässä j niin ikvälit ovt solmun s ikvälin sisällä x w v 4/5 7/8 2/3 Sm rilill piirrttynä: /0 /6 s t u 4/5 Solmujn t, v j u, jotk kuuluvt ri puuhun kuin s syvyyshkumtsässä, ikvälit ivät likk solmun s ikvälin knss 3/6 y 2/9 z w 7/8 v 2/3 u 4/5 4/5 x 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 42/55

Esimrkki: Trkstlln oikll näkyvää suunnttu vrkko j sn syvyyshku Suunnttu vrkko: 3/6 2/9 y z /0 /6 s t Puukrt on korostttu sinisllä 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 3/6 y w 7/8 u 4/5 u 4/5 4/5 x 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 ) 44/55

Topoloinn järjstäminn 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 Topoloisi järjstyksiä sill ovt mm. wth pnts trousrs jkt ti unrshirt shirt shos. pnts,unrshirt,trousrs,shirt,lt,ti,soks,shos,wth,jkt,ht lt soks ht 2. wth,pnts,soks,trousrs,shos,lt,unrshirt,ht,shirt,ti,jkt 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) 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 48/55

Vhvsti yhtnäist komponntit 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 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 komponttisolmust 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 Sn komponnttivrkko on kuvttu oikll {w, x, y, z} {s} {v} {t, u} 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ä 52/55

Esimrkki: 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} x 4/5 w 7/8 v 2/3 u 4/5 Kuvss on sittty myös rään syvyyshun iklimt j syvyyshkumtsän krt Vrkon trnspoosi on kuvttu oikll y z s 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 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} 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 v lkv oshku komponntin {v} Solmust s lkv oshku komponntin {s} Solmust z lkv oshku komponntin {w,x,y,z} u 2/3 x 3/4 y /2 0/5 w 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) 55/55