Kierros 8: Verkkoalgoritmeja (osa II)

Samankaltaiset tiedostot
CS-A1140 Tietorakenteet ja algoritmit

Kierros 7: Verkkoalgoritmeja (osa I)

S Laskennallinen systeemibiologia

CS-A1140 Tietorakenteet ja algoritmit

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

12. Liikenteenhallinta verkkotasolla

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

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

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

Kuvausta f sanotaan tällöin isomorfismiksi.

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

Diskreetin matematiikan perusteet Laskuharjoitus 6 / vko 13

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

ELEC-E8419 tentti joulukuu 2016

3 Integraali ja derivaatta

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

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

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

13 Lyhimmät painotetut polut

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

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

Riemannin integraalista

A-Osio. Valitse seuraavista kolmesta tehtävästä kaksi, joihin vastaat. A-osiossa ei saa käyttää laskinta.

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

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

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

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

Preliminäärikoe Pitkä Matematiikka

Lämmönsiirto (ei tenttialuetta)

11. MÄÄRÄTTY INTEGRAALI JA TILAVUUS

12. Liikenteenhallinta verkkotasolla

Algoritmi on periaatteellisella tasolla seuraava:

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

6 Integraalilaskentaa

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

Diskreetin matematiikan perusteet Ratkaisut 4 / vko 11

12. Liikenteenhallinta verkkotasolla

Olkoon. M = (Q, Σ, δ, q 0, F)

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

Laskennan mallit Erilliskoe , ratkaisuja (Jyrki Kivinen)

Sähkömagneettinen induktio

HAVAINNOINTI JA TUTKIMINEN

2.2 Automaattien minimointi

2.4 Pienimmän neliösumman menetelmä

ICS-C2000 Tietojenkäsittelyteoria Kevät 2015

VEKTOREILLA LASKEMINEN

Kertaustehtävien ratkaisut

Olkoon. äärellinen automaatti. Laajennetaan M:n siirtymäfunktio yksittäisistä syötemerkeistä merkkijonoihin: jos q Q, x Σ, merkitään

Algoritmit 1. Luento 13 Ti Timo Männikkö

exp(x) = e x x n n=0 v(x, y) = e x sin y

Tehtävä 1. Jatka loogisesti oheisia jonoja kahdella seuraavaksi tulevalla termillä. Perustele vastauksesi

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

R4 Harjoitustehtävien ratkaisut

x k 1 Riemannin summien käyttö integraalin approksimointiin ei ole erityisen tehokasta; jatkuvasti derivoituvalle funktiolle f virhe b

1. Derivaatan Testi. Jos funktio f on jatkuva avoimella välillä ]a, b[ ja x 0 ]a, b[ on kriit. tai singul. piste niin. { f (x) > 0, x ]a, x 0 [

1.3 Toispuoleiset ja epäoleelliset raja-arvot

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

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

10. MÄÄRÄTYN INTEGRAALIN KÄYTTÖ ERÄIDEN PINTA-ALOJEN LASKEMISESSA

Johdatus graafiteoriaan

Algoritmit 1. Luento 8 Ke Timo Männikkö

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 7: Integraali ja analyysin peruslause

Kieli, merkitys ja logiikka, kevät 2011 HY, Kognitiotiede. Vastaukset 2.

Suorakaidekanavat. lindab suorakaidekanavat

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

Differentiaali- ja integraalilaskenta 1 (CHEM) Laskuharjoitus 4 / vko 47, mallivastaukset

7.lk matematiikka. Geometria 1

Pythagoraan lause. Pythagoras Samoslainen. Pythagoraan lause

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

Painopiste. josta edelleen. x i m i. (1) m L A TEX 1 ( ) x 1... x k µ x k+1... x n. m 1 g... m n g. Kuva 1. i=1. i=k+1. i=1

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

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

Algoritmit 2. Luento 11 Ti Timo Männikkö

Suorat, käyrät ja kaarevuus

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Asentajan ja käyttäjän viiteopas

ILMAILUHALLINTO LUFTFARTSFÖRVALTNINGEN FINNISH CIVIL AVIATION AUTHORITY

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

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

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

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

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Rekursioyhtälön ratkaisutapa #1: iteratiivinen korvaus

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

Pienin virittävä puu (minimum spanning tree)

OUML7421B3003. Jänniteohjattu venttiilimoottori KÄYTTÖKOHTEET TEKNISET TIEDOT OMINAISUUDET SOPIVAT VENTTIILIT TUOTETIEDOT. i OUV5049 i OUV5050

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

MS-A010{2,3,4,5} (SCI,ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 7: Integraali ja analyysin peruslause

VEKTOREILLA LASKEMINEN

Numeeriset menetelmät TIEA381. Luento 9. Kirsi Valjus. Jyväskylän yliopisto. Luento 9 () Numeeriset menetelmät / 29

Juuri 10 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Transkriptio:

Kirros 8: Vrkkolgoritmj (os II) Tommi Junttil Alto Univrsity Shool o Sin Dprtmnt o Computr Sin CS-A11 Dt Struturs n Algorithms Autumn 1 Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Aiht: Pinottut vrkot Minimlist virittävät puut Lyhimmät polut Mtrili kirjss Introution to Algorithms, r. (onlin vi Alto li): Minimlist virittävät puut: Luku Lyhimmät polut: Luku Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Linkkjä: MIT. OCW vio on singl-sour shortst pths MIT. OCW vio on Dijkstr s lgorithm MIT. OCW vio on Bllmn-For Krusklin lgoritmin visulisointi Primin lgoritmin visulisointi Dijkstrn lgoritmin visulisointi Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Pinottut vrkot Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Monss sovlluksss vrkon kriin liittyy jokin numrinn pino, pituus, kustnnus tms Esimrkiksi tistöä kuvvss vrkoss solmut ovt tin ristyksiä j päätpistitä, krt ovt näitä yhistäviä titä j jokisn krn on lisätty kysisn tin pituus (täisyys pistin välillä) Sosilist vrkosto kuvvss vrkoss krin pinot voisivt krto simrkiksi sn, kuink mont vistiä solmuihin liittyt hnkilöt ovt vihtnt ksknään viimisn kuukun ikn Mtmttisss trkstluss kutsutn kriin liitttyjä numrisi rvoj pinoiksi Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Pinotttu suuntmton vrkko on kolmikko (V, E, w), missä V on joukko solmuj, E on joukko kri solmujn välillä li joukko -osjoukkoj muoto {u, v} sitn, ttä u,v V j u v, j w : E R liittää jokisn krn pinon. Esimrkki Oikll on kuvttu vrkko (V,E,w), missä solmut ovt V = {,,,,,,g} j krt ovt E = {{,},{,},{,},{,}, {,},{,},{,},{,},{,g},{,}}. Pinot ts ovt w({,}) =, w({,}) = jn g Pinottut suunntut vrkot määritllään smll tvll pitsi ttä krt ovt prj muoto (u,v) V V ivn kutn pinottmttomin suunnttujn vrkkojn tpuksss (ks. llinn kirros) Polut, syklit j puut määritllään smoin kuin pinottmttomill vrkoill Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Minimlist virittävät puut Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Trkstlln yhtnäistä pinotttu suuntmtont vrkko G = (V, E, w) Vrkon G virittävä puu on yhtnäinn syklitön vrkko T = (V, A, w) missä A E. Puun pino on siinä siintyvin krtn yhtnlskttu pino {u,v} A w({u,v}). Vrkon G virittävä puu on minimlinn (ngl. minimum spnning tr, MST) jos sn pino on pinin kikist vrkon virittävistä puist Vrkoll voi oll usit minimlisi virittäviä puit Esimrkki Trkstlln vsmmnpuolist vrkko. Korosttut krt khss muuss vrkoss kuvvt kht vrkon virittävää puut. Kskimmäisn puun pino on 1 j s i ol minimlinn. Oiknpuolisn pino on j s on minimlinn. g g g Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 8 / 1

Sovllussimrkkinä voisi oll vrkko, jok kuv piirilvyä: solmut ovt komponnttj j krt kuvvt tpoj yhistää kksi komponntti virt- ti kllosignlijohotuksll. Vrkon minimlinn virittävä puu kuv nyt tvn yhistää kikki komponntit toisiins pinimmällä määrällä johotust. Trkstlln vin yhtnäisiä vrkkoj: i-yhtnäisill vrkoill voitisiin lsk pinimmät virittävät puut jokisll komponntill riksn Trkstlln myöskin vin suuntmttomi vrkkoj: suunntuill vrkoill virittävää puit vstv käsit on nimltään optimlinn hrutuminn (ngl. spnning rorsn o minimum wight, optiml rnhing), ktso sim. tämä wikipi-sivu koskin Emonin lgoritmi. Nämä käsittt ivät kuulu kurssin sisältöön. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Ylinn hn rtkisu virittävin puin löytämisksi Vrkoll voi oll ksponntilinn määrä virittäviä puit Niinpä niin läpikäyminn minimlisn löytämisksi i ol thoks lähstymistp Minimlisn virittävän puun löytämisksi on myös rittäin thokkit lgoritmj Krusklin lgoritmi Primin lgoritmi Molmmt ovt hnit lgoritmj (ks. kirros ) N muoostvt puun loittmll tyhjästä krijoukost j lisäävät siihn kri hnsti kunns krt muoostvt minimlisn virittävän puun Tämän krijoukon A rkntmisn ikn pitään voimss surv invrintti li ominisuus: Kooin uloimmisn silmukn luss A on jonkin minimlisn virittävän puun krin osjoukko Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Invrintin voimsspitämisksi lgoritmin lisäävät krijoukkoon A vin turvllisi kri (ngl. s g or A) li kri {u,v} / A, joill pät, ttä A {{u, v}} on myös jonkin minimlisn virittävän puun krtn osjoukko Ainkin yksi turvllinn kri löytyy in kunns A on virittävä puu: kosk A on jonkin minimlisn virittävän puun krtn osjoukko, ko. puust löytyy yksi kri, jok i ol joukoss A Trkstltvt hnt lgoritmit käyttävät ri huristiikk tällisn turvllisn krn thokksn löytämisn Ylinn vrsio psuokooin: MST-Gnri(G = (V,E,w)): A / // Th gs in th MST whil A os not orm spnning tr: lt {u,v} s g or A A A {{u,v}} rturn A Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 11 / 1

Nyt pitää nää khittää (ylinn) tp löytää turvllisi kri thokksti Vrkon G = (V,E,w) likkus on solmujoukon V ositus (S,V \ S) Kri ylittää likkuksn (S, V \ S) jos sn toinn päätpist on joukoss S j toinn V \ S Likkuksn ylittävä kri on kvyt jos sn pino on pinin kikist likkuksn ylittävistä krist Esimrkki Trkstlln oikll näkyvää vrkko Likkus ({,,},{,,,g}) on sittty punisll ktkoviivll Krt {, }, {, } j {, } ylittävät likkuksn Näistä kvyitä ovt {,} j {,} g Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Surv torm trjo hnill lgoritmill tvn löytää surv turvllinn kri Sn prustll voin ott mikä thns likkus, jok i hlkis jo muoostttu osittist virittävää puut j vlit sn ylittävistä krist jokin pinimmän pinon omv kri lisättäväksi puuhun Trvitn yksi lisämäärittly: likkus (S, V \ S) on yhtnsopiv krijoukon A E knss jos mikään joukon A kri i ylitä likkust Torm Olkoot G = (V, E, w) yhtnäinn, pinotttu j suuntmton vrkko. Jos A on jonkin vrkon minimlisn virittävän puun krtn osjoukko, (S, V \ S) on krijoukon A knss yhtnsopiv vrkon likkus j {u, v} on likkuksn ylittävä kvyt kri, niin tällöin {u, v} on turvllinn kri lisättäväksi joukkoon A. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Esimrkki Trkstlln oikll olv vrkko Likkus ({,,},{,,,g}) on kuvttu punisll ktkoviivll Krt {,}, {,} j {,} ylittävät likkuksn g Kvyt likkuksn ylittävät krt ovt {, } j {, } Tkillä olvn minimlisn virittävän puun krijoukko A on sittty korostttun Nämä krt ovt tosin rään minimlisn virittävän puun krtn osjoukko Likkus on yhtnsopiv krijoukon knss Tormn mukn krijoukkoon voin lisätä kumpi thns (mutti molmpi!) kvyistä krist j tuloksn on krijoukko, jok on myös rään minimlisn virittävän puun krtn osjoukko Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Toistus Olkoon A jonkin sllisn minimlisn virityspuun T krtn joukko, joll pät A A. Jos kri {u,v} A, niin s on turvllinn j toistus on vlmis. Olttn siis, ttä {u,v} / A j ttä u S j v V \ S. Krijoukoss A on yksi yksinkrtinn polku solmust u solmuun v kosk kysssä on puu. Olkoot y nsimmäinn solmu polull, jok kuuluu joukkoon V \ S j x tämän ltäjä polull, jok siis kuuluu vilä joukkoon S. Kri {x, y} i kuulu joukkoon A kosk likkus on yhtnsopiv joukon knss. Kosk kri {u, v} on kvyt j {x,y} ylittää myös likkuksn, pät w({u,v}) w({x,y}). Trkstlln puut T, jok sn puust T poistmll kri {x,y} (tuloksn on kksi rillistä puut, toinn sisältää solmun u j toinn solmun v) j lisäämällä kri {u,v}. Tämän puun T pino on korkintn puun T pino j kosk T oli minimlinn, myös T on j kri {u,v} on turvllist lisätä joukkoon A. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Krusklin lgoritmi Krusklin lgoritmi löytää survn turvllisn krn survll mnttlyllä: luss kikki krt järjsttään pinon suhtn nousvn järjstyksn j krt käyään läpi tässä järjstyksssä j lisätään kri krijoukkoon A jos s yhistää kksi puut krijoukon kuvmss mtsässä Jott voin nopsti päättää, yhistääkö kri kksi puut, pitään puin solmujoukkoj rillistn joukkojn titorkntss ( union-in, kirros ) Kun kri lisätään, puut yhistyvät yhksi isommksi puuksi j yhisttään puin solmujoukot Likkust i vrsinissti muoostt missään vihss vn kksi puut yhistävän krn {u, v} oslt likkus voisi oll s, joss solmun u sisältävä puu on toisll puolll j kikki muut solmut toisll. Kosk krn pino on pinin niistä, jotk yhistävät kksi puut, kri on kvyt tässä likkuksss. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Psuokooin: MST-Kruskl(Q = (V,E,w)): A / or h vrtx v V : // All vrtis r initilly in thir own unit sts MAKE-SET(v) sort th gs E into nonrsing orr y thir wight or h g {u, v} E in nonrsing wight-orr: i FIND-SET(u) FIND-SET(v): // Ar u n v in irnt sts? A A {{u,v}} // Ror th mrg g UNION(u, v) // Mrg th sts rturn A Algoritmin phimmn tpuksn jojksi sn O( E log E ) jos totuttn rillistn joukkojn oprtiot kirroksn tspinottuill rillistn joukkojn mtsillä krtn järjstäminn on its siss lgoritmin ik vivin os symptoottisss trkstluss Kosk E V j tätn log E log V, voin phimmn tpuksn joik kirjoitt myös muooss O( E log V ) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Esimrkki: Krusklin lgoritmin käyttäminn Trkstlln oiknpuolist vrkko Vrkot ll näyttävät (korosttut krt) muoostttvn virittävän puun jokisn union-oprtion kutsun jälkn Kolmnnn osittisn virittävän puun smisksi toisst likkus voisi oll ({,,,,g},{,}). Krn {,} sijn olisi voitu vlit myös kri {,} j s toisnlinn lopputulos. g g g g g g g Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 18 / 1

Primin lgoritmi Primin lgoritmi on myös hn mutt vlits survn lisättävän krn rilill S pitää yllä krn vlinnn prustlv likkust: nsimmäisllä puolll on koko sn htkinn osittinn virittävä puu j toisll ts puuhun vilä kuulumttomt solmut Algoritmi käynnisttään milivltisst lähtösolmust Jokisll sklll vlitn milivltinn likkuksn ylittävä kvyt kri j tätn sn likkuksn toisll puolll olv solmu yhistyy virittävään puuhun j siirtyy likkuksn nsimmäisn puoln Jott löyttäisiin tällinn kvyt kri nopsti, jokisn likkuksn toisn puoln solmuun on liittty minimiprioritttijonon vimn tito pinimmän pinon omvst krst, jok siihn tul nsimmäisltä puollt Kun solmu siirrtään likkuksn nsimmäisn puoln, sn npurin ttriuuttj päivittään Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Psuokooin: MST-Prim(G = (V,E,w), root): or h vrtx v V : v.ky v.prnt NIL root.ky = Q V // Min-priority quu (w.r.t. th ky) o th vrtis not yt in th MST A / // Th gs in th MST whil Q /: lt u vrtx in Q with th smllst ky rmov u rom Q i u root: A A {{u.prnt,u}} or h vrtx v with n g {u,v} E: i v Q n w({u,v}) < v.ky: v.prnt u v.ky w({u,v}) rturn A Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: Primin lgoritmin käyttäminn Trkstlln oiknpuolist vrkko Vrkot ll näyttävät muoostttvn virittävän puun (korosttut krt) jokisn whil-silmukn kooin suorittmisn jälkn; vihrät solmut ovt likkuksn nsimmäinn puoli li n, jotk ivät ol joukoss Q g g g g g g g g Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Ajoik-nlyysiä: Olttn prioritttijonot tootuttuiksi koill (kirros ) Alustusvih, muknlukin prioritttijonon lustus, voin thä jss O( V ) whil-silmukk jtn V krt kosk yksi solmu poisttn jonost Q jokisll krrll Priorittijonon pinimmän lkion poistminn vi jn O(log V ) Joukko A voin totutt listn ti tulukkon, joss on V 1 lkiot krn lisääminn siihn vi vkiojn Jokist krt trkstlln khsti, krrn kumpkin päätpistttä käsitltässä Solmujn vimi päivittään siis yhtnsä korkintn E krt, jokisn päivityksn vissä jn O(log V ) Kokonisjoik on siis O( V log V + E log V ). Tämä on O( E log V ) kosk E V 1 yhtnäisill vrkoill Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Pini sivupolku: Stinr-puut Kutn llä nähtiin, minimlisi virittäviä puit voin löytää hyvin thokksti Mutt jos thään hyvin pini muutos onglmnkuvuksn, sn onglm, joll i titä mitään lgoritmi, jok toimisi phimmsskin tpuksss thokksti (li polynomisss jss). Its siss uskotn (mutti ol vilä voitu toist), tti sllist thokst lgoritmi ol s olmss. Trkstlln siis minimlistn virittävin puin tsimisn sijn minimlistn Stinr-puin tsimistä Annttun yhtnäinn, pinotttu suuntmton vrkko G = (V, E, w) j päätsolmujn osjoukko S V. Vrkon minimlinn Stinr-puu on syklitön livrkko G = (V,A,w), A E, missä (i) kikki päätsolmut ovt svutttviss toisistn j (ii) jonk krtn kumultiivinn pino {u,v} A w({u,w}) on mhollisimmn pini. Toisin snon tsitään minimlisn pinoist puut, jok yhistää kikki päätsolmut mutt jonk i trvits pittää kikki solmuj Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki Trkstlln ll vsmll olv vrkko, missä vihrät solmut {,, h, k} ovt päätsolmuj. Sn oikll puolll on vrkon Stinr-puu (korosttut krt), jonk pino 1. 1 1 1 1 g 1 1 g h i j 1 k h i j 1 k Virittävin puin j Stinr-puin rovisuun sittämisksi ll olvn vrkon korosttut krt kuvvt smn vrkon minimlisn virittävän puun. 1 1 1 g h i j 1 k Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Sovllussimrkkinä voisi toimi immn piirilvysimrkin muunnos. Nyt päätsolmut kuvvt komponnttj, muut solmut kuvvt piirilvyn muit välipistitä, join kutt johotus voin vtää, j krt kuvvt jälln mhollisuuksi yhistää solmujn kuvmi komponnttj j pistitä johotuksll Nyt thotn löytää minimlinn Stinr-puu virittävän puun sijn kosk thotn vin yhistää komponntit toisiins, mhollissti joinkin välipistin kutt, mutt kikkiin välipistisiin i trvits vtää johotust Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Minimlisn Stinr-puun löytäminn on simrkki niin snotust NP-kovst onglmst Sllisill onglmill i titä lgoritmj, joill olisi in polynominn joik suhtss syöttn kokoon Minimlistn Stinr-puin lskmisn on olmss lgoritmj, join joik on (i) ksponntilinn päätsolmujn joukon S kokoon mutt (ii) polynominn suhtss vrkon kokoon. S on tätn ns. ix-prmtr trtl -onglm, ktso sim. nämä sitlmäklvot. Nämä ivät kuulu kurssin sisältöön. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Lyhimmät polut Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Monss sovlluksss olln kiinnostunit lyhimmistä poluist khn solmun välillä Esimrkiksi: mikä on khn osoittn täisyys (ti lyhin joik) krtss kun krtn pinot ovt täisyyksiä (joikoj)? Pinottuiss vrkoiss puhutn himn hrhnjohtvsti lyhyimmistä poluist kun trkoittn oiksti polkuj, jonk pino on pinin (ikä siis polkuj, joiss on mhollisimmn vähän solmuj) (kuv: puli omin, läh) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 8 / 1

Polun p = (v,v 1,...,v k ) pino on sn krtn pinojn summ: w(p) = k 1 i= w({v i,v i+1 }) Khn solmun, u j v, lyhimmän polun pino δ(u,v) on kikkin solmust u solmuun v johtvin polkujn pinojn minimi, ti kun solmust u i ol yhtään polku solmuun v Esimrkki Trkstlln oiknpuolist vrkko Lyhyimmän polun pino δ(, ) solmust solmuun on polun (,,,) pino δ(,) = 1 1 1 Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Trkstlln survss yhstä lähtösolmust lähtvin lyhimpin polkujn (ngl. singl-sour shortst pths) onglm: Annttun pinotttu suunnttu vrkko j lähtosölmu s Etsi lyhin polku solmust s jokisn solmuun, jok on svutttviss solmust s Oltisiin voitu trkstll myös khn solmun välisn lyhimmän polun (ngl. singl-pir shortst pth) onglm: Annttun pinotttu suunnttu vrkko j kksi sn solmu u j v Etsi lyhin polku solmust u solmuun v Tunntuill jälkimmäisn onglmn rtkisvill lgoritmill on sm symptoottinn phimmn tpuksn ikvtivuus kuin prhill nsimmäisn onglmn rtkisvill lgoritmill Jtkoss sitttävät lgoritmit rovt pääsääntöissti jojltn j siinä, pystyvätkö n käsittlmään ngtiivisi pinoj krill Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Joitin lyhimpin polkujn ominisuuksi Lyhimmillä poluill on optimlisn lirkntn ominisuus: lyhimpin polkujn ospolut ovt myös lyhimpiä polkuj Toisin snon: jos (v,v 1,...,v i,...,v k ) on lyhin (li pinimmän pinon omv) polku solmust v solmuun v k, niin (v,v 1,...,v i ) on lyhin polku solmust v solmuun v i j (vi,...,v k ) on lyhin polku solmust v i solmuun v k Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Ngtiivist pinot krill Sykli p = (v,...,v k,v ) on ngtiivisn pinon sykli jos w(p) < Jos mikä thns polku solmust u solmuun v sisältää ngtiivisn pinon syklin, niin lyhimmän polun pino solmust u solmuun v i ol hyvin määritlty j mrkitään δ(u,v) = Esimrkki Oiknpuolisss vrkoss on ngtiivisn pinon sykli (,,,,) Lyhimmän polun pino solmust solmuun i ol hyvin määritlty kosk sykliä voin toist milivltinn määrä j vst sn jälkn suoritt lipolku (,,) - 1-1 - Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Lyhyimmän polun pinon ylärjt j löysääminn Jtkoss sitttävät lgoritmit pitävät jokisll solmull v muistiss lyhimmän polun pinon ylärj v.ist Tämä ylärj v.ist on in suurmpi kuin lyhimmän polun pino lähtösolmust s solmuun v: δ(s,v) v.ist j lgoritmin lopuss, jos vrkoss i ol ngtiivisn pinon sykljä, yhtnvä lyhimmän polun pinon knss:v.ist = δ(s, v) Lyhimmät polut muoostvt lähtösolmuun juurruttun lyhimpin polkujn puun: solmun v ltäjä tllttn ttriuttiin v.pr Aluss ylärjt ovt kikill solmuill pitsi lähtösolmull s rvo on ltäjättriuutit sttn rvoon NIL Alustus psuokooin: Initiliz-singl-sour(G, s): or h vrtx v V : v.ist = v.pr = NIL s.ist = Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Jos krll (u, v) pät, ttä u.ist + w(u, v) < v.ist, niin jtlln krll olvn jännitystä j voin suoritt löysnnys (ngl. rlxtion) päivittämällä v.ist = u.ist + w(u,v) Muuttn smll ltäjättriuutin rvo kosk tunntuin lyhin polku solmuun v tul nyt solmust u Psuokooin: Rlx(u, v): i u.ist + w(u,v) < v.ist: v.ist = u.ist + w(u,v) v.pr = u Tämä on ino pikk, missä ylärjn rvo muuttn Esitttävät lgoritmit rovt siinä, missä järjstyksssä j kuink mont krt löysnnystä suorittn kunns ylärjt ovt trkkoj Slvästikin löysnnys säilyttää ylärjominisuun: Jos δ(s, v) v.ist pät kikill solmuill v nnn jonkin krn löysnnystä, niin sm pät myös löysnnyksn jälkn Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Dijkstrn lgoritmi Ahn lgoritmi lähtösolmust lähtvin lyhimpin polkujn lskmisksi Huom: krin pinojn tul oll i-ngtiivisi I: Alusttn ylärj-rvot yllä minitull tvll: lähtösolmull s j muill solmuill Jokisll V itrtioll Trkstlln solmu u jot i oll vilä käsitlty j joll on pinin ylärj-rvo (jok on its siss jo trkk lyhimmän polun pino). Ensimmäisllä itrtioll trkstlln siis lähtösolmu s. Trkstlln jokist solmust lähtvää krt j löysnntään mikäli mhollist. Eli päivittään krn mlisolmun ylärj-rvo mikäli solmust u solmuun v kulkmll sn lyhympi polku kuin imp prst rittiä pitkin. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Psuokooin: Dijkstr(G = (V,E,w), s): Initiliz-singl-sour(G, s) lt S = / lt Q = V // Min-priority quu with th istn ttriut s th ky whil Q /: lt u vrtx with minimum u.ist in Q rmov u rom Q lt S = S {u} or h vrtx v with (u,v) E: Rlx(u, v) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: Dijkstrn lgoritmin käyttäminn Trkstlln oiknpuolist vrkko. Kuvn nnottiot ilmisvt ylärj-ttriuuttin rvot lustuksn jälkn. Lähtösolmu on All olvt vrkot näyttävät ylärj-rvot j rkntuvn lyhimpin polkujn puun (korosttut krt) jokisn whil-silmukn kooin suorituksn jälkn 1 1 1 1 1 1 8 1 1 1 1 1 1 1 8 1 1 1 1 8 1 1 8 1 1 8 1 1 1 Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Phimmn tpuksn joik-nlyysiä: Olttn prioritttijonot totuttuiksi kkojn vull Alustusvih voin thä jss O( V ) Priorittijonon lustus vi suorviivisll tvll jn V log V mutt voitisiin hlposti thä myös jss O( V ) whil-silmukn kooi jtn korkintn V krt, krrn jokisll vrkon solmull u Pinimmän ylärjn omvn solmun u hku j poisto prioritttijonost vi jn O(log V ) Jokist krt solmust u trkstlln krrn Krn (u,v) löysnnys vi jn O(log V ): jos mlisolmun ylärjn rvo pinnntään, prioritttijono pitää päivittää kosk ylärj toimii sn vimn Kokonisjoik on siis O( V + V log V + V log V + E log V ) = O(( V + E )log V ). Vrkoill, joiss kikki solmut ovt svutttviss lähtösolmust, tämä on O( E log V ) kosk E V 1 tämänlisill vrkoill Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 8 / 1

Oikllisuun osoittmisksi riittää surv invrintti: jokisn itrtion jälkn pät, ttä jos lähtösolmust s on pulku solmuun t j t S, niin t.ist = δ(s,t) Tämä voin toist inuktioll joukon S koon suhtn: 1 Prustpus: kun S = 1, niin S = {s} j s.ist = δ(s,s) = (krn (s, s) solmust s itsnsä löysnnys i voi muutt rvo s.ist lähtörvost kosk krin pinot ovt i-ngtiivisi) Inuktiohypotsi: invrinnti pät kun S = k jollkin k 1 Inuktioskl: lkoon u jokin solmu, jok i kuulu joukkoon S j joll on pinin ylärj-rvo u.ist sllistn solmujn joukoss Jos u.ist =, niin mistään joukon S solmust x i ol krt mihinkään solmuun y / S kosk kikki joukon S solmuist lähtviä kri on jo löysnntty. Tätn δ(s, u) = j invrintti pät itrtion k + 1 jälkn kun S {u}. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Jtkuu: Muutoin u.ist. Nyt u.pr S j on olmss polku (s,..., u.pr, u) pinoll = u.ist = δ(s, u.pr) + w(u.pr, u) lähtösolmust s solmuun u. Tämä on lyhin polku lähtösolmust s solmuun u. Olttn nimittäin, ttä näin i olisi j ttä δ(s,u) < j lyhin polku on its siss (s,...,x,y,...u), missä y on nsimmäinn solmu polull jok i kuulu joukkoon S. Kosk (s,..., x, y,...u) on lyhin j kikki pinot krill ovt i-ngtiivisi, δ(s,y) < j δ(s,x) < w(x,y). Kosk x S, niin x.ist = δ(s,x) inuktiohypotsin prustll j krt (x, y) on löysnntty jo immin; tätn y.ist = δ(s,y) <. Mutt tässä tpuksss u i ollutkn pinimmän ylärjn omv solmu joukkoon S kuulumttomin solmujn joukoss kutn luss vimm. Stiin ristiriit j tätn u.ist = δ(s, u) j (s,..., u.pr, u) on lyhin polku lähtösolmust s solmuun u. Kun solmu u on lisätty joukkoon S, krn (u,v) E jollkin v S i voi muutt ylärj-rvo v.ist kosk v.ist = δ(s, v) pät inuktiohypotsin tki. Tätn invrintti pät myös itrtion k + 1 jälkn kun S {u}. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: Ngtiivistn pinojn onglm Trkstlln ll olv vrkko, joss on ngtiivisn pinon kri Solmust lähtviä kri trkstlln vin krrn silloin kun solmu on juuri poistttu jonost Q Ngtiivistn pinojn tpuksss ylärj-rvo i nyt kuitnkn vilä täsmää lyhimmän polun pinon knss. Tätn solmujn j ylärjt ivät myöskään stu trkoiksi ikä niitä päivittä myöhmmin solmun ylärjn lskiss 1 1 8 1-8 1-8 1-8 1 8 1 8 1 8 1-8 1-8 1-8 Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1

Bllmn Forin lgoritmi Toinn lgoritmi nntust lähtösolmust lkvin lyhimpin polkujn lskmisksi Ngtiivist pinot krill ovt nyt sllittuj Huom, jos vrkoss on lähtösolmust svutttv ngtiivisn pinon sykli I: Löysnntään kikki kri V 1 krt Jos löysnnys olisi vilä tämän jälknkin mhollist, vrkoss on svutttv ngtiivisn pinon sykli. Muutoin ylärj-rvot ovt yhtnviä lyhimmän polun pinon knss j ltäjättriuutist sn lyhimpin polkujn puu Dijkstrn lgoritmin kohll nähty ngtiivistn pinojn onglm korjtn siis löysntämällä solmust lähtviä kri mont krt Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Psuokooin: Bllmn-For(G, s): Initiliz-singl-sour(G, s) or i = 1 to V 1: or h g (u,v) E: Rlx(u, v) or h g (u,v) E: i u.ist + w(u,v) < v.ist: rturn Th grph hs ngtiv-wight yl rturn No ngtiv-wight yls, shortst-pth wights ry Optimointi: jos nsimmäisn or-silmukn jonkin itrtiokrrn mikään krn löysnnysyritys i lsk ylärj-rvo, sm toistuu survillkin itrtioill j silmukn suoritus voin loptt. Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: Bllmn Forin lgoritmi, i ngtiivisi pinoj Trkstlln oiknpuolist vrkko; solmun ylärj-rvo lustuksn jälkn on sittty sn virssä 1 1 1 Vrkot ll näyttävät ylärj-rvot j muoostuvt lyhimmät polut (korosttut krt) jokisn nsimmäisn or-silmukn suorituksn jälkn 1 1 1 1 11 1 1 8 1 11 1 1 8 1 Ylärj-rvot vkiintuvt jo kolmnnn itrtion jälkn Tässä krt käyään läpi järjstyksssä (,), (,), (,), (,), (,), (,), (,), (,), (,) Optimlisll järjstyksllä yksi itrtio riittäisi smn lopputilntn svuttmisksi: (,), (,), (,), (,), (,), (,), (,), (,) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: Bllmn Forin lgoritmi, ngtiivisi pinoj krill Trkstlln oiknpuolist vrkko, jonk krill on ngtiivisi pinoj mutt joss i ol ngtiivisn pinon sykliä 1-8 All olvt vrkot kuvvt jälln lgoritmin suoritust 1 8 1 1 1-8 1-8 1-8 Ylärj-rvot vkiintuvt jo kolmnnn itrtion jälkn Tässä krt käyään läpi järjstyksssä (,), (,), (,), (,), (,) Optimlisll järjstyksllä yksi itrtio riittäisi: (, ), (, ), (, ), (, ), (,) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: Bllmn Forin lgoritmi, ngtiivisn pinon sykljä Trkstlln oikpuolist vrkko, joss on ngtiivisn pinon sykli All olvt vrkot kuvvt jälln lgoritmin suoritust - 1-1 - - 1 1-1 8-1 8-1 - - 1 - - 1 - - 1-1 -1-1 1-1 - - 1 - - 1 - -1 - - Lopuss.ist + w(,) = + = 1 <.ist = j tätn huomtn vrkon sisältävän ngtiivisn pinon syklin Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Phimmn tpuksn joik-nlyysiä: Alustusvih vi jn O( V ) Ensimmäisn or-silmukn kooi jtn V 1 krt, jokinn itrtio vi jn O( E ) Toisn or-silmukn kooi jtn korkintn E krt, jokinn itrtio vi vkiojn Kokonisjoik on O( V E ) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki: vluuttkupp-ritrsin tsintä Annttun vihtokurssj ri vluuttojn välill Onko mhollist viht rh vluutst toisn niin, ttä lopuksi on stu nmmän sm vluutt kuin millä loitttiin? Eli onko vihtokurssj kuvvss vrkoss sykliä, jonk kripinojn tulo on suurmpi kuin 1? Tulon x 1 x x n rvo on suurmpi kuin 1 silloin kun sn logritmin rvo on suurmpi kuin log (x 1 x x n ) = log (x 1 ) + log (x ) +... + log (x n ) log (x 1 ) + log (x ) +... + log (x n ) > kun log (x 1 ) + log (x ) +... + log (x n ) < USD USD.8 EUR 1..1 1...1 SEK EUR. -.1. -.1 -.. SEK Korvtn jokinn vihtokurssi α siis rvoll log α j pyöristtään himn ylöspäin mitättömän pintn voittojn (j pyöristysvirhin) liminoimisksi Tuloksn stvss vrkoss on ngtiivisn pinon sykli jos lkupräisssä vihtokurssivrkoss on ritrsin mhollisuus Esimrkissä ngtiivisn pinon sykli vst prosntin tuotto (.8 1..1 = 1.) trjov vihtoskvnssiä Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 8 / 1

Lyhimmät polut syklittömissä vrkoiss Syklittömill pinottuill j suunntuill vrkoill voin löytää hlposti järjstys krill niin, ttä löysntäminn voin thä optimlissti Lyhimpin polkujn lgoritmi: Lsktn vrkoll topologinn järjstys llisllä kirroksll sittyllä mntlmällä (kripinoj i huomioi tässä vihss) Alusttn ylärj-rvot j ltäjättriuutit normliin tpn Alkn lähtösolmust s j jtkn topologisn järjstykn mukn, löysnntään vuorolln jokisst solmust lähtviä kri Kosk kikki solmut j krt millä thns polull lähtösolmust kulloisn trkstltvn solmuun u on jo trkstltu topologisn järjstyksn tki, pät u.ist = δ(s, u) kun solmust u lähtviä kri ltn trkstll Topologinn järjstys voin lsk jss O( V + E ) Kokonisjoik on myös O( V + E ) Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Esimrkki Trkstlln oiknpuolist syklitöntä vrkko Huom, ttä siinä on ngtiivisn pinon kri 1-8 Eräs topologinn järjstys sill on,,,, Aloittn lähtösolmust j löysnntään solmuist lähtviä kri topologisss järjstyksssä. Suoritus tn ll kuvtull tvll: 1 1 1-8 1-8 1-8 1 1 1 1-8 1-8 1-8 Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 / 1

Joitin lisälinkkjä All olvt ivät kuulu kurssin sisältöön Kirjn Introution to Algorithms, r. (onlin vi Alto li) luvuss sittään lgoritmj, joill voi lsk lyhimmät polut kikkin vrkon solmuprin välill Vikk sitttyjn lgoritmin symptoottist ikvtimukst ovt hyviä, lyhimpin polkujn lgoritmin optimointi on tärkää suurill vrkoill kutn krtoill MIT. OCW vio on sping up Dijkstr Googl thtlk on st rout plnning Dlling t l: Enginring Rout Plnning Algorithms Solmujn välistn polkujn tsimisn on myös muit hkustrtgioit kutn sim A*, prs-nsin hku jn; näitä voi trkstll vikkp tämän visulisointityöklun vull Tommi Junttil (Alto Univrsity) Kirros 8 CS-A11 / Autumn 1 1 / 1