Kurs 01142 Algorithmische Mathematik · Das Werk ist urheberrechtlich gesch utzt. Die dadurch begr...

56
Algorithmische Mathematik Prof. Dr. Winfried Hochstättler Kurs 01142 LESEPROBE

Transcript of Kurs 01142 Algorithmische Mathematik · Das Werk ist urheberrechtlich gesch utzt. Die dadurch begr...

Algorithmische Mathematik

Prof. Dr. Winfried Hochstättler

Kurs 01142

LESEPROBE

Das Werk ist urheberrechtlich geschutzt. Die dadurch begrundeten Rechte, insbesondere das Recht der Vervielfaltigung

und Verbreitung sowie der Ubersetzung und des Nachdrucks bleiben, auch bei nur auszugsweiser Verwertung, vorbe-

halten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder ein anderes Verfahren) ohne

schriftliche Genehmigung der FernUniversitat reproduziert oder unter Verwendung elektronischer Systeme verarbeitet,

vervielfaltigt oder verbreitet werden.

Inhaltsverzeichnis

1 Notation und Grundstrukturen 11.1 Gliederung und Motivation . . . . . . . . . . . . . . . . . . . . . . 11.2 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Abbildungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Beweismethoden und das Prinzip der vollständigen Induktion . . . . 7

1.4.1 Beweis durch Kontraposition . . . . . . . . . . . . . . . . . 81.4.2 Widerspruchsbeweis oder reductio ad absurdum . . . . . . . 91.4.3 Das Prinzip der vollständigen Induktion . . . . . . . . . . . 10

2 Elementare Abzählprobleme und diskrete Wahrscheinlichkeiten 132.1 Abbildungen und Mengen . . . . . . . . . . . . . . . . . . . . . . 132.2 Injektive Abbildungen, Permutationen und Fakultät . . . . . . . . . 152.3 Binomialkoeffizienten . . . . . . . . . . . . . . . . . . . . . . . . . 192.4 Abschätzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.5 Abschätzungen für Fakultäten und Binomialkoeffizienten . . . . . . 292.6 Das Prinzip von Inklusion und Exklusion . . . . . . . . . . . . . . 362.7 Diskrete Wahrscheinlichkeitsrechnung . . . . . . . . . . . . . . . . 41

2.7.1 Wahrscheinlichkeitsraum . . . . . . . . . . . . . . . . . . . 422.7.2 Bedingte Wahrscheinlichkeiten . . . . . . . . . . . . . . . . 452.7.3 Paradoxa . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.7.4 Zufallsvariablen . . . . . . . . . . . . . . . . . . . . . . . 48

2.8 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 51

3 Graphen 593.1 Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.1.1 Äquivalenzrelationen . . . . . . . . . . . . . . . . . . . . . 603.1.2 Partialordnungen . . . . . . . . . . . . . . . . . . . . . . . 63

3.2 Definition eines Graphen, Isomorphismus . . . . . . . . . . . . . . 65

i

ii Inhaltsverzeichnis

3.3 Teilgraphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703.4 Zusammenhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713.5 Kodierung von Graphen . . . . . . . . . . . . . . . . . . . . . . . . 733.6 Effiziente Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . 773.7 Breitensuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793.8 Tiefensuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.9 Valenzsequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.10 Eulertouren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.11 Gerichtete Graphen und Eulertouren . . . . . . . . . . . . . . . . . 973.12 2-Zusammenhang . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003.13 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 107

4 Bäume und Matchings 1194.1 Definition und Charakterisierungen . . . . . . . . . . . . . . . . . . 1194.2 Isomorphismen von Bäumen . . . . . . . . . . . . . . . . . . . . . 123

4.2.1 Isomorphismen von gepflanzten Bäumen . . . . . . . . . . 1244.2.2 Isomorphismen von Wurzelbäumen . . . . . . . . . . . . . 1264.2.3 Isomorphismen von Bäumen . . . . . . . . . . . . . . . . . 127

4.3 Aufspannende Bäume . . . . . . . . . . . . . . . . . . . . . . . . . 1294.4 Minimale aufspannende Bäume . . . . . . . . . . . . . . . . . . . 1324.5 Die Algorithmen von Prim-Jarnik und Boruvka . . . . . . . . . . . 1354.6 Die Anzahl aufspannender Bäume . . . . . . . . . . . . . . . . . . 1414.7 Bipartites Matching . . . . . . . . . . . . . . . . . . . . . . . . . . 1434.8 Stabile Hochzeiten . . . . . . . . . . . . . . . . . . . . . . . . . . 1534.9 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 157

5 Numerik und lineare Algebra 1695.1 Etwas mehr Notation . . . . . . . . . . . . . . . . . . . . . . . . . 1695.2 Kodierung von Zahlen . . . . . . . . . . . . . . . . . . . . . . . . 1715.3 Fehlerquellen und Beispiele . . . . . . . . . . . . . . . . . . . . . 1805.4 Gaußelimination und LU -Zerlegung, Pivotstrategien . . . . . . . . 1855.5 LU -Zerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1885.6 Gauß-Jordan-Algorithmus . . . . . . . . . . . . . . . . . . . . . . 1985.7 Elementares über Eigenwerte . . . . . . . . . . . . . . . . . . . . . 1995.8 Cholesky-Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . 2015.9 Matrixnormen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2065.10 Kondition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Inhaltsverzeichnis iii

5.11 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 215

6 Nichtlineare Optimierung 2296.1 Lokale Minima bei Funktionen einer Variablen . . . . . . . . . . . 2316.2 Abbildungen in mehreren Veränderlichen . . . . . . . . . . . . . . 2356.3 Steilkurs mehrdimensionale Differentialrechnung . . . . . . . . . . 239

6.3.1 Partielle und totale Ableitungen . . . . . . . . . . . . . . . 2396.3.2 Kurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

6.4 Notwendige und hinreichende Bedingungen für Extremwerte . . . . 2506.5 Exkurs Mannigfaltigkeiten und Tangentialräume . . . . . . . . . . . 2566.6 Bedingungen für Extrema auf gleichungsdefinierten Mengen . . . . 2586.7 Bedingungen für Extrema auf ungleichungsdefinierten Mengen . . . 2646.8 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 273

7 Numerische Verfahren zur Nichtlinearen Optimierung 2857.1 Das allgemeine Suchverfahren . . . . . . . . . . . . . . . . . . . . 2857.2 Spezielle Suchverfahren . . . . . . . . . . . . . . . . . . . . . . . 2927.3 Koordinatensuche und Methode des steilsten Abstiegs . . . . . . . . 3017.4 Newtonverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 3087.5 Verfahren der konjugierten Richtungen . . . . . . . . . . . . . . . . 3127.6 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 323

8 Lineare Optimierung 3378.1 Modellbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3388.2 Der Dualitätssatz der Linearen Optimierung . . . . . . . . . . . . . 3478.3 Das Simplexverfahren . . . . . . . . . . . . . . . . . . . . . . . . . 3528.4 Tableauform des Simplexalgorithmus . . . . . . . . . . . . . . . . 3598.5 Pivotwahl, Entartung, Endlichkeit . . . . . . . . . . . . . . . . . . 3618.6 Bemerkungen zur Numerik . . . . . . . . . . . . . . . . . . . . . . 3668.7 Die Zweiphasenmethode . . . . . . . . . . . . . . . . . . . . . . . 3678.8 Sensitivitätsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . 3728.9 Lösungsvorschläge zu den Übungen . . . . . . . . . . . . . . . . . 375

Symbolverzeichnis 385

Index 387

Literaturverzeichnis 397

iv Inhaltsverzeichnis

Kapitel 4

Bäume und Matchings

Wir haben im letzten Kapitel Bäume implizit als Ergebnis unserer Suchverfahrenkennen gelernt. In diesem Kapitel wollen wir diese Graphenklasse ausführlichuntersuchen.

4.1 Definition und Charakterisierungen

Die in den Suchverfahren konstruierten Graphen waren zusammenhängend undenthielten keine Kreise. Also vereinbaren wir:

4.1.1 Definition. Ein zusammenhängender Graph T = (V,E) , der keinen Kreisenthält, heißt Baum (engl. tree).

Wenn ein Graph keinen Kreis enthält, muss jeder maximale Weg zwangsläufigin einer „Sackgasse“ enden. Eine solche Sackgasse in einem Graphen nennen wirein Blatt.

4.1.2 Definition. Sei G= (V,E) ein Graph und v∈V mit deg(v) = 1. Dann nennenwir v ein Blatt von G .

Der Text vor der Definition deutet an, wie wir die Existenz eines Blattes in einemBaum mit mindestens zwei Knoten beweisen können. Genauer haben wir in einemGraphen ohne Kreis sogar immer mindestens zwei Blätter und der Beweis dieserAussage ist viel eleganter als das oben angedeutete Argument.

4.1.3 Lemma. Jeder Baum mit mindestens zwei Knoten hat mindestens zwei Blätter.

Beweis. Da der Baum zusammenhängend ist und mindestens zwei Knoten hat,enthält er Wege der Länge mindestens 1. Sei P = (v1, . . . ,vk) ein möglichst langer

119

120 Kapitel 4. Bäume und Matchings

Weg in T . Da T kreisfrei ist, ist v1 zu keinem von v3, . . . ,vk adjazent. Dann mussdeg(v1) aber schon 1 sein, da man ansonsten Pk verlängern könnte. Die gleicheArgumentation gilt für vk . 2

Wenn wir an einem Baum ein Blatt „abzupfen“, bleibt er immer noch ein Baum.Gleiches gilt, wenn wir ein Blatt „ankleben“.

4.1.4 Lemma. Sei G = (V,E) ein Graph und v ein Blatt in G. Dann ist G einBaum genau dann, wenn G∖ v ein Baum ist.

Beweis.

„⇒“ Sei G ein Baum und v ein Blatt von G . Dann enthält kein Weg in G denKnoten v als inneren Knoten. Also ist G∖ v immer noch zusammenhängendund gewiss weiterhin kreisfrei.

„⇐“ Sei umgekehrt nun vorausgesetzt, dass G ∖ v ein Baum ist. Da v ein Blattist, hat es einen Nachbarn u , von dem aus man, da G ∖ v nach Vorausset-zung zusammenhängend ist, in G ∖ v alle Knoten erreichen kann, also ist Gzusammenhängend. Offensichtlich kann v auf keinem Kreis liegen.

2

Lemma 4.1.4 ist nun ein wesentliches Hilfsmittel um weitere Eigenschaften, dieBäume charakterisieren, induktiv zu beweisen.

4.1.5 Satz. Sei T =(V,E) ein Graph und |V | ≥ 2 . Dann sind paarweise äquivalent:

a) T ist ein Baum.

b) Zwischen je zwei Knoten v,w ∈V gibt es genau einen Weg von v nach w.

c) T ist zusammenhängend und für alle e ∈ E ist T ∖ e unzusammenhängend.

d) T ist kreisfrei und für alle e ∈(V

2

)∖E enthält T + e einen Kreis.

e) T ist zusammenhängend und |E|= |V |−1 .

f) T ist kreisfrei und |E|= |V |−1 .

Beweis. Ist |V | = 2, so sind alle Bedingungen dann und nur dann erfüllt, wenn Gisomorph zum K2 ist. Man beachte, dass es in diesem Fall in der Bedingung d) eineKante e ∈

(V2

)∖E nicht gibt, weswegen die Bedingung trivialerweise erfüllt ist.

Wir fahren fort per Induktion und nehmen an, dass |V | ≥ 3 und die Gültigkeitder Äquivalenz für Graphen mit höchstens |V |−1 Knoten bewiesen sei.

4.1. Definition und Charakterisierungen 121

a)⇒ b) Seien also v,w ∈ V . Ist v oder w ein Blatt in G , so können wir o. E.annehmen, dass v ein Blatt ist, ansonsten vertauschen wir die Namen. Sei xder eindeutige Nachbar des Blattes v in T . Nach Lemma 4.1.4 ist T ∖ v einBaum. Also gibt es nach Induktionsvoraussetzung genau einen Weg von wnach x in T ∖ v . Diesen können wir mit (x,v) zu einem Weg von w nachv verlängern. Umgekehrt setzt sich jeder Weg von v nach w aus der Kante(x,v) und einem xw-Weg in T ∖ v zusammen. Also gibt es auch höchstenseinen vw-Weg in T .

Ist weder v noch w ein Blatt, so folgt die Behauptung per Induktion, wennwir ein beliebiges Blatt aus G entfernen.

b)⇒ c) Wenn es zwischen je zwei Knoten einen Weg gibt, ist der Graph zusam-menhängend. Sei e = (v,w) ∈ E . Gäbe es in T ∖ e einen vw-Weg, dann gäbees in T deren zwei, da e schon einen vw-Weg bildet. Also muss T ∖ e unzu-sammenhängend sein.

c)⇒ d) Wenn es in T einen Kreis gibt, so kann man jede beliebige Kante diesesKreises entfernen, ohne den Zusammenhang zu zerstören, da diese Kantein jedem Spaziergang durch den Rest des Kreises ersetzt werden kann. Daaber das Entfernen einer beliebigen Kante nach Voraussetzung in c) denZusammenhang zerstört, muss T kreisfrei sein. Die Aussage in c) verbietetalso die Existenz eines Kreises.

Sei e = (v,w) ∈(V

2

)∖ E . Da T zusammenhängend ist, gibt es in T einen

vw-Weg, der mit der Kante e einen Kreis in T + e bildet.

d)⇒ a) Wir müssen zeigen, dass T zusammenhängend und kreisfrei ist. Letztereswird in d) explizit vorausgesetzt. Wenn T nicht zusammenhängend wäre, sokönnte man eine Kante zwischen zwei Komponenten einfügen, ohne einenKreis zu erzeugen, im Widerspruch zu d). Also muss T zusammenhängendsein.

a)⇒ e), f ) Nach Voraussetzung ist T sowohl zusammenhängend als auch kreis-frei. Sei v ein Blatt in T . Nach Lemma 4.1.4 ist T ∖ v ein Baum. NachInduktionsvoraussetzung ist also |E(T ∖ v)| = |V (T ∖ v)| − 1. Nun ist aber|E(T )|= |E(T ∖ v)|+1 = |V (T ∖ v)|= |V (T )|−1.

122 Kapitel 4. Bäume und Matchings

a)⇐ e) Da T nach Voraussetzung zusammenhängend ist und |V | ≥ 3, haben wirdeg(v)≥ 1 für alle v ∈V und nach dem Handshake Lemma Proposition 3.9.1

∑v∈V

deg(v) = 2|E|= 2|V |−2.

Angenommen alle Knoten hätten Valenz degG(v)≥ 2, so müsste

∑v∈V

deg(v)≥ 2|V |

sein. Da dies nicht so ist, aber G zusammenhängend und nicht trivial ist,muss es einen Knoten mit deg(v) = 1, also ein Blatt in T , geben. Dannist T ∖ v weiterhin zusammenhängend und |E(T ∖ v)|= |V (T ∖ v)|−1. NachInduktionsvoraussetzung ist also T ∖v ein Baum und somit nach Lemma 4.1.4auch T ein Baum.

a)⇐ f ) Da T nach Voraussetzung kreisfrei und |V | ≥ 3 ist, hat T mindestenseine Kante. Angenommen T hätte kein Blatt. Dann könnten wir an einembeliebigen Knoten einen Weg starten und daraufhin jeden Knoten durch eineandere Kante verlassen, als wir sie betreten haben. Da |V | endlich ist, müssendabei Knoten wiederholt auftreten, was wegen der Kreisfreiheit nicht möglichist. Also hat T ein Blatt und wir können wie in a)⇐ e) schließen.

Man beachte, dass die Induktionsvoraussetzung nur bei den Implikationen a)⇒ b) ,a)⇒ e) , a)⇒ f ) , a)⇐ e) und a)⇐ f ) benötigt wurde. 2

4.1.6 Aufgabe. Sei T = (V,E) ein Baum und e ∈(V

2

)∖E . Zeigen Sie:

a) e schließt genau einen Kreis C mit T , den wir mit C(T, e) bezeichnen.

b) Für alle e ∈C(T, e)∖ e ist (T + e)∖ e ein Baum.

Lösung siehe Lösung 4.9.1.

4.1.7 Definition. Wir nennen den Kreis C(T, e) aus Aufgabe 4.1.6 den Fundamen-talkreis bezüglich T und e .

4.2. Isomorphismen von Bäumen 123

4.2 Isomorphismen von Bäumen

Im Gegensatz zu der Situation bei allgemeinen Graphen, bei denen angenommenwird, dass die Isomorphie ein algorithmisch schweres Problem ist, kann man beiBäumen (und einigen anderen speziellen Graphenklassen) die Isomorphie zweiersolcher Graphen effizient testen.

Wir stellen in diesem Abschnitt einen Algorithmus vor, der zu jedem Baum mitn Knoten einen 2n-stelligen Klammerausdruck berechnet, den wir als den Codedes Graphen bezeichnen. Dieser Code zweier Bäume ist genau dann gleich, wenndie Bäume isomorph sind. Die eindeutige Zuordnung eines Codes zu einer Klasseisomorpher Graphen ist ein probates Mittel zur Lösung des Isomorphieproblems,aber nicht unbedingt eine äquivalente Fragestellung [31].

Zunächst ist folgendes Konzept hilfreich, das wir implizit schon bei der Brei-tensuche kennen gelernt haben.

4.2.1 Definition. Ein Wurzelbaum oder eine Arboreszenz ist ein Paar (T,r) beste-hend aus einem Baum T und einem ausgezeichneten Knoten r ∈ V , den wir alsWurzelknoten bezeichnen. Wir denken uns alle Kanten des Baumes so orientiert,dass die Wege von r zu allen anderen Knoten v gerichtete Wege sind. Ist dann(v,w) ein Bogen, so sagen wir v ist Elternknoten von w und w ist Kind oder direk-ter Nachfahre von v .

4.2.2 Aufgabe. Zeigen Sie: Ein zusammenhängender, gerichteter Graph D = (V,A)ist genau dann ein Wurzelbaum, wenn es genau einen Knoten r ∈ V gibt, so dassdeg+(r) = 0 und für alle anderen Knoten v ∈V ∖r gilt

deg+(v) = 1.

Lösung siehe Lösung 4.9.2.

Wir werden in unserem Algorithmus zunächst in einem Baum einen Knoten alsWurzel auszeichnen, so dass wir bei isomorphen Bäumen isomorphe Wurzelbäumeerhalten. Diese Wurzelbäume pflanzen wir dann in die Zeichenebene, wobei wirwieder darauf achten, dass wir isomorphe Wurzelbäume isomorph einpflanzen.Gepflanzten Bäumen sieht man dann die Isomorphie fast sofort an.

4.2.3 Definition. Ein gepflanzter Baum (T,r,ρ) ist ein Wurzelbaum, bei dem anjedem Knoten v∈V eine Reihenfolge ρ(v) der direkten Nachfahren vorgegeben ist.Dadurch ist eine „Zeichenvorschrift“ definiert, wie wir den Graphen in die Ebeneeinzubetten haben.

124 Kapitel 4. Bäume und Matchings

Wie wir eben schon angedeutet haben, kann man für jede dieser Baumklassenmit zusätzlicher Struktur Isomorphismen definieren. Ein Isomorphismus zweierWurzelbäume (T,r),(T ′,r′) ist ein Isomorphismus von T und T ′ , bei dem r aufr′ abgebildet wird. Ein Isomorphismus gepflanzter Bäume ist ein Isomorphismusder Wurzelbäume, bei dem zusätzlich die Reihenfolge der direkten Nachfahrenberücksichtigt wird.

Die Bäume in Abbildung 4.1 sind alle paarweise isomorph als Bäume, diebeiden rechten sind isomorph als Wurzelbäume, und keine zwei sind isomorph alsgepflanzte Bäume.

Abbildung 4.1: Gepflanzte Bäume

Wie angekündigt gehen wir nun in drei Schritten vor.

a) Zu einem gegebenen Baum bestimmen wir zunächst eine Wurzel.

b) Zu einem Wurzelbaum bestimmen wir eine kanonische Pflanzung.

c) Zu einem gepflanzten Baum bestimmen wir einen eindeutigen Code.

Diesen Code des — wir sagen — kanonisch gewurzelten und kanonisch ge-pflanzten Baumes definieren wir als Code unseres Baumes, von dem aus wir gestar-tet waren. Da sich der erste und der zweite Schritt leichter darstellen lassen, wennder dritte bekannt ist, stellen wir dieses Verfahren von hinten nach vorne vor.

4.2.1 Isomorphismen von gepflanzten Bäumen

Sei also (T,r,ρ) ein gepflanzter Baum. Wir definieren den Code „bottom-up“ fürjeden Knoten, indem wir ihn zunächst für Blätter erklären und dann für gepflanzteBäume, bei denen alle Knoten außer der Wurzel schon einen Code haben. Dabeiidentifizieren wir den Code eines Knotens x mit dem Code des gepflanzten Baumes,der durch den Ausgangsbaum auf x und allen seinen (nicht notwendigerweisedirekten) Nachfahren induziert wird.

4.2. Isomorphismen von Bäumen 125

∙ Alle Blätter haben den Code () .

∙ Ist x ein Knoten mit Kindern in der Reihenfolge y1, . . . ,yk , deren CodesC1, . . . ,Ck sind, so erhält x den Code (C1C2 . . .Ck) .

Wir können nun aus dem Code den gepflanzten Baum wieder rekonstruieren.Dazu stellen wir zunächst fest, dass wir durch obiges Verfahren nur wohlgeklam-merte Ausdrücke erhalten.

4.2.4 Definition. Sei C ∈ (,)2m eine Zeichenkette aus Klammern. Dann nennenwir C wohlgeklammert, wenn C gleich viele öffnende wie schließende Klammernenthält und mit einer öffnenden Klammer beginnt, welche erst mit der letztenKlammer geschlossen wird.

4.2.5 Beispiel. Der Ausdruck C1 = ((())()) ist wohlgeklammert, aber die Aus-drücke C2 = (())(()()) und C3 = ())(() sind nicht wohlgeklammert.

4.2.6 Aufgabe. Der Code eines gepflanzten Baumes ist ein wohlgeklammerterAusdruck.Lösung siehe Lösung 4.9.3.

Wenn wir nun einen wohlgeklammerten Ausdruck haben, erhalten wir rekursiveinen gepflanzten Baum wie folgt.

∙ Zeichne eine Wurzel r .

∙ Streiche die erste (öffnende) Klammer.

∙ Solange das nächste Zeichen eine öffnende Klammer ist

– Suche die entsprechende schließende Klammer, schreibe die so definier-te Zeichenkette Ci bis hierhin raus, hänge die Wurzel yi des durch Ci

definierten gepflanzten Wurzelbaums als rechtes Kind an r an und lö-sche Ci aus C .

– Streiche die letzte (schließende) Klammer.

In dem Beispiel in Abbildung 4.2 erhalten wir als Codes der Kinder der Wurzelauf diese Weise völlig zu Recht C1 = ((()())(()()())) , C2 = () , C3 = (()()()) .

Wir erhalten also zu jedem wohlgeklammerten Ausdruck einen gepflanztenBaum. Dennoch ist nicht jeder wohlgeklammerte Ausdruck der Code eines Baumes.Dies ist schon im Beispiel in Abbildung 4.2 so. Der berechnete Code ist hier nichtder Code des abgebildeten Baumes, da dieser nicht kanonisch gepflanzt ist. Waskanonische Pflanzung genau bedeutet, werden wir in Unterabschnitt 4.2.2 erklären.

126 Kapitel 4. Bäume und Matchings

(((()())(()()()))()(()()()))

((()())(()()())) (()()())()

(()()())

() () ()(()())

() () () () ()

Abbildung 4.2: Der Code eines gepflanzten Baumes

4.2.7 Aufgabe. Sei (T,r,ρ) ein gepflanzter Baum und C der Code von (T,r,ρ) .Zeigen Sie: Mittels der soeben beschriebenen rekursiven Prozedur erhalten wireinen gepflanzten Baum, der isomorph zu (T,r,ρ) ist.Lösung siehe Lösung 4.9.4.

Eine anschauliche Interpretation des Codes eines gepflanzten Baumes erhältman, wenn man den geschlossenen Weg betrachtet, der an der Wurzel mit der Kantenach links unten beginnt und dann außen um den Baum herumfährt. Jedesmal, wennwir eine Kante abwärts fahren, schreiben wir eine öffnende Klammer, und eineschließende Klammer, wenn wir eine Kante aufwärts fahren. Schließlich machenwir um den ganzen Ausdruck noch ein Klammerpaar für die Wurzel.

Da wir nach Aufgabe 4.2.7 so den gepflanzten Baum (bis auf Isomorphie) aus Crekonstruieren können, haben nicht isomorphe gepflanzte Bäume verschiedene Co-des. Umgekehrt bleibt der Code eines gepflanzten Baumes unter einem Isomorphis-mus offensichtlich invariant, also haben isomorphe gepflanzte Bäume den gleichenCode.

4.2.2 Isomorphismen von Wurzelbäumen

Wir übertragen diesen Code nun auf Wurzelbäume, indem wir die Vorschrift modifi-zieren. Zunächst erinnern wir an die lexikographische Ordnung aus Aufgabe 3.1.15.Durch „(“ < „)“ erhalten wir eine Totalordnung auf (,) und damit eine lexiko-graphische Ordnung auf den Klammerstrings.

Dann ist ein Klammerstring A lexikographisch kleiner als ein anderer B , inZeichen A ⪯ B , wenn entweder A der Anfang von B ist oder die erste Klammer, inder die beiden Wörter sich unterscheiden, bei A öffnend und bei B schließend ist.

4.2. Isomorphismen von Bäumen 127

Z. B. ist (())⪯ () .Die Wahl dieser Totalordnung ist hier willkürlich. Unser Algorithmus funktio-

niert mit jeder Totalordnung auf den Zeichenketten.Wir definieren nun unseren Code auf Wurzelbäumen bottom-up wie folgt:

∙ Alle Blätter haben den Code () .

∙ Ist x ein Knoten mit Kindern, deren Codes bekannt sind, so sortiere dieKinder so zu y1, . . . ,yk , dass für die zugehörigen Codes gilt

C1 ⪯C2 ⪯ . . .⪯Ck.

∙ x erhält dann den Code (C1C2 . . .Ck) .

Diese Vereinbarung definiert auf den Knoten eine Reihenfolge der Kinder,macht also auf eindeutige Weise aus einem Wurzelbaum einen gepflanzten Baum.

4.2.8 Aufgabe. Zeigen Sie: Isomorphe Wurzelbäume erhalten so den gleichenCode.Lösung siehe Lösung 4.9.5.

4.2.3 Isomorphismen von Bäumen

Kommen wir nun zu den Bäumen. Wir versuchen zunächst von einem gegebenenBaum einen Knoten zu finden, der sich als Wurzel aufdrängt und unter Isomor-phismen fix bleibt. Ein solcher Knoten soll in der Mitte des Baumes liegen. Daszugehörige Konzept ist auch auf allgemeinen Graphen sinnvoll.

4.2.9 Definition. Sei G = (V,E) ein Graph und v ∈ V . Als Exzentrizität exG(v)bezeichnen wir die Zahl

exG(v) = maxdistG(v,w) | w ∈V, (4.1)

also den größten Abstand zu einem anderen Knoten.Das Zentrum Z(G) ist die Menge der Knoten minimaler Exzentrizität

Z(G) = v ∈V | exG(v) = minexG(w) | w ∈V . (4.2)

Offensichtlich ist das Zentrum eines Graphen eine Isomorphieinvariante.Ist das Zentrum unseres Baumes ein Knoten, so wählen wir diesen als Wurzel.

Ansonsten nutzen wir aus:

128 Kapitel 4. Bäume und Matchings

4.2.10 Lemma. Sei T = (V,E) ein Baum. Dann ist |Z(T )| ≤ 2 . Ist Z(T ) = x,ymit x = y, so ist (x,y) ∈ E .

Beweis. Wir beweisen dies mittels vollständiger Induktion über |V | . Die Aussageist sicherlich richtig für Bäume mit einem oder zwei Knoten. Ist nun |V | ≥ 3, soist nach Satz 4.1.5 e) ∑v∈V deg(v) = 2|V |−2 > |V | , also können nicht alle KnotenBlätter sein. Entfernen wir alle Blätter aus T , so erhalten wir einen nicht leerenBaum T ′ auf einer Knotenmenge V ′ ⊂ V , die echt kleiner geworden ist. In einemGraphen mit mindestens drei Knoten kann kein Blatt im Zentrum liegen, da dieExzentrizität seines Nachbarn um genau 1 kleiner ist. Also ist Z(T ) ⊆ V ′ , und füralle Knoten in w ∈V ′ gilt offensichtlich

exT ′(w) = exT (w)−1.

Folglich ist Z(T ) = Z(T ′) und dieses hat nach Induktionsvoraussetzung höchstenszwei Elemente. Sind es genau zwei Elemente, so müssen diese, ebenfalls nachInduktionsvoraussetzung, adjazent sein. 2

Besteht das Zentrum aus zwei Knoten x1 und x2 , so müssen wir uns für einendieser beiden als Wurzelknoten entscheiden. Dies müssen wir wiederum so festle-gen, dass das Vorgehen invariant unter einem Isomorphismus ist. Wir verwendendafür wieder die lexikographische Ordnung. Zunächst entfernen wir die verbinden-de Kante (x1,x2) , bestimmen die Codes der in x1 bzw. x2 gewurzelten Teilbäume.Nun wählen als Wurzel von T den Knoten, dessen Teilbaum den lexikographischkleineren Code hat. Sind die Codes gleich, wählen wir einen der beiden Knotenbeliebig. Wir fassen zusammen:

∙ Ist Z(G) = v , so ist der Code von T der Code von (T,v) .

∙ Ist Z(G) = x1,x2 mit x1 = x2 , so sei e = (x1,x2) . Seien T1,T2 die Kompo-nenten von T ∖e mit x1 ∈ T1 und x2 ∈ T2 . Sei Ci der Code des Wurzelbaumes(Ti,xi) und die Nummerierung der Bäume so gewählt, dass C1 ⪯ C2 . Dannist der Code von T der Code des Wurzelbaumes (T,x1) .

4.2.11 Satz. Zwei Bäume haben genau dann den gleichen Code, wenn sie isomorphsind.

Beweis. Sind zwei Bäume nicht isomorph, so sind auch alle zugehörigen gepflanz-ten Bäume nicht isomorph, also die Codes nach Aufgabe 4.2.7 verschieden. Seifür die andere Implikation ϕ : V → V ′ ein Isomorphismus von T = (V,E) nach

4.3. Aufspannende Bäume 129

T ′ = (V ′,E ′) . Seien r,r′ die bei der Konstruktion der Codes ausgewählten Wurzelnvon T bzw. T ′ . Ist ϕ(r) = r′ , so sind die Wurzelbäume (T,r) und (T ′,r′) isomorphund haben nach Aufgabe 4.2.8 den gleichen Code. Andernfalls besteht das Zentrumvon T aus zwei Knoten r,s und ϕ(s) = r′ . Dann ist aber der Code des in r′ gewur-zelten Teilbaumes (T ′

1,r′) von T ′ ∖ (ϕ(r),r′) lexikographisch kleiner als der des in

ϕ(r) gewurzelten Teilbaumes (T ′2,ϕ(r)) . Letzterer ist aber isomorph zu dem in r

gewurzelten Teilbaum (T2,r) von T ∖ (r,s) , welcher also nach Aufgabe 4.2.8 dengleichen Code wie (T ′

2,ϕ(r)) hat. Da aber r als Wurzel ausgewählt wurde, ist die-ser Code lexikographisch kleiner als der des in s gewurzelten Teilbaumes (T1,s) .Dessen Code ist aber wiederum nach Aufgabe 4.2.8 gleich dem Code von (T ′

1,r′) .

Also müssen alle diese Codes gleich sein. Somit sind (T1,r) und (T2,s) nach Auf-gabe 4.2.8 isomorphe Wurzelbäume. Sei ψ(V1,V2) : V1 → V2 ein entsprechenderIsomorphismus. Betrachten wir V =V1∪V2 als (V1,V2) bzw. (V2,V1) , so vermittelt(ψ,ψ−1) : (V1,V2)→ (V2,V1) =V einen Automorphismus von T und ϕ ∘ψ ist einIsomorphismus von (T,r) nach (T,r′) , also haben nach dem bereits Gezeigten Tund T ′ denselben Code. 2

4.2.12 Aufgabe. Berechnen Sie den Code des Baumes aus Abbildung 4.2.Lösung siehe Lösung 4.9.6.

4.3 Aufspannende Bäume

In diesem Abschnitt werden wir unter anderem den fehlenden Teil des Beweises,dass der BFS die Komponenten eines Graphen berechnet, nachholen. Die dort be-rechneten Teilgraphen spannen die Ausgangsgraphen auf. Solche minimalen auf-spannenden Teilgraphen bezeichnet man manchmal auch als Gerüste. Aber erstnoch mal zur Definition:

4.3.1 Definition. Ein kreisfreier Graph heißt Wald. Sei G = (V,E) ein Graph undT = (V,F) ein Teilgraph, bei dem die Zusammenhangskomponenten die gleichenKnotenmengen wie die Zusammenhangskomponenten von G haben. Dann sagenwir T ist G aufspannend. Ist T darüberhinaus kreisfrei, so heißt T ein G aufspan-nender Wald oder ein Gerüst von G . Ist G zusammenhängend und T ein Baum, soheißt T ein G aufspannender Baum.

Diese Definition ist offensichtlich auch für Multigraphen sinnvoll. Wir werdenim Folgenden auch bei Multigraphen von aufspannenden Bäumen sprechen.

130 Kapitel 4. Bäume und Matchings

Wir analysieren nun zwei schnelle Algorithmen, die in einem zusammenhän-genden Graphen einen aufspannenden Baum berechnen. Die im vorhergehendenKapitel betrachteten Algorithmen BFS und DFS kann man als Spezialfälle deszweiten Verfahrens betrachten.

Die Methode T.CreatingCycle(e) überprüfe zu einer kreislosen Kantenmen-ge T mit e ∈ T , ob T +e einen Kreis enthält, T.AddEdge(e) füge zu T die Kantee hinzu.

4.3.2 Algorithmus. Sei E eine (beliebig sortierte) Liste der Kanten des Graphen(V,E) und zu Anfang T = /0 .

for e in E:if not T.CreatingCycle(e):

T.AddEdge(e)

4.3.3 Lemma. Algorithmus 4.3.2 berechnet einen G aufspannenden Wald.

Beweis. Zu Anfang enthält T gewiss keinen Kreis. Da nie eine Kante hinzugefügtwird, die einen Kreis schließt, berechnet der Algorithmus eine kreisfreie Menge, al-so einen Wald T . Wir haben zu zeigen, dass zwischen zwei Knoten u,v genau dannein Weg in T existiert, wenn er in G existiert. Eine Implikation ist trivial: wenn eseinen Weg in T gibt, so gab es den auch in G . Sei also u = v0,v1, . . . ,vk = v einuv-Weg P in G . Angenommen u und v lägen in unterschiedlichen Komponentenvon T . Sei dann vi der letzte Knoten auf P , der in T in der gleichen Komponentewie u liegt. Dann ist e = (vivi+1) ∈ E ∖T . Als e im Algorithmus abgearbeitet wur-de, schloss e folglich mit T einen Kreis. Also gibt es in T einen Weg von vi nachvi+1 im Widerspruch dazu, dass sie in verschiedenen Komponenten liegen. 2

Betrachten wir die Komplexität des Algorithmus, so hängt diese von einereffizienten Implementierung des Kreistests ab. Eine triviale Implementierung dieserSubroutine in O(|V |) Zeit labelt ausgehend von einem Endknoten u von e = (u,v)alle Knoten, die in T von u aus erreichbar sind. Wird v gelabelt, so schließt eeinen Kreis mit T und sonst nicht. Dies führt aber zu einer Gesamtlaufzeit vonO(|V | · |E|) . Um effizienter zu werden, müssen wir folgendes klassische Problemaus der Theorie der Datenstrukturen schneller lösen.

4.3.4 Problem (UNION-FIND). Sei V = 1, . . . ,n und eine initiale Partition inn triviale einelementige Klassen V = 1∪ . . . ∪n gegeben. Wie sieht eine ge-eignete Datenstruktur aus, so dass man folgende Operationen effizient auf einergegebenen Partition ausführen kann?

4.3. Aufspannende Bäume 131

UNION Gegeben seien x,y aus verschiedenen Klassen, vereinige diese Klassen.

FIND Gegeben seien x,y∈V . Stelle fest, ob x und y in der gleichen Klasse liegen.

Was hat dieses Problem mit einer effizienten Implementierung von Algorith-mus 4.3.2 zu tun? Zu jedem Zeitpunkt besteht T aus den Kanten eines Waldes.Die Knotenmengen seiner Zusammenhangskomponenten liefern die Klassen unse-rer Partition. Für den Kreistest genügt es dann zu prüfen, ob die Endknoten x,y derKante (x,y) in der gleichen Klasse liegen. Ist dies nicht der Fall, so nehmen wir ein T auf und müssen die Klassen von x und y vereinigen.

Also benötigen wir für unseren Algorithmus zur Berechnung eines aufspannen-den Waldes |E| FIND und höchstens |V |−1 UNION Operationen.

Wir stellen eine einfache Lösung dieses Problems vor. Jede Klasse hat eineNummer, jeder Knoten die Nummer seiner Klasse. In einem Array speichern wireinen Zeiger auf die Klasse jedes Knotens, die als Liste organisiert ist. Die Klassehat zusätzlich ein Feld, in dem die Anzahl der Elemente der Klasse eingetragenist, bei einer nicht mehr existierenden Nummer ist der Eintrag 0. Für eine FIND-Operation benötigen wir dann nur einen Vergleich der Nummern der Klassen,also konstante Zeit. Bei einer UNION-Operation erbt die kleinere Komponentedie Nummer der größeren, wir datieren die Nummern der Knoten in der kleinerenKomponente auf und verschmelzen die Listen.

4.3.5 Lemma. Die Kosten des Komponentenverschmelzens über den gesamten Laufdes Algorithmus betragen akkumuliert O(|V | log |V |) .

Beweis. Wir beweisen dies mit vollständiger Induktion über n = |V | . Für n = 1ist nichts zu zeigen. Verschmelzen wir zwei Komponenten T1 und T2 der Größen1 ≤ n2 mit n = n1 +n2 , dann ist n1 ≤ n

2 und das Update kostet cn1 . Addieren wirdies zu den Kosten für das Verschmelzen der einzelnen Knoten zu T1 und T2 , dienach Induktionsvoraussetzung bekannt sind, erhalten wir

cn1 + cn1 log2 n1 + cn2 log2 n2 ≤ cn1 + cn1 log2n2+ cn2 log2 n

= cn1 + cn1(log2 n−1)+ cn2 log2 n

= cn log2 n.

2

132 Kapitel 4. Bäume und Matchings

4.3.6 Bemerkung. Die beste bekannte UNION-FIND Struktur geht auf R. Tarjanzurück [37]. Die Laufzeit ist dann beinahe linear. Man hat als Laufzeitkoeffizientenzusätzlich noch die so genannte Inverse der Ackermann-Funktion, eine Funktion,die zwar gegen Unendlich wächst, aber viel langsamer als logn , log logn etc. (sieheetwa [9]).

Unser zweiter Algorithmus sieht in etwa aus wie eine allgemeinere Version desBreadth-First-Search Algorithmus. Auf Grund dieser Allgemeinheit beschreibenwir ihn nur verbal.

4.3.7 Algorithmus. Sei v ∈V .

∙ Setze V0 = v, T0 = /0, i = 0

∙ Solange es geht

Wähle eine Kante e = (x,y) ∈ E mit x ∈Vi, y ∈Vi und setzeVi+1 =Vi ∪y, Ti+1 = Ti ∪e, i = i+1 .

4.3.8 Lemma. Wenn Algorithmus 4.3.7 endet, dann ist T = Ti aufspannender Baumder Komponente von G, die v enthält.

Beweis. Die Kantenmenge T ist offensichtlich zusammenhängend und kreisfreiund verbindet alle Knoten in Vi . Nach Konstruktion gibt es keine Kante mehr, dieeinen Knoten aus Vi mit einem weiteren Knoten verbindet. 2

Zwei Möglichkeiten, diesen Algorithmus zu implementieren, haben wir mitBFS und DFS kennen gelernt und damit an dieser Stelle deren Korrektheitsbeweisenachgeholt. Der zu BFS angegebene Algorithmus startet allerdings zusätzlich injedem Knoten und überprüft, ob dieser in einer neuen Komponente liegt. Indem wirLemma 4.3.8 in jeder Komponente anwenden, haben wir auch den fehlenden Teildes Beweises von Satz 3.7.1 nachgeholt.

4.4 Minimale aufspannende Bäume

Wir wollen nun ein einfaches Problem der „Kombinatorischen Optimierung“ ken-nen lernen. Die Kanten unseres Graphen sind zusätzlich mit Gewichten versehen.Sie können sich diese Gewichte als Längen oder Kosten der Kanten vorstellen.

Betrachten wir etwa das Problem, eine Menge von Knoten kostengünstigstdurch ein Netzwerk zu verbinden. Dabei sind zwei Knoten miteinander verbunden,

4.4. Minimale aufspannende Bäume 133

wenn es im Netzwerk einen Weg – eventuell mit Zwischenknoten – vom einen zumanderen Knoten gibt.

Uns sind die Kosten der Verbindung zweier Nachbarn im Netzwerk bekannt,und wir wollen jeden Knoten von jedem aus erreichbar machen und die Gesamt-kosten minimieren.

Als abstraktes Problem erhalten wir dann das Folgende:

4.4.1 Problem. Sei G = (V,E) ein zusammenhängender Graph und w : E → Neine nichtnegative Kantengewichtsfunktion. Bestimme einen aufspannenden Teil-graphen T = (V,F) , so dass

w(F) := ∑e∈F

w(e) (4.3)

minimal ist.

4.4.2 Bemerkung. Bei den Überlegungen zu Problem 4.4.1 macht es keinen we-sentlichen Unterschied, ob die Gewichtsfunktion ganzzahlig oder reell ist. Da wirim Computer mit beschränkter Stellenzahl rechnen, können wir im praktischen Be-trieb sowieso nur mit rationalen Gewichtsfunktionen umgehen. Multiplizieren wirdiese mit dem Hauptnenner, ändern wir nichts am Verhältnis der Kosten, insbe-sondere bleiben Optimallösungen optimal. Also können wir in der Praxis o. E. beiProblem 4.4.1 stets von ganzzahligen Daten ausgehen.

Da die Gewichtsfunktion nicht-negativ ist, können wir, falls eine Lösung Krei-se enthält, aus diesen so lange Kanten entfernen, bis die Lösung kreisfrei ist, ohnehöhere Kosten zu verursachen. Also können wir uns auf folgendes Problem zurück-ziehen:

4.4.3 Problem (Minimaler aufspannender Baum (MST, von engl. Minimum Span-ning Tree)). Sei G = (V,E) ein zusammenhängender Graph und w : E → N einenichtnegative Kantengewichtsfunktion. Bestimme einen G aufspannenden BaumT = (V,F) minimalen Gewichts w(F) .

Der vollständige Graph Kn mit n Knoten hat nn−2 aufspannende Bäume, wiewir in Abschnitt 4.6 sehen werden. Eine vollständige Aufzählung ist also kein effi-zientes Verfahren. Ein solches gewinnen wir aber leicht aus Algorithmus 4.3.2. Derfolgende Algorithmus heißt Greedy-Algorithmus (greedy ist englisch für gierig),weil er stets lokal den besten nächsten Schritt tut. Eine solche Strategie ist nicht im-mer zielführend, in diesem Falle aber schon, wie wir sehen werden. Der lokal beste

134 Kapitel 4. Bäume und Matchings

nächste Schritt ist hier die leichteste Kante, die mit dem bereits erzeugten Graphenkeinen Kreis schließt. Also sortieren wir zunächst die Kanten nicht-absteigend undwenden dann Algorithmus 4.3.2 an.

4.4.4 Algorithmus (Greedy-Algorithmus (Kruskal)). Sortiere die Kanten so, dass

w(e1)≤ w(e2)≤ . . .≤ w(em)

und führe Algorithmus 4.3.2 aus.

4.4.5 Satz. Der Greedy-Algorithmus berechnet einen minimalen aufspannendenBaum.

C2

g

fC1

e

Abbildung 4.3: Zum Beweis von Satz 4.4.5. Kanten in T sind durchgezogen ge-zeichnet, die in T gestrichelt.

Beweis. Als spezielle Implementierung von Algorithmus 4.3.2 berechnet der Gree-dy-Algorithmus einen aufspannenden Baum T . Angenommen es gäbe einen auf-spannenden Baum T mit w(T ) < w(T ) . Sei dann ein solches T so gewählt, dass|T ∩ T | maximal ist. Sei e die Kante mit kleinstem Gewicht in T ∖ T . Dann schließte in T nach Satz 4.1.5 einen Kreis C1 (siehe Abbildung 4.3). Nach Wahl von Tmuss nun

w( f )< w(e)

für alle f ∈ C1 ∖ T sein, denn sonst könnte man durch Ersetzen eines solchen fmit w( f ) ≥ w(e) durch e einen Baum T = (T ∖ f )+ e konstruieren mit w(T ) ≤w(T ) < w(T ) und |T ∩ T | > |T ∩ T | . Sei nun f ∈ C1 ∖ T . Da f vom Greedy-Algorithmus verworfen wurde, schließt es mit T einen Kreis C2 . Da die Kantennach aufsteigendem Gewicht sortiert wurden, gilt für alle g ∈C2 :

w(g)≤ w( f ).

4.5. Die Algorithmen von Prim-Jarnik und Boruvka 135

Sei g ∈C2 ∖ T . Dann ist g ∈ T ∖ T und

w(g)≤ w( f )< w(e).

Also hat g ein kleineres Gewicht als e im Widerspruch zur Wahl von e . Folglichkann es ein solches T nicht geben und die Behauptung des Satzes ist bewiesen. 2

4.4.6 Aufgabe. Sei G = (V,E) ein zusammenhängender Graph, w : E → Z eineKantengewichtsfunktion und H = (V,T ) ein G aufspannender Baum. Zeigen Sie:H ist genau dann ein minimaler G aufspannender Baum, wenn

∀e ∈ E ∖T ∀e ∈C(T, e) : w(e)≤ w(e),

wenn also in dem nach Aufgabe 4.1.6 eindeutigen Fundamentalkreis C(T, e) , dene mit T schließt, keine Kante ein größeres Gewicht als e hat. Diese Bedingung istals Kreiskriterium bekannt.Lösung siehe Lösung 4.9.7.

4.4.7 Bemerkung. Man kann im Allgemeinen n Zahlen in O(n logn) Zeit sortieren,und man kann zeigen, dass es schneller im Allgemeinen nicht möglich ist. Wirwollen im Folgenden diese Aussage ohne Beweis voraussetzen und benutzen (sieheetwa [23, 9]).

Also benötigen wir in Algorithmus 4.4.4 für das Sortieren der KantenO(|E| log(|E|)) , und erhalten wegen

O(log(|E|)) = O(log(|V |2)) = O(log(|V |))

mit unserer Implementierung von UNION-FIND ein Verfahren der KomplexitätO((|E|+ |V |) log(|V |)) .

4.5 Die Algorithmen von Prim-Jarnik und Boruvka

Auch aus Algorithmus 4.3.7 können wir ein Verfahren ableiten, um minimale auf-spannende Bäume zu berechnen. Dieser Algorithmus ist nach Robert C. Prim be-nannt, der ihn 1957 wiederentdeckte. Die erste Veröffentlichung dieses Verfahrensvon Vojtech Jarnik war auf Tschechisch aus dem Jahre 1930.

4.5.1 Algorithmus (Prims Algorithmus). Sei v ∈V .

∙ Setze V0 = v, T0 = /0, i = 0

136 Kapitel 4. Bäume und Matchings

∙ Solange es geht

– Wähle eine Kante e = (x,y) ∈ E mit x ∈ Vi, y ∈ Vi von minimalemGewicht und setze Vi+1 =Vi ∪y, Ti+1 = Ti ∪e, i = i+1 .

Bevor wir diskutieren, wie wir effizient die Kante minimalen Gewichts finden,zeigen wir zunächst einmal die Korrektheit des Verfahrens.

4.5.2 Satz. Prims Algorithmus berechnet einen minimalen aufspannenden Baum.

Beweis. Als Spezialfall von Algorithmus 4.3.7 berechnet Prims Algorithmus einenaufspannenden Baum. Im Verlauf des Algorithmus haben wir auch stets einenBaum, der v enthält. Dieser erhält in jeder Iteration eine neue Kante. Wir zeigennun mittels Induktion über die Anzahl der Iterationen:

Zu jedem Zeitpunkt des Algorithmus ist Ti in einem minimalen auf-spannenden Baum enthalten.

Diese Aussage ist sicherlich zu Anfang für T0 = /0 wahr. Sei nun soeben die Kantee zu Ti hinzugekommen. Nach Induktionsvoraussetzung ist Ti ∖ e in einem mini-malen aufspannenden Baum T enthalten. Wenn dieser e enthält, so sind wir fertig.Andernfalls schließt e einen Kreis mit T . Dieser enthält neben e mindestens ei-ne weitere Kante f , die die Knotenmenge von Ti ∖ e mit dem Komplement dieserKnotenmenge verbindet. Nach Wahl von e ist

w(e)≤ w( f )

und nach Aufgabe 4.1.6 ist (T + e)∖ f ein aufspannender Baum und

w((T + e)∖ f

)= w(T )+w(e)−w( f )≤ w(T ).

Da T ein minimaler aufspannender Baum war, schließen wir w(e) = w( f ) undsomit ist (T + e)∖ f ein minimaler aufspannender Baum, der Ti enthält. 2

4.5.3 Aufgabe. Sei G = (V,E) ein zusammenhängender Graph. Ist S ⊆ V , sonennen wir die Kantenmenge

∂G(S) := e ∈ E | |e∩S|= 1

den von S induzierten Schnitt. Allgemein nennen wir eine Kantenmenge D einenSchnitt in G , wenn es ein S ⊆V gibt mit D = ∂G(S) . Sei nun ferner w : E →Z eineKantengewichtsfunktion und H = (V,T ) ein G aufspannender Baum. Zeigen Sie:

4.5. Die Algorithmen von Prim-Jarnik und Boruvka 137

a) Für alle e ∈ T ist die Menge

D(T,e) := e ∈ E | (T ∖ e)+ e ist ein Baum

ein Schnitt in G .

b) H ist genau dann ein minimaler G aufspannender Baum, wenn

∀e ∈ T ∀e ∈ D(T,e) : w(e)≤ w(e),

wenn also e eine Kante mit kleinstem Gewicht ist, die die Komponentenvon T ∖ e miteinander verbindet. Diese Bedingung ist als Schnittkriteriumbekannt.

Lösung siehe Lösung 4.9.8.

Kommen wir zur Diskussion der Implementierung von Prims Algorithmus. Si-cherlich wollen wir nicht in jedem Schritt alle Kanten überprüfen, die aus T heraus-führen. Statt dessen merken wir uns stets die kürzeste Verbindung aus T zu allenKnoten außerhalb von T in einer Kantenmenge F. Zu dieser Kantenmenge habenwir als neue Methode F.MinimumEdge(weight), die aus F eine Kante minimalenGewichts liefert. Wenn wir diese Datenstruktur aufdatieren, müssen wir nur alleKanten, die aus dem neuen Baumknoten herausführen, daraufhin überprüfen, ob sieeine kürzere Verbindung zu ihrem anderen Endknoten aus T heraus herstellen. Wirerhalten also folgenden Code:

T=[]F=[]for w in G.Neighborhood(v):

F.AddEdge((v,w))pred[w] = v

while not T.IsSpanning():(u,v) = F.MinimumEdge(weight)F.DeleteEdge((u,v))T.AddEdge((u,v))for w in G.Neighborhood(v):

if not T.Contains(w) and weight[(pred[w],w)] > weight[(w,v)]:F.DeleteEdge((pred[w],w))F.AddEdge((v,w))pred[w] = v

138 Kapitel 4. Bäume und Matchings

Dabei gehen wir davon aus, dass vor Ausführung des Algorithmus die Felderpred für alle Knoten mit pred[v]=v und weight[(v,v)] mit unendlich initiali-siert worden sind. Die Kanten fassen wir hier als gerichtet auf, dass heißt in (u,v)= F.MinimumEdge(weight) ist u ein Knoten innerhalb des Baumes und v ein Kno-ten auf der „anderen “ Seite.

Auf diese Weise wird jede Kante in genau einer der beiden for-Schleifen genaueinmal untersucht. Die Kosten für das Aufdatieren von F sind also O(|E|) . Diewhile-Schleife wird nach Satz 4.1.5 genau (|V |−1|)- mal durchlaufen. Für dieLaufzeit bleibt die Komplexität von F.minimumEdge(weight) zu betrachten. Hierwird aus einer Menge von O(|V |) Kanten das Minimum bestimmt. Man kann nundie Daten, etwa in einer so genannten Priority Queue so organisieren, dass |F |stets geordnet ist. Das Einfügen einer Kante in F kostet dann O(log |F |) unddas Löschen und Finden des Minimums benötigt ebenso O(log |F |) . Für Detailsverweisen wir auf [9]. Als Gesamtlaufzeit erhalten wir damit

O(|E| log |V |).

4.5.4 Aufgabe. Zeigen Sie: In jeder Implementierung ist die Laufzeit von PrimsAlgorithmus von unten durch Ω(|V | log |V |) beschränkt. Weisen Sie dazu nach, dassman mit Prims Algorithmus |V | Zahlen sortieren kann.

Lösung siehe Lösung 4.9.9.Als letztes stellen wir das älteste Verfahren vor, das schon 1926 von Otakar

Boruvka, ebenfalls auf Tschechisch, publiziert wurde. Dazu zunächst noch einevorbereitende Übungsaufgabe.

4.5.5 Aufgabe. Sei G = (V,E) ein zusammenhängender Graph und w : E →Z eineKantengewichtsfunktion. Zeigen Sie:

a) Ist T ein minimaler G aufspannender Baum und S ⊆ E(T ) , so ist E(T ) ∖S die Kantenmenge eines minimalen aufspannenden Baumes von G/S(vgl. Definition 3.12.2).

b) Ist darüber hinaus w injektiv, sind also alle Kantengewichte verschieden, soist die Menge S der Kanten, die aus den (eindeutigen) Kanten kleinsten Ge-wichts an jedem Knoten besteht, in dem eindeutigen minimalen aufspannen-den Baum enthalten.

Lösung siehe Lösung 4.9.10.

4.5. Die Algorithmen von Prim-Jarnik und Boruvka 139

Der Algorithmus von Boruvka verfährt nun wie folgt. Wir gehen zunächst davonaus, dass G = (V,E) ein Multigraph mit einer injektiven Gewichtsfunktion ist.

4.5.6 Algorithmus (Boruvkas Algorithmus). Setze T = /0 .

∙ Solange G noch mehr als einen Knoten hat:

Jeder Knoten markiert die Kante minimalen Gewichts, die zu ihm adja-zent und keine Schleife ist.

Füge alle markierten Kanten S zu T hinzu und setze G = G/S.

Hierbei interpretieren wir die Kanten in T am Ende als Kanten des ursprüngli-chen Graphen G .

4.5.7 Satz. Boruvkas Algorithmus berechnet den eindeutigen minimalen aufspan-nenden Baum von G.

Beweis. Wir zeigen per Induktion über die Anzahl der Iterationen, dass T in jedemminimalen aufspannenden Baum enthalten ist. Solange T leer ist, ist dies gewissrichtig. Sei also T in jedem minimalen aufspannenden Baum enthalten und S wiebeschrieben. Nach Aufgabe 4.5.5 b) ist S in dem eindeutigen aufspannenden BaumT von G/T enthalten. Sei nun T ein minimaler aufspannender Baum von G , alsoT ⊆ T . Nach Aufgabe 4.5.5 a) ist T ∖T ein minimaler aufspannender Baum vonG/T . Wir schließen T ∖T = T . Insgesamt erhalten wir wie gewünscht S∪T ⊆ T .

Da in jedem Schritt die Anzahl der Knoten mindestens halbiert wird, berechnetman in höchstens log2 |V | Schritten eine Kantenmenge T , die ein aufspannenderBaum ist und in jedem minimalen aufspannenden Baum enthalten ist. Also ist dieserBaum eindeutig. 2

4.5.8 Bemerkung. Die Bedingung, dass w injektiv ist, ist keine wirkliche Ein-schränkung. Wird ein Kantengewicht mehrfach angenommen, so kann man z. B. dieNummer der Kante dazu benutzen, in der Ordnung auf den Kantengewichten überalleine „echte Ungleichung“ zu haben, was das Einzige ist, was in Aufgabe 4.5.5 b)benutzt wurde.

Wie wir oben bereits bemerkt hatten, wird in jeder Iteration die Anzahl derKnoten mindestens halbiert, also haben wir höchstens log2(|V |) Iterationen. Für dieKontraktion müssen wir bei O(|E|) Kanten die Endknoten aufdatieren und erhalten(wenn wir davon ausgehen, dass |V |= O(|E|) ist) als Gesamtlaufzeit

O(|E| log |V |).

140 Kapitel 4. Bäume und Matchings

4.5.9 Beispiel. Wir betrachten die geometrische Instanz in Abbildung 4.4 mit 13Knoten. Darauf betrachten wir den vollständigen Graphen, wobei die Kantenge-wichte durch die Entfernung in der Zeichnung gegeben seien. In der linken Gra-fik haben wir einige Kanten eingezeichnet. Diejenigen, die wir weggelassen habensind so lang, dass sie für einen minimalen aufspannenden Baum auch nicht in Fragekommen.

12 3

5

6 7

810

2 3

5 6

11

12 1

4

7

8

910

1112

4

9

Abbildung 4.4: Kruskal und Prim

In der mittleren Figur haben wir die Kanten in der Reihenfolge nummeriert, inder sie der Greedy-Algorithmus in den minimalen aufspannenden Baum aufnimmt.Dabei ist die Reihenfolge der zweiten, dritten und vierten sowie der achten undneunten vertauschbar, da diese alle jeweils die gleiche Länge haben. Wir gehenim Folgenden davon aus, dass die früher gewählten Kanten eine kleinere Nummerhaben.

Die Nummerierung im Baum ganz rechts entspricht der Reihenfolge, in der

Abbildung 4.5: Boruvka

4.6. Die Anzahl aufspannender Bäume 141

Prims Algorithmus die Kanten in den Baum aufnimmt, wenn er im obersten Knotenstartet. Hier ist die Reihenfolge eindeutig.

In Abbildung 4.5 haben wir den Verlauf des Algorithmus von Boruvka ange-deutet. Es kommt hier nicht zum Tragen, dass die Kantengewichtsfunktion nichtinjektiv ist. In der ersten Iteration sind die markierten Kanten, die fett gezeichnetenKanten in den ersten beiden Bäumen. Im mittleren Baum haben wir Kanten elimi-niert, die nach der Kontraktion entweder Schleifen oder parallel zu kürzeren Kantensind. Im Baum rechts erkennt man, dass der Algorithmus bereits nach der zweitenIteration den minimalen aufspannenden Baum gefunden hat.

4.5.10 Aufgabe. Sei V = 1,2, . . . ,30 und G = (V,E) definiert durch

e = (i, j) ∈ E ⇐⇒ (i | j oder j | i) und i = j

der Teilbarkeitsgraph. Die Gewichtsfunktion w sei gegeben durch den ganzzahligenQuotienten j

i bzw. ij .

Geben Sie die Kantenmengen und die Reihenfolge ihrer Berechnung an, die dieAlgorithmen von Kruskal, Prim und Boruvka berechnen. Bei gleichen Kantenge-wichten sei die mit den kleineren Knotennummern die Kleinere.

Lösung siehe Lösung 4.9.11.

4.6 Die Anzahl aufspannender Bäume

Wir hatten zu Anfang unserer Überlegungen zu minimalen aufspannenden Bäu-men angekündigt nachzuweisen, dass der Kn nn−2 aufspannende Bäume hat. Etwada Kanten unterschiedliche Gewichte haben können, möchten wir manchmal iso-morphe Bäume mit unterschiedlichen Kantenmengen unterscheiden können. Dazubetrachten wir isomorphe, aber nicht identische Bäume als verschieden, wir nennendiese knotengelabelte Bäume.

Die Formel wurde 1889 von Cayley entdeckt und ist deswegen auch unter demnamen Cayley-Formel bekannt. Der folgende Beweis ist allerdings 110 Jahre jünger,er wurde erst 1999 von Jim Pitman publiziert [30] und benutzt die Methode desdoppelten Abzählens. Dieser Beweis ist so klar und schön, dass es schon erstaunlichist, wie spät er gefunden worden ist. In [28] finden Sie neben diesem vier weitereBeweise der Cayley-Formel.

Wie gehen wir nun vor? Anstatt knotengelabelte Bäume zu zählen, zählenwir knoten- und kantengelabelte Wurzelbäume. Darunter verstehen wir einen

142 Kapitel 4. Bäume und Matchings

Wurzelbaum zusammen mit einer Nummerierung seiner Kanten mit Werten in1, . . . ,n−1 . Da es (n − 1)! Möglichkeiten gibt, die Kanten eines Baumes zunummerieren und weitere n Möglichkeiten gibt, die Wurzel auszuwählen, ent-spricht ein knotengelabelter Baum insgesamt n! knoten- und kantengelabelten Wur-zelbäumen. Dies halten wir fest:

4.6.1 Proposition. Jeder knotengelabelte Baum mit n Knoten gibt Anlass zu genaun! knoten- und kantengelabelten Wurzelbäumen.

Wir zählen nun die knoten- und kantengelabelten Wurzelbäume, indem wirdie Nummerierung der Kanten als dynamischen Prozess interpretieren. Im erstenSchritt haben wir n isolierte Knoten. Diese interpretieren wir als n (triviale) Wur-zelbäume und fügen eine gerichtete Kante hinzu, so dass daraus n−1 Wurzelbäumeentstehen. Im k -ten Schritt haben wir n−k+1 Wurzelbäume und fügen die k -te ge-richtete Kante hinzu (siehe Abbildung 4.6). Diese Kante darf von einem beliebigenKnoten in einem der Wurzelbäume ausgehen. Wir haben hierfür also n Wahlmög-lichkeiten. Sie darf aber wegen Aufgabe 4.2.2 nur in der Wurzel eines der n− kübrigen Wurzelbäume enden, also gibt es dafür n−k Wahlmöglichkeiten. Dies fas-sen wir im folgenden Lemma zusammen.

4.6.2 Lemma. Es gibt genau n!nn−2 knoten- und kantengelabelte Wurzelbäumemit n Knoten.

Beweis. Die eben beschriebenen Wahlmöglichkeiten waren alle unabhängig von-einander. Also erhalten wir die Anzahl der knoten- und kantengelabelten Wurzel-bäume als

n−1

∏k=1

n(n− k) = nn−1 (n−1)! = nn−2 n!.

2

Fassen wir Proposition 4.6.1 und Lemma 4.6.2 zusammen, so erhalten wir:

4.6.3 Satz (Cayley-Formel). Die Anzahl der knotengelabelten Bäume mit n Knotenist nn−2 .

2

4.6.4 Aufgabe. Sei G = Kn der vollständige Graph mit n Knoten und e eine festeKante. Zeigen Sie: Die Anzahl der knotengelabelten Bäume von G , die die Kantee enthalten, ist 2nn−3 .Lösung siehe Lösung 4.9.12.

4.7. Bipartites Matching 143

Abbildung 4.6: Wenn man den quadratischen Knoten als Startknoten für die drei-zehnte Kante auswählt, hat man 5 = 18−13 = 6−1 Möglichkeiten, einen Endkno-ten auszusuchen, die wir durch die gepunkteten Kanten angedeutet haben.

4.7 Bipartites Matching

Wir betrachten nun Zuordnungsprobleme. Der Einfachheit halber betrachten wir nurAufgabenstellungen, bei denen Elementen aus einer Menge U jeweils ein Elementaus einer Menge V unter gewissen Einschränkungen zugeordnet werden soll.

4.7.1 Beispiel. a) In einer geschlossenen Gesellschaft gibt es m heiratsfähigeMänner und n heiratsfähige Frauen. Die Frauen haben jeweils eine Liste derakzeptablen Partner. Verheirate möglichst viele Paare unter Beachtung derAkzeptanz und des Bigamieverbots.

b) An einer Universität bewerben sich Studenten für verschiedene Studiengän-ge, wobei die Individuen sich für mehrere Studiengänge bewerben. Die An-zahl der Studienplätze in jedem Fach ist begrenzt. Finde eine Zuordnung derStudenten zu den Studiengängen, so dass die Wünsche der Studenten berück-sichtigt werden und möglichst viele Studienplätze gefüllt werden.

In beiden Situationen haben wir es mit einem bipartiten Graphen zu tun, der imersten Fall die Neigungen der Damen und im zweiten die Wünsche der Studentenmodelliert:

4.7.2 Definition. Sei G = (W,E) ein Graph. Dann heißt G bipartit, wenn es einePartition W =U∪V gibt, so dass alle Kanten je einen Endknoten in beiden Klassenhaben. Wir nennen dann U und V die Farbklassen von G .

144 Kapitel 4. Bäume und Matchings

Sie haben in Beispiel 3.2.3 bereits die vollständigen bipartiten Graphen Km,n

kennen gelernt. Allgemeine bipartite Graphen lassen sich aber auch sehr leichtcharakterisieren.

4.7.3 Proposition. Ein Graph G = (W,E) ist bipartit genau dann, wenn er keinenKreis ungerader Länge hat.

Beweis. Ist G bipartit, so müssen die Knoten jedes Kreises abwechselnd in U undin V liegen. Da der Kreis geschlossen ist, muss er also gerade Länge haben.

Sei nun G ein Graph, in dem alle Kreise gerade Länge haben. Ohne Beschrän-kung der Allgemeinheit nehmen wir an, dass G zusammenhängend ist. Ansonstenmachen wir das Folgende in jeder Komponente. Sei v∈W . Wir behaupten zunächst,dass für alle w ∈W jeder vw-Weg entweder stets gerade oder stets ungerade Längehat. Denn angenommen P wäre die Kantenmenge eines vw-Weges der Länge 2kund Q die eines vw-Weges der Länge 2k′+1. Dann ist die symmetrische Differenz

P∆Q := (P∪Q)∖ (P∩Q)

eine Menge mit ungerade vielen Elementen, denn

|P∆Q|= |P|+ |Q|−2|P∩Q|= 2(k+ k′−|P∩Q|)+1.

Wir untersuchen nun, welche Knotengrade in dem von P∆Q gebildeten Teilgraphenvon G auftreten können. Sowohl in P als auch in Q haben v und w jeweils denKnotengrad 1 und alle anderen Knoten entweder Knotengrad 0 oder Knotengrad2. Also haben in P∆Q alle Knoten den Knotengrad 0, 2 oder 4, insbesondereist jede Komponente von H = (W,P∆Q) eulersch und somit nach Satz 3.10.2kantendisjunkte Vereinigung von Kreisen. Da die Gesamtzahl der Kanten in P∆Qaber ungerade ist, muss unter diesen Kreisen mindestens einer ungerader Längesein im Widerspruch zur Voraussetzung. Also hat für alle w ∈ W jeder vw-Wegentweder stets gerade oder stets ungerade Länge.

Seien nun U ⊆ W die Knoten u , für die alle uv-Wege ungerade Länge habenund V die Knoten mit gerader Distanz von v . Angenommen, es gäbe eine Kante ezwischen zwei Knoten u1,u2 in U . Ist dann P ein vu1 Weg, so ist P∆(u1,u2) einvu2 -Weg gerader Länge im Widerspruch zum Gezeigten. Analog gibt es auch keineKanten zwischen Knoten in V . Also ist G bipartit. 2

Die Zuordnungsvorschriften in Beispiel 4.7.1 kann man auch für beliebigeGraphen definieren.

4.7. Bipartites Matching 145

4.7.4 Definition. Sei G = (V,E) ein Graph. Eine Kantenmenge M ⊆ E heißt einMatching in G , falls für den Graphen GM = (V,M) gilt

∀v ∈V : degGM(v)≤ 1. (4.4)

Wir sagen u ist mit v gematched, wenn (u,v) ∈ M , und nennen einen Knoten ge-matched, wenn er mit einer Matchingkante inzident ist, und ansonsten ungemat-ched.

Gilt in (4.4) stets Gleichheit, so nennen wir das Matching perfekt. Wir bezeich-nen (4.4) auch als Bigamieverbot.

Bei der Bestimmung von Matchings mit maximal vielen Kanten ist nun dieGreedy-Strategie, die bei aufspannenden Bäumen so erfolgreich war, kein probatesMittel. Betrachten wir etwa den Graphen in Abbildung 4.7 mit der fett gezeichnetenKante als Matching, so kann man zu dieser Kante keine weitere Kante hinzuneh-men, ohne das Bigamieverbot zu verletzen.

Abbildung 4.7: Ein inklusionsmaximales Matching

Hingegen gibt es offensichtlich Matchings mit zwei Kanten. Um eine intelli-gentere Strategie zu entwickeln, betrachten wir den Unterschied zwischen einemMatching und einem Matching mit einer Kante mehr.

Seien also M,M′ Matchings in G = (V,E) und |M′| > |M| . Wiederum analy-sieren wir die Knotengrade in (V,M∆M′) . Da die Knotengrade in M wie in M′ nur0 und 1 sind, kommen als Knotengrade in (V,M∆M′) nur 0,1 und 2 in Frage. Alsobesteht (V,M∆M′) aus isolierten Knoten, Pfaden und Kreisen. In den Kreisen müs-sen sich aber stets Kanten aus M mit Kanten aus M′ abwechseln, also müssen dieseimmer gerade Länge haben. Da aber M′ mehr Elemente als M hat, muss es unterden Wegen einen geben, der mehr Kanten in M′ als in M hat. Auch umgekehrt kannman aus einem solchen Weg stets ein größeres Matching konstruieren. Dafür führenwir zunächst einmal den Begriff des augmentierenden Weges ein:

146 Kapitel 4. Bäume und Matchings

4.7.5 Definition. Sei G = (V,E) ein (nicht notwendig bipartiter) Graph und M ⊆ Eein Matching. Ein Weg P = v0v1v2 . . .vk heißt M-alternierend, wenn seine Kantenabwechselnd in M und außerhalb von M liegen. Der Weg P ist M-augmentierend,wenn darüber hinaus die beiden Randknoten v0 und vk ungematched sind. Insbe-sondere ist dann k ungerade und vivi+1 ∈ M genau dann, wenn 1 ≤ i ≤ k−2 und iungerade.

4.7.6 Satz. Sei G = (V,E) ein (nicht notwendig bipartiter) Graph und M ⊆ E einMatching. Dann ist M genau dann von maximaler Kardinalität, wenn es keinenM-augmentierenden Weg in G gibt.

Beweis. Wir zeigen die Kontraposition dieses Satzes, also, dass M genau dannnicht maximal ist, wenn es einen M -augmentierenden Weg gibt.

Wir haben vor der letzten Definition bereits gezeigt, dass, wenn M′ ein Mat-ching von G mit |M′|> |M| ist, M′∆M einen M -augmentierenden Weg enthält.

Sei also nun umgekehrt P ein M -augmentierender Weg in G . Wir untersuchendie Kantenmenge M′ := M∆P . Diese Operation vertauscht Matching- und Nicht-matchingkanten entlang P . Da Anfangs- und Endknoten von P ungematched undverschieden sind, aber P ansonsten zwischen Matching- und Nichtmatchingkantenalterniert, hat H = (V,M′) überall Knotengrad 0 oder 1, also ist M′ ein Matchingund enthält eine Kante mehr als M . 2

Wir haben nun das Problem, ein maximales Matching zu finden, auf das Be-stimmen eines augmentierenden Weges reduziert. Wie findet man nun einen aug-mentierenden Weg? In allgemeinen Graphen wurde dieses Problem erst 1965 vonJack Edmonds gelöst. Wir wollen darauf hier nicht näher eingehen, sondern nurauf den amüsanten, historisierenden Artikel [13] verweisen. In bipartiten Graphenist die Lage viel einfacher, da ein M -augmentierender Weg stets die Endknoten inunterschiedlichen Farbklassen haben muss:

4.7.7 Proposition. Sei G = (U∪V,E) ein bipartiter Graph, M ein Matching in Gund P = v0v1v2 . . .vk ein M-augmentierender Weg in G. Dann gilt

v0 ∈U ⇔ vk ∈V.

Beweis. Wie oben bemerkt, ist k ungerade. Ist v0 ∈U , so ist v1 ∈V und induktivschließen wir, dass alle Knoten mit geradem Index in U und alle mit ungerademIndex in V liegen. Insbesondere gilt letzteres für vk . Analog impliziert v0 ∈V auchvk ∈U . 2

4.7. Bipartites Matching 147

Wenn wir also alle Kanten, die nicht in M liegen, von U nach V richten, undalle Kanten in M von V nach U , so wird aus P ein gerichteter Weg von einemungematchten Knoten in U zu einem ungematchten Knoten in V . Da P beliebigwar, ist dies unser Mittel der Wahl. Das Schöne an dem folgenden Verfahren ist,dass es, wenn es keinen augmentierenden Weg findet, einen „Beweis“ dafür liefert,dass es einen solchen auch nicht geben kann.

4.7.8 Algorithmus (Find-Augmenting-Path). Input des Algorithmus ist ein biparti-ter Graph G= (U∪V,E) und ein Matching M ⊆ E . Output ist entweder ein Endkno-ten eines M-augmentierenden Weges oder ein „Zertifikat“ C für die Maximalität vonM. In der Queue Q merken wir uns die noch zu bearbeitenden Knoten. Wir gehen da-von aus, dass in einer Initialisierung alle Zeiger des Vorgängerfeldes pred mit Noneinitialisiert worden sind und C die leere Liste ist. Bei Rückgabe eines Endknotens,kann man aus diesem durch Rückverfolgen der Vorgänger den augmentierendenWeg konstruieren.

for u in U:if not M.IsMatched(u):

Q.Append(u)pred[u]=u

while not Q.IsEmpty():u=Q.Top()for v in G.Neighborhood(u):

if pred[v]==None:pred[v]=uif not M.IsMatched(v):

return velse:

s=M.Partner(v)Q.Append(s)pred[s]=v

for u in U:if pred[u]==None:

C.Append(u)for v in V:

if pred[v]!=None:C.Append(v)

148 Kapitel 4. Bäume und Matchings

Zunächst initialisieren wir Q mit allen ungematchten Knoten u in U . Dann un-tersuchen wir deren Nachbarn v und setzen u als ihren Vorgänger ein. Finden wirdarunter ein ungematchtes v, so wurde schon ein augmentierender Weg gefunden.Ansonsten sei s sein Matchingpartner. Der Knoten s kann bisher noch nicht bearbei-tet worden sein, wir hängen ihn an die Warteschlange und setzen seinen Vorgängerauf v. So fahren wir fort, bis wir entweder einen ungematchten Knoten in V findenoder die Schlange Q leer ist.

Findet das Verfahren keinen augmentierenden Weg mehr, so sammeln wir in Cden „Beweis“ der Maximalität des Matchings. Warum dies ein Beweis der Maxi-malität ist, werden in Lemma 4.7.12 und Satz 4.7.13 erfahren.

4.7.9 Beispiel. Wir starten unseren Algorithmus mit dem Matching in Abbil-dung 4.7.

Zunächst stellen wir u1 und u3 in die Warteschlange und setzen pred(u1)=u1

und pred(u3)=u3 . Ausgehend vom Knoten u1 finden wir v2 , setzen pred(v2)=u1

und stellen dessen Matchingpartner u2 in die Schlange mit pred(u2)=v2 . Von u3

aus finden wir keinen neuen Knoten, aber von u2 aus den ungematchten Knoten v1 ,dessen Vorgänger wir auf pred(v1)=u2 setzen und den wir zurückliefern. DurchRückverfolgen der Vorgängerfunktion finden wir u1v2u2v1 als M -augmentierendenWeg und ersetzen die bisherige Matchingkante (u1,v2) durch (u1v2) und (u2v1) .

u1

u2

u3

v1

v2

v3

Abbildung 4.8: Zwei Durchläufe der Suche nach einem erweiternden Weg

Wir löschen nun wieder alle Vorgänger, d.h. wir setzen pred auf None undstellen u3 in die Schlange, finden von dort aus v2 , dessen Matchingpartner u1

in die Schlange aufgenommen wird. Von u1 aus finden wir nichts Neues und dieWarteschlange ist erfolglos abgearbeitet worden. Der einzige Knoten ohne gesetztenVorgänger in U ist u2 und der einzige mit gesetztem Vorgänger in V ist v2 . Alsoist C= u2,v2.

4.7.10 Proposition. Findet die Prozedur „Find Augmenting Path“ einen unge-matchten Knoten v, so erhält man durch Rückverfolgen des pred-Arrays einen M-augmentierenden Weg.

4.7. Bipartites Matching 149

Beweis. Der Knoten v wurde von einem Knoten u in U aus gelabelt. Dieser istentweder selber ungematched, also uv ein M-augmentierender Weg, oder wir suchenvom Matchingpartner von u an Stelle von v weiter. Da die Knotenmenge endlich istund das Verfahren wegen der Vorgängerabfrage in der 8. Zeile nicht zykeln kann,muss es in einem augmentierenden Weg enden. 2

Im Folgenden wollen wir klären, inwiefern die Liste C ein Beweis dafür ist, dasses keinen augmentierenden Weg mehr gibt. Dafür zunächst noch eine Definition:

4.7.11 Definition. Sei G = (V,E) ein (nicht notwendig bipartiter) Graph undC ⊆V . Dann heißt C kantenüberdeckende Knotenmenge oder, kürzer, Knotenüber-deckung (engl. vertex cover), wenn für alle e ∈ E gilt: C∩ e = /0.

4.7.12 Lemma. Liefert das Verfahren eine Knotenliste C zurück, so ist |C|= |M| undC ist eine kantenüberdeckende Knotenmenge.

Beweis. C besteht aus allen unerreichten Knoten in U und allen erreichten Knotenin V . Also sind alle Knoten in C∩U gematched, da ungematchte Knoten zu Beginnin Q aufgenommen werden, und alle Knoten in C ∩V sind gematched, da keinungematchter Knoten in V gefunden wurde. Andererseits sind die Matchingpartnervon Knoten in V ∩C nicht in C, da diese ja in Q aufgenommen wurden. Somit gilt

∀m ∈ M : |C∩m| ≤ 1.

Da M ein Matching ist und somit kein Knoten zu 2 Kanten in M inzident sein kann,schließen wir hieraus

|C| ≤ |M|.

Wir zeigen nun, dass C eine kantenüberdeckende Knotenmenge ist. Angenom-men, dies wäre nicht so und e = (u,v) eine Kante mit u,v ∩ C = /0. Dann istpred[v]=None, aber pred[u] =None. Als aber pred[u] gesetzt wurde, wurde ugleichzeitig in Q aufgenommen, also irgendwann auch mal abgearbeitet. Dabei wur-de bei allen Nachbarn, die noch keinen Vorgänger hatten, ein solcher gesetzt, ins-besondere auch bei v, im Widerspruch zu pred[v]=None. Also ist C eine Knoten-überdeckung.

Schließlich folgt |C| ≥ |M| aus der Tatsache, dass kein Knoten zwei Matching-kanten überdecken kann. 2

150 Kapitel 4. Bäume und Matchings

Den folgenden Satz haben wir damit im Wesentlichen schon bewiesen:

4.7.13 Satz (Satz von König 1931). In bipartiten Graphen ist

max|M| | M ist Matching = min|C| |C ist Knotenüberdeckung .

Beweis. Da jeder Knoten einer Knotenüberdeckung C höchstens eine Matching-kante eines Matchings M überdecken kann, gilt stets |M| ≤ |C| , also auch im Ma-ximum. Ist nun M ein maximales Matching, so liefert die Anwendung von Algo-rithmus 4.7.8 eine Knotenüberdeckung C mit |C| = |M| . Also ist eine minimaleKnotenüberdeckung höchstens so groß wie ein maximales Matching. 2

4.7.14 Bemerkung. In allgemeinen Graphen ist das Problem der minimalen Kno-tenüberdeckung NP-vollständig.

Wir stellen nun noch zwei Varianten des Satzes von König vor. Dafür führen wirden Begriff der Nachbarschaft von Knoten ein.

4.7.15 Definition. Ist G = (V,E) ein (nicht notwendig bipartiter) Graph undH ⊆V , so bezeichnen wir mit NG(H) bzw. N(H) die Nachbarschaft von H

N(H) := v ∈V | ∃u ∈ H : (u,v) ∈ E.

4.7.16 Korollar (Heiratssatz von Frobenius (1917)). Sei G = (U∪V,E) ein bipar-titer Graph. Dann hat G genau dann ein perfektes Matching, wenn |U | = |V | und

∀H ⊆U : |N(H)| ≥ |H|. (4.5)

Beweis. Hat G ein perfektes Matching und ist H ⊆U , so liegt der Matchingpartnerjedes Knotens in H in der Nachbarschaft von H , die also gewiss mindestens sogroß wie H sein muss. Die Bedingung |U | = |V | ist bei Existenz eines perfektenMatchings trivialerweise erfüllt.

Die andere Implikation zeigen wir mittels Kontraposition. Wir nehmen an, dassG keine isolierten Knoten hat, denn sonst ist (4.5) offensichtlich verletzt. Hat Gkein perfektes Matching und ist |U | = |V | so hat G nach dem Satz von Königeine Knotenüberdeckung C mit |C| < |U | . Wir setzen H = U ∖C . Da C eineKnotenüberdeckung ist, ist

N(H)⊆C∩V.

Also ist

|N(H)| ≤ |C∩V |= |C|− |C∩U |< |U |− |C∩U |= |U ∖C|= H.

Also verletzt H (4.5). 2

4.7. Bipartites Matching 151

Der Name Heiratssatz kommt von der Interpretation wie in Beispiel 4.7.1. Wennalle Frauen nur Supermann heiraten wollen, bleiben einige ledig.

Die letzte Variante des Satzes von König ist eine asymmetrische Version desSatzes von Frobenius:

4.7.17 Satz (Heiratssatz von Hall). Sei G = (U∪V,E) ein bipartiter Graph. Dannhat G ein Matching, in dem alle Knoten in U gematched sind, genau dann, wenn

∀H ⊆U : |N(H)| ≥ |H|. (4.6)

Beweis. Wie im Satz von Frobenius ist die Notwendigkeit der Bedingung offen-sichtlich. Wir können ferner davon ausgehen, dass |U | ≤ |V | ist, da ansonsten so-wohl die Nichtexistenz eines gewünschten Matchings als auch die Verletzung von(4.6) offensichtlich ist. Wir fügen nun |V |−|U | Dummyknoten zu U hinzu, die alleKnoten in V kennen, und erhalten den bipartiten Graphen G= (U∪V, E) , der offen-sichtlich genau dann ein perfektes Matching hat, wenn G ein Matching hat, das alleKnoten in U matched. Hat G kein perfektes Matching, so gibt es nach dem Heirats-satz von Frobenius eine Menge H ⊆ U mit |NG(H)|< |H| . Da die Dummyknotenalle Knoten in V kennen, muss H ⊆U sein und also

|NG(H)|= |NG(H)|< |H|.

2

4.7.18 Bemerkung. Die im Beweis von Satz 4.7.17 benutzte, im Beweis von Korol-lar 4.7.16 konstruierte Menge H nennt man eine Hall-Menge.

Wir wollen diesen Abschnitt beschließen mit dem nun hoffentlich offensichtli-chen Algorithmus zur Bestimmung eines maximalen Matchings in einem bipartitenGraphen und der Analyse seiner Laufzeit.

4.7.19 Algorithmus (Bipartites Matching). Starte mit einem leeren Matching M undsetze C=[].

while C==[]:(C,w)=FindAugmentingPath(M)if C==[]:

P=BackTrackPath(w)Augment(M,P)

152 Kapitel 4. Bäume und Matchings

Wir können offensichtlich höchstens min|U |, |V | Matchingkanten finden, al-so wird die while-Schleife O(min|U |, |V |)-mal ausgeführt. Die Prozedur Find-Augmenting-Path besteht im Wesentlichen aus einer Breitensuche in dem Digra-phen, der aus G entsteht, wenn Matchingkanten „Rückwärtskanten“ und die üb-rigen Kanten „Vorwärtskanten“, also von U nach V orientiert sind. Der Aufwandbeträgt also O(|E|) . Für das Backtracking und die Augmentierung zahlen wir noch-mal je O(min|U |, |V |) , wenn wir davon ausgehen, dass min|U |, |V | = O(|E|)ist, geht dieser Term in O(|E|) auf und wir erhalten als Gesamtlaufzeit

O(min|U |, |V ||E|).

4.7.20 Bemerkung. Mit etwas, aber nicht viel mehr, Aufwand berechnet einAlgorithmus von Hopcroft und Tarjan ein maximales bipartites Matching inO(√

|V ||E|) .

4.7.21 Aufgabe. Bestimmen Sie in dem Graphen in Abbildung 4.9 ein maximalesMatching und eine minimale Knotenüberdeckung. Lösung siehe Lösung 4.9.13.

Abbildung 4.9: Ein bipartiter Graph

4.7.22 Aufgabe. Betrachten Sie ein Schachbrett, auf dem einige Felder markiertsind. Auf den markierten Feldern sollen Sie nun möglichst viele Türme platzieren,so dass sich keine zwei davon schlagen können. Zeigen Sie:

Die Maximalzahl der Türme, die man auf den markierten Feldern platzierenkann, ohne dass zwei sich schlagen können ist gleich der minimalen Summe derAnzahl der Zeilen und Spalten, die man auswählen kann, so dass jedes markierteFeld in einer ausgewählten Spalte oder in einer ausgewählten Zeile liegt.Lösung siehe Lösung 4.9.14.

4.7.23 Aufgabe. Eine Permutationsmatrix ist eine Matrix P ∈ 0,1n×n , bei der injeder Zeile und Spalte jeweils genau eine 1 und sonst nur Nullen stehen.

Eine Matrix A ∈ Rn×n , bei der für alle Einträge ai j gilt 0 ≤ ai j ≤ 1, heißtdoppelt stochastisch, wenn die Summe aller Einträge in jeder Zeile und Spaltegleich 1 ist.

4.8. Stabile Hochzeiten 153

Zeigen Sie (etwa per Induktion über die Anzahl k ≥ n der von Null verschiede-nen Einträge in A): Jede doppelt stochastische Matrix ist eine Konvexkombinationvon Permutationsmatrizen, d. h. es gibt l ∈ N und Permutationsmatrizen P1, . . . ,Pl

sowie Koeffizienten λ1, . . . ,λl mit 0 ≤ λi ≤ 1 und ∑li=1 λi = 1 so, dass

A =l

∑i=1

λiPi.

Lösung siehe Lösung 4.9.15.

4.8 Stabile Hochzeiten

Beschließen wollen wir dieses Kapitel mit einer Variante des Matchingproblems,die der Spieltheorie zugeordnet und durch einen einfachen Algorithmus gelöst wird.Es fängt ganz ähnlich wie beim Matching an.

4.8.1 Beispiel. In einer geschlossenen Gesellschaft gibt es je n heiratsfähige Män-ner und Frauen. Sowohl Frauen als auch Männer haben Präferenzen, was die Per-sonen des anderen Geschlechts angeht. Aufgabe ist es nun, Männer und Frauen sozu verheiraten, dass es kein Paar aus Mann und Frau gibt, die nicht miteinanderverheiratet sind, sich aber gegenseitig Ihren Ehepartnern vorziehen. Etwas saloppformulieren wir, dass niemand „Grund und Gelegenheit“ hat fremdzugehen.

Wir werden uns im Folgenden in der Darstellung an diesem Beispiel orientieren.Das liegt einerseits daran, dass es so in den klassischen Arbeiten präsentiert wirdund außerdem die Argumentation dadurch anschaulicher wird. Ähnlichkeiten mitVorkommnissen bei lebenden Personen oder Personen der Zeitgeschichte werdenvon uns weder behauptet noch gesehen.

Unsere Modellierung sieht wie folgt aus:

4.8.2 Definition. Seien U,V Mengen mit |U |= |V | und für alle u ∈U sei ≺u eineTotalordnung von V , sowie für alle v ∈ V sei ≺v eine Totalordnung von U . Einebijektive Abbildung von τ : U →V heißt stabile Hochzeit, wenn für alle u ∈U undv ∈V gilt,

entweder τ(u) = v oder v ≺u τ(u) oder u ≺v τ−1(v).

In Worten: entweder u und v sind miteinander verheiratet oder mindestens einerzieht seinen Ehepartner dem anderen (d.h. u oder v) vor.

154 Kapitel 4. Bäume und Matchings

Wir nennen U die Menge der Männer und V die Menge der Frauen.Es ist nun nicht ohne Weiteres klar, dass es für alle Präferenzlisten stets eine sta-

bile Hochzeit gibt. Dass dies so ist, wurde 1962 von den Erfindern dieses „Spiels“,Gale und Shapley, algorithmisch gezeigt. Der Algorithmus, mit dem sie eine stabileHochzeit berechnen, trägt seine Beschreibung schon im Namen: „Men propose –Women dispose“.

4.8.3 Algorithmus (Men propose – Women dispose). Eingabedaten wie eben. ZuAnfang ist niemand verlobt. Die verlobten Paare bilden stets ein Matching im voll-ständigen bipartiten Graphen auf U und V . Der Algorithmus terminiert, wenn dasMatching perfekt ist.

∙ Solange es einen Mann gibt, der noch nicht verlobt ist, macht dieser derbesten Frau auf seiner Liste einen Antrag.

∙ Wenn die Frau nicht verlobt ist oder ihr der Antragsteller besser gefällt als ihrVerlobter, nimmt sie den Antrag an und löst, falls existent, ihre alte Verlobung.Ihr Ex-Verlobter streicht sie von seiner Liste.

∙ Andernfalls lehnt Sie den Antrag ab, und der Antragsteller streicht sie vonseiner Liste.

Zunächst stellen wir fest, dass wir alle soeben aufgeführten Schritte in konstan-ter Zeit durchführen können, wenn wir davon ausgehen, dass die Präferenzen alsListe gegeben sind und wir zusätzlich zwei Elemente in konstanter Zeit verglei-chen können. Die unverlobten Männer können wir in einer Queue verwalten, derenerstes Element wir in konstanter Zeit finden. Ebenso können wir später einen Ex-Verlobten in konstanter Zeit ans Ende der Queue stellen. Der Antragsteller findetseine Favoritin in konstanter Zeit am Anfang seiner Liste und diese braucht nachAnnahme auch nicht länger, um ihn mit Ihrem Verlobten zu vergleichen.

Für die Laufzeit des Algorithmus ist also folgende Feststellung ausschlagge-bend:

4.8.4 Proposition. Kein Mann macht der gleichen Frau zweimal einen Antrag.

Beweis. Wenn ein Mann beim ersten Antrag abgelehnt wird, streicht er die Frauvon seiner Liste. Wird er angenommen, so streicht er sie von seiner Liste, wenn sieihm den Laufpass gibt. 2

4.8. Stabile Hochzeiten 155

Nun überlegen wir uns, dass der Algorithmus zulässig ist, dass also stets einMann, der nicht verlobt ist, noch mindestens eine Kandidatin auf seiner Liste hat.Dazu beobachten wir:

4.8.5 Proposition. Eine Frau, die einmal verlobt ist, bleibt es und wird zu keinemspäteren Zeitpunkt mit einem Antragsteller verlobt sein, der ihr schlechter als ihrderzeitiger Verlobter gefällt.

Beweis. Eine Frau löst eine Verlobung nur, wenn sie einen besseren Antrag be-kommt. Der Rest folgt induktiv, da die Ordnung der Präferenzen transitiv ist. 2

Da die Anzahl der verlobten Frauen und Männer stets gleich ist, gibt es miteinem unverlobten Mann auch stets noch mindestens eine unverlobte Frau, diealso auch noch auf der Liste unseres Antragstellers stehen muss. Setzen wir nun|U |= |V |= n , so haben wir damit fast schon gezeigt:

4.8.6 Satz. a) Der Algorithmus „Men propose – Women dispose“ terminiertin O(n2) .

b) Wenn er terminiert, sind alle verlobt.

c) Die durch die Verlobungen definierte bijektive Abbildung ist eine stabileHochzeit.

Beweis.

a) Eine Antragstellung können wir in konstanter Zeit abarbeiten. Jeder Mannmacht jeder Frau nach Proposition 4.8.4 höchstens einen Antrag, also gibt eshöchstens n2 Anträge und somit ist die Laufzeit O(n2) .

b) Da der Algorithmus erst terminiert, wenn jeder Mann verlobt ist und |U |= |V |ist, sind am Ende alle verlobt.

c) Bezeichnen wir die Verlobungsabbildung wieder mit τ . Seien u ∈ U undv ∈ V nicht verlobt, aber τ(u) ≺u v . Als u τ(u) einen Antrag machte, standv nicht mehr auf seiner Liste, muss also vorher gestrichen worden sein. Alsu v von seiner Liste strich, war sie entweder mit einem Mann verlobt, densie u vorzog oder hatte soeben von einem entsprechenden Kandidaten einenAntrag bekommen. Nach Proposition 4.8.5 gilt also auch zum Zeitpunkt derTerminierung u ≺v τ−1(v) . Also bildet τ eine stabile Hochzeit.

2

156 Kapitel 4. Bäume und Matchings

4.8.7 Aufgabe. Zeigen Sie: Der Algorithmus „Men propose – Women dispose“liefert eine männeroptimale stabile Hochzeit, d. h. ist u ∈ U ein beliebiger Mannund τ das Ergebnis von „Men propose – Women dispose“, so gibt es keine stabileHochzeit σ , in der u mit einer Frau verheiratet wird, die er seiner gegenwärtigenvorzieht, d. h. für jede stabile Hochzeit σ gilt

∀u ∈U : σ(u)⪯u τ(u).

Lösung siehe Lösung 4.9.16.Selbstverständlich kann man aus Symmetriegründen im gesamten Abschnitt

die Rollen von Männern und Frauen vertauschen. Dann liefert „Women propose– Men dispose“ eine frauenoptimale, stabile Hochzeit. Mischformen dieser beidenAnsätze, die eine stabile Hochzeit liefern, sind uns aber nicht bekannt.

Donald Knuth [24] hat eine kleine Einführung in wichtige Konzepte und Techni-ken der Informatik und Mathematik geschrieben, die dafür die Theorie der stabilenHochzeiten benutzt.

4.9. Lösungsvorschläge zu den Übungen 157

4.9 Lösungsvorschläge zu den Übungen

4.9.1 Lösung (zu Aufgabe 4.1.6). a) Nach Satz 4.1.5 d) enthält T + e einenKreis, es bleibt also nur die Eindeutigkeit des Kreises zu zeigen. Ist aber C einKreis in T + e und e= (u,v) , so ist C∖ e ein uv-Weg in T . Nach Satz 4.1.5 b)gibt es in T genau einen uv-Weg P . Also ist C = P+ e und damit eindeutig.

b) Sei e ∈C(T, e)∖ e . Da T + e nur den Kreis C(T, e) enthält, ist E = (E+ e)∖ekreisfrei. Da nach Satz 4.1.5 [a) ⇒ f )] |E| = |V | − 1 und offensichtlich|E|= |E| gilt, ist auch T = (V, E) nach Satz 4.1.5 [ f )⇒ a)] ein Baum.

4.9.2 Lösung (zu Aufgabe 4.2.2). Sei zunächst (T,r) ein Wurzelbaum mit T =

(V,E) und die Kanten wie in der Definition angegeben orientiert. Da es zu jedemKnoten v einen gerichteten rv-Weg gibt, muss in alle v ∈ V ∖r mindestens eineKante hineinführen, es gilt also

∀v ∈V ∖r : deg+(v)≥ 1. (4.7)

Andererseits ist nach Satz 4.1.5 |E|= |V |−1 und somit

∑v∈V

deg+(v) = |V |−1,

also muss in (4.7) überall Gleichheit gelten und deg+(r) = 0 sein.Sei nun umgekehrt ~T = (V,A) ein zusammenhängender Digraph mit den ange-

gebenen Innengraden und r ∈V der eindeutige Knoten mit deg+(v) = 0. Da ~T alszusammenhängend vorausgesetzt wurde, ist der ~T zu Grunde liegende ungerichteteGraph T = (V,E) wegen

|E|= |A|= ∑v∈V

deg+(v) = |V |−1

nach Satz 4.1.5 ein Baum. Wir haben noch zu zeigen, dass die Kanten wie inder Definition angegeben bzgl. r als Wurzel orientiert sind. Sei dazu v ∈ V undP = rv1v2 . . .vk−1v der nach Satz 4.1.5 eindeutige rv-Weg in T . Da deg+(r) = 0ist, muss (rv1) von r nach v1 orientiert sein. Da v1 schon eine eingehende Kantehat, muss (v1,v2) von v1 nach v2 orientiert sein, und wir schließen induktiv, dassP ein gerichteter Weg von r nach v ist.

4.9.3 Lösung (zu Aufgabe 4.2.6). Wir führen Induktion über die Anzahl der Knotenvon T . Besteht T aus nur einem Knoten, so ist sein Code () , also wohlgeklammert.

158 Kapitel 4. Bäume und Matchings

Sei nun (T,r,ρ) ein gepflanzter Baum mit mindestens zwei Knoten. Die CodesC1, . . . ,Ck der Kinder von r sind nach Induktionsvoraussetzung wohlgeklammerteAusdrücke. Der Code von T ist C = (C1 . . .Ck) . Mit den Ci hat also auch C gleichviele öffnende wie schließende Klammern. C beginnt mit einer öffnenden Klammer.Angenommen, diese würde etwa durch eine Klammer in Ci geschlossen. Da die C j

mit j < i wohlgeklammert sind, ist nach der letzten schließenden Klammer vonCi−1 noch genau die erste Klammer von C offen. Wird diese in Ci geschlossen, sowird in Ci selber eine Klammer geschlossen, zu der es vorher keine öffnende gabim Widerspruch dazu, dass Ci wohlgeklammert ist.

4.9.4 Lösung (zu Aufgabe 4.2.7). Wir führen wieder Induktion über die Anzahlder Knoten in (T,r,ρ) . Sei (T ′,r′,ρ ′) der durch die rekursive Prozedur von Sei-te 125 bestimmte gepflanzte Baum. Hat T ′ nur einen Knoten, so galt dies auchfür T und die Bijektion zwischen diesen beiden Knoten ist ein Isomorphismus dergepflanzten Bäume. Habe nun T mindestens zwei Knoten und seien y1, . . . ,yk diedirekten Nachfahren von r und C1, . . . ,Ck die zugehörigen Codes der gepflanztenBäume (T1,y1,ρ1), . . . ,(Tk,yk,ρk) , die in den yi gewurzelt sind. Seien y′1, . . . ,y

′k

die Wurzeln der in der rekursiven Prozedur zu C1, . . . ,Ck definierten gepflanztenWurzelbäume (T ′

i ,y′i,ρ

′i ) . Nach Induktionsvoraussetzung gibt es Isomorphismen

φi : (Ti,yi,ρi)→ (T ′i ,y

′i,ρ

′i ) . Indem wir diese Abbildungen vereinigen und r auf r′

abbilden, erhalten wir eine Bijektion φ der Knoten von T und T ′ . Da die in r aus-gehenden Kanten berücksichtigt werden und die φi Isomorphismen der gepflanztenBäume sind, ist φ schon mal ein Isomorphismus der zugrundeliegenden Bäume.Da die Wurzel auf die Wurzel abgebildet wird, an der Wurzel die Reihenfolge nachKonstruktion und ansonsten nach Induktionsvoraussetzung berücksichtigt wird, istφ ein Isomorphismus der gepflanzten Bäume.

4.9.5 Lösung (zu Aufgabe 4.2.8). Seien (T,r) und (T,r′) Wurzelbäume und φ

ein Isomorphismus. Wir führen wieder Induktion über die Anzahl der Knoten in Tund T ′ . Haben die Bäume nur einen Knoten, so erhalten sie den gleichen Code. Seialso nun die Anzahl der Knoten in T und T ′ mindestens zwei. Seien y1, . . . ,yk dieKinder von r und y′i = φ(yi) . Die Restriktionen φi von φ auf die in yi gewurzeltenTeilbäume von T sind offensichtlich Isomorphismen, also sind die zugehörigenCodes gleich nach Induktionsvoraussetzung. Da die Codes von T und T ′ durchOrdnen und Einklammern dieser Codes entstehen, erhalten sie den gleichen Code.

4.9.6 Lösung (zu Aufgabe 4.2.12). Wenn wir in zwei Durchgängen jeweils alleBlätter entfernen, um das Zentrum zu bestimmen, stellen wir fest, dass dieses aus

4.9. Lösungsvorschläge zu den Übungen 159

einer Kante besteht (siehe Abbildung).

r

An dem linken der beiden Zentrumsknoten, also dem Knoten r , haben wir Teilbäu-me mit den Codes (()()()) und (()()) . Der erste dieser beiden Codes ist lexikogra-phisch kleiner, da das erste Zeichen, in dem sich die beiden Strings unterscheiden,im ersten Fall eine öffnende und im zweiten eine schließende Klammer ist. Alsohat dieser Teilbaum den Code ((()()())(()())) . Für den Teilbaum an dem ande-ren Knoten, also dem obersten Knoten in der Abbildung, ermitteln wir den Code((()()())()) . Dieser ist lexikographisch größer als der erste Code. Also ist der Wur-zelknoten der mit r bezeichnete Knoten in der Abbildung. Machen wir diesen zurWurzel, hängt an dem anderen Zentrumsknoten der gepflanzte Baum mit dem lexi-kographisch kleinsten Code. Insgesamt erhalten wir also als Code dieses Baumes

(((()()())())(()()())(()())).

4.9.7 Lösung (zu Aufgabe 4.4.6). Sei zunächst T ein minimaler G aufspannenderBaum und e ∈ E ∖T . Sei e ∈ C(T, e) beliebig. Nach Aufgabe 4.1.6 ist dann T :=(T + e) ∖ e wieder ein Baum und damit wieder ein G aufspannender Baum. Da Tminimal ist, schließen wir

w(T ) = ∑f∈T

w( f ) ≤ w(T ) = w(T )−w(e)+w(e)

⇐⇒ w(e) ≤ w(e).

Sei nun umgekehrt T ein G aufspannender Baum, der das Kreiskriterium erfülltund T ein minimaler G aufspannender Baum mit |T ∩ T | maximal. Wir zeigenT = T . Angenommen T ∖ T = /0. Sei dann e ∈ T ∖ T = /0 von kleinstem Gewichtgewählt. Da T nach dem bereits Gezeigten das Kreiskriterium erfüllt, gilt für allef ∈C(T ,e) : w( f ) ≤ w(e) . Da T kreisfrei ist, gibt es f ∈C(T ,e)∖T . Da man beiw( f ) = w(e) mit (T + e) ∖ f einen weiteren minimalen G aufspannenden Baum

160 Kapitel 4. Bäume und Matchings

erhalten würde, der aber einen größeren Schnitt mit T hat als T , muss w( f )< w(e)sein. Für alle g ∈C(T, f ) gilt nun wiederum

w(g)≤ w( f )< w(e).

Insbesondere gibt es ein g ∈C(T, f )∖ T mit w(g)< w(e) im Widerspruch zur Wahlvon e .

Da nach Satz 4.1.5 alle Bäume auf der gleichen Knotenmenge gleich vieleKanten haben, folgt die Behauptung.

4.9.8 Lösung (zu Aufgabe 4.5.3). a) Sei e=(u,v)∈ T . Nach Satz 4.1.5 ist T ∖eunzusammenhängend. Da T zusammenhängend ist, hat T ∖e genau zwei Zu-sammenhangskomponenten. Sei S die Knotenmenge der einen. Wir behaup-ten

D(T,e) = ∂G(S).

⊆ Sei e ∈ D(T,e) . Da die Komponten von T ∖ e wieder Bäume sind und(T ∖ e)+ e als Baum kreisfrei ist, können nicht beide Endknoten von ein der gleichen Komponente von T ∖e liegen. Somit gilt |e∩S|= 1, alsoauch e ∈ ∂ (S) .

⊇ Sei (w,x) = e ∈ ∂S und e∩ S = w . Wir haben zu zeigen, dass T :=(T ∖ e)+ e wieder ein Baum ist. Da T ebenso viele Kanten wie T hat,genügt es nach Satz 4.1.5 zu zeigen, dass T zusammenhängend ist. DaT zusammenhängend ist, genügt es, einen uv-Weg in T zu finden. Dadie S-Komponente von T ∖ e ein Baum ist, gibt es darin einen uw-WegP1 . Analog erhalten wir in der anderen Komponente einen xv-Weg P2 .Dann ist aber P1eP2 ein uv-Weg in T , das somit ein Baum ist.

b) Sei T ein minimaler aufspannender Baum, e∈ T und e∈D(T,e) . Auf Grundder Minimalität von T ist

w(T ) = ∑e∈T

w(e)≤ w((T ∖ e)+ e) = w(T )−w(e)+w(e),

also auch w(e)≤ w(e) .

Sei umgekehrt T ein aufspannender Baum, der das Schnittkriterium erfülltund T ein minimaler aufspannender Baum mit |T ∩ T | maximal. Angenom-men T ∖ T = /0. Sei dann (u,v) = e ∈ T ∖ T von maximalem Gewicht. DaT zusammenhängend ist, enthält er mindestens eine Kante e , die die beiden

4.9. Lösungsvorschläge zu den Übungen 161

Komponenten von T ∖e verbindet. Ist S die Knotenmenge der einen Kompo-nente von T ∖ e , so ist also e ∈ ∂G(S) = D(T,e) . Nach Teil a) ist (T ∖ e)+ ewieder ein Baum und damit w(e) ≥ w(e) . Da T zusammenhängend ist, ent-hält es ein g ∈ D(T , e) . Da T als minimaler aufspannender Baum nach dembereits Gezeigten das Schnittkriterium erfüllt, ist w(g) ≥ w(e) . Da |T ∩ T |maximal gewählt worden war, muss sogar gelten w(g)> w(e) . Dann ist aberg ∈ T ∖ T mit

w(g)> w(e)≥ w(e)

im Widerspruch zur Wahl von e .

4.9.9 Lösung (zu Aufgabe 4.5.4). Sei S eine nicht leere Menge natürlicher Zahlen,v darin die kleinste. Wir betrachten den vollständigen Graphen auf S und füre = (i, j) sei

w(e) = maxi, j.

Offensichtlich nehmen wir in Prims Algorithmus die Elemente von S in aufstei-gender Reihenfolge in T auf, sortieren also die Menge. Damit ist die Laufzeit vonunten durch

Ω(|S| log |S|)

beschränkt. Bekanntlich ist Sortieren nämlich Ω(|S| log |S|) , siehe etwa [1].

4.9.10 Lösung (zu Aufgabe 4.5.5). a) Offensichtlich ist der kontrahierte GraphT/S zusammenhängend. Dieser Graph ist aber gleich dem von der Kanten-menge E(T )∖ S in G/S induzierten Graphen. Da man ferner bei jeder Kon-traktion einer Kante, die nicht Schleife ist, einen Knoten verliert und also

|T ∖S|= |T |− |S|= |V |−1−|S|= |V (G/S)|−1

gilt, ist T/S nach Satz 4.1.5 ein aufspannender Baum von G/S . Wir zeigen:T/S erfüllt das Schnittkriterium. Sei also e∈E(T )∖S und e∈DG/S(T ∖S,e) .Wir zeigen

DG/S(T ∖S,e) = DG(T,e),

woraus die Behauptung folgt, da T als minimaler aufspannender Baumdas Schnittkriterium erfüllt. Seien dazu V1,V2 die Knotenmengen der Kom-ponenten von T ∖ e . Dann ist DG(T,e) = ∂G(V1) . Die Komponenten vonT ∖(S∪e) in G/S entstehen aus den Komponenten von T ∖e , indem in denTeilbäumen Kanten kontrahiert werden. Seien die Knoten der KomponentenV1,V2 . Dann ist DG/S(T ∖S,e) = ∂G/S(V1). Ist nun e′ ∈ ∂G(V1) so ist in G/S

162 Kapitel 4. Bäume und Matchings

ein Endknoten von e′ in V1 und der andere in V2 , also auch e′ ∈ ∂G/S(V1).

Umgekehrt muss die Kante in G , aus der eine Kante in ∂G/S(V1) entstandenist, in ∂G(V1) gewesen sein.

b) Sei T ein minimaler aufspannender Baum, v ∈V und e die eindeutige Kantekleinsten Gewichts inzident mit v . Angenommen e ∈ T . Da sicherlich e ∈C(T,e) liegt, hat v in diesem Kreis den Knotengrad 2. Sei f ∈ C(T,e) dieandere Kante inzident mit v . Nach dem Kreiskriterium ist w( f ) ≤ w(e) . Daw injektiv ist, gilt sogar w( f )< w(e) im Widerspruch zur Wahl von e . Alsoist die Kantenmenge S in jedem minimalen aufspannenden Baum enthalten.

Es bleibt zu zeigen, dass der minimale aufspannende Baum eindeutig ist.Angenommen T wäre ein weiterer minimaler aufspannender Baum unde0 ∈ T ∖ T von minimalem Gewicht. Da T das Kreiskriterium erfüllt undw injektiv ist, gilt

∀g ∈C(T ,e0) : w(g)< w(e0),

insbesondere gilt dies auch für ein g0 ∈C(T ,e)∖T . Nun ist g0 von maxima-lem Gewicht in C(T,g0) , also gibt es ein f0 ∈C(T,g0)∖T mit

w( f0)< w(g0)< w(e0),

im Widerspruch zur Wahl von e0 .

4.9.11 Lösung (zu Aufgabe 4.5.10). Der Algorithmus von Kruskal betrachtet zu-nächst die Kanten mit dem Gewicht 2, also (i,2i) mit i = 1, . . . ,15 in dieser Rei-henfolge. Als nächstes wird die Kante (1,3) hinzugefügt. Die Kante (2,6) wirdverworfen, da sie mit (1,2),(3,6) und (1,3) einen Kreis schließt. Aufgenommenvon den Kanten mit Gewicht 3 werden (3,9),(5,15),(7,21),(9,27) . Die Kantenmit Gewicht 4 brauchen wir nicht zu betrachten, da sie mit zwei Kanten vom Ge-wicht 2 einen Kreis schließen. Analoges gilt für alle Gewichte, die keine Primzahlensind. Kanten vom Gewicht 5 im Baum sind (1,5),(5,25) . Schließlich werden auf-genommen

(1,7),(1,11),(1,13),(1,17),(1,19),(1,23),(1,29).

Der Algorithmus von Prim wählt die Kanten (1,2),(2,4),(4,8),(8,16) . Danneine vom Gewicht drei und weitere vom Gewicht zwei nämlich (1,3),(3,6),(6,12) ,(12,24) . Dann (3,9),(9,18),(9,27) . Die übrigen Kanten werden in folgender Rei-henfolge gewählt

(1,5),(5,10),(10,20),(5,15),(15,30),(5,25),(1,7),(7,14),(14,28),(7,21)

4.9. Lösungsvorschläge zu den Übungen 163

und weiter

(1,11),(11,22),(1,13),(13,26),(1,17),(1,19),(1,23),(1,29).

2

4

8

13

26

14

28

1

1015

30

257

2112

6

3

9

1827

24

20

16

115

22

29

23

19

17

Abbildung 4.10: Der minimale aufspannende Baum

Für den Algorithmus von Boruvka erstellen wir zunächst eine Tabelle der be-liebtesten Nachbarn. Die zugehörigen Kanten haben wir in Abbildung 4.10 fett ein-

1 2 3 4 5 6 7 8 9 10 11 12 13 14 152 1 6 2 10 3 14 4 18 5 22 6 26 7 30

16 17 18 19 20 21 22 23 24 25 26 27 28 29 308 1 9 1 10 7 11 1 12 5 13 9 14 1 15

Tabelle 4.1: Die beliebtesten Nachbarn

gezeichnet. Der zugehörige Wald hat acht Komponenten. Wir schreiben für Reprä-sentanten wieder die beliebtesten Nachbarn auf:

1 3 5 7 9 11 13 153 1 15 1 3 1 1 5

164 Kapitel 4. Bäume und Matchings

Dadurch kommen sechs neue Kanten hinzu und die letzte, nämlich (1,5) in derdritten Iteration.

Der minimale aufspannende Baum ist ohne unsere Vereinbarung zum „Tie-breaking“ nicht eindeutig. Z. B. kann man die Kante (1,3) durch (2,6) ersetzen.

4.9.12 Lösung (zu Aufgabe 4.6.4). Sei X die Anzahl der aufspannenden Bäume,welche die Kante e enthalten. Aus Symmetriegründen ist beim vollständigen Gra-phen X unabhängig von der Wahl von e . Wenn wir nun für alle Kanten e in Gjeweils die aufspannenden Bäume, die e enthalten, zählen, haben wir jeden Baumso oft gezählt, wie er Kanten enthält, also n− 1 mal. Da G

(n2

)Kanten hat, folgt

also aus der Cayley Formel (n2

)X = (n−1)nn−2

⇐⇒ n(n−1)2

X = (n−1)nn−2

⇐⇒ X = 2nn−3.

4.9.13 Lösung (zu Aufgabe 4.7.21). Wir betrachten die oberen Knoten als U unddie unteren als V . In den ersten vier Schleifendurchläufen finden wir an den ersten

1 1

2 2

3 3

Abbildung 4.11: Ein maximales Matching und eine minimale Knotenüberdeckung

vier Knoten jeweils erweiternde Wege der Länge 1, also Matchingkanten. Diesesind in Abbildung 4.11 fett gezeichnet. Im fünften Durchlauf finden wir am fünftenKnoten keine Matchingkante, aber am sechsten. Für die nächste Iteration habenwir Durchläufe der while-Schleife, in der die Knoten gefunden werden, an diesenangedeutet. Dabei nehmen wir passenderweise für U -Knoten ungerade Nummernund für V -Knoten gerade. In einem Durchlauf der while-Schleife werden alsoeigentlich zwei verschiedene Nummern abgetragen.

Als erstes markieren wir die beiden ungematchten Knoten mit 1, dann derenNachbarn mit 2. Da diese beide gematcht sind, markieren wir ihre Matchingpart-

4.9. Lösungsvorschläge zu den Übungen 165

ner mit 3. Die mit 3 markierten Knoten kennen nun keine unmarkierten Knotenmehr. Das Matching ist maximal, und die markierten V -Knoten und die unmar-kierten U -Knoten, die wir durch Quadrate angedeutet haben, bilden eine minimaleKnotenüberdeckung.

4.9.14 Lösung (zu Aufgabe 4.7.22). Seien die Zeilen des Schachbrettes wie all-gemein üblich Z := 1,2,3,4,5,6,7,8 und die Spalten S := a,b,c,d,e, f ,g,h .Wir betrachten den bipartiten G Graphen auf S∪Z , bei dem (i,x) eine Kante ist,wenn das Feld ix markiert ist, für i ∈ S und x ∈ Z .

Zwei Türme können sich genau dann schlagen, wenn sie entweder in der glei-chen Zeile oder in der gleichen Spalte stehen. Die entsprechenden Kanten der zu-gehörigen markierten Felder inzidieren also mit einem gemeinsamen Knoten in G .Mittels Kontraposition stellen wir fest, dass eine Platzierung von Türmen auf einerTeilmenge der markierten Felder genau dann zulässig ist, wenn die entsprechendenKanten in G ein Matching bilden. Gesucht ist also die Kardinalität eines maximalenMatchings.

Nach dem Satz von König ist diese gleich der minimalen Kardinalität einerKnotenüberdeckung. Eine Menge von Zeilen und Spalten entspricht aber genaudann einer kantenüberdeckenden Knotenmenge in G , wenn jedes markierte Feldin einer solchen Zeile oder Spalte liegt.

4.9.15 Lösung (zu Aufgabe 4.7.23). Wie vorgeschlagen, führen wir Induktion überdie Anzahl k ≥ n der von Null verschiedenen Einträge in P . Ist k = n , so ist injeder Zeile und Spalte höchstens ein Eintrag von Null verschieden. Da die Matrixdoppelt stochastisch ist, schließen wir, dass in jeder Zeile und Spalte genau einEintrag von Null verschieden und genauer gleich 1 ist. Also ist die Matrix einePermutationsmatrix. Wir setzen also l = 1,λ1 = 1 und P1 = A .

Sei nun k > n . Wir betrachten den bipartiten Graphen G auf der Menge derZeilen und Spalten, bei der eine Zeile mit einer Spalte genau dann adjazent ist,wenn der entsprechende Eintrag in der Matrix von Null verschieden ist.

Wir zeigen nun, dass G die Bedingung des Heiratssatzes von Frobenius erfüllt.Nach Annahme ist die Matrix quadratisch, die beiden Farbklassen von G sind alsogleich groß. Sei nun H eine Menge von Zeilen von A und N(H) die Menge derSpalten, die zu H in G benachbart sind. Da die Matrix doppelt stochastisch ist,erhalten wir

|N(H)|= ∑j∈N(H)

n

∑i=1

ai j︸ ︷︷ ︸=1

≥ ∑j∈N(H)

i∈H

ai j = ∑i∈H

n

∑j=1

ai j︸ ︷︷ ︸=1

= |H|.

166 Kapitel 4. Bäume und Matchings

Beachten Sie, dass das Ungleichheitszeichen daher rührt, dass in den Spalten vonN(H) Nichtnulleinträge in Spalten außerhalb von H vorkommen können. Die vor-letzte Gleichung folgt, da ai j = 0 für alle j ∈ N(H) , i ∈ H ist.

Also hat G ein perfektes Matching M . Sei P die Permutationsmatrix, die in(i, j) genau dann eine 1 hat, wenn (i, j) ∈ M und Null sonst. Sei ferner

α = minai j | (i, j) ∈ M.

Da k > n ist und nach Konstruktion von G muss 0 < α < 1 sein. Weil α minimalgewählt wurde, ist

A−αP

eine Matrix mit nicht-negativen Einträgen und Zeilen- und Spaltensumme jeweils1−α . Ferner hat A−αP mindestens einen Nichtnulleintrag weniger als A , nämlichdort, wo α das Minimum annahm. Also ist

A :=1

1−α(A−αP)

eine doppelt stochastische Matrix mit mindestens einem Nichtnulleintrag wenigerals A . Also gibt es nach Induktionsvoraussetzung l ∈ N und PermutationsmatrizenP1, . . . ,Pl , sowie λ1, . . . , λl mit 0 ≤ λi ≤ 1 und

A =l

∑i=1

λiPi.

Wir setzen nun

l = l +1, Pl = P, λl = α und für 0 ≤ i ≤ l : λi = (1−α)λi.

Dann ist stets 0 ≤ λi ≤ 1 undl

∑i=1

λiPi = αP+l

∑i=1

(1−α)λiPi

= αP+(1−α)l

∑i=1

λiPi

= αP+(1−α)A

= αP+(A−αP) = A

undl

∑i=1

λi = α +l

∑i=1

(1−α)λi

= α +(1−α) ·1 = 1,

womit wir A als Konvexkombination von Permutationsmatrizen dargestellt haben.

4.9. Lösungsvorschläge zu den Übungen 167

4.9.16 Lösung (zu Aufgabe 4.8.7). Wir zeigen per Induktion über den Algorithmus,dass für jede stabile Hochzeit σ : U →V und jeden Mann u ∈U gilt:

Ist v ∈V und v ≺u σ(u) , so macht u v im Algorithmus keinen Antrag.

Diese Aussage ist sicherlich beim ersten Antrag, der im Algorithmus gemachtwird, klar, da dort ein Mann seiner absoluten Favoritin einen Antrag macht. Be-trachten wir also nun den k -ten Antrag im Algorithmus, in dem u ∈ U der Frauv ∈ V einen Antrag macht und nehmen an, dass die Aussage für die ersten k− 1Anträge richtig ist. Angenommen die Aussage wäre falsch und

v ≺u σ(u).

Dann hat u auch σ(u) im Verlauf des Algorithmus einen Antrag gemacht.Da dieser abgelehnt wurde oder eine Verlobung aufgelöst wurde, ist σ(u) zumZeitpunkt des k -ten Antrags mit u1 verlobt, den sie u vorzieht:

u = σ−1(σ(u))≺σ(u) u1. (4.8)

Da der Antrag von u1 an σ(u) vor dem k -ten Antrag liegt, gilt nach Induktionsvor-aussetzung für jede stabile Hochzeit σ ′

σ′(u1)⪯u1 σ(u).

Insbesondere ist alsoσ(u1)⪯u1 σ(u). (4.9)

Da σ(u1) = σ(u) muss sogar

σ(u1)≺u1 σ(u) (4.10)

gelten. Die Ungleichungen (4.8) und (4.10) widersprechen aber für σ(u) und u1

der angenommenen Stabilität der Hochzeit σ .

168 Kapitel 4. Bäume und Matchings