Algdat - Øvingsforelesning. Maks flyt

Like dokumenter
Øvingsforelesning 12 Maks flyt

Øvingsforelesning 9. Flytnettverk, maksimum flyt og maksimum bipartitt matching. Jon Marius Venstad

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

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

Avanserte flytalgoritmer

Maks Flyt og NPkompletthet

Øvingsforelesning Korteste vei: Alle til alle

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

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

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Algdat Eksamensforelesning. Nils Barlaug

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag - Korteste vei

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Dijkstras algoritme Spørsmål

ALGORITMER OG DATASTRUKTURER

Algdat - øvingsforelesning

Fra A til B. Syvende forelesning

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning 4. Topologisk sortering, Strongly Connected Components og Minimale spenntrær. Magnus Botnan

TMA4140 Diskret Matematikk Høst 2016

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

Lineær sortering. Radix sort

Vann i rør Ford Fulkerson method

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Rundt og rundt og. Trettende forelesning

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

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 1992

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

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

Forelesning 28. Grafer og trær, eksempler. Dag Normann - 5. mai Grafer og trær. Grafer og trær. Grafer og trær

INF Algoritmer og datastrukturer

Korteste vei problemet (seksjon 15.3)

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

Algdat - øvingsforelesning

IN Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

O(V 2 ) bwfs(v, i=1) λ[v] = i for each neighbor u of v if 0 < λ[u] < i. bwfs(u, i+1) if λ[u] = 0

Grunnleggende Grafteori

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

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

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

PG4200 Algoritmer og datastrukturer Forelesning 10

MAT1030 Forelesning 23

MAT1030 Diskret Matematikk

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Søk i tilstandsrom. Backtracking (Kap. 10) Branch-and-bound (Kap. 10) Iterativ fordypning. Dijkstras korteste sti-algoritme A*-søk (Kap.

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

Minimum spenntrær. Lars Vidar Magnusson Kapittel 23. Kruskal Prim

Eirik Benum Reksten Hans Olav Norheim. (ja, det kommer nok litt matte nå ja)

All good things. Fjortende forelesning

Kompleksitet og Beregnbarhet

ALGORITMER OG DATASTRUKTURER

UNIVERSITETET I OSLO

ALGORITMER OG DATASTRUKTURER

MAT1030 Forelesning 25

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

MAT1030 Diskret Matematikk

IN Algoritmer og datastrukturer

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

INF Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Eksamenshefte TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

INF Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

All good things. Fjortende forelesning

INF Algoritmer og datastrukturer

Innhold. Innledning 1

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

O, what a tangled. Fjerde forelesning. Robot-eksemplet som ikke ble gjennomgått sist blir frivillig selvstudium (ut fra foilene :-)

Algdat - Øvingsforelesning. NP-komplette problemer

Oppgave 1. Sekvenser (20%)

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

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

En litt annen måte å forklare traversering på. Traversering

Transkript:

Algdat - Øvingsforelesning Maks flyt

Dagens plan 1. LF teoriøving 7 2. Maks flyt 3. Ford-Fulkerson 4. Maksimal bipartitt matching 5. Presentasjon av øving 9 2

Øving 7 4b) I hvilken rekkefølge velges noder hvis Dijkstra brukes på denne grafen? Gjennomgang på tavla... 3

Øving 7 5d) Anta vi har en graf med kantvekter som er positive heltall og anta E er antall kanter og V er antall noder. Hva gjør Dijkstras(G,w,s)(Dijkstra's algoritme) dersom man forandrer alle kantvektene til w ' (u, v)=(e+ V log(v ) ) w (u, v)+1? Svar: b) Den finner korteste veier fra én startnode til alle andre noder, der antall kanter er minimalt. Å legge til 1 gjør at hvis to stier har samme vekt, vil den med færrest kanter prioriteres. Vi må gange den originale vekten med en konstant > E, ellers kan vi velge en sti som er suboptimal i den originale grafen, f.eks. (4+1) framfor (1+1)+(1+1)+(1+1) 4

Flytnettverk Intuisjon Tenk på et nettverk med vannledninger. Hver ledning har en viss kapasitet (tykkelse). Vi vil prøve å transportere mest mulig vann fra ett punkt til et annet i dette nettverket. Dere må gjerne tenke datanettverk, distribusjonsnettverk eller lignende i stedet. 5

Flytnettverk Graf der hver kant (u,v) har en kapasitet, c(u,v). To spesielle noder: s kilde (source) t sluk (drain) En flyt i denne grafen er en funksjon f(u,v) som oppfyller følgende: f(u,v) c(u,v) for alle u, v V f(v,u) = f(u,v) for alle u, v V v V f(u,v) = 0 for alle u V {s, t} 6

Flytnettverk På norsk f(u,v) c(u,v) for alle u, v V Kan ikke gå mer flyt langs en kant enn den kanten kan holde på. f(v,u) = f(u,v) for alle u, v V Vi definerer utgående flyt som positiv, og innkommende flyt som negativ. Mest konvensjon, men det gjør jobben vår en hel del enklere. v V f(u,v) = 0 for alle u V {s, t} Flyt kan ikke oppstå eller forsvinne, utenom i kilden og sluket. Vi sier at «flyten må være opprettholdt». 7

Maks flyt-problemet Vi definerer verdien av en flyt f som: f = v V f(s, v) Mer intuitivt: «Hvor mye flyt går det fra s til t?» Maks flyt-problemet er å finne en flyt som maksimerer denne verdien. 8

Max flow/min cut-teoremet Den maksimale flyten er begrenset av hvor grafen er «smalest». Et snitt i en flytgraf er et subsett av kanter slik at hvis disse kantene fjernes, vil det ikke lenger finnes en sti fra s til t. Det minimale snittet er det snittet som har minst total kapasitet. Den maksimale flyten er lik kapasiteten til det minimale snittet. 9

Ford Fulkerson-metoden Iterativ algoritme for å finne maksimal flyt. FORD-FULKERSON-METHOD(G, s, t) 1 initialize flow f to 0 2 while there exists an augmenting path p : 3 augment flow f along p 4 return f Send mer og mer flyt gjennom grafen, til du ikke kan sende mer. 10

Flytforøkende stier Gitt et flytnettverk G og en flyt f, er en flytforøkende sti (augmenting path) en sti fra s til t der residualkapasiteten til alle kantene er større enn 0. Residualkapasitet: c f (u,v) = c(u,v) f(u,v) Alternativt kan vi definere et residualnettverk Gf : G f (V, E f ), der E f = {(u,v) V V : c (u,v) > 0} f En flytforøkende sti blir da en sti fra s til t i Gf. 11

Ford Fulkerson komplett algoritme FORD-FULKERSON(G, s, t) 1 for each edge (u, v) E[G] : 2 f[u,v] 0 3 f[v,u] 0 4 while there exists a path p from s to t in the residual network G f : 5 c f (p) min {c f (u,v) : (u,v) is in p} 6 for each edge (u,v) in p : 7 f[u,v] f[u,v] + c f (p) 8 f[v,u] f[u,v] 12

13 Eksempler på tavla!

Oppheving av flyt Hvor er den flytforøkende stien i denne grafen? Siden f(v2, v3) = 1, har vi cf (v2, v3) = 0 ( 1) = 1 14

Korrekthet og kjøretid Ford-Fulkerson på grafer med heltallige kapasiteter vil terminere, siden flyten øker med minst 1 hver iterasjon. Kjøretid: O(E f* ), der f* er den maksimale flyten. Pseudopolynomisk kjøretid skikkelig dårlig! 15

Edmonds Karp-algoritmen Ford Fulkerson sier ikke noe om hvordan man finner flytforøkende stier. Edmonds Karp: Ford Fulkerson der man bruker BFS. Mye bedre kjøretid: O(V E²) 16

Maksimal bipartitt matching En matching M for en graf G = (V, E) er et subsett av kantene slik at alle noder maksimalt har én kant fra M inn til seg. Å finne en maksimal matching for en bipartitt graf kan uttrykkes som et maksflytproblem. 17

Maksimal bipartitt matching 1. Legg til kilde og sluk 2. Trekk en kant fra kilden til alle nodene på venstresiden 3. Trekk en kant til sluket fra alle nodene på høyresiden 18

Praksisøving 9 Dere skal implementere Ford-Fulkerson! Pluss noen andre greier... Grafen har flere kilder og flere sluk. Nodene skal ha en kapasitet. For å fikse dette må dere lage en ny graf slik at «vanlig» Ford-Fulkerson kan brukes. 19