Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Øvingsforelesning 9 - Børge Rødsjø

Liknende presentasjoner


Presentasjon om: "Øvingsforelesning 9 - Børge Rødsjø"— Utskrift av presentasjonen:

1 Øvingsforelesning 9 - Børge Rødsjø
Flytnettverk, maksimal flyt og maksimal bipartitt matching Børge Rødsjø 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

2 Øvingsforelesning 9 - Børge Rødsjø
Dagens tema Flytnettverk Terminologi Max-flow min-cut teoremet Ford-Fulkersons metode og algoritme Edmonds Karps algoritme Maksimal bipartitt matching Teoriøving 8: Floyd Warshall 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

3 Terminologi: Flytnettverk
En graf med kapasitet på kantene Ønsker å sende flyt fra en kildenode s (source) til en sluknode t (sink) 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

4 Øvingsforelesning 9 - Børge Rødsjø
Flytnettverk Eksempler Væske som flyter gjennom et rørsystem til en destinasjon Varer igjennom et varehus, produksjonslinjer Informasjon gjennom et datanettverk Strøm gjennom strømledninger 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

5 Øvingsforelesning 9 - Børge Rødsjø
Flytnettverk Flyt og kapasitet på kanter benevnes f/c Flyt inn i en node = flyt ut (untatt for s og t) f(v, u) = - f(u, v) f(u,v) = 4 c(u,v) = 5 f(v,u) = -4 c(v,u) = 0 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

6 Øvingsforelesning 9 - Børge Rødsjø
Residual nettverk En graf som viser hvor mye man kan øke flyten med, til man når kapasiteten på kantene Kalles Gf = (V,Ef) for flytnettverket G = (V,E) cf(u,v) er residualkapasiteten for en kant (u,v) Dvs. hvor mye mer flyt kan man sende over kanten før man når kapasiteten 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

7 Øvingsforelesning 9 - Børge Rødsjø
Residual nettverk cf(u,v) = c(u,v) – f(u,v) der f(u,v) er flyten for kanten (u,v) c(u,v) = 7 cf(u,v) = 7 – 3 = 4 f(u,v) = 3 cf(v,u) = 0 – (-3) = 3 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

8 Øvingsforelesning 9 - Børge Rødsjø
Residual nettverk Lettere å finne flytforøkende stier i Gf enn i G Flytforøkende sti er en sti fra s til t der alle kanter har tilgjengelig kapasitet 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

9 Øvingsforelesning 9 - Børge Rødsjø
Residual nettverk Lettere å finne flytforøkende stier i Gf enn i G Flytforøkende sti er en sti fra s til t der alle kanter har tilgjengelig kapasitet 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

10 Superkilde og supersluk
Hva hvis flytnettverket har flere kilder og flere sluker? Superkilde og supersluk 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

11 Øvingsforelesning 9 - Børge Rødsjø
Snitt i flytnettverk Vi kan dele opp grafen i to partisjoner, ved å ta et snitt (S,T), der mengden S inneholder kilden s og T inneholder sluken t Kan ha mange snitt på en graf 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

12 Øvingsforelesning 9 - Børge Rødsjø
Snitt-terminologi Flyt over et snitt: f(S,T) Flyt fra S til T: legges til f(S,T) Flyt fra T til S: trekkes fra f(S,T) Kapasitet over et snitt: c(S,T) Legger bare til kapasiteter fra S til T Minimums snitt (min-cut) på et flytnettverk: det snittet som har lavest kapasitet av alle snitt Netto flyt over ethvert snitt er det samme, nemlig flyten | f | 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

13 Øvingsforelesning 9 - Børge Rødsjø
Snitt i flytnettverk Partisjonerer flytnettverket i to deler: S = { s, u } T = { v, w, x, t } f(S,T) = = 7 c(S,T) = = 13 snitt1 er ikke et min-cut 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

14 Max-flow min-cut teoremet
Viktig! Max-flow min-cut teoremet Anta flytnettverk G = (V,E) med kilde s og sluk t. Da er følgende utsagn ekvivalente: f er maksimal flyt i G Residualnettverket Gf har ingen flytforøkende sti | f | = c(S,T) for et snitt (S,T) av G Et slikt snitt er et min-cut av G 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

15 Max-flow min-cut teoremet
G er fylt opp med maksflyt 9 Gf har ingen flytforøkende stier min-cut har kapasitet 9 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

16 Max-flow min-cut teoremet
min-cut angir en flaskehals i flytnettverket Kan ikke sende mer flyt igjennom nettverket enn det vi kan sende gjennom flaskehalsen Kan ikke finne noen flytforøkende sti over flaskehalsen 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

17 Ford-Fulkerson metoden
Ford-Fulkerson-Method(G, s, t) Initialiser all flyt f til 0 så lenge det finnes en flytforøkende sti p øk flyten f langs p returner f En generell metode for å finne maksimal flyt i et flytnettverk 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

18 Ford-Fulkerson algoritmen
Ford-Fulkerson(G, s, t) sett all flyt til 0 så lenge p er en sti fra s til t i Gf cf(p) = min{ cf(u,v) : (u,v) i p } for hver (u,v) i p f[u,v] = f[u,v] + cf(p) f[v,u] = -f[u,v] p er en flytforøkende sti cf(p) er residualkapasiteten til den ”minste” kanten i p Kjøretid O(E*| f’ |) Der f’ er maksflyten funnet i algoritmen 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

19 Ford-Fulkerson algoritmen
Eksempelkjøring av algoritmen Jukser litt, initialiserer ikke flyten til 0 først 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

20 Ford-Fulkerson algoritmen
Residualnettverk Etter flytforøkning Initialsteg | f | = 7 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

21 Ford-Fulkerson algoritmen
Residualnettverk Etter flytforøkning Flytforøkning | f | = 8 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

22 Ford-Fulkerson algoritmen
Residualnettverk Etter flytforøkning Flytforøkning | f | = 9 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

23 Ford-Fulkerson algoritmen
Residualnettverk Etter flytforøkning Ingen flere flytførkende stier | f | = 9 Vi har funnet maks-flyt og er ferdige 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

24 Ford-Fulkerson algoritmen
Algoritmen avhenger av hvordan man finner den flytforøkende stien p, fra s til t Ford-Fulkerson algoritmen kjører raskt hvis maksflyt er liten, men for stor |f’| blir kjøretiden O(E*|f’|) dårlig Hvis man bruker BFS til å finne flytforøkende sti i Gf, ender vi opp med Edmonds-Karps algoritme 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

25 Edmonds-Karps algoritme
Bruker BFS for å finne korteste flytforøkende sti i Gf, og øker flyten langs denne stien BFS kan finne korteste vei fra s til t, ved å ha enhetslengde på kantene (unit-length) Ellers er Edmonds-Karp slik som Ford-Fulkersons algoritme Kjøretid O(V*E2) 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

26 Edmonds-Karps algoritme
Edmonds-Karp(G, s, t) sett all flyt til 0 bruk BFS og finn korteste sti p, som går fra fra s til t i Gf cf(p) = min{ cf(u,v) : (u,v) i p } for hver (u,v) i p f[u,v] = f[u,v] + cf(p) f[v,u] = -f[u,v] p er en flytforøkende sti cf(p) er residualkapasiteten til den ”minste” kanten i p Kjøretid O(V*E2) 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

27 Maksimal bipartitt matching
Terminologi Hvordan finne maksimal bipartitt matching 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

28 Maksimal bipartitt matching
Hva er en bipartitt graf? En graf der nodene kan deles opp i to mengder L og R, slik at: Nodene i R bare har kanter til noder i L Nodene i L bare har kanter til noder i R 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

29 Maksimal bipartitt matching
Eksempel Jenter som skal danse med gutter, noen vil danse med mange, mens noen vil danse med bare én annen. Ikke lov til å danse med samme kjønn. Hvordan få flest mulig personer ut på dansegulvet? 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

30 Maksimal bipartitt matching
Hva er bipartitt matching? Anta G=(V,E) er en bipartitt graf, og M er en undermengde av E, slik at for grafen G’ = (V,M) holder følgende egenskap: For alle noder v i V, deg(v) ≤ 1 Så hver node kan ha maks 1 nabo Ønsker å maksimere |M| Maksimal bipartitt matching er når |M| er størst mulig 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

31 Maksimal bipartitt matching
G = (V,E) V = {a,b,c,d,e,f} M = {} |M| = 0 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

32 Maksimal bipartitt matching
G = (V,E) V = {a,b,c,d,e,f} M = {(a,d), (c,b) (e,f)} |M| = 3 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

33 Maksimal bipartitt matching
Hvordan får vi til maskimal bipartitt matching? Dvs. hvordan maksimerer vi |M| ? Bygger på grafen litt slik at vi får ett flytnettverk Legger til en kilde s, sluk t, retninger på kantene fra L til R, og makskapasitet på hver kant til 1 Kilden har en kant til hver node i L, og hver node i R har en kant til sluken 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

34 Maksimal bipartitt matching
Har en bipartitt graf 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

35 Maksimal bipartitt matching
Legger til kilde s og sluk t, og rettede kanter fra s til t 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

36 Maksimal bipartitt matching
Legger på kapasitet 1 på kantene 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

37 Maksimal bipartitt matching
Etter man har gjort disse stegene, kan man kjøre en flytalgoritme på flytnettverket Da vil maksflyten |f| = |M|, og vi har løst problemet med maskimal bipartitt matching Brukes Ford-Fulkersens metode blir kjøretiden O(V*E) 16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø

38 Teoriøving 8: Floyd-Warshall
16. oktober 2009 Øvingsforelesning 9 - Børge Rødsjø


Laste ned ppt "Øvingsforelesning 9 - Børge Rødsjø"

Liknende presentasjoner


Annonser fra Google