Korteste vei problemet (seksjon 15.3)



Like dokumenter
LP. Leksjon 9: Kapittel 13: Nettverk strøm problemer, forts.2

LP. Leksjon 8: Kapittel 13: Nettverk strøm problemer, forts.1

Korteste Vei I. Lars Vidar Magnusson Kapittel 24 Hvordan finne korteste vei Egenskaper ved korteste vei

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

Øvingsforelesning Korteste vei: Alle til alle

Anvendelser av grafer

Løsningsforslag - Korteste vei

LP. Leksjon 5. Kapittel 5: dualitetsteori. motivasjon det duale problemet svak og sterk dualitet det duale til LP problemer på andre former

Avanserte flytalgoritmer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Korteste vei i en vektet graf uten negative kanter

Grafteori og optimering en kort innføring. Geir Dahl

LO118D Forelesning 10 (DM)

MAT1140: Kort sammendrag av grafteorien

LP. Leksjon 6: Kap. 6: simpleksmetoden i matriseform, og Seksjon 7.1: følsomhetsanalyse

4.4 Koordinatsystemer

MAT1030 Diskret Matematikk

4.9 Anvendelser: Markovkjeder

INF Algoritmer og datastrukturer

Grunnleggende Grafalgoritmer

Kapittel 5: dualitetsteori

MAT1030 Forelesning 25

Øvingsforelesning 7. Dijkstras algoritme. Foiler: Fredrik Ludvigsen Foreleser: Jon Marius Venstad 10/4/09 1

TMA4140 Diskret Matematikk Høst 2016

Løsningsforslag - Floyd-Warshall

MAT1030 Diskret matematikk

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Forelesning 23: Grafteori

Diagnosekart for oblig 2, INF3/4130 h07

Repetisjon og mer motivasjon. MAT1030 Diskret matematikk. Repetisjon og mer motivasjon

Vann i rør Ford Fulkerson method

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

IN Algoritmer og datastrukturer

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Roger Antonsen

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Uretta grafar (1) Mengde nodar Mengde kantar som er eit uordna par av nodar

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Forelesning 23. Grafteori. Dag Normann april Oppsummering. Oppsummering. Oppsummering. Digresjon: Firefarveproblemet

Dijkstras algoritme Spørsmål

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

MAT 100a - LAB 3. Vi skal først illustrerere hvordan Newtons metode kan brukes til å approksimere n-te roten av et positivt tall.

ALGORITMER OG DATASTRUKTURER

Rekursiv programmering

Algdat - Øvingsforelesning. Maks flyt

SIF8010 ALGORITMER OG DATASTRUKTURER

LØSNINGSFORSLAG SIF5015 DISKRET MATEMATIKK Onsdag 18. desember 2002

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs (løsningsforslag)

Løsningsforslag Øving 5 TMA4140 Diskret matematikk Høsten 2010

UNIVERSITETET I OSLO

MAT1030 Forelesning 24

5.6 Diskrete dynamiske systemer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

MA2501, Vårsemestre 2019, Numeriske metoder for lineære systemer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Grafteori. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

Løsningsforslag Øving 9 TMA4140 Diskret matematikk Høsten i for i = 0, 1, 2, 3, 4, og så er W 4 svaret

Algoritmer - definisjon

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Diskret Matematikk

MAT1030 Forelesning 25

Forelesning 23. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Funksjoner og andregradsuttrykk

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Rettede, ikke-sykliske grafer (DAG)

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

Vi kan finne formler som gir oss neste tall i tallfølgen dersom vi kjenner ett tall. Det er den rekursive formelen. gir oss gir oss alle tallene a

Kanter, kanter, mange mangekanter

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algoritmer og Datastrukturer

Grafteori. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 24: Grafer og trær. Dag Normann

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

MAT Oblig 1. Halvard Sutterud. 22. september 2016

Forelesning 24. Grafer og trær. Dag Normann april Vektede grafer. En kommunegraf

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs

Kontinuasjonseksamen i tdt4125 Algoritmekonstruksjon, videregående kurs

Kap. 5 Egenverdier og egenvektorer

IN Algoritmer og datastrukturer

Forelesningsplan. Grådighet. LF Øving 9. Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

Dynamisk programmering

INF Algoritmer og datastrukturer

MAT1030 Forelesning 23

{(1,0), (2,0), (2,1), (3,0), (3,1), (3,2), (4,0), (4,1), (4,2), (4,3) } {(1,0), (1,1), (1,2), (1,3), (2,0), (2,2), (3,0), (3,3), (4,0)}

Transkript:

Korteste vei problemet (seksjon 15.3) Skal studere et grunnleggende kombinatorisk problem, men først: En (rettet) vandring i en rettet graf D = (V, E) er en følge P = (v 0, e 1, v 1, e 2,..., e k, v k ) der k 0, v i V (0 i k) og a i = (v i 1, v i ) (i k). Sier at P går fra v 0 til v k, og kaller P en v 0 v k -vandring. En (rettet) vei er en vandring P der v 0, v 1,..., v k er distinkte; kalles en v 0 v k -vei. Forskjellen er at en vandring kan inneholde sykler (flertall av syklus, altså ikke noe man sykler på!) Korteste vei problemet: gitt en rettet graf D = (V, E) med et gitt ikkenegativt tall (lengde) c ij for hver kant (i, j), samt to noder s og r, finn en korteste vei P fra s til r. Her er lengden til en vei P summen av c ij -ene for kantene i P. 1 / 10

Problemet har direkte anvendelser i de fleste typer nettverk (kjørerute bil (GPS), fly,..) eller i dynamiske optimeringsproblemer f.eks. i økonomi/finans. Er også et delproblem i mange ulike, mer komplekse problemer. Ofte vil vi finne korteste vei mellom flere par av noder; algoritmene under gjør dette fra felles startnode s til enhver annen node. Eksempel: dynamisk programmering (dynamiske systemer med sekvensielle beslutningsproblemer): tar det til slutt! 2 / 10

Nettverk strøm formulering Korteste vei problemet er et spesialtilfelle av MKS (minimum kost strøm) problemet: min{c T x : Ax = b, x O}. Her er A node-kant indikator matrisen til grafen, c kostnadsvektoren (lengdene), og b = (b v : v V ) er vektoren gitt ved b s = 1, b r = 1 og b v = 0 ellers. Dette går greit fordi vi har en heltallig optimal løsning, og den må inneholde en vei fra s til r: x ij = 1 for alle kanter i veien, og x ij = 0 ellers. Tenk gjennom detaljene! Følgelig kan vi løse korteste vei problemet som MKS problem ved hjelp av nettverk simpleks algoritmen. Faktisk kan vi ved å endre b (og innføre kantkapasiteter på 1) finne korteste vei fra enhver v V til r ved å løse et MKS problem! Skal se på enda raskere og enklere algoritmer! 3 / 10

Bellman-Ford algoritmen For v V og k 0 (heltall), defineres d k (v) som minimum lengde av en sv-vandring med høyst k kanter. Hvis det ikke finnes noen slik vandring, lar vi d k (v) =. Hvordan kan vi beregne disse avstandsfunksjonene? Bellman-Ford s algoritme: la d 0 (s) = 0 og d 0 (v) = for hver v s. Beregn funksjonene d 1, d 2,..., d n ved for alle v V. d k+1 (v) = min{d k (v), min (d k(u) + c uv )} (1) u:(u,v) E Teorem: Bellman-Ford algoritmen finner virkelig de korrekte avstandene, dvs. d k (v) blir minimum lengde av en sv-vandring med høyst k kanter. Spesielt er d n 1 (v) lengden av korteste sv-vei (her er n antall noder i grafen). 4 / 10

Bevis: En korteste sv-vei med høyst k + 1 kanter har enten (i) høyst k kanter eller (ii) den har k + 1 kanter og inneholder en kant (u, v) som siste kant. Men i tilfelle (ii) må delveien fram til u være en korteste su-vei med høyst k kanter (for ellers kunne vi velge en annen vei dit, og forbedre sv-veien). Likningen (1) for beregning av d k+1 ut fra d k kalles Bellman s likning. Den brukes også i liknende problemer i (diskret) dynamisk programmering og i en mer generell (kontinuerlig) utgave som kalles Hamilton-Jacobi-Bellman (HJB) likningen i optimal kontrollteori. BF-algoritmen har kompleksitet (antall regneoperasjoner) O(nm) der grafen har n noder og m kanter. Algoritmen har en viktig annen egenskap: den kan brukes også hvis det er negative kantlengder i følgende betydning. BF vil da oppdage om det finnes en syklus med negativ (total-)lengde som kan nåes fra s; da er d n (v) < d n 1 (v). Hvis dette ikke skjer, finner BF en korteste sv-vei. 5 / 10

Dijkstra s algoritme Dette er også en algoritme for Korteste vei problemet. Den virker bare for ikkenegative kantlengder (som er mest vanlig!) Dijkstra s algoritme er raskere enn Bellman-Ford algoritmen. (Vår beskrivelse er litt forskjellig fra bokas: vi starter i s og går forover langs kanter; Vanderbei går baklengs!) som vanlig betegner n antall noder 6 / 10

Algoritmen har n iterasjoner, i hver iterasjon føyes én ny node til en viss mengde F og noen beregninger gjøres. Ved starten er F =. Man har en verdi (en label) d i, for hver node i: d i er en øvre skranke på (korteste) avstand fra s til i. Ved starten er: d s = 0, og d i = ellers. F består av de nodene man allerede har funnet korteste vei til, så for disse nodene er d i lik avstanden fra s til i. I hver iterasjon: 1. velg en i F med d i minst mulig ( nærmeste node ), og oppdater F := F {i}. 2. for hver kant (i, j) E der j F, sett d j = min{d j, d i + c ij } og, hvis d j ble redusert, sett en peker prev(j) = i. 7 / 10

Dette betyr at, ved starten av hver iterasjon, er d(v) lik lengden av en korteste sv-vei som bare bruker noder i F. Vi har (uten å gi beviset, selv om det er et relativt enkelt induksjonsbevis): Teorem: Dijkstra s algoritmen finner en korteste vei, og tilhørende avstand d v, fra s til hver node v. Kompleksiteten er O(n 2 ). Eksempel: bruk Dijkstra (og Bellman-Ford) her u 3 v 1 5 2 s 7 r 8 / 10

Eksempel: dynamisk programmering I dynamisk programmering (DP) har man en diskret dynamisk prosess som man vil kontrollere best mulig ved å påvirke prosessen ved hvert diskret tidspunkt t i (i m). Prosessen beskrives ved funksjoner f i der s i+1 = f i (s i, x i ) (i m) (2) der s i er tilstanden ved tidspunkt t i og x i er en variabel som vi kaller kontrollen ved tid t i. Vi antar at alt her er diskret (faktisk endelig), så kontrollen x i X og tilstanden s i S der X og S er endelige. Videre er f i : S X S. Det er også gitt kostfunksjoner g i (s i, x i ) som angir kostnaden ved å velge kontrollen x i ved tilstand s i i tidspunkt t i (i m). Problemet i DP er å finne en kontroll x 1, x 2,..., x m som minimerer totalkostnad m g i (s i, x i ) i=1 under kravene (2) og s i = s, s m+1 = s der s og s er gitt start- og slutt-tilstander. 9 / 10

Lag en rettet graf D med noder (t i, s j ) for hvert tidspunkt t i (i m) og hver tilstand s j S. Videre lager vi en kant fra (t i, s j ) til (t i+1, s k ) hvis det fins en kontroll x i slik at s k = f i (s i, x i ), og la denne kanten ha kostnad lik g i (s i, x i ) (den laveste, hvis det er flere mulige kontroller som gir denne tilstanden). Legg merke til at grafen D får noder som et rutenett, der kantene går mot høyre mellom noder (t i, ) og noder (t i+1, ). Den inneholder derfor ingen rettet syklus. Vi kan løse DP ved å finne en korteste vei i D fra noden (s, t 1 ) til noden (s, t m+1 )!!! Enkelt og greit! Til tross for at DP er en meget generell problemstilling, med mange anvendelser! Vi kan derfor løse DP ved f.eks. Bellman-Ford algoritmen i denne grafen. (Varianten av DP der slutt-tilstand er fri: går nokså likt.) Mer kompliserte varianter av dette oppsettet: stokastisk modell (Markov modell), kontinuerlig tid. Dette krever mer avanserte metoder. 10 / 10