Unimodulare Lineare Programme (vollständig)

Werbung
KAPITEL 5
Unimodulare lineare Programme
Wir betrachten hier eine Klasse von linearen Programmen mit der schönen
Eigenschaft, dass Basislösungen automatisch ganzzahlige Komponenten haben.
1. Unimodulare und total unimodulare Matrizen
1.1. Unimodulare Matrizen. Wir nennen eine (ganzahlige) Matrix B ∈
Zk×k unimodular, wenn gilt
|det B| = 1
d.h. det B = +1 oder det B = −1.
Die Grundbeobachtung ist diese:
L EMMA 5.1. Sei B unimodular und b ∈ Zk beliebig. Dann hat der Vektor
b = B −1 b
ausschliesslich ganzzahlige Komponenten bj .
Beweis. b ist die eindeutige Lösung der linearen Gleichung Bx = b. Nach der
Cramerschen Regel erhalten wir für die j-te Komponente:
|bj | =
|det B̂ j |
= |det B̂ j |.
|det B|
B̂ j ist die Matrix, die man aus B erhält, wenn man die j-te Spalte durch b ersetzt.
Wegen B̂ j ∈ Zk×k ist die Determinante ganzzahlig.
⋄
1.2. Total unimodulare Matrizen. Eine Matrix A = [aij ] ∈ Rm×n
heisst total unimodular, wenn für jede quadratische Untermatrix B von A
gilt:
det B ∈ {−1, 0, +1}.
Da die Matrixkoeffizienten aij (1 × 1)-Untermatrizen darstellen, muss also
insbesondere gelten:
aij (= det aij ) ∈ {−1, 0 + 1}.
Diese Bedingung ist allerdings für totale Unimodularität i.a. nicht hinreichend.
89
90
5. UNIMODULARE LINEARE PROGRAMME
B EISPIEL 5.1. Man betrachte die Matrizen
1 1
1 −1
1 −1
A1 =
, A2 =
, A3 =
.
1 2
1 1
−1 1
A1 ist unimodular aber nicht total unimodular. A2 ist nicht unimodular. A3
ist total unimodular.
Aus der Definition folgt sofort:
• Jede Untermatrix einer total unimodularen Matrix ist total unimodular.
• A ist total unimodular ⇐⇒ AT ist total unimodular.
• A ist total unimodular ⇐⇒ −A ist total unimodular.
Wichtige Beispiele total unimodularer Matrizen kann man so konstruieren:
S ATZ 5.1. Sei A = [aij ] ∈ {−1, 0+1}m×n eine Matrix mit der Eigenschaft:
(i) Jede Spalte Aj enthält höchstens zwei Koeffizienten aij 6= 0.
(ii) Für jede Spaltensumme gilt
m
X
−1 ≤
aij ≤ +1.
i=1
Dann ist A total unimodular.
Beweis. Sei B eine quadratische Untermatrix von A. Enthält B keinen Einheitsvektor (oder sein Negatives) als Spalte, so sind die Spaltensummen 0. D.h. B hat
nicht vollen Rang und somit det B = 0.
Sei also oBDA ein Einheitsvektor e ein Spalte von B. Entwickeln wir det B nach
dieser Spalte, so ergibt sich
det B = ±1 · det B ′ ,
wobei B ′ die entsprechende Teilmatrix von B ist. B ′ ist kleiner als B. Also schliessen wir per Induktion“:
”
det B ′ ∈ {−1, 0, +1} und folglich det B ∈ {−1, 0, +1}.
⋄
Auf die gleiche Weise macht man sich leicht klar:
• Erweitert man eine total unimodulare Matrix A mit einem Einheitsvektor e oder −e als neue Spalte, so ist die resultierende Matrix [A, ±e] auch total unimodular.
• Erweitert man eine total unimodulare Matrix mit einem Einheitsvektor eT oder −eT als neuer Zeile, so erhält man wieder eine total
unimodulare Matrix.
1. UNIMODULARE UND TOTAL UNIMODULARE MATRIZEN
91
1.3. Inzidenzmatrizen. Ein Graph G besteht aus einer (hier: endlichen) Menge V von Knoten und einer (hier: endlichen) Menge E von Kanten und einer Inzidenzrelation
Γ⊆V ×E
so, dass für alle e ∈ E gilt:
(G) 1 ≤ |Γ(e)| ≤ 2, wobei Γ(e) := {v ∈ V | (v, e) ∈ Γ}.
Im Fall |Γ(e)| = 1 ist e eine sog. Schlinge von G. Im Fall Γ(e) = {v, w}
sind v und w die sog. Endpunkte der Kante e.
B EMERKUNG. Für v ∈ V definiert man Γ(v) := {e ∈ E | (v, e) ∈ Γ} als die
Menge der mit dem Knoten v inzidenten Kanten. Abhängig von G kann |Γ(v)|
beliebig gross werden. Im Fall Γ(v) = ∅ heisst der Knoten v isoliert.
Wir können G orientieren, indem wir bei einer Kante e mit Γ(e) = {v, w}
einen der der Endpunkte als positiv“ und den anderen als “negativ“ auszei”
chen. Das heisst, wir ordnen der Kante e (willkürlich) Inzidenzkoeffizienten
av,e , aw,e ∈ {−1, 0, +1} zu derart, dass
(60)
av,e + aw,e = 0 für alle e ∈ E.
B EMERKUNG. im Fall aw,e + 1 und av,e = −1 kann man sich (wenn man will) e
als Pfeil vorstellen, der von v nach w gerichtet ist:
e
v −→ w.
Für die resultierende Inzidenzmatrix A = [av,e ] ∈ RV ×E gilt dann offensichtlich (nach Satz 5.1:
• Die Inzidenzmatrix A des (orientierten) Graphen G ist total unimodular.
Natürlich kann man auch eine (oder mehrere) der Kanten e umorientieren:
(av,e , aw,e ) → (a′v,e , a′w,e ) = (aw,e , av,e ).
Die resultierende Inzidenzmatrix A′ entsteht A dadurch, dass die Spalten
der umorientierten Kanten mit (−1) multipliziert werden. Wichtig ist dabei
die Beobachtung:
• Bei einer Umorientierung änder sich die lineare Abhängigkeitsstruktur der Inzidenzmatrix nicht!
Folglich können wir unproblematisch den Rang des Graphen G als den
Rank (irgendeiner) seiner Inzidenzmatrizen A definieren:
(61)
rg(G) := rg(A).
92
5. UNIMODULARE LINEARE PROGRAMME
1.4. Wege und Wälder. Ein Weg (oder Pfad) im Graphen G = (V, E)
ist eine Folge von Knoten und Kanten
P = v0 e1 v1 e2 v2 . . . vk−1 ek vk
mit Γ(ei ) = {vi−1 , vi } für alle i = 1, . . . , k. Im Fall vk = v0 ist der Weg P
geschlossen
Eine Kantenteilmenge T ⊆ E, die keinen geschlossenen Weg enthält ist ein
sog. Wald. Ein Wald, der alle nichtisolierten Knoten von G berührt, heisst
aufspannend.
S ATZ 5.2. Eine Teilmenge T ⊆ E ist ein Wald von G, genau dann, wenn die
T entsprechenden Spalten der Inzidenzmatrix A linear unabhängig sind.
Beweis. Man macht sich leicht klar, dass die Spaltensumme der Kanten eines geschlossenen Wegs den Nullvektor ergibt (Beweis?). Folglich kann eine linear unabhängige Spaltenmenge keine Teilmenge umfassen, die zu einem geschlossenen
Weg gehört.
Sei umgekehrt T eine Menge von Spalten derart, dass entsprechende Spaltenteilmatrix AT der Inzidenzmatrix linear abhängig ist. Wir wählen T so klein wie
möglich (unter der linearen Abhängigkeitsbedingung) und bezeichnen mit V (T )
die Menge der Endknoten von T . Wir wollen zeigen, dass GT = (V (T ), T ) einen
geschlossenen Weg enthält.
Sei e1 ∈ T und {v0 , v1 } = G(e1 ). v1 muss Endpunkt einer Kante e2 ∈ T sein,
da sonst die Kante e1 von T \ {e1 } in der Inzidenzmatrix linear unabhängig wäre!
(Das würde der Minimalität von T widersprechen.)
So durchschreitet man der Reihe nach einen Weg
v0 e1 v1 e2 v3 . . .
Da es nur endlich viele Knoten gibt, erreicht man nach endlichen vielen Schritten einen Knoten, den man schon vorher besucht hatte. Damit ist der behauptete
geschlossene Weg nachgewiesen.
⋄
KOROLLAR 5.1. Ein Wald T des Graphen G ist genau dann aufspannend,
wenn gilt
|T | = rg(G).
Beweis. Gäbe es einen nichtisolierten Knoten v, der mit keiner Kante in T inzidiert, dann auch eine Kante e ∈ E mit v ∈ Γ(e), die von T linear unabhängig ist.
Also ist T ∪ {e} in der Inzidenzmatrix A linear unabhängig und folglich
|T | + 1 ≤ rg(G).
Sei umgekehrt T aufspannend. Es gäbe aber eine von T linear unabhängige Kante
e. Wir wollen daraus einen Widerspruch ableiten.
2. TOTAL UNIMODULARE LINEARE PROGRAMME
93
Dazu teilen wir V in die maximalen Blöcke V1 , . . . , Vk von Knoten auf, die paarweise durch Wege verbunden sind. e kann also nicht zwischen zwei verschiedenen
Blöcken verlaufen. Andererseits kann aber e auch nicht zwei Knoten innerhalb eines Blockes verbinden (da sonst T ∪ {e} einen geschlossenen Weg enthielte). Also
kann es eine solche Kante e nicht geben.
⋄
2. Total unimodulare lineare Programme
Wir betrachten das LP
min cT x
(62)
x≥0
s.d. Ax = b
und nehmen an, dass die Matrix A ∈ Rm×n total unimodular ist.
Ist b ganzzahlig, dass folgern wir (wieder aus der Cramerschen Regel), dass
jede Basislösung des linearen Programms ganzzahlige Komponenten hat.
Das dazu duale LP ist
max bT y
(63)
s.d. AT y ≤ c.
Da auch AT total unimodular ist, folgern wir auf die gleiche Weise, dass
jede Basislösung des LP (63) ganzzahlige Komponenten hat – sofern der
Parametervektor c ganzzahlig ist. Denn das Problem ist äquivalent zu
max bT y
s.d. AT y − AT w + Is = c und y, w ≥ 0, s ≥ 0.
Die Koeffizientenmatrix [AT , −AT , I] des letzteren LP ist nämlich total unimodular.
Das Ganzzahligkeitsmodell kann noch weiter verallgemeinert werden, indem wir zustzlich Untergrenzen l und Obergrenzen u für die Variablen gestatten. Wir betrachten dann z.B. ein LP der Art
max cT x
s.d. Ax ≤ b und l ≤ x ≤ u.
Die Basislösungen auch dieses LP sind ganzzahlig, sofern b, l und u ganzzahlige Parametervektoren sind. Denn wir können die Restriktionen mit einer einer total unimodularen Koeffizientenmatrix so ausdrücken:
 
 
A
b
 I x ≤  u  .
−I
−l
94
5. UNIMODULARE LINEARE PROGRAMME
2.1. Zuordnungsprobleme. Seien S und T zwei disjunkte (endliche)
Mengen. Jedem s ∈ S steht eine Quantität bs zur Verfügung. Jedes t ∈ T
soll eine vorgeschriebene Quantität dt erhalten. Wir nehmen an, dass der
Transport“von xst ≥ 0 Einheiten von s nach t die Kosten cst xst verursacht.
”
Wir modellieren die Suche nach einem kostenminimalen Transportmodus
mit dem Graphen G = (S ∪ T, E = S × T ), dessen Kanten (s, t), wir als
von s nach t orientiert interpretieren. Dann ergibt sich das lineare Programm
X
X
min
cst xst s.d.
−xst ≥ −bs ∀s ∈ S
xst ≥0
(s,t)
t∈T
X
xst ≥ dt
∀t ∈ T.
s∈S
mit einer total unimodularen Koeffizientenmatrix. Also finden wir:
• Sind die bs und dt ganze Zahlen, dann ist jede Basislösung des
Transportproblems ganzzahlig.
Ein Spezialfall ergibt sich aus dem sog. (bipartiten) Matchingproblem: Wir
suchen eine Menge M von paarweise disjunkten Kanten“ (s, t) ∈ S × T
”
derart, dass der Wert
X
w(M) =
w(s, t)
(s,t)∈M
möglichst gross ist. Dabei ist w : S × T → R eine vorgegebene Bewertungsfunktion der Kanten.
Dazu betrachten wir das lineare Programm
X
X
max
wst xst s.d.
−xst ≥ −1
xst ≥0
(s,t)
∀s ∈ S
t∈T
X
xst ≤ 1
∀t ∈ T.
s∈S
Eine optimale Basislösung x ist ganzzahlig und hat deshalb alle Komponenten xst ∈ {0, 1}. Man macht sich leicht klar, dass eine Basislösung einem
Matching entspricht (und umgekehrt!).
2.2. Kürzeste Wege. Sei G = (V, E) ein gerichteter (d.h. orientierter)
Graph mit Inzidenzmatrix A. Der Weg
P = v0 e1 v1 e2 v3 . . . vk−1 ek vk
heisst gerichtet, wenn jede der Kanten ei ∈ P vom Endknoten vi−1 zum
Endknoten vi orientiert ist. Ausserdem sei mit d : E → R+ eine Distanzfunktion gegeben, welche die Länge“ einer Kante angibt. Wir definieren
”
2. TOTAL UNIMODULARE LINEARE PROGRAMME
95
die Länge von P
d(P ) := d(e1 ) + d(e2 ) + . . . + d(ek ).
Seien s, t ∈ V vorgegeben. Wir suchen einen gerichteten Weg kürzester
Länge von s nach t.
Dazu betrachten wir das lineare Programm
X
(64)
min
de xe s.d Ax = b,
x≥0
e∈E
V
wobei b ∈ R der Vektor ist mit den Komponenten

 −1 für v = s
1 für v = t
bv =

0 sonst.
Jeder gerichtete Weg
P = se1 v1 e2 v3 . . . vk−1 ek t
ergibt eine zulässige Lösung x(P ) des linearen Programms mit den Komponenten
1 für e ∈ P
(P )
xe =
0 sonst.
L EMMA 5.2. Sei x ≥ 0 eine Basislösung des linearen Programms (64),
dann enthält die Menge
tr(x) = {e ∈ E | xe > 0}
einen gerichteten Weg von s nach t.
Beweis. Den behaupteten Weg kann man leicht konstruieren. Wegen
X
ase xe = bs = 1
e
gibt es eine Kante e1 ∈ tr(x) mit Γ(e1 ) = {s, v1 }. Im Fall v1 = t, ist der Weg
gefunden. Ansonsten gibt es wegen
X
X
xe 1 +
av1 e xe =
av1 e xe = bv1 = 0
e6=e1
e
eine Kante e2 ∈ tr(x) mit Γ(e2 ) = {v1 , v2 }. Im Fall v2 = t ist der Weg gefunden.
Ansonsten folgt man einer Kante e3 tr(x) mit Γ(e3 ) = {v2 , v3 } usw.
Nach endlich vielen Schritten muss man t erreicht haben, da tr(x) keine geschlossenen Wege enthält.
⋄
B EMERKUNG. Man kann sich leicht davon überzeugen, dass bei einer zulässigen
Basislösung x der Träger tr(x) schon den Weg s nach t darstellt.
96
5. UNIMODULARE LINEARE PROGRAMME
2.2.1. Dijkstras Algorithmus. In der Praxis wird man einen kürzesten
Weg nicht mit allgemeiner LP-Software als Lösung von (64) berechnen,
sondern ein auf das Problem speziell zugeschnittenes Verfahren benutzen.
Es gibt viele solcher Verfahren. Eines der effizientesten ist der folgende
Algorithmus von Dijkstra.
OBdA gehen wir davon aus, dass es von einem Knoten v zu einem Knoten
w höchstens eine Kante e gibt, die wir somit als das Knotenpaar (v, w) eindeutig darstellen können. Wenn von v nach w keine Kante existiert, setzen
wir
dvw = ∞.
Dijkstras Algorithmus berechnet die kürzesten Wege von s zu allen übrigen
Knoten. Man stoppt natürlich, sobald man t erreicht hat.
(D0) Setze ys ← 0, S ← {s} und yv ← dsv für alle v ∈ V \ S.
(D1) Solange t ∈
/ S gilt, wähle ein v ∈ V \ S mit minimalem yv ,
setze S ← S ∪ {v} und datiere auf:
yw ← min{yw , yv + dvw } für alle w ∈ V \ S.
Man sieht leicht per Induktion (über |S|):
L EMMA 5.3. In jedem Stadium des Algorithmus von Dijkstra gilt:
• Die Werte yv der Knoten v ∈ S geben genau die minimale
Entfernung von s nach v an.
⋄
Aus der Dijkstra-Lösung y lässt sich leicht ein kürzester Weg von s nach t
durch Zurückrechnen“ gewinnen:
”
Man beginnt bei t und sucht ein v1 ∈ S \ {t} mit
yt = yv1 + dv1 ,t .
Nun sucht man ein v2 ∈ S \ {t, v1 } mit
yv1 = yv2 + dv2 ,v1
usw., bis man bei s angelangt ist.
3. ZIRKULATIONEN UND DAS MAX-FLOW-MIN-CUT-THEOREM
97
3. Zirkulationen und das MAX-Flow-MIN-Cut-Theorem
Der einfacheren Notation halber nehmen wir hier an, dass die Kanten des
gerichteten Graphen G = (V, E) genau den Knotenpaaren entsprechen.
D.h.
E = V × V.
Ein Fluss auf G ist ein Vektor x ∈ RE . Der (Netto-)Durchfluss von x im
Knoten v ist
X
X
X
δv (x) =
xvw −
xuv =
av,e xe ,
w∈V
u∈V
e∈E
wobei A = [av,e ] die Inzidenzmatrix von G ist. Der Vektor aller Knotendurchflüsse ist somit in Matrixnotation
δ(x) = Ax.
Sind alle Nettodurchflüsse 0, so ist x eine sog. Zirkulation auf G. D.h.
x ist Zirkulation
⇐⇒
x ∈ ker A.
Sei nun f = (t, s) ∈ E eine festgewählte Kante und x eine Zirkulation auf
G = (V, E). Stellen wir uns vor, dass die Kante f in G blockiert wird. Dann
stellen die übrigen Kantenflusswerte xe (e 6= f ) einen Fluss auf
Gf = (V, E \ {f })
dar, wo in s ein Nettoabfluss und bei t ein Nettozufluss in Höhe von xf
stattfindet. Mit anderen Worten:
• Die Einschränkung von x auf Gf beschreibt den Transport eines
Gutes“ der Quantität xf von der Quelle s zur Senke t entlang den
”
Kanten von Gf , wobei bei keinem Knoten v ∈ V \ {s, t} etwas
verloren geht oder hinzugewonnen wird.
Unter der Annahme, dass jede Kante e ∈ E \ {f } einer Kapazitätsschranke
ce ≥ 0 unterliegt, sucht man im Ford-Fulkerson-Problem nach einer nichtnegativen Zirkulation x, die den Transportwert xf maximiert:
(65)
max
s.d.
xf
δv (x) = 0
für alle v ∈ V
0 ≤ xe ≤ ce für alle e ∈ E \ {f }
Das zugehörige duale lineare Programm ist:
98
5. UNIMODULARE LINEARE PROGRAMME
min
X
ce ze
e∈E
(66)
s.d.
yw
ys
− yv + ze ≥ 0 für alle e = (v, w) 6= f
− yt + zf ≥ 1
ze ≥ 0.
3.1. Augmentierende Wege und Schnitte. Sei x ≥ 0 eine zulässige
Lösung von (65). Wie könnte man diese verbessern? Dazu betrachten wir
einen (nicht notwendig gerichteten) Weg
P = v0 e1 v1 e2 . . . vk−1 ek vk
von v0 = s nach vk = t. Im Fall ei = (vi−1 , vi ) ist ei eine sog. Vorwärtskante und im Fall ei = (vi , vi−1 ) eine Rückwärtskante von P . P + und P −
seien die Menge aller Vorwärts- bzw. Rückwärtskanten von P .
Wir setzen ε := min{ε+ , ε− }, wobei
ε+ := min{xvw − cvw | (v, w) ∈ P + }
ε− := min{xur | (u, r) ∈ P − },
und nennen P einen x augmentierenden Weg, wenn ε > 0 erfüllt ist.
Ist P augmentierend, dann können wir leicht eine bessere Zirkulation konstruieren:
• Wir erhören xe um ε auf der Kante e ∈ P + und erniedrigen xe um
ε auf jeder Kante e ∈ P − . (Die übrigen Kanten bleiben unberührt.)
Man sieht leicht: Es resultiert eine zulässige Zirkulation x′ mit Wert
x′f = xf + ε.
Suche nach augementierenden Wegen. Um einen x augmentierenden Weg
(sofern er existiert) gezielt zu suchen, betrachten wir den Hilfgraphen G(x)
auf den Knotenmenge V mit der Kantenmenge
E(x) = {(v, w) ∈ V × V | xvw < cvw oder xwv > 0}.
Man macht sich leicht klar:
• Die gerichteten Wege von s nach t in G(x) entsprechen genau den
x augmentierenden Wegen.
Ob t in G(x) von s erreichbar ist (d.h. ob ein augmentierender Weg existiert), kann man folglich mit dem Algorithmus von Dijkstra feststellen –
z.B. mit der Distanzfunktion
dvw = 1 für alle Kanten (vw) ∈ E(x).
3. ZIRKULATIONEN UND DAS MAX-FLOW-MIN-CUT-THEOREM
99
Schnitte. Sei allgemein S ⊆ V eine Knotenmenge mit s ∈ S. Dann bestimmt S einen sog. s-Schnitt
[S] = {(v, w) ∈ E | v ∈ S, w ∈
/ S}
der Kapazität
c[S] =
X
ce .
e∈[S]
L EMMA 5.4 (Schnittlemma). Sei x eine zulässige Zirkulation auf G und
S ⊆ V mit s ∈ S und t ∈
/ S. Dann gilt Dann gilt
xf ≤ c[S]
Beweis. Wir setzen yv = 1 für alle v ∈ S und yv = 0 für v ∈
/ S. Ausserdem
wählen wir ze = 1 für e ∈ [S] und ze = 0 sonst.
Dann erhalten wir eine zulässige Lösung des dualen Problems (66) mit Zielfunktionswert
X
ce ze = c[S].
e∈E
Die schwache Dualität der linearen Programmierung impliziert damit die behauptete Ungleichung.
⋄
Sei wie vorher x ≥ 0 eine zulässige Zirkulation und S die Menge aller von
s in G(x) erreichbaren Knoten. Im Fall t ∈
/ S ergibt sich nach Definition
von G(x) und der Knotenmenge S für eine Kante e = (v, w) ∈ E \ {f }:
c wenn v ∈ S und w ∈ V \ S
xe = e
0 wenn v ∈ V \ S und w ∈ S.
Also schliessen wir, dass x optimal ist. Denn
X
xf =
xe = c[S] (Beweis?).
e∈[S]
S ATZ 5.3 (Ford-Fulkerson). Eine zulässige Zirkulation x ist optimal für
(65) genau denn, wenn es im Hilfsgraphen G(x) keinen augmentierenden
Weg von s nach t gibt.
⋄
Das lineare Programm (65) hat auf jeden Fall x = 0 als zulässige Lösung.
Also erhalten wir unter den obigen Voraussetzungen eine kombinatorische
(graphentheoretische) Form der LP-Dualität:
100
5. UNIMODULARE LINEARE PROGRAMME
KOROLLAR 5.2 (MAX-Flow-MIN-Cut).
max{xf | x zulässig für (65)} = min{c[S] | s ∈ S ⊆ V \ {t}}.
⋄
3.2. Der Algorithmus von Ford-Fulkerson. Die vorangegangene Analyse des Ford-Fulkerson-Problems (65) legt folgenden Algorithmus nahe:
(FF0) Beginne mit x = 0 als Startlösung und suche (über den Hilfsgraphen G(x)) einen augmentierenden Weg P von s nach t.
(FF1) S TOP, wenn P nicht existiert: x ist optimal.
(FF2) Wenn P existiert, modifiziere x entlang P zu dem verbesserten
zulässigen Fluss x′ mit x′f = xf + ε und iteriere nun mit x′ anstelle
von x.
S ATZ 5.4. Wenn man die augmentierenden Wege im FF-Algorithm mit dem
Dijkstra-Algorithmus berechnet, benötigt man insgesamt weniger als |V |3
Augementierungsschritte.
Beweis. Wir betrachten eine momentane Zirkulation x und nehmen an, dass der
kürzeste augmentierende Weg in G(x) k Kanten hat. Sei F (x) die Vereinigung
aller Kanten in kürzesten augmentierenden Wegen. P sei ein konkreter kürzester
augmentierender Weg.
Nach der Augmentierung entlang P erhält man eine Zirkulation x′ so, dass F (x′ )
mindestens eine der Kanten aus F (x) nicht mehr enthält.
Neue Kanten können natürlich bei E(x′ ) auftreten. Diese neuen Kanten sind aber
entweder parallel oder antiparallel zu Kanten in P . Man kann sich nun überlegen, dass mit diesen Kanten keine neuen augmentierenden Wege mit ≤ k Kanten
möglich werden (s. Lemma 5.5).
Also fallen die Kardinalitäten |F (x)| jeweils um mindestens eins bis E(x) keinen
augmentierenden Weg der Länge ≤ k mehr gestattet. Da ein kürzester augementierender Weg ≤ |V | Kanten durchläuft, gibt es insgesamt weniger als
|V | · |E| = |V |3
Iterationen.
⋄
L EMMA 5.5. Sei G = (V, E) ein gerichteter Graph und P ein gerichteter
Weg von s nach t mit einer minimalen Anzahl k von Kanten. Wenn man nun
zu E Kanten hinzufügt, die zu Kanten von P antiparallel sind, entsteht kein
neuer gerichteter Weg von s nach t mit ≤ k Kanten.
Beweis. Sei A die Inzidenzmatrix von G. Wir betrachten das LP, das Weglänge
minimiert,
min 1T x s.d. Ax = b,
x≥0
4. KOMBINATORISCHE OPTIMIERUNG
101
mit der Optimallösung x(P ) sowie das zugehörige duale LP
max yT b (= yt − ys ) s.d.
yT A ≤ 1T .
(P )
Ist nun (v, w) eine Kante von P , dann hat (wegen xvw = 1 > 0 eine duale Optimallösung y∗ nach den Bedingungen des komplementären Schlupfes die Eigenschaft
∗
yw
− yv∗ = 1.
Wird nun die Kante (w, v) hinzugefügt, so ergibt sich bei dieser Kante
(67)
∗
yv∗ − yw
= yv∗ − 1 − yv∗ = −1 < 1.
Das heisst: y∗ ist auch im erweiteren dualen Problem eine zulässige Lösung und
auch (wegen yt∗ − ys∗ = k) weitherhin optimal.
Argumentieren wir nun mit dem komplementären Schlupf in die umgekehrte Richtung, so finden wir, dass (w, v) in keiner primalen Optimallösung nichttrivial vertreten sein kann.
⋄
4. Kombinatorische Optimierung
Die Techniken der vorangehenden Abschnitte können oft ausgebaut werden, um diskrete Optimierungsprobleme zu lösen und deren kombinatorische Struktur zu analysieren. Wir geben hier nur zwei kleine Beispiele.
4.1. Minimale aufspannende Wälder. Sei G = (V, E) ein (ungerichteter) Graph und c : E → R eine Kantengewichtsfunktion. Für jede Teilmenge K ⊆ E setzen wir
X
ce .
c(K) :=
e∈K
Wir suchen einen aufspannenden Wald T ⊆ E mit möglichst kleinem
Gesamtgewicht c(T ). OBdA dürfen wir dabei annehmen, dass G zusammenhängend ist, d.h. dass je zwei Knoten in G über einen Weg verbunden
sind. (Sonst lösen wir das Problem separat auf jeder der Zusammenhangskomponenten.)
Im Algorithmus benutzen wir die Notation
δ(U) := {e ∈ E | U ∩ Γ(e) 6= ∅ =
6 (V \ U) ∩ Γ(e)}.
P RIMS A LGORITHMUS :
(P0) Wähle ein s ∈ V und setze S := {s}, T := ∅.
(P1) Ist δ(S) =, stopp.
(P2) Wähle ein e ∈ δ(U) mit minimalem Gewicht ce und datiere auf:
T ← [T ∪ {e}] und U ← [U ∪ Γ(e)].
(P3) Gehe zu (P1).
102
5. UNIMODULARE LINEARE PROGRAMME
S ATZ 5.5. Der Algorithmus von Prim produziert einen minimalen aufspannenden Wald T .
Beweis. Es ist klar, dass die Konstruktion von T an keiner Stelle einen geschlossenen Weg gestattet. Der Algorithmus gibt also am Ende einen aufspanndenden Wald
aus.
Wir zeigen nun induktiv, dass in jeder Iteration die konstruierte Menge T in einem
optimalen aufspannenden Wald enthalten ist. (Folglich muss T am Ende selber
optimal sein.)
Sei T ∗ also optimal mit T ∗ ⊃ T und e ∈ δ(S) die vom Algorithmus gewählte neue
Kante. Wenn e ∈ T ∗ gilt, hat man natürlich T ∪ {e} ⊆ T ∗ .
Sei also e ∈
/ T ∗ . Dann enthält T ∗ ∪{e} einen geschlossenen Weg P mit e ∈ P . Der
′
Weg P = P \ {e} verbindet einen Knoten v ∈ S mit einem Knoten w ∈ V \ S.
Also muss P ′ eine Kante f ∈ δ(S) enthalten. Da e ∈ δ(S) gewichtsminimal
gewählt war, haben wir cf ≥ ce . Folglich ist
T ′ = (T ∗ \ f ) ∪ e
auch ein gewichtsminimaler aufspannender Wald und es gilt: T ′ ⊇ (T ∪ e).
⋄
B EMERKUNG. Man beachte die formale Ähnlichkeit der Algorithmen von Prim
und Dijkstra!
4.2. Der Satz von König-Egervary. Wir betrachten das Matchingproblem bzgl. der disjunkten Mengen S und T bzgl. der Gewichtsfunktion
w(s, t) ∈ {−∞, +1}.
w(s, t) = −∞ kann man so interpretieren, dass (s, t) für ein Matching nicht
zur Verfügung steht. Wir wollen also ein Matching mit möglichst vielen
zulässigen Kanten der Menge
E = {(s, t) ∈ S × T | w(s, t) = 1}.
B EMERKUNG. G = (S ∪ T, E) ist ein sog. bipartiter Graph.
Die Aufgabe, ein maximales Matching zu berechnen, erweist sich als ein
Spezialfall des FF-Problems. Dazu betrachten wir den Graphen G = (V, E),
mit zwei neuen Knoten s0 , t0 , d.h. V = (S ∪ T ∪ {s0 , t0 }, E, und Kantenmenge
E = E ∪ {(s0 , s) | s ∈ S} ∪ {(t, t0 ) | t ∈ T } ∪ {(t0 , s0 }
4. KOMBINATORISCHE OPTIMIERUNG
103
Beschränken wir nun die Kapazität der Kanten vom Typ (s0 , s) und (t, t0 )
auf 1 (und +∞“ sonst) , so berechnet der FF-Algorithmus einen Vektor
”
x ∈ {0, 1}E mit maximalem Flusswert
X
x(t0 ,s0 ) =
xe .
e∈E
Folglich ist M = {e ∈ E | xe = 1} ein maximales Matching in G.
Unter einer (Kanten-)Überdeckung von G = (S ∪ T, E) versteht man eine
Menge von Knoten(!) C ⊆ S ∪ T mit der Eigenschaft
(v, w) ∈ E
=⇒
v ∈ C oder w ∈ C.
C muss mindestens die Mächtigkeit eines beliebigen Matchings M haben,
denn jede Kante aus M muss ja durch C abgedeckt sein:
|C| ≥ |M|.
Sei andererseits M ein maximales Matching, das nach dem FF-Algorithmus
konstruiert wurde und C die Menge aller Knoten die von s0 noch erreichbar
sind. Wegen
c[C] = |M| < ∞,
kann es kein e ∈ E geben, das von S ∩ C nach T \ C verläuft. Also ist
C = (S \ C) ∪ (T ∩ C)
eine Überdeckung und hat Mächtigkeit
|C| = |S \ C| + |T ∩ C| = c[C] = |M|.
S ATZ 5.6 (König/Egervary). Sei G = (S ∪ T, E) bipartit. Dann gilt
max{|M| | M Matching} = min{|C| | C Überdeckung.}
⋄
B EMERKUNG. Das Matching- und Überdeckungsproblem kann sinnvoll auch im
Fall T = S (d.h. E ⊆ S × S) formuliert werden. Während das Matchingproblem
(mit etwas mehr Aufwand) noch effizient lösbar bleibt, ist in dieser Allgemeinheit kein effizienter Algorithmus für das analoge Überdeckungsproblem bekannt.
Insbesondere gilt der Satz von König/Egervary“ in diesem Rahmen nicht mehr.
”
B EMERKUNG. Der Satz von König/Egervary ist die Grundlage vieler Minimax-Sätze in der Kombinatorik.
Herunterladen