Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.

Liknende presentasjoner


Presentasjon om: "Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov."— Utskrift av presentasjonen:

1 Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad venstad@idi.ntnu.no Redigert og forelest av Gleb Sizov 1

2 Dagens tema  Øving 8: Mumien  Teori  Flytnettverk  Terminologi  Max-flow min-cut teoremet  Ford-Fulkersons metode og algoritme  Edmond-Karps algoritme  Maksimum bipartitt matching  Spesialtilfelle av flyt  Andre algoritmer  Øving 7: Teori & Praksis 2

3 Terminologi: Flytnettverk  En graf med kapasitet på kantene  Ønsker å sende flyt fra en kildenode s (source) til en sluknode t (terminal/sink) 3

4 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 4

5 Flytnettverk  Flyt og kapasitet på kanter benevnes f/c  Flyt inn i en node = flyt ut (unntatt for s og t)  f(v, u) = - f(u, v) f(u,v) = 4 c(u,v) = 5 f(v,u) = -4c(v,u) = 0 5

6 Residual nettverk  En graf som viser hvor mye man kan øke flyten med, til man når kapasiteten på kantene  Kalles G f = (V,E f ) for flytnettverket G = (V,E)  c f (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.  (Eller: Hvor mye flyt man kan kansellere, for motsatt retning.) 6

7 Residual nettverk  c f (u,v) = c(u,v) – f(u,v)  der f(u,v) er flyten for kanten (u,v) c(u,v) = 7f(u,v) = 3 c f (u,v) = 7 – 3 = 4 c(v,u) = 0 f(v,u) = -3c f (v,u) = 0 – (-3) = 3 7

8 Residual nettverk  Lettere å finne flytforøkende stier i G f enn i G  Flytforøkende sti er en sti fra s til t der alle kanter har tilgjengelig kapasitet 8

9 Residual nettverk  Lettere å finne flytforøkende stier i G f enn i G  Flytforøkende sti er en sti fra s til t der alle kanter har tilgjengelig kapasitet 9

10 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 10 • En generell metode for å finne maksimal flyt i et flytnettverk

11 Ford-Fulkerson algoritmen Ford-Fulkerson(G, s, t) sett all flyt til 0 så lenge p er en sti fra s til t i G f c f (p) = min{ c f (u,v) : (u,v) i p }for hver (u,v) i p f[u,v] = f[u,v] + c f (p) f[v,u] = -f[u,v] 11 p er en flytforøkende sti c f (p) er residualkapasiteten til den ”minste” kanten i p  Kjøretid O(E*| f’ |)  Der f’ er maksflyten funnet i algoritmen

12 Ford-Fulkerson algoritmen  Eksempelkjøring av algoritmen  Jukser litt, initialiserer ikke flyten til 0 først 12

13 Ford-Fulkerson algoritmen 13 Residualnettverk Etter flytforøkning Initialsteg| f | = 7

14 Ford-Fulkerson algoritmen 14 Residualnettverk Etter flytforøkning Flytforøkning| f | = 8

15 Ford-Fulkerson algoritmen 15 Residualnettverk Etter flytforøkning Flytforøkning| f | = 9

16 Ford-Fulkerson algoritmen 16 Residualnettverk Etter flytforøkning Ingen flere flytførkende stier| f | = 9 Vi har funnet maks-flyt og er ferdige

17 Ford-Fulkerson algoritmen 17  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 G f, ender vi opp med Edmonds-Karps algoritme

18 Edmonds-Karps algoritme  Bruker BFS for å finne korteste flytforøkende sti i G f, 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*E 2 ) 18

19 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 G f c f (p) = min{ c f (u,v) : (u,v) i p } for hver (u,v) i p f[u,v] = f[u,v] + c f (p) f[v,u] = -f[u,v] 19 p er en flytforøkende sti c f (p) er residualkapasiteten til den ”minste” kanten i p  Kjøretid O(V*E 2 )

20 Superkilde og supersluk  Hva hvis flytnettverket har flere kilder og flere sluker?  Superkilde og supersluk 20

21 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 sluket t  Kan ha mange snitt på en graf 21

22 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  Minimum-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 | 22

23 Snitt i flytnettverk Partisjonerer flytnettverket i to deler: S = { s, u } T = { v, w, x, t } f(S,T) = 4 + 2 + 1 - 0 = 7 c(S,T) = 3 + 5 + 5 = 13 snitt1 er ikke et min-cut 23

24 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 G f 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 Viktig! 24

25 Max-flow min-cut teoremet 25  G er fylt opp med maksflyt 9  G f har ingen flytforøkende stier  min-cut har kapasitet 9

26 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 26

27 Maksimum bipartitt matching • Terminologi • Hvordan finne maksimum bipartitt matching 27

28 Maksimum 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 28

29 Maksimum 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? 29

30 Maksimum 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|  Maksimum bipartitt matching er når |M| er størst mulig 30

31 Maksimum bipartitt matching 31 G = (V,E) V = {a,b,c,d,e,f} M = {} |M| = 0

32 Maksimum bipartitt matching 32 G = (V,E) V = {a,b,c,d,e,f} M = {(a,d), (c,b) (e,f)} |M| = 3

33 Maksimum bipartitt matching  Hvordan får vi til maskimum 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 33

34 Maksimum bipartitt matching 34 Har en bipartitt graf

35 Maksimum bipartitt matching 35 Legger til kilde s og sluk t, og rettede kanter fra s til t

36 Maksimum bipartitt matching 36 Legger på kapasitet 1 på kantene

37 Maksimum 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) 37

38 Korteste vei - Teori  BFS – like kantvekter, O(V + E)  DAG shortest path – acyclic, topological ordering O(V + E)  Dijkstra – nonegative, with list O(V^2), with heap O(ElogV)  Bellman-Ford – O(VE)  Floyd-Warshall – alle til alle, O(V^3)  Faster-All-Pairs-Shorthest-Paths – O(V^3lgV)  ? - negative cycles 16. oktober 2009Øvingsforelesning 9 - Børge Rødsjø38


Laste ned ppt "Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov."

Liknende presentasjoner


Annonser fra Google