3_1 - TU Ilmenau

Werbung
3
Klassifikation wichtiger Optimierungsprobleme
3.1
Das MIN-∆-TSP
Wir kehren nochmal zurück zum Handlungsreisendenproblem für Inputs (w{i,j} )1≤i<j≤n , die
die Dreiecksungleichung erfüllen.
ne
In Kap. 2.5 haben wir gesehen, dass der Nearest-Neighbor-Algorithmus ein 1+dlog
-Appro2
ximationsalgorithmus ist. In diesem Abschnitt werden wir Algorithmen mit konstanter Approximationsgüte kennenlernen.
Grundlegend für diese Algorithmen ist der Begriff einer Euler-Tour oder eines Euler-Kreises.
Wir brauchen hierzu auch das Konzept eines Multigraphen, in dem im Unterschied zu Graphen
Mehrfachkanten zugelassen sind: G = (V, E), wobei E eine Kantenliste ist, in der dasselbe
Knotenpaar (u, v) auch mehrmals vorkommen darf.
Definition 3.1.1 Sei G = (V, E) ein (ungerichteter ) zusammenhängender Multigraph.
(a) Eine Knotenfolge (v0 , v1 , . . . , vm ) heißt ein Euler-Kreis (oder eine Euler-Tour ) in G,
wenn (vi−1 , vi ), 1 ≤ i ≤ m, Kanten sind und vm = v0 ist, und wenn unter diesen m
Kanten jede Kante in (Liste) E genau einmal vorkommt.
(b) G heißt ein Euler-Graph oder ein Eulerscher Graph, wenn G einen Euler-Kreis
besitzt.
Beispiele:
Eulerkreise sind also Rundreisen, bei denen jede Kante genau einmal benutzt wird. (Hamiltonkreise sind Rundreisen, bei denen jeder Knoten genau einmal benutzt wird.) Es stellt
sich heraus, dass es sehr einfach ist, Eulersche Graphen zu erkennen. (Im Gegensatz zur NPVollständigkeit des Hamiltonkreisproblems.)
Satz 3.1.2 Ein zusammenhängender Multigraph G ist eulersch genau dann, wenn jeder Knoten in G geraden Grad hat.
(Erinnerung: Der Grad deg(v) eines Knotens ist die Zahl der Kanten, die nach v führen. Bei
Multigraphen ist dies streng zu unterscheiden von der Anzahl der Nachbarknoten von v.)
1
Beweis. „⇒“: Klar: Der Eulerkreis betritt jeden Knoten ebenso oft wie er ihn verlässt. Bei
jedem Besuch werden also zwei Kanten „verbraucht“, am Ende müssen alle Kanten verbraucht
sein, also hat jeder Knoten eine gerade Anzahl von Kanten.
„⇐“: Wir benutzen Induktion über die Anzahl der Kanten von G. Wenn G keine Kante hat
und zusammenhängend ist, besteht G nur aus einem Knoten v, und es gibt den (entarteten)
Eulerkreis (v, v). Wenn G genau eine Kante hat, ist es nicht möglich, dass alle Knoten geraden
Grad haben. Wenn G zwei Kanten hat, und jeder Knoten geraden Grad hat, dann hat G zwei
Knoten und eine Doppelkante; offenbar gibt es einen Eulerkreis.
Nun nehmen wir an, dass G mindestens 3 Kanten hat. Wir finden einen einfachen Kreis
K1 (d.h. einen Kreis ohne Knotenwiederholung) (v0 , . . . , vk ) in G wie folgt: Starte in einem
beliebigen Knoten u0 . Weil G zusammenhängend ist, hat u0 Grad ≥ 2, es gibt also eine
Kante (u0 , u1 ). Diese gilt nun als „benutzt“. Weil u1 geraden Grad hat, gibt es eine unbenutzte
Kante (u1 , u2 ). In dieser Weise finden wir Knoten u3 , u4 , . . . (in jedem besuchten Knoten gibt
es mindestens eine unbenutzte Kante, auf der wir den Knoten wieder verlassen können), bis
zum ersten Mal ut = us wird, für ein s < t. Dann bildet (us , us+1 , . . . , ut ) den gewünschten
einfachen Kreis K1 (Länge k = t − s).
Wir entfernen die Kanten von K1 aus G. Dadurch zerfällt G eventuell in einige Zusammenhangskomponenten G1 , . . . , Gt . (Davon können manche auch nur einen Knoten enthalten.) Da
jeder Knoten in K1 Grad 0 oder 2 hat, haben in den Zusammenhangskomponenten alle Knoten geraden Grad. Daraus folgt mit der Induktionsvoraussetzung, dass jedes Gs für sich einen
Eulerkreis besitzt. Es ist nun leicht, aus K1 und den t Eulerkreisen der Zusammenhangskomponenten einen „großen“ Eulerkreis für G zusammenzusetzen.
Es ist nicht schwer zu sehen, dass man das im Beweis skizzierte Verfahren in einen Polynomialzeitalgorithmus zum Finden eines Eulerkreises umsetzen kann. Einen solchen nehmen wir
ab jetzt als gegeben an.
Was haben Eulerkreise mit kostengünstigen TSP-Rundreisen zu tun? Viel, wenn die Dreiecksungleichung gilt.
Lemma 3.1.3 Es sei x = (w{u,v} )1≤u<v≤n ein MIN-∆-TSP-Input, und es sei G = (V, E) ein
Multigraph auf der Knotenmenge V = {1, . . . , n}, der einen Eulerkreis EK = (v0 , v1 , . . . , vm ),
vm = v0 , besitzt. Es sei
X
X
w(E) = w(EK ) =
w{u,v} =
w{vi−1 ,vi }
(u,v) in E
1≤i≤m
das Gewicht von E (oder die Länge des Eulerkreises in G). Dann kann aus EK in
polynomieller Zeit ein Hamiltonkreis HK mit Gesamtkosten ≤ w(EK ) gefunden werden.
Beweis.
Wir erhalten HK aus EK, indem wir in der Folge (v0 , v1 , . . . , vm−1 ) die Einträge vj streichen,
für die vj = vi für ein i < j gilt. (Von allen Vorkommen eines Knotens u wird nur der erste
behalten.) Es ist klar, dass das Resultat ein Hamiltonscher Kreis im vollständigen Graphen
Kn ist, da jeder Knoten genau einmal vorkommt. Die Dreiecksungleichung garantiert, dass die
Länge dieses Kreises nicht größer ist als w(EK ).
2
Nun zeichnet sich schon der Grundansatz zum Finden eines günstigen Hamiltonkreises zu
Input x = (w{u,v} )1≤u<v≤n ab: Man finde einen Eulerschen (Multi)Graphen G = (V, E) mit
V = {1, . . . , n}, für den w(E) möglichst klein ist. Dann ergibt sich eine TSP-Rundreise HK
mit Kosten ≤ w(E), indem man erst einen Eulerkreis für G baut und diesen dann wie in
Lemma 3.1.3 zu einer TSP-Tour abkürzt.
Verschiedene Algorithmen ergeben sich durch verschiedene Strategien zum Finden eines Eulerschen Multigraphen.
3.2
Konstruktion mit Minimalem Spannbaum
Definition 3.2.1 Sei G = (V, E) ein zusammenhängender (einfacher ) Graph, (w{u,v} , (u, v) ∈
E) sei eine Gewichtsfunktion (oder Längenfunktion) auf den Kanten.
(a) Ein Baum T ⊆ E (d.h. (V, T ) ist zusammenhängend und kreisfrei, es gibt genau |V | − 1
Kanten in T ) heißt ein Spannbaum von G.
P
(b) w(T ) = (u,v)∈T w{u,v} heißt das Gewicht von T .
(c) Ein Spannbaum T für G heißt minimal (also ein minimaler Spannbaum, kurz MST ),
wenn w(T ) ≤ w(T 0 ) für alle Spannbäume T 0 von G gilt.
Fakt 3.2.2 Es gibt einen Algorithmus, der zu G und (w{u,v} , (u, v) ∈ E) in Zeit O(|E| log |V |)
einen minimalen Spannbaum findet. (Siehe Vorlesung „Effiziente Algorithmen“.)
Algorithmus 3.2.3 (TSP-per-MST)
Input: x = (w{i,j} )1≤i<j≤n
Methode:
1
Finde MST T für Kn mit Gewichten (w{i,j} )1≤i<j≤n ;
2
Bilde Multigraphen G = (V, E), wobei in der Kantenliste E
jede Kante aus T genau zweimal vorkommt ;
3
Finde Eulerkreis EK im Eulerschen Graphen G ;
4
Kürze EK zu Hamiltonkreis HK ab (Lemma 3.1.3);
5
Ausgabe: HK
Satz 3.2.4 Der Algorithmus TSP-per-MST ist ein 2-Approximationsalgorithmus für MIN∆-TSP. Daher ist MIN-∆-TSP in APX.
Beweis. Sei x = (w{i,j} )1≤i<j≤n ein Input, und K ∗ = (v0 , v1 , . . . , vn ) (mit v0 = vm ) ein
Hamiltonkreis minimaler Länge m∗ (x). Beachte nun, dass die Kantenmenge
E ∗ = {(v1 ), (v2 ), . . . , (vn−1 , vn )},
3
die durch Entfernen der Kante (v0 , v1 ) aus K ∗ entsteht, ein einfacher Weg durch n Knoten,
also ein Spannbaum ist. Da T ein minimaler Spannbaum ist, gilt
w(T ) ≤ w(E ∗ ) ≤ w(K ∗ ) = m∗ (x).
Da E aus T durch Verdoppeln entsteht, gilt
w(EK ) = w(E) ≤ 2 · w(T ) ≤ 2m∗ (x).
Zudem ist nach Satz 3.1.2 (V, E) ein Euler-Graph, da durch das Verdoppeln der Kanten jeder
Knoten geraden Grad hat. Nach Lemma 3.1.3 schließlich ist
m(x, TSP-per-MST(x)) = w(HK ) ≤ w(EK ) ≤ 2m∗ (x),
wie gewünscht.
3.3
Der Algorithmus von Christofides
Eine Verfeinerung des einfachen TSP-per-MST-Algorithmus liefert sogar einen Algorithmus
mit Approximationsgüte 32 .
Die Verdoppelung des MST T in Algorithmus 3.2.3 diente nur dem Zweck, die Knotengrade
auf einen geraden Wert zu zwingen. Wir suchen nun eine Möglichkeit, andere Kanten zu T
hinzuzufügen, um denselben Zweck zu erreichen.
Definition 3.3.1 Sei G = (V, E) ein (einfacher ) Graph, (w{u,v} , (u, v) ∈ E) sei eine Gewichtsfunktion auf den Kanten.
(a) Eine Kantenmenge M ⊆ E in G heißt ein Matching, wenn je zwei Kanten in M keinen
gemeinsamen Knoten haben.1
(b) Ein Matching M heißt perfekt, wenn jeder Knoten von V in einer Kante in M vorkommt.2
P
(c) Das Gewicht eines Matchings M ist w(M ) = (u,v)∈M w{u,v} .
(d) Ein perfektes Matching M ist minimal, wenn für alle perfekten Matchings M 0 gilt:
w(M ) ≤ w(M 0 ).
Wir betrachten minimale Matchings in vollständigen Graphen, in denen alle Kanten vorhanden
sind. Hier ist die Existenz von perfekten Matchings kein Problem: bei gerader Knotenzahl gibt
es perfekte Matchings, bei ungerader Knotenzahl nicht.
Fakt 3.3.2 Es gibt einen Algorithmus, der zu vollständigen Graphen G = (V, E) mit gerader
Knotenzahl und Gewichtssatz (w{u,v} , {u, v} ⊆ V, u 6= v) in polynomieller Zeit ein minimales
Matching findet.
1
2
„matching“ ist das englische Wort für „paarweises Anordnen“.
Nicht jeder Graph G besitzt ein perfektes Matching.
4
(Warnung: Die bekannten Algorithmen für dieses Problem sind nicht ganz einfach.)
Algorithmus 3.3.3 (Christofides)
Input: x = (w{u,v} )1≤u<v≤n
Methode:
1
Finde MST T für Kn mit Gewichten (w{u,v} )1≤u<v≤n ;
2
Definiere V 0 = {v ∈ {1, . . . , n} | degT (v) ist ungerade } ;
3
Finde minimales perfektes Matching M in vollständigem Graphen auf V 0
bzgl. (w{u,v} )u,v∈V 0 ,u6=v ;
4
(∗ T ] M ist die Vereinigung disjunkter Kopien von T und M ;
— Doppelkanten möglich; beobachte: (V, T ] M ) ist Euler-Graph ∗)
5
Finde Eulerkreis EK in (V, T ] M ) ;
5
Kürze EK zu Hamiltonkreis HK ab (Lemma 3.1.3);
5
Ausgabe: HK
Satz 3.3.4 Der Algorithmus von Christofides ist ein 32 -Approximationsalgorithmus für MIN∆-TSP.
Beweis. Um zu sehen, dass der Schritt in Zeile 3 funktioniert, müssen wir zunächst kontrollieren, dass der vollständige Graph auf V 0 ein perfektes Matching besitzt, d.h., dass V 0 gerade
ist. Das ist aber klar: Im Graphen (V, T ) gilt (wie in jedem Graphen):
X
degT (v) = 2|T |,
v∈V
also ist die Summe der Grade eine gerade Zahl. Daher muss die Anzahl der Knoten in (V, T )
mit ungeradem Grad gerade sein.
Zu Zeile 4: Mit Satz 3.1.2 ist leicht einzusehen, dass (V, T ∪ M ) Eulerscher Graph ist: zu jedem
Knoten, der in (V, T ) ungeraden Grad hat, fügt M genau eine Kante hinzu, nichts aber zu
den Knoten in V − V 0 . Also haben in (V, T ∪ M ) alle Knoten geraden Grad.
Wie im Beweis von Satz 3.2.4 sei K ∗ ein Hamiltonkreis minimaler Länge m∗ (x). Wir wissen
schon:
w(T ) ≤ w(K ∗ ) = m∗ (x).
(3.1)
Wie steht es nun mit dem Gewicht von M ? Der Kreis K ∗ erzeugt (durch Überspringen von
Knoten in V − V 0 ) einen Hamiltonkreis K 0 = (u0 , u1 , . . . , um ) in der Knotenmenge V 0 . Wegen
der Dreiecksungleichung gilt:
X
w(K 0 ) =
w{ui−1 ,ui } ≤ w(K ∗ ) = m∗ (x).
1≤i≤m
Der Kreis K 0 hat gerade Länge und kann in zwei perfekte Matchings
M1 = {(u0 , u1 ), (u2 , u3 ), . . . , (um−2 , um−1 )} und M2 = {(u1 , u2 ), (u3 , u4 ), . . . , (um−1 , um )}
5
zerlegt werden. Beide Matchings sind perfekt, und M ist ein minimales Matching, also gilt
w(M ) ≤ w(M1 ) und w(M ) ≤ w(M2 ).
Also:
2w(M ) ≤ w(M1 ) + w(M2 ) = w(K 0 ) ≤ m∗ (x).
Aus (3.1) und (3.2) folgt sofort, dass
3
w(T ] M ) ≤ m∗ (x)
2
gilt. Also ist
3
w(HK ) ≤ w(EK ) = w(T ] M ) ≤ m∗ (x),
2
wie behauptet.
6
(3.2)
Herunterladen