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

Like dokumenter
Algdat - Øvingsforelesning. Maks flyt

Øvingsforelesning 12 Maks flyt

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

Avanserte flytalgoritmer

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å.

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

Maks Flyt og NPkompletthet

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning Korteste vei: Alle til alle

Rundt og rundt og. Trettende forelesning

Vann i rør Ford Fulkerson method

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Algdat Eksamensforelesning. Nils Barlaug

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

FORD ST _ST_Range_V2_ MY.indd FC1-FC3 27/06/ :24:01

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Eksamen i tdt4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Kompleksitetsteori reduksjoner

TMA4140 Diskret Matematikk Høst 2016

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

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

MAT1030 Diskret Matematikk

MAT1030 Forelesning 23

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

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

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

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.

Grunnleggende Grafteori

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

ALGORITMER OG DATASTRUKTURER

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

LO118D Forelesning 10 (DM)

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

Notat for oblig 2, INF3/4130 h07

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

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

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

LP. Leksjon 7. Kapittel 13: Nettverk strøm problemer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

IN Algoritmer og datastrukturer

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen

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

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

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

Online datingtjeneste The Hungarian Algorithm

All good things. Fjortende forelesning

MAT1030 Diskret matematikk

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

Matematikk for IT Eksamen. Løsningsforslag

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Lineær sortering. Radix sort

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

MAT1030 Forelesning 24

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Matchinger i ikke-bipartite grafer

Fra A til B. Syvende forelesning

Korteste vei problemet (seksjon 15.3)

ALGORITMER OG DATASTRUKTURER

Kompleksitet og Beregnbarhet

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

INF3/4130 PRØVE-EKSAMEN MED SVARFORSLAG Gjennomgås 1/ , (lille aud.)

INF Algoritmer og datastrukturer

Dijkstras algoritme Spørsmål

MAT1140: Kort sammendrag av grafteorien

MAT1030 Forelesning 22

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

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

ALGORITMER OG DATASTRUKTURER

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

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

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

INF Algoritmer og datastrukturer

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamenshefte TDT4120 Algoritmer og datastrukturer

Transkript:

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

Dagens tema Flytnettverk Terminologi Max-flow min-cut teoremet Ford-Fulkersons metode og algoritme Edmond-Karps algoritme Maksimum bipartitt matching Spesialtilfelle av flyt Andre algoritmer 2

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

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

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) = -4 c(v,u) = 0 5

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

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) = 7 f(u,v) = 3 c f (u,v) = 7 3 = 4 c(v,u) = 0 f(v,u) = -3 c f (v,u) = 0 (-3) = 3 7

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

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

Superkilde og supersluk Hva hvis flytnettverket har flere kilder og flere sluker? Superkilde og supersluk 10

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 11

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 12

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 13

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

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

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

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 17

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 } hver (u,v) i p f[u,v] = f[u,v] + c f (p) f[v,u] = -f[u,v] p er en flytforøkende sti cfor f (p) er residualkapasiteten til den minste kanten i p Kjøretid O(E* f ) Der f er maksflyten funnet i algoritmen 18

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

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

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

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

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

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 G f, ender vi opp med Edmonds-Karps algoritme 24

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 ) 25

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 p er en flytforøkende sti c f[u,v] = f[u,v] + c f (p) f (p) er residualkapasiteten til den minste kanten i p f[v,u] = -f[u,v] Kjøretid O(V*E 2 ) 26

Maksimum bipartitt matching Terminologi Hvordan finne maksimum bipartitt matching 27

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

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

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

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

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

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

Maksimum bipartitt matching Har en bipartitt graf 34

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

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

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