Tänk dig ett vattenledningssystem där vatten ska transporteras från en källa till en destination genom ett nätverk av rör med olika kapaciteter. Hur mycket vatten kan maximalt transporteras? Detta är essensen av nätverksflöden - ett kraftfullt verktyg som används för allt från internetroutning till logistikoptimering och ekonomiska modeller.
Fördjupning
Ett flödesnätverk är en riktad graf med kapaciteter på kanter och utpekade käll- och sänknoder. Ett flöde måste respektera kapacitetsrestriktioner och flödeskonservering (in = ut för alla noder utom källa/sänk). Max-flöde/min-snitt-satsen ger en fundamental dualitet mellan maximala flöden och minimala snitt. Ford-Fulkerson-algoritmen och dess varianter löser max-flöde-problemet effektivt.
Grundläggande definitioner
Ett flödesnätverk G = (V,E) är en riktad graf med kapacitetsfunktion c: E → ℝ⁺, källnod s och sänknod t. Ett flöde f assignerar ett flödesvärde f(e) till varje kant e så att 0 ≤ f(e) ≤ c(e) och flödeskonservering gäller för alla noder utom s och t.
Flödesekvationer
Max-flöde/min-snitt satsen
Ett snitt (S,T) partitionerar noderna så att s ∈ S och t ∈ T. Snittets kapacitet är summan av kapaciteter för kanter från S till T. Max-flöde/min-snitt-satsen säger att värdet av maximalt flöde equals kapaciteten av minimalt snitt.
Bevis av max-flöde/min-snitt (skiss)
Ford-Fulkerson algoritm
Ford-Fulkerson-algoritmen hittar maximalt flöde genom att iterativt hitta augmenterande vägar i residualnätverket. Residualnätverket innehåller 'bakåtkanter' med kapacitet lika med nuvarande flöde, vilket tillåter 'ångrande' av tidigare flödesbeslut.
Ford-Fulkerson algoritm
Residualnätverk
Edmonds-Karp algoritm
Edmonds-Karp är en implementation av Ford-Fulkerson som använder BFS för att hitta augmenterande vägar. Detta garanterar kortaste augmenterande väg i varje iteration och ger polynomiell tidskomplexitet O(VE²), oberoende av kapaciteternas storlek.
Varför BFS ger polynomiell tid?
Push-relabel algoritmer
Push-relabel algoritmer (Goldberg-Tarjan) arbetar med preflow istället för flöde. De underhåller höjdfunktion och 'pushar' överskottsflöde till högre noder eller 'relablar' noder när push inte är möjlig. Detta ger O(V²E) tid för basic-versionen och O(V³) för FIFO-versionen.
Push-relabel intuition
Tillämpningar
Nätverksflöden har enormt brett tillämpningsområde: transportnätverk, kommunikationsnätverk, produktionssystem, ekonomiska modeller, och kombinatoriska optimeringsproblem. Många problem kan reduceras till max-flöde genom kreativ modellering.
Tillämpning: Maximum bipartite matching
Tillämpning: Edge-disjoint paths
Vanliga misstag
❌ Glömma flödeskonservering
Inflöde måste equal utflöde för alla noder utom källa och sänk
❌ Förväxla snittkapacitet med flöde över snitt
Snittkapacitet är summa av kapaciteter S→T, flöde kan gå båda hållen
❌ Missförstå residualnätverk
Bakåtkanter representerar möjlighet att minska flöde, inte öka baklänges
Tillämpningar
Transport och logistik
Optimering av transport- och distributionsnätverk
Kommunikationsnätverk
Bandbreddsallokering och routing i nätverk
Kombinatorisk optimering
Många matchnings- och täckningsproblem reduceras till flöden
Övningar
Hitta maximalt flöde från s till t i nätverk med kanter: s→a(10), s→b(8), a→b(5), a→t(10), b→t(8).
Tips
Använd Ford-Fulkerson och hitta augmenterande vägar
Visa facit
- Väg s→a→t: flöde 10, bottleneck a→t
- Väg s→b→t: flöde 8, bottleneck s→b och b→t
- Total flöde: 10 + 8 = 18... Fel!
- Korrekt: s→a(10), a→t(10) ger flöde 10
- s→b(8), b→t(8) ger flöde 8
- Men bottleneck vid t är 10+8=18 > kapaciteter
- Korrekt max flöde: 16 (begränsat av sänkkapacitet)
Svar: Maximalt flöde = 16
Bevisa att värdet av vilket flöde som helst är ≤ kapaciteten av vilket snitt som helst.
Tips
Använd att allt flöde från s till t måste passera snittet
Visa facit
Svar: Flöde genom snitt ≤ snittkapacitet
Förklaring: För snitt (S,T): flöde från S till T ≤ kapacitet från S till T (inga negativa flöden). Allt s→t flöde måste passera snittet.
Reducer problemet att hitta maximum matching i bipartit graf till max-flöde.
Tips
Lägg till källa och sänk med kapacitet 1
Visa facit
Svar: Källa→A (kap 1), B→sänk (kap 1), originalkanter (kap 1)
Förklaring: Heltaliga kapaciteter ger heltalsflöde. Flöde 1 på originalkant motsvarar matchningskant. Max-flödesvärde = matchningsstorlek.
Sammanfattning
Nätverksflöden modellerar transport av resurser genom kapacitetsbegränsade nätverk. Max-flöde/min-snitt-satsen ger fundamental dualitet. Ford-Fulkerson och Edmonds-Karp använder augmenterande vägar. Push-relabel algoritmer arbetar med preflow. Tillämpningar inkluderar transport, kommunikation och kombinatorisk optimering. Många problem reduceras elegant till max-flöde genom kreativ modellering av kapaciteter och flödeskonservering.