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