Proseminar Algorithmen und Datenstrukturen Randomisierter

Werbung
Proseminar Algorithmen und Datenstrukturen
Randomisierter Algorithmus für Min-Cut
Johannes Christian Remy
Version: 18. Juli 2005
1
Einführung
1.1
Über Min-Cut
Gegeben sei ein ungerichteter, zusammenhängender, unbewerteter Multigraph. Das Min-CutProblem besteht nun darin, durch entfernen möglichst weniger Kanten den Graph in zwei Zusammenhangskomponenten zu zerlegen (d.h. die Summe der entfernten Kanten ist minimal für
alle möglichen Schnitte die den Graph in zwei Komponenten aufteilen). Ein Beispiel für ein
Min-Cut-Problem anhand eines kleinen Graphen und seinen Min-Cut sieht man in Abb. 1.
Abbildung 1: Beispiel für einen Min-Cut. Die 3 blau markierten Kanten werden entfernt
1.2
Motivation
Es gibt für das Min-Cut-Problem mehrere Algorithmen, die sich in zwei Kategorien unterteilen
lassen: Randomisiert und deterministisch. Der randomisierte Algorithmus hat den Nachteil, dass
immer die Chance besteht, dass er nicht den minimalen Schnitt, sondern nur einen kleinen“
”
Schnitt findet. Auch wenn diese Wahrscheinlichkeit sehr gering ist, sollte dies beachtet werden,
denn er ist nicht geeignet für Probleme bei denen man unbedingt den Min-Cut braucht und
nicht irgendeinen kleinen Schnitt“. In den meisten Fällen möchte man allerdings Rechenleistung
”
sparen, und genau dafür ist der randomisierte Algorithmus sehr gut geeignet. In der Regel findet
er sehr schnell den Min-Cut, wo hingegen ein deterministischer Algorithmus bestenfalls eine
Komplexität von O(n3 ) hat.
1
2
RANDOMISIERTER MINCUT-ALGORITHMUS
2
2.1
2
Randomisierter MinCut-Algorithmus
Kontraktion
Das Herzstück des randomisierten Algorithmus ist die sogenannte Kontraktion zweier Knoten,
auch Verschmelzung genannt. Es wird zufällig eine Kante ausgewählt, die entfernt wird. Die
beiden Endknoten dieser Kante werden vereinigt. Alle anderen Kanten und Knoten bleiben
erhalten. Existieren zwischen den Knoten außer der ausgewählten Kante noch mehrere Kanten,
so werden diese ebenfalls alle aus dem Graphen entfernt. Eine Kontraktion ist in Abb. 2 am
Beispiel unseres Graphen dargestellt.
Abbildung 2: Beispiel für einen kompletten Durchlauf des MinCut-Algorithmus
Nachdem wir so oft zwei Knoten verschmolzen haben, dass nur noch zwei Knoten überhaupt im Graphen vorhanden sind, ist der einfache randomisierte Algorithmus beendet. Die
Anzahl der Kanten zwischen diesen beiden Knoten ist nun ein möglicher Min-Cut“, und die
”
Kanten zwischen diesen beiden Knoten sind Kandidaten für den minimalen Schnitt in unserem
Ursprungsgraphen, würde man sie entfernen. Im Beispiel in Abb. 2 ist dies der Fall, hätten wir
aber zum Beispiel die Knoten A, B und C verschmolzen, so wäre das Ergebnis kein minimaler
Schnitt.
2.2
Auswirkung der Kontraktion auf das Min-Cut-Problem
Wichtig ist zu beachten, das bei der Kontraktion der MinCut erhalten bleibt, d.h. es kann durch
Kontraktion kein Graph entstehen, dessen minimaler Schnitt kleiner ist als der des Graphen vor
der Kontraktion. Allenfalls kann es passieren, dass der Min-Cut verloren geht“, d.h. man ent”
fernt durch Kontraktion eine der Kanten, die zum minimalen Schnitt gehört (wenn es denn nur
einen gibt). Dann erhöht sich der Min-Cut-Wert den wir am Ende des Algorithmus bekommen.
2.3
Analyse des randomisierten MinCut-Algorithmus
Da der Min-Cut Algorithmus nach jeder Kontraktion jede Kante bearbeiten muss, und insgesamt maximal n − 2 Kontraktionen ausgeführt werden, ist der Kontraktions-Algorithmus in
O(n2 ) implementierbar. Die Wahrscheinlichkeit für den Kontraktionsalgorithmus, den Min-Cut
zu finden, liegt bei Ω(n−2 ). Um mit dem Algorithmus nun nicht nur irgendwelche Schnitte zu
finden, sondern möglichst auch den Min-Cut, kann der Kontraktionsalgorithmus öfter ausgeführt
werden. Eine vernünftige Wiederholung wäre n2 -mal, jedoch kommen wir dann auf eine Komplexität von O(n4 ), also noch schlechter als der beste deterministische Algorithmus. Es gibt aber
3
DER FASTCUT ALGORITHMUS
3
auch Wege und Möglichkeiten, den Algorithmus zu verändern und erweitern, so dass man seine
Effizienz steigern kann.
3
3.1
Der FastCut Algorithmus
Die Idee von FastCut
Der FastCut-Algorithmus versucht genau die Schwachstellen des einfachen MinCut-Algorithmus
auszunutzen, um schneller an einen Min-Cut zu kommen.
Rekursion Um ähnliche“ Kontraktionen, also solche die mit dem Verschmelzen der glei”
chen Knoten beginnen, nicht doppelte Rechenzeit kosten zu lassen, führt man Rekursion ein.
Denn auch nach dem ersten Rekursions-Schritt haben wir noch eine genügend große Auswahl an
verschiedenen möglichen Rechnungen. Darum werden mit jedem Rekursions-Schritt zwei voneinander unabhängige neue Graphen erstellt, die wiederum den FastCut-Algorithmus durchlaufen.
Wenn der Algorithmus seinen Min-Cut zuende berechnet hat, gibt er den Wert zurück, und der
geringere Wert der beiden Min-Cuts an den Knotenknoten der Rekursionen wird gewählt.
Kontraktions-Sequenzen Anstatt immer nur eine Kante zu wählen und damit den Graphen
um einen Knoten zu reduzieren, wird eine bestimmte Anzahl an Knoten gewählt, die nach jeder
Konraktions-Sequenz (also einem Rekursions-Schritt
des FastCut-Algorithmus) noch vorhanden
√ sein sollen. Diese Anzahl wird mit 1 + n/ 2 gewählt.
Größe des Graphen Der Kontraktions-Algorithmus lohnt sich nur bei größeren Graphen, wo
die Wahrscheinlichkeit sehr groß ist, nicht die Kante zu kontrahieren die zum Min-Cut gehört.
Darum wählt man für Graphen mit sechs oder weniger Knoten einen deterministischen Algorithmus aus (Brute-Force-Aufzählung), bei größeren Graphen nimmt man den KontraktionsAlgorithmus.
3.2
Analyse von FastCut
Da die Größe des Graphen konstant sinkt, ist die Rekursionstiefe O(log n). Der Kontraktionsalgorithmus benötigt eine Rechenzeit von O(n2 ). Somit liegt die Gesamtkomplexität des
FastCut-Algorithmus bei O(n2 log n).
Obwohl die Laufzeit nur unwesentlich größer ist als die des normalen Kontraktionsalgorithmus, findet FastCut mit einer viel größeren Wahrscheinlichkeit den Min-Cut. Die Wahrscheinlichkeit, das der Min-Cut gefunden wird, liegt bei Ω( log1 n ).
LITERATUR
3.3
4
FastCut im Pseudo-Code
Input: Ein Multigraph G(V, E).
Output: Ein Cut C.
n := V;
if (n =< 6) then√Berechne
MinCut von G mit Brute-Force else
t := 1 + n/ 2 ;
Berechne zwei neue Graphen H1 und H2 und reduziere durch Kontraktionssequenzen
die Anzahl der Knoten auf t
Führe den Algorithmus FastCut rekursiv für die Graphen H1 und H2 durch
return den Kleineren der beiden MinCuts
Literatur
[1] Rajeev Motwani, Prabhakar Raghavan. Randomized Algorithms. Cambridge University
Press, 1995.
[2] Juraj Hromkovic. Algorithmics for Hard Problems. Springer Verlag, 2002.
[3] Prof. Dr. Berthold Vöcking. Vorlesung: Effiziente Algorithmen und Komplexitätstheorie.
Sommersemester 2004.
http://ls2-www.cs.uni-dortmund.de/∼voecking/EA-SS2004/skript/drandalg.pdf
Herunterladen