Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
<strong>Graphen</strong>-<strong>Algorithmen</strong><br />
Matroide und Greedy-<strong>Algorithmen</strong><br />
Dr. Tobias Baumann<br />
14. Juni 2011<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Einführung<br />
Heute geht es um die Frage, wo genau uns denn<br />
Greedy-<strong>Algorithmen</strong> hilfreich sein können.<br />
Greedy-Algorithmus<br />
Gegeben ist eine Menge S, eine Mengenfamilie F ⊂ P(S) und eine<br />
Bewertungsfunktion f : S → R. Gesucht ist eine Lösungsmenge<br />
L ⊂ S mit L ∈ F , so dass ∑ s∈L f (s) = max H∈F f (h) gilt.<br />
∑<br />
h∈H<br />
Der Greedy-Algorithmus wählt nun eine Startmenge L 0 und fügt zu<br />
dieser Startmenge sukzessive ein Element s ∈ S mit maximalem<br />
Wert unter allen zulässigen Elementen aus S, so dass die<br />
resultierende Menge L i+1 ∈ F ist.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Greedy-<strong>Algorithmen</strong><br />
Wir betrachten noch einmal das MST-Problem:<br />
Minimum / Maximum Spanning Tree<br />
Gegeben ist ein zusammenhängender Graph G = (V , E, w) mit<br />
Kantengewichten w : E → N. Gesucht ist ein Baum T , der alle<br />
Knoten von G umfasst, und dessen Gewicht W = ∑ e∈T w(e)<br />
minimal bzw. maximal über alle aufspannenden Bäume ist.<br />
Wir können das Problem bereits in erwarteter linearer Zeit lösen,<br />
aber das ist gerade gar nicht unser Ziel.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Algorithmus von Kruskal<br />
1 T := ∅<br />
2 While (T nicht zusammenhängend)<br />
1 Wähle e ∈ E mit w(e) minimal, so dass in T ∪ {e} kein Kreis<br />
entsteht.<br />
2 Setze T := T ∪ {e}.<br />
Der Algorithmus ist offensichtlich ein Greedy-Algorithmus.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Korrektheit<br />
Wir wissen bereits aus DSEA, dass der Kruskal-Algorithmus<br />
korrekt arbeitet. Das Schnittlemma bietet uns dort einen<br />
schlüssigen Beweis.<br />
Allerdings ist das Schnittlemma nur für aufspannende Bäume<br />
geeignet. Greedy-<strong>Algorithmen</strong> funktionieren aber auch bei ganz<br />
anderen Problemen!<br />
Deshalb lernen wir heute einen allgemeinen Beweis für die<br />
Korrektheit von Greedy-<strong>Algorithmen</strong> kennen.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Matroide<br />
Definition<br />
Sei S eine endliche Menge und F ⊂ P(S) eine Familie von<br />
Untermengen von S. Das Paar M = (S, F ) heißt Matroid, falls<br />
folgendes gilt:<br />
∅ ∈ F<br />
A ∈ F , B ⊆ A ⇒ B ∈ F<br />
A, B ∈ F , |B| = |A| + 1 ⇒ ∃s ∈ B \ A : A ∪ {s} ∈ F<br />
Eine maximale Menge in F heißt Basis des Matroids. Alle Basen<br />
eines Matroids M enthalten dieselbe Anzahl Elemente r(M), der<br />
Rang von M. Die Familie F wird auch als Familie der<br />
unabhängigen Mengen bezeichnet. (Nicht zu verwechseln mit<br />
unabhängigen Mengen in <strong>Graphen</strong>!) Sind nur die ersten beiden<br />
Forderungen erfüllt, sprechen wir von Unabhängigkeitssystemen.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Was heißt das?<br />
∅ ∈ F<br />
A ∈ F , B ⊆ A ⇒ B ∈ F<br />
A, B ∈ F , |B| = |A| + 1 ⇒ ∃s ∈ B \ A : A ∪ {s} ∈ F<br />
Wir können jede Menge aus F durch Hinzunahme weiterer<br />
Elemente zu einer Basis ergänzen.<br />
Der Name Matroid erinnert an Matrizen:<br />
Seien a 1 , ..., a n Vektoren aus einem m-dimensionalen Vektorraum.<br />
Wir können die Vektoren als Spalten in einer m × n-Matrix sehen.<br />
Nun ist S die Menge der Vektoren. Eine Teilmenge A ⊆ S ist<br />
unabhängig, wenn die Vektoren in A linear unabhängig sind. Dann<br />
ist die dritte Forderung gerade der Steinitzsche Austauschsatz der<br />
Linearen Algebra. Der Rang ist dann die Dimension des<br />
Unterraums, der von den Vektoren in S aufgespannt wird.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Grundlegende Eigenschaften<br />
Alle Basen eines Matroids haben dieselbe Kardinalität.<br />
⇐⇒<br />
Sind X , Y ∈ F mit |X | > |Y |, so gibt es ein x ∈ X \ Y mit<br />
Y ∪ {x} ∈ F .<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Was haben <strong>Graphen</strong> mit Matroiden zu tun?<br />
Beim MST-Problem haben wir es mit einem Matroiden zu tun:<br />
MST ↔ Matroid<br />
Sei G = (V , E) ein Graph. Sei F ⊆ P(E) die Menge aller Wälder<br />
in G. Dann ist M = (E, F ) ein Matroid.<br />
Beweis<br />
∅ ist ein Wald.<br />
Ist A ein Wald, dann ist jede Teilmenge von A ein Wald.<br />
Seien A, B zwei Wälder mit |A| + 1 = |B|. Weiter seien<br />
A 1 , ..., A m die Komponenten von A mit den Knotenmengen<br />
V 1 , ..., V m . Es gilt |A i | = |V i | − 1. Da nun |B| > |A| ist, muss<br />
es eine Kante e ∈ B geben, die zwei verschiedene<br />
Komponenten A s , A t miteinander verbindet. Somit ist A ∪ {e}<br />
ein Wald.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Die Basis von M ist gerade die Menge der aufspannenden Wälder<br />
von G, und der Rang von M ist |V | − t, wobei t die Anzahl der<br />
Zusammenhangskomponenten von G ist.<br />
Jetzt wissen wir, dass das MST-Problem auf Matroiden basiert.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Matroid und Greedy-Algorithmus<br />
Satz<br />
Der folgende Greedy-Algorithmus findet eine Basis minimalen<br />
Gewichts in einem gewichteten Matroiden M = (S, F ) mit<br />
Gewichtsfunktion w : S → R:<br />
1 Setze A 0 := ∅.<br />
2 Sei A i ⊆ S mit |A i | = i. Dann ist<br />
X i = {x ∈ S \ A i : A i ∪ {x} ∈ F }. Ist X i = ∅, dann ist A i die<br />
Basis und wir sind fertig.<br />
Andernfalls wählen wir a i+1 ∈ X i mit minimalem Gewicht und<br />
setzen A i+1 := A i ∪ {a i+1 }.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
MST<br />
Matroide<br />
Greedy-Algorithmus<br />
Beweis<br />
Sei A = {a 1 , ..., a r } das Ergebnis des Algorithmus. Aus den<br />
Matroideigenschaften folgt, dass A eine Basis ist. Durch die<br />
Konstruktion des Algorithmus ist w(a 1 ) ≤ w(a 2 )... ≤ w(a r ).<br />
Sei nun B = {b 1 , ..., b r } eine Basis mit w(B) < w(A) und<br />
w(b 1 ) ≤ ... ≤ w(b r ). Dann gibt es einen kleinsten Index i mit<br />
w(b i ) < w(a i ). Es ist außerdem i ≥ 2. Wir betrachten die Mengen<br />
A i−1 und B i = {b 1 , ..., b i }. Nach dem Austauschaxiom gibt es ein<br />
b j ∈ B i \ A i−1 mit A i−1 ∪ {b j } ∈ F . Da aber<br />
w(b j ) ≤ w(b i ) < w(a i ) ist, hätte der Greedy-Algorithmus im i-ten<br />
Schritt b j statt a i gewählt. Widerspruch.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Gibt es noch andere Graph-basierte Matroide?<br />
Beispiel<br />
Sei G = (V , E) ein Graph, I ⊆ V eine unabhängige Menge und<br />
k : I → N 0 .<br />
S = E<br />
F = {X ⊆ S : d X (v) ≤ k(v)∀v ∈ I }.<br />
Die Konstruktion M = (S, F ) ist ein Matroid.<br />
Beweis<br />
Forderungen 1 und 2 sind klar.<br />
Seien X , Y ∈ F mit |X | > |Y |. Sei I ′ = {v ∈ I : d Y (v) = k(v)}.<br />
Jetzt ist aber auch d X (v) ≤ k(v)∀v ∈ I ′ . Somit gibt es ein<br />
e ∈ X \ Y mit e /∈ N(v) für v ∈ I ′ . Somit ist Y ∪ {e} ∈ F .<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Beispiel<br />
Sei G = (V , E) ein gerichteter Graph, T ⊆ V eine Knotenmenge<br />
und k : T → N 0 .<br />
S = E<br />
F = {X ⊆ S : d − X<br />
(v) ≤ k(v)∀v ∈ T }.<br />
Die Konstruktion M = (S, F ) ist ein Matroid.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Matchings in bipartiten <strong>Graphen</strong><br />
Definition<br />
Sei G = (S ˙∪T , E ⊆ S × T ) ein bipartiter Graph. Wir suchen ein<br />
Matching M ⊆ E, d.h. eine Kantenmenge, bei der die Kanten<br />
paarweise nicht inzident sind.<br />
Matchings können wir vergrößern, indem wir alternierende Pfade<br />
suchen (s. eine der kommenden Vorlesungen).<br />
Matroid?<br />
Wir betrachten Knotenmengen X ⊆ S, die komplett gematcht<br />
werden können. Eine solche Knotenmenge heißt Transversale.<br />
Wir setzen M = (S, {X ⊆ S : X ist Transversale in G}). M ist ein<br />
Matroid.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Matching = Matroid<br />
Beweis<br />
Axiome 1 und 2 sind erfüllt.<br />
Seien nun A und B Transversalen mit |B| = |A| + 1 und den<br />
zugehörigen Matchings M A , M B . Das heißt, |M B | = |M A | + 1.<br />
Daraus folgt nun, dass es einen alternierenden Weg gibt, der M A<br />
vergrößert und in einem Knoten u ∈ B \ A beginnt.<br />
Wir können also Matchingprobleme in bipartiten <strong>Graphen</strong> mit Hilfe<br />
eines Greedy-Algorithmus lösen!<br />
Wie man einen alternierenden Weg findet, sehen wir in einer der<br />
folgenden Vorlesungen.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Kürzeste Wege in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Definition<br />
Sei G = (V , E, w) ein Graph mit nichtnegativen Kantengewichten<br />
w : E → R + 0<br />
und v, w ∈ V zwei Knoten. Gesucht ist der kürzeste<br />
Weg von v nach w.<br />
Wir können das Problem mit dem Dijkstra-Algorithmus lösen, der<br />
in bester Greedy-Manier einen Kürzeste-Wege-Baum immer um die<br />
kürzestmögliche Kante erweitert.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Kürzeste Wege = Matroid?<br />
Matroid?<br />
Wir suchen also wieder einen aufspannenden Baum. Allerdings ist<br />
das Unabhängigkeitssystem M = (S, F ) anders aufgebaut:<br />
S ist wieder die Kantenmenge E.<br />
A ∈ F , wenn A die Teilmenge eines Weges von v nach w ist.<br />
Wir sehen also: die ersten beiden Forderungen eines Matroids sind<br />
erfüllt. Allerdings kann man leicht Beispiele konstruieren, bei denen<br />
die dritte Forderung nicht erfüllt wird.<br />
Wir haben hier also keinen Matroid, sondern “nur” ein<br />
Unabhängigkeitssystem.<br />
Dr. Tobias Baumann<br />
Matroide
Einführung<br />
Matroid-Probleme in <strong>Graphen</strong><br />
Matroide<br />
Matching<br />
Kürzeste Wege<br />
Kürzeste Wege = Matroid? II<br />
Zweiter Versuch, diesmal mit Single Source Shortest Path:<br />
S ist die Kantenmenge E.<br />
A ∈ F , wenn A ein Baum ist, der v enthält.<br />
Jetzt ist zwar die dritte Forderung erfüllt, aber die zweite nicht:<br />
Wir können aus einem Baum A ∈ F Kanten so herausnehmen, dass<br />
v isoliert wird.<br />
Aber wir haben Glück: Ein solches Konstrukt wird auch Greedoid<br />
genannt, das unter bestimmten Umständen ebenfalls einen<br />
erfolgreichen Greedy-Algorithmus liefert.<br />
Dr. Tobias Baumann<br />
Matroide