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.