Operations Research Flüsse in Netzwerken Flüsse in Netzwerken

Werbung
Operations Research
Flüsse in Netzwerken
Rainer Schrader
Zentrum für Angewandte Informatik Köln
2. Juli 2007
1 / 53
2 / 53
Flüsse in Netzwerken
Unimodularität
Gliederung
Zur Erinnerung:
• Netzwerke und Flüsse
• kürzeste Wege
• Zirkulationen und Schnitte
Proposition 5.9’
Sei A ∈ Zn×m total unimodular, b ∈ Zm und l, u ∈ Zn derart, dass
P = {x ∈ Rn | Ax = b, l ≤ x ≤ u} 6= ∅.
• bipartite Matchings
Dann ist P eine Polytop mit ganzzahligen Ecken.
Lemma 5.11 (Pioncaré)
Ist A eine {−1, 0, 1}-Matrix, bei der jede Spalte höchstens eine +1 und eine
−1 enthält, so ist A total unimodular.
• sei A eine Matrix mit Einträgen in {−1, 0, +1}
• A heißt Netzwerkmatrix, wenn in jeder Spalte genau eine −1 und
eine +1 vorkommt
3 / 53
4 / 53
Netzwerke und Flüsse
Netzwerke und Flüsse
• sei A ∈ {−1, 0, +1}n×m eine Netzwerkmatrix
Beispiel:
• jedem A entspricht ein gerichteter Graph G = (V , E ):
4
6
5
• die Zeilen von A entsprechen einer Menge V von m Knoten
6
• sei j eine Spalte mit den Koeffizienten avj = +1 und auj = −1
2
1
• wir ordnen j eine (gerichtete) Kanten ej = (u, v ) wie folgt zu:
5
9
7 8
ej
u −→ v
3
4
1
• damit entsprechen die Spalten einer Menge E von n gerichteten
3
2
Kanten
• A heißt dann auch die (Knoten-Kanten-) Inzidenzmatrix von
0
G = (V , E ).
B
B
B
B
B
B
@
−1
0
0
1
0
0
1
0
0
−1
0
0
1
−1
0
0
0
0
0
−1
1
0
0
0
0
−1
0
0
1
0
0
0
0
0
1
−1
0
−1
0
0
0
1
0
0
−1
0
0
1
0
0
1
0
0
−1
1
C
C
C
C
C
C
A
6 / 53
5 / 53
Netzwerke und Flüsse
Netzwerke und Flüsse
• ein Koordinatenvektor x ∈ Rn repräsentiert einen Fluss auf dem
• sei A ∈ Rm×n die Inzidenzmatrix des gerichteten Graphen G = (V , E )
Graphen G,
• seien c, l, u, b ganzzahlige Vektoren
• die Komponente xj gibt die Quantität an, die über die Kante
ej = (u, v ) „fließt“
• dann hat das folgende LP nur ganzzahlige Ecken:
• im Fall xj > 0 fließt xj von u and v
min cT x
Ax = b
l≤x≤u
x ganzzahlig
• im Fall xj < 0 fließt xj von v and u
• der Nettozufluss im Knoten v ∈ V ist:
• wir wollen versuchen, dieses LP graphentheoretisch zu interpretieren
δv (x) =
n
X
avj xj
j =1
=
X
(u,v )∈E
7 / 53
x(u,v ) −
X
x(v ,u)
(v ,u)∈E
8 / 53
Netzwerke und Flüsse
δv (x) =
n
X
Netzwerke und Flüsse
avj xj (v ∈ V )
• zu gegebenen Parametern c, l, u ∈ Rn und b ∈ Rm definieren wir das
j =1
Flussproblem auf G als das lineare Optimierungsproblem
• der Nettozufluss ist die Differenz aus eingehendem und ausgehendem
min cT x s.d. Ax = b, l ≤ x ≤ u.
Fluss von x im Knoten v ∈ V
(1)
• allgemeiner ist der Vektor
δ(x) = Ax ∈ RV
• l und u liefern (untere bzw. obere) Kapazitätsbeschränkungen der
Kanten von G
der Vektor der Nettozuflüsse der Knoten von G
• cj gibt die Kosten des Flusses pro Einheit über die Kante ej an
• zu einem Fluss x heißt der Knoten v ∈ V :
• gesucht ist somit ein Fluss, der
• Senke, falls δv (x) ≥ 0
• Quelle, falls δv (x) ≤ 0
• in jedem Knoten v einen vorgegebenen Nettozufluss bv erzeugt,
• die Kapazitäten der Kanten einhält, und
• Transitknoten, falls δv (x) = 0
• kostenminimal ist
9 / 53
10 / 53
Netzwerke und Flüsse
Flüsse in Netzwerken
Aus der totalen Unimodularität von A folgt:
Gliederung
Satz 1
• Netzwerke und Flüsse
• kürzeste Wege
• Zirkulationen und Schnitte
Sind b, l und u ganzzahlig, dann hat das Kosten-Flussproblem entweder
keine Optimallösung oder es besitzt eine Optimallösung mit ganzzahligen
Komponenten.
• bipartite Matchings
• etwas allgemeiner kann man als Kapazitätsrestriktionen die Funktionen
l, u : E → R ∪ {−∞, +∞} zulassen
• Satz 1 bleibt offensichtlich auch in dieser Allgemeinheit entsprechend
gültig
• das Kosten-Flussproblem kann z.B. mit dem Simplexalgorithmus gelöst
werden und hat – unter den Annahmen von Satz 1 – eine ganzzahlige
Optimallösung
• es gibt allerdings auch speziellere Verfahren, die kombinatorische
Struktur von G ausnützen und effizienter sind.
11 / 53
12 / 53
kürzeste Wege
kürzeste Wege
• sei V eine endliche Menge von Knoten
Lemma 2
• sei E ⊆ V × V eine Menge von (gerichteten) Kanten eines Graphen
Sei x ein ganzzahliger Punkt im Polyeder {x | Ax = b, x ≥ 0}. Dann enthält
die Menge P = {e ∈ E | xe > 0} einen (gerichteten) Weg von s nach t in
G.
G = (V , E )
• sei wieder A = [ave ] ∈ RV ×E die zugehörige Inzidenzmatrix mit
ave
8
<−1
= +1
:
0
Beweis:
falls e = (v , w )
falls e = (w , v )
sonst
• Induktion über ni=1 xi
• da der Nettozufluss von s negativ ist, existiert eine Kante (s, v1 ) ∈ P
P
• ist v1 = t , so ist der Weg gefunden
• wir wählen zwei feste Knoten s, t und definieren b ∈ RV als
8
<−1
bv = +1
:
0
• andernfalls seien
falls v = s
falls v = t
sonst.
xi0 =

xi − 1, falls i = 1
xi , sonst
• mit anderen Worten: wir wählen s als Quelle und t als Senke bzgl.
eines zu konstruierenden Flusses.
8
< −1, falls v = v1
+1, falls v = t
und bv =
:
0, sonst
• dann ist x0 ganzzahliger Punkt in {x | Ax = b0 , x ≥ 0}
• und die Behauptung folgt per Induktion.
13 / 53
14 / 53
kürzeste Wege
kürzeste Wege
• kürzeste (s, t )-Wege in G = (V , E ) können auch anders berechnet
• sei d : E → R+ eine Distanzfunktion auf den Kanten G = (V , E )
werden
• der Algorithmus von Dijkstra löst das Problem, indem er vom zu (2)
• sei x eine optimale Ecke des linearen Programms
P
min dT x = e∈E de xe
Ax = b, x ≥ 0
dualen linearen Programm ausgeht:
(2)
max
yT b
y A ≤ dT
T
• dann entspricht x einer Menge von Kanten, die einen Weg von
←→
max
yt − ys
vw − yv ≤ de
(e = (v , w ) ∈ E )
(3)
s nach t enthält
• gesucht ist also ein (Knoten)-Potential y : V → R so, dass:
• und minimale gesamte Kantenlänge hat,
• entlang jeder Kante e = (v , w ) ∈ E gilt:
• und damit einem kürzesten Weg von s nach t .
yw − yv ≤ de
bzw.
yw ≤ yv + de
• und die Potentialdifferenz yt − ys maximiert wird.
15 / 53
16 / 53
kürzeste Wege
kürzeste Wege
Algorithmus von Dijkstra
• der Einfachheit halber setzen wir dvw = +∞, wenn (v , w ) ∈
/E
(1) Setze ys ← 0, U ← {s} und yv ← dsv für alle v ∈ V r U .
(2) while U 6= V do:
(3)
wähle ein v ∈ V r U mit minimalem Potential yv
(4)
setze U ← U ∪ {v }
markiere v
(5)
für alle w ∈ V r U do
(5)
yw ← min{yw , yv + dvw }
schreibe fort
(6)
end do
(7) end while
• der Algorithmus baut nun ein optimales Potential sukzessive
folgendermaßen auf:
Algorithmus von Dijkstra
(1) Setze ys ← 0, U ← {s} und yv ← dsv für alle v ∈ V r U .
(2) while U 6= V do:
(3)
wähle ein v ∈ V r U mit minimalem Potential yv
(4)
setze U ← U ∪ {v }
(5)
für alle w ∈ V r U do
(5)
yw ← min{yw , yv + dvw }
(6)
end do
(7) end while
Lemma 3
Der Dijkstra-Algortithmus erzeugt dual-zulässige Potentiale.
Beweis:
• wir führen den Beweis in zwei Teilen
17 / 53
18 / 53
kürzeste Wege
kürzeste Wege
Algorithmus von Dijkstra
Algorithmus von Dijkstra
(1) Setze ys ← 0, U ← {s} und yv ← dsv für alle v ∈ V r U .
(2) while U 6= V do:
(3)
wähle ein v ∈ V r U mit minimalem Potential yv
(4)
setze U ← U ∪ {v }
markiere v
(5)
für alle w ∈ V r U do
(5)
yw ← min{yw , yv + dvw }
schreibe fort
(6)
end do
(7) end while
(1) Setze ys ← 0, U ← {s} und yv ← dsv für alle v ∈ V r U .
(2) while U 6= V do:
(3)
wähle ein v ∈ V r U mit minimalem Potential yv
(4)
setze U ← U ∪ {v }
markiere v
(5)
für alle w ∈ V r U do
(5)
yw ← min{yw , yv + dvw }
schreibe fort
(6)
end do
(7) end while
(i) wird u direkt vor v markiert, so gilt yu ≤ yv :
(ii) für e = (u, v ) ∈ E ist zu zeigen: yv ≤ yu + de
• wird u vor v markiert, so gilt diese Eigenschaft nach dem
• in dem Schritt, in dem u markiert wird, gilt yu ≤ yv
Fortschreiben
• danach bleibt yv entweder gleich oder wird erniedrigt
• danach bleibt yu konstant, yv kann nur noch verringert werden
• im zweiten Fall folgt aus dem Fortschreiben yv = yu + duv ≥ yu
19 / 53
20 / 53
kürzeste Wege
kürzeste Wege
Algorithmus von Dijkstra
• für jeden Knoten v gilt:
(1) Setze ys ← 0, U ← {s} und yv ← dsv für alle v ∈ V r U .
(2) while U 6= V do:
(3)
wähle ein v ∈ V r U mit minimalem Potential yv
(4)
setze U ← U ∪ {v }
markiere v
(5)
für alle w ∈ V r U do
(5)
yw ← min{yw , yv + dvw }
schreibe fort
(6)
end do
(7) end while
• es existiert ein Knoten u, der yv zum letzten Mal fortschreibt
• damit gilt
yv = yu + d(uv )
(4)
• mit dieser Eigenschaft lässt sich leicht ein Weg von s nach t durch
„Zurückrechnen“ gewinnen:
• andernfalls gilt zum Zeitpunkt der Markierung von v : yv ≤ yu ≤ yu + de
(1)
(2)
(3)
(4)
• danach bleibt yv konstant, yu kann nur noch verringert werden
• yu kann nur fortgeschrieben werden, wenn ein Knoten w markiert wird
• sei w der letzte solche Knoten
setze v = t
bestimme einen Knoten u, der (4) erfüllt
falls u = s, stop
andernfalls setze v = u und gehe zu (2)
• dann gilt
yv ≤ yw = yu − d(wu) ≤ yu ≤ yu + de .
21 / 53
22 / 53
kürzeste Wege
Flüsse in Netzwerken
Gliederung
Satz 4
• Netzwerke und Flüsse
• kürzeste Wege
• Zirkulationen und Schnitte
Der Dijkstra-Algorithmus berechnet eine kürzesten Weg.
Beweis:
• sei x ∈ RE der Inzidenzvektor des wie vorher bestimmten Weges
• bipartite Matchings
• dann ist x primal zulässig
• y ist dual zulässig
• per Konstruktion gilt:
x(uv ) > 0 =⇒ yv = yu + d(uv )
• damit folgt die Behauptung aus dem Satz vom komplementären
Schlupf.
23 / 53
24 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• wir betrachten wieder einen gerichteten Graphen G = (V , E )
• wir betrachten somit eine Zirkulation (oder Strömung )
• mit Knoten-Kanten-Inzidenzmatrix A und Kantenkapazitäten c
• d.h. einen Fluss x ∈ RE mit Nettozufluss δv (x) = 0 in jedem Knoten
v ∈V
• seien wiederum s und t zwei Knoten als Quelle und Senke
• d.h. bei einer Zirkulation ist jeder Knoten Transitknoten
• der Graph repräsentiert ein Netzwerk (Leitungen, Kanäle, usw.)
• und es gilt
• über das Netzwerk so viel wie möglich von s nach
x ∈ RE ist Zirkulation auf G
t „gepumpt“ werden
⇐⇒
Ax = 0.
• wir fügen dazu eine Rückkante f = (t , s) mit unbeschränkter Kapazität
hinzu
Ford-Fulkerson-Problem
• und messen die Stärke des Flusses in der Kante f
bestimme eine nichtnegative Zirkulation x, die den Wert xf maximiert:
max
s.d .
xf
δv (x)
≤ xe
0
=
≤
0
ce
für alle v ∈ V
für alle e ∈ E r {f }
(5)
25 / 53
26 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• im folgenden Beispielgraph sei ce = 1 für alle e ∈ E r f
• sei nun x ≥ 0 eine zulässige Lösung von (5)
• wir wollen versuchen, diese zu verbessern
• sei dazu G(x) ein Hilfsgraph auf V
• für eine Kante e = (v , w ) ∈ E r {f } enthält G(x) bis zu zwei Kanten
f
• eine mögliche Zirkulation x mit xf = 1 ist:
(v , w ),
falls xe < ce (Vorwärtskante)
(w , v ),
falls xe > 0 (Rückwärtskante)
• sei ε > 0 so, dass
xe + ε ≤ ce ,
xe − ε ≥ 0,
f
für alle Vorwärtskanten e
für alle Rückwärtskanten e
• x ist nicht maximal, kann aber nicht einfach erhöht werden.
27 / 53
28 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• die aktuelle Zirkulation x:
• sei P ein Weg von s nach t im Hilfsgraphen G(x)
• dann kann x um mindestens ε > 0 erhöht werden:
• erhöhe x um ε auf Vorwärtskanten von P und auf f = (t , s)
• erniedrige x um ε auf den Rückwärtskanten von P
f
• offensichtlich ist die resultierende Zirkulation
• der zugehörige Hilfsgraph G(x):
• nichtnegativ
• respektiert die Kapazitätsgrenzen
• und genügt den Knotendurchflussbedingungen
• P heißt augmentierender Weg
• G(x) kann Kanten enthalten, die in G nicht vorkommen
30 / 53
29 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• der Hilfsgraph G(x) mit einem augmentierendem Weg
• sei S die Menge aller Knoten, die in G(x) von s aus auf einem
gerichteten Weg erreicht werden können
• dann wissen wir also:
• im Fall t ∈ S kann x verbessert werden
• aus den vorangegangenen Überlegungen ergibt sich der folgende
• die verbesserte Zirkulation x0 :
Algorithmus:
f
31 / 53
32 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• wir wollen zeigen, dass der Algorithmus optimale Zirkulationen
Algorithmus von Ford-Fulkerson
berechnet
• dazu betrachten wir die LP-Formulierung des Flussproblems:
(1) beginne mit x = 0 als Startlösung
(2) konstruiere den Hilfsgraphen G(x)
max xf
δv (x) = 0
0 ≤ xe ≤ ce
(3) suche in G(x) einen augmentierenden Weg P von s nach t
(4) falls kein solcher Weg existiert, stop,
(5) andernfalls erhöhe x entlang P zu einem neuen Fluss x0 mit
xf0 = xf + ε
für alle v ∈ V
für alle e ∈ E r {f }
(5)
• äquivalent in Matrixschreibweise und mit Schlupfvariablen s ≥ 0:
min − efT x
Ax
Ix
x,
(6) setze x = x0 und gehe zu (2)
+
Is
s
=
=
≥
0
c
0
• hierbei ist ef der zu f ∈ E gehörige Einheitsvektor
33 / 53
34 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
max
s.d .
• die LP-Formulierung mit Schlupfvariablen:
min − efT x
Ax
Ix
x,
+
Is
s
=
=
≥
0
c
0
yT 0
yT A
+
+
zT c
zT
zT
+
+
zT c
zT
zT
• bzw.
min
s.d .
• das dazu duale lineare Programm lautet:
max
s.d .
yT 0
yT A
≤
≤
y A
−
−
−
zT c
zT
zT
ze
zf
ze
≥
≥
≥
0
1
0.
T
−efT
0T
≤
≥
−efT
0T
• letzteres ist äquivalent zu
≤
≤
−efT
0T
min
X
ce ze
e∈E
s.d .
35 / 53
yw − yv
ys − yt
+
+
für alle z = (v , w ) ∈ E
(6)
36 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• sei S ⊆ V eine Knotenmenge mit s ∈ S
Lemma 5
• dann bestimmt S einen s-Schnitt
Sei x eine Zirkulation und S ein Schnitt. Dann gilt:
X
X
xe −
xe = 0
[S : V r S] = {(v , w ) ∈ E | v ∈ S, w ∈
/ S}
• der Schnitt S hat die Kapazität
c[S : V r S] =
e∈[S:V rS]
X
ce
e∈[V rS:S]
Beweis:
e∈[S:V rS]
• für alle v in V r S gilt:
X
x(u,v ) −
(u,v )
X
x(v ,u) = 0
(v ,u)
• Summation ergibt:
s
X `X
t
v ∈V rS
(u,v )
x(u,v ) −
X
´
x(v ,u) = 0
(v ,u)
S
37 / 53
38 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
Lemma 6 (Schnittlemma)
• Summation ergibt:
X `X
v ∈V rS
(u,v )
x(u,v ) −
X
Sei x eine zulässige Zirkulation auf G und [S : V r S] ein beliebiger
s-Schnitt. Dann gilt
xf ≤ c[S : V r S].
´
x(v ,u) = 0
(v ,u)
• sei e = (u, v ) eine Kante mit u, v ∈ V r S
• dann wird xe in der Summation einmal positiv und einmal negativ
Beweis:
gezählt
• setze
• somit gehen in die Summation nur Kanten aus [S : V r S] und

[V r S : S] ein
yv =
1, für v ∈ S
0, für v ∈
/S

ze =
1, für e ∈ [S : V r S]
0, sonst
• woraus die Behauptung folgt.
• dies liefert eine zulässige Lösung des dualen Problems (6) mit
Zielfunktionswert
X
ce ze = c[S : V r S]
e∈E
• die Behauptung folgt dann aus der schwachen Dualität.
39 / 53
40 / 53
Zirkulationen und Schnitte
Zirkulationen und Schnitte
• sei wie vorher x ≥ 0 eine zulässige Zirkulation
Satz 7 (Ford-Fulkerson)
• sei S die Menge aller von s in G(x) erreichbaren Knoten
Eine zulässige Zirkulation x ist optimal für (5) genau denn, wenn es im
Hilfsgraphen G(x) keinen augmentierenden Weg von s nach t gibt.
• angenommen t ∈
/S
• das lineare Programm (5) hat auf jeden Fall x = 0 als zulässige
• per Definition von G(x) und S dann gilt für jede Kante
e = (v , w ) ∈ E r {f }:

ce
xe =
0
Lösung
• also erhalten wir unter den obigen Voraussetzungen eine
wenn v ∈ S und w ∈ V r S
wenn v ∈ V r S und w ∈ S.
kombinatorische (graphentheoretische) Form der LP-Dualität:
Korollar 8 (max-flow-min-cut)
• weiter folgt mit Lemma 5
xf =
X
xe = c[S : V r S].
max {xf | x ist zulässig für (5)} = min {c[S : V r S] | s ∈ S ⊆ V }.
e∈[S:V rS]
• somit ist x optimal
• daher ergibt sich der folgende Satz:
41 / 53
42 / 53
Zirkulationen und Schnitte
Flüsse in Netzwerken
Gliederung
Bemerkungen:
• Netzwerke und Flüsse
• kürzeste Wege
• Zirkulationen und Schnitte
• sind die Kapazitäten ce ganzzahlig, so ist klar, dass
• der FF-Algorithmus nur ganzzahlige Lösungen x generiert
• in jeder Iteration der Flusswert xf um ein ganzzahliges
ε ≥ 1 verbessert wird
• bipartite Matchings
• man kann zeigen, dass der FF-Algorithmus:
• sehr lange brauchen kann, um das Optimum zu bestimmen
• höchstens |V | · |E | Augmentierungen erfordert, wenn man
kürzeste augmentierende Wege wählt
• ( also z.B., wenn man P mit dem Dijkstra-Algorithmus berechnet)
43 / 53
44 / 53
bipartite Matchings
bipartite Matchings
• seien S und T zwei endliche disjunkte Mengen und E ⊆ S × T
• ein Matching ist eine Teilmenge M ⊆ E von paarweise
• wir betrachten den (ungerichteten) Graphen G = (S ∪ T , E )
nichtinzidenten Kanten:
• seine Kanten verlaufen nur zwischen S und T
(s1 , t1 ), (s2 , t2 ) ∈ M
s1 6= s2 , t1 6= t2 .
=⇒
• innerhalb von S oder von T gibt es keine Kanten
M
S
T
S
• ein solcher Graph G = (S ∪ T , E ) heißt bipartit
T
• wir suchen in G ein Matching maximaler Kardinalität
45 / 53
46 / 53
bipartite Matchings
bipartite Matchings
• das Matching-Problem lässt sich als Spezialfall des FF-Problems
• wir setzen die Kapazität der Kanten vom Typ (s0 , s) und (t , t0 ) auf
auffassen
1 (und „+∞“ sonst) ,
• dazu betrachten wir den Graphen G = (V , E ), mit zwei neuen Knoten
• offensichtlich entspricht jedem Matching ein ganzzahliger Fluss und
s0 und t0 , d.h. V = (S ∪ T ∪ {s0 , t0 }, E , und Kantenmenge
umgekehrt
• der FF-Algorithmus liefert einen Vektor x ∈ {0, 1}E mit maximalem
E = E ∪ {(s0 , s) | s ∈ S} ∪ {(t , t0 ) | t ∈ T } ∪ {(t0 , s0 }
Flusswert
x(t0 ,s0 ) =
X
xe .
e∈E
• folglich ist M = {e ∈ E | xe = 1} ein maximales Matching in G.
s
t
S
T
47 / 53
48 / 53
bipartite Matchings
bipartite Matchings
• sei andererseits M ein maximales Matching, das nach dem
• eine (Kanten-)Überdeckung von G = (S ∪ T , E ) ist Teilmenge der
FF-Algorithmus konstruiert wurde
Knoten C ⊆ S ∪ T mit der Eigenschaft
(v , w ) ∈ E
• sei C der Schnitt aller Knoten, die von s0 noch erreichbar sind
v ∈ C oder w ∈ C .
=⇒
• dann gilt;
c[C : V r C] = |M | < ∞,
C
• daher existiert kein e ∈ E , das von S ∩ C nach T r C verläuft
• also ist eine Überdeckung gegeben durch:
C = (S r C) ∪ (T ∩ C)
S
• sie hat Mächtigkeit
T
• da jede Kante aus M durch C abgedeckt sein muss, folgt:
|C| = |S r C| + |T ∩ C| = c[C : V r C] = |M |.
|C| ≥ |M |.
• somit ergibt sich:
50 / 53
49 / 53
bipartite Matchings
bipartite Matchings
• seien S und T disjunkte Mengen mit |S| = |T | = n < ∞ und
Satz 9 (König)
E =S ×T
Sei G = (S ∪ T , E ) bipartit. Dann gilt
• wir setzen V = S ∪ T und definieren die Matrix A = [ave ] ∈ RV ×E über
max {|M | | M Matching} = min {|C| | C Überdeckung.}
ave
• das Matching- und Überdeckungsproblem kann sinnvoll auch im
8
<−1
= +1
:
0
falls e = (v , w )
falls e = (w , v )
sonst
• der Vektor b ∈ RV sei gegeben durch
nichtbipartiten Fall formuliert werden
• während das Matchingproblem (mit etwas mehr Aufwand) noch effizient
bv =
lösbar bleibt, ist für das analoge Überdeckungsproblem kein effizienter
Algorithmus bekannt

−1
+1
falls v ∈ S
falls v ∈ T
• ein (S × T )-Matching entspricht einer (0, 1)-Lösung x von
• insbesondere gilt der Satz von König in diesem Rahmen nicht mehr
Ax = b.
51 / 53
52 / 53
bipartite Matchings
• es liegt hier also ein Flussproblem vor, bei dem alle Knoten in
S Quellen und alle Knoten in T Senken sind
• nach Wahl von b erfüllt jedes nichtnegative x ∈ RE automatisch die
Bedingung xe ≤ 1 für alle e ∈ E . A ist eine Netzwerkmatrix und
damit total unimodular
• also gilt
P = {x ∈ RE | Ax = b, x ≥ 0} = PI .
• die zulässigen Basislösungen des Simplexalgorithmus sind Ecken von
P und folglich ganzzahlig
• d.h. diese Basislösungen entsprechen Matchings
• mit anderen Worten: P ist genau das Matching-Polytop.
53 / 53
Herunterladen