Graphpartitionierung - KIT
Graphpartitionierung - KIT
Graphpartitionierung - KIT
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1<br />
Algorithmische Methoden für schwere<br />
Optimierungsprobleme<br />
Juniorprof. Dr. Henning Meyerhenke<br />
Institut für Theoretische Informatik<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>KIT</strong> – Universität des Landes Baden-Württemberg und<br />
nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
2<br />
Wiederholung<br />
Algorithmus Improve<br />
Minimierung eines Quotientenkriteriums<br />
Kriterium geht ein bei Transformation in Flussproblem<br />
Jede Iteration findet das Optimum einer abgewandelten Zielfunktion<br />
durch Lösen des Flussproblems<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme
2<br />
Wiederholung<br />
Algorithmus Improve<br />
Minimierung eines Quotientenkriteriums<br />
Kriterium geht ein bei Transformation in Flussproblem<br />
Jede Iteration findet das Optimum einer abgewandelten Zielfunktion<br />
durch Lösen des Flussproblems<br />
Haupttheorem, Teil 1:<br />
Jede Iteration liefert ein Ergebnis, das mindestens so gut ist wie das<br />
Ergebnis der besten Teilmenge der bisherigen Lösung<br />
Haupttheorem, Teil 2:<br />
Wenn die Lösung der Eingabe genügend Übereinstimmung mit dem<br />
Optimum hat,<br />
dann 1 ɛ -approximiert die Lösung S das Optimum<br />
Bedingung zur Übereinstimmung bei π(v) = 1:<br />
Anteil von C, der auch in A liegt, muss etwas größer sein als der<br />
erwartete Anteil von C in einer Zufallsmenge der Größe A<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme
3<br />
Vorlesung 11<br />
Programm:<br />
<strong>Graphpartitionierung</strong><br />
Kernighan-Lin bzw. Fiduccia-Mattheyses<br />
Folien teilweise mit freundlicher Unterstützung von Daniel Mex<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme
4<br />
Inhalt<br />
<strong>Graphpartitionierung</strong><br />
Einführung<br />
Heuristiken<br />
Mehrebenen-Methode<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
5<br />
Szenario<br />
Sie haben einen Graphen gegeben und einen iterativen Algorithmus,<br />
der darauf operiert.<br />
Auf jedem Knoten wird eine Berechnung durchgeführt, deren Resultat<br />
von Werten des Knotens und seiner Nachbarn abhängt, die in der<br />
vorigen Iteration berechnet wurden.<br />
Beispiel: x (i+1)<br />
v<br />
:= x (i)<br />
v − α ∑u∈N(v)(x (i)<br />
v − x (i)<br />
u )<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
5<br />
Szenario<br />
Sie haben einen Graphen gegeben und einen iterativen Algorithmus,<br />
der darauf operiert.<br />
Auf jedem Knoten wird eine Berechnung durchgeführt, deren Resultat<br />
von Werten des Knotens und seiner Nachbarn abhängt, die in der<br />
vorigen Iteration berechnet wurden.<br />
Beispiel: x (i+1)<br />
v<br />
:= x (i)<br />
v − α ∑u∈N(v)(x (i)<br />
v − x (i)<br />
u )<br />
Sie haben ein paralleles System gegeben, auf dem der Algorithmus<br />
auf dem Graphen ausgeführt werden soll.<br />
Jeder Prozessor ist für einen Teil des Graphen zuständig.<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
5<br />
Szenario<br />
Sie haben einen Graphen gegeben und einen iterativen Algorithmus,<br />
der darauf operiert.<br />
Auf jedem Knoten wird eine Berechnung durchgeführt, deren Resultat<br />
von Werten des Knotens und seiner Nachbarn abhängt, die in der<br />
vorigen Iteration berechnet wurden.<br />
Beispiel: x (i+1)<br />
v<br />
:= x (i)<br />
v − α ∑u∈N(v)(x (i)<br />
v − x (i)<br />
u )<br />
Sie haben ein paralleles System gegeben, auf dem der Algorithmus<br />
auf dem Graphen ausgeführt werden soll.<br />
Jeder Prozessor ist für einen Teil des Graphen zuständig.<br />
Frage: Wie erreichen Sie eine möglichst hohe Rechenleistung?<br />
Frage: Wie vermeiden Sie übermäßige Kommunikation?<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
6<br />
Beispielgraph<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
7<br />
Beispielgraph, Aufteilung in 12 Teile<br />
4253 vertices, no vertexweights, 24578 edges, no edgeweights, cut 439, pw interval [350..358]<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
8<br />
Definitionen<br />
Definition (Partition, Schnitt)<br />
Sei G = (V , E) ein ungerichteter Graph.<br />
Dann ist Π = (V 1, V 2, . . . , V k ) ⊂ V mit .k<br />
i=1 V i = V und<br />
V i ∩ V j = ∅ ∀i = j eine k-Partition des Graphen.<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
8<br />
Definitionen<br />
Definition (Partition, Schnitt)<br />
Sei G = (V , E) ein ungerichteter Graph.<br />
Dann ist Π = (V 1, V 2, . . . , V k ) ⊂ V mit .k<br />
i=1 V i = V und<br />
V i ∩ V j = ∅ ∀i = j eine k-Partition des Graphen.<br />
Ext(Π) = {{u, v} ∈ E; u ∈ V i, v ∈ V j mit i = j} ist die Menge der<br />
Kanten, die zwischen verschiedenen Teilen verlaufen und heißt<br />
Schnitt der Partition.<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
8<br />
Definitionen<br />
Definition (Partition, Schnitt)<br />
Sei G = (V , E) ein ungerichteter Graph.<br />
Dann ist Π = (V 1, V 2, . . . , V k ) ⊂ V mit .k<br />
i=1 V i = V und<br />
V i ∩ V j = ∅ ∀i = j eine k-Partition des Graphen.<br />
Ext(Π) = {{u, v} ∈ E; u ∈ V i, v ∈ V j mit i = j} ist die Menge der<br />
Kanten, die zwischen verschiedenen Teilen verlaufen und heißt<br />
Schnitt der Partition.<br />
ext(Π) = |Ext(Π)| stehe für die Kantenanzahl des Schnitts.<br />
Definition (Bisektion)<br />
Eine Partition (V 1, V 2) heißt balanciert, wenn | |V 1| − |V 2| | ≤ 1 gilt. Eine<br />
balancierte 2-Partition heißt auch Bisektion.<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Einführung
9<br />
<strong>Graphpartitionierung</strong><br />
<strong>Graphpartitionierung</strong>s-Problem (GPP)<br />
Sei G = (V , E, ω) ein Graph, partitioniere V<br />
in V = V1 ˙∪ . . . ˙∪ Vk durch eine Abbildung<br />
Π : V → {1, . . . , k} derart, dass<br />
Π balanciert ist (|V1| ≈ · · · ≈ |Vk |) und<br />
der Kantenschnitt ∑{u,v}∈E:Π(u)=Π(v) ω(u, v)<br />
minimiert wird.<br />
N P-schwer/-vollständig<br />
(Optimierung/Entscheidung)<br />
In der Praxis:<br />
Meist Einsatz von Heuristiken (zumindest<br />
bei großen Instanzen)<br />
Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
Kantenschnitt<br />
Kommunikation<br />
<strong>Graphpartitionierung</strong><br />
Einführung
Inhalt<br />
<strong>Graphpartitionierung</strong><br />
Einführung<br />
Heuristiken<br />
Mehrebenen-Methode<br />
10 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Gängige Heuristiken<br />
Kernighan-Lin / Fiduccia-Mattheyses<br />
Mehrebenen-Verfahren<br />
Spektrale Partitionierung<br />
Metaheuristiken<br />
Random Walks<br />
Flüsse<br />
11 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Kernighan-Lin bzw.<br />
Fiduccia-Mattheyses<br />
Lokale Suche mit variabler Tiefe<br />
Startzustand: ”Beliebige” Partition, meist<br />
balanciert<br />
Ähnliche Idee wie bei Lin-Kernighan für<br />
TSP: Lokale Suche, Knotenverschiebungen<br />
verbessern Kantenschnitt<br />
Gierig: Verschiebe Knoten mit höchster<br />
Verbesserung<br />
12 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Kernighan-Lin bzw.<br />
Fiduccia-Mattheyses<br />
Lokale Suche mit variabler Tiefe<br />
Startzustand: ”Beliebige” Partition, meist<br />
balanciert<br />
Ähnliche Idee wie bei Lin-Kernighan für<br />
TSP: Lokale Suche, Knotenverschiebungen<br />
verbessern Kantenschnitt<br />
Gierig: Verschiebe Knoten mit höchster<br />
Verbesserung<br />
Sehr schnell<br />
Bei ordentlicher Startlösung gute<br />
Kantenschnittwerte<br />
Woher bekommen wir eine gute<br />
Startlösung?<br />
12 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Mehrebenen-Verfahren<br />
Lokale Methoden brauchen gute<br />
Startlösungen<br />
Suchraum beschränken, das<br />
Schneiden ”schwerer” Kanten<br />
vermeiden<br />
13 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Mehrebenen-Verfahren<br />
Lokale Methoden brauchen gute<br />
Startlösungen<br />
Suchraum beschränken, das<br />
Schneiden ”schwerer” Kanten<br />
vermeiden<br />
Allgemeiner Ablauf:<br />
Rekursives Vergröbern<br />
Initiale Partitionierung<br />
Interpolation und lokale<br />
Verbesserung<br />
13 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Kernighan-Lin-Heuristik<br />
Gewinn-Konzept (gain)<br />
Gierige Knotenverschiebungen mit höchster Verbesserung:<br />
Definition (interner/externer Knotengrad, Gewinn)<br />
Interner Knotengrad intdeg(v) := ω({u ∈ V | {u, v} ∈ E, π(u)=π(v)})<br />
Externer Knotengrad extdeg(v) := ω({u ∈ V | {u, v} ∈ E, π(u)=π(v)})<br />
Verschiebung eines Knotens v ⇒ Gewinn gain(v) := extdeg(v) − intdeg(v)<br />
Tausch von u und v ⇒ Gewinn gain(u, v) := gain(u) + gain(v) − 2ω(u, v)<br />
14 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Kernighan-Lin-Heuristik<br />
Initialisierung<br />
Falls nicht Teil der Eingabe, initiale Partition berechnen (z.B. zufällig)<br />
Berechnung des Gewinns für alle Knoten (siehe Abb.)<br />
Alle Knoten unmarkiert setzen<br />
0<br />
2<br />
1<br />
15 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
1<br />
3<br />
– Berechnung des Gewinns fü<br />
– Verschiebung eines Knotens<br />
– Markieren des verschobenen<br />
2<br />
2<br />
1<br />
3 4<br />
-4<br />
1<br />
Abbildung: Kantengewichte, Partition und daraus resultierende Gewinne<br />
2<br />
1<br />
2<br />
1<br />
-6<br />
-3<br />
2<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Schleife<br />
Kernighan-Lin-Verfahren<br />
● Nächster ● In jederErster Iteration: Schritt: Schritt<br />
Tausche – Aktualisierung unmarkiertes – Berechnung des Knotenpaar Gewinns des Gewinns<br />
mit<br />
für<br />
höchster<br />
alle Knoten<br />
Verbesserung<br />
Markiere beide Knoten<br />
– Verschiebung – Verschiebung eines Knotens eines Knotens mit maximalem mit maximalem Gewinn Gewinn der anderen<br />
Wichtig: Zyklenvermeidung<br />
Teilmenge<br />
– Markieren des verschobenen Knotens<br />
Markierte – Markieren<br />
Knoten werden<br />
des getauschten<br />
in aktueller<br />
Knoten<br />
Iteration nicht mehr betrachtet<br />
-2<br />
1<br />
-4<br />
1<br />
3<br />
0<br />
1<br />
02<br />
31 43<br />
4<br />
2<br />
-6 -4<br />
23<br />
1<br />
21<br />
-3 2<br />
1<br />
2<br />
2<br />
-3 1<br />
16 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
1<br />
1<br />
-6<br />
-3<br />
2<br />
1<br />
31 43<br />
4<br />
Kosten: 7Kosten: 9 Verschiebung Verschiebung Kosten: 7Kosten:<br />
7<br />
Abbildung: Situation nach Verschiebung eines Knotenpaars (nicht des besten in<br />
der Abb.!) mit Gewinn 2<br />
1<br />
1<br />
3<br />
23<br />
1<br />
21<br />
1<br />
2<br />
1<br />
2<br />
1<br />
2<br />
7<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Pseudocode eines Durchgangs<br />
Neuen Durchgang starten, wenn sich Verbesserung ergeben hat<br />
1: function KERNIGHAN-LIN(G = (V , E, ω), Π = (V 1, V 2)) ⊲ n’ = |V 1| = |V 2|<br />
2: X 1 ← V 1<br />
3: X 2 ← V 2 ⊲ X 1 und X 2 stellen die aktuelle Lösung dar<br />
4: U := V ⊲ U ist Menge der unmarkierten Knoten<br />
5: Initialisiere gain-Werte<br />
6: for i ← 1 to n ′ do<br />
7: Wähle Knotenpaar a i ∈ X 1 ∩ U, b i ∈ X 2 ∩ U mit maximalem gain(a i, b i )<br />
8: X 1 ← X 1 − {a i } ∪ {b i } ⊲ a i entfernen, b i einfügen<br />
9: X 2 ← X 2 − {b i } ∪ {a i } ⊲ b i entfernen, a i einfügen<br />
10: U ← U − {a i, b i } ⊲ Beide Knoten markieren<br />
11: Aktualisiere gain-Werte<br />
12: end for<br />
13: Wähle 1 ≤ k ≤ n ′ mit ∑ k i=1 gain(a i, b i ) > 0 und maximal<br />
14: Wende Tauschoperationen von 1 bis k an, um (V ′ 1 , V ′ 2 ) zu erhalten<br />
15: return beste gefundene und verbessernde Lösung (V ′ 1 , V ′ 2 )<br />
17 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Eine erste Analyse: Laufzeit<br />
Initialisierung<br />
Initiale Partition: O(n)<br />
Initiale paarweise Gewinne: O(n 2 )<br />
Markierung: O(n)<br />
18 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Eine erste Analyse: Laufzeit<br />
Initialisierung<br />
Initiale Partition: O(n)<br />
Initiale paarweise Gewinne: O(n 2 )<br />
Markierung: O(n)<br />
Pro Iteration pro Durchgang<br />
Aktualisierung der paarweisen Gewinne: O(n 2 )<br />
Knotenpaar mit maximalem Gewinn berechnen: O(n 2 log n)<br />
18 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Eine erste Analyse: Laufzeit<br />
Initialisierung<br />
Initiale Partition: O(n)<br />
Initiale paarweise Gewinne: O(n 2 )<br />
Markierung: O(n)<br />
Pro Iteration pro Durchgang<br />
Aktualisierung der paarweisen Gewinne: O(n 2 )<br />
Knotenpaar mit maximalem Gewinn berechnen: O(n 2 log n)<br />
Laufzeit pro Durchgang: O(n 3 log n)<br />
18 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Eine erste Analyse: Laufzeit<br />
Initialisierung<br />
Initiale Partition: O(n)<br />
Initiale paarweise Gewinne: O(n 2 )<br />
Markierung: O(n)<br />
Pro Iteration pro Durchgang<br />
Aktualisierung der paarweisen Gewinne: O(n 2 )<br />
Knotenpaar mit maximalem Gewinn berechnen: O(n 2 log n)<br />
Laufzeit pro Durchgang: O(n 3 log n)<br />
Frage: Wo sehen Sie Verbesserungspotential?<br />
18 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Effizienzverbesserung<br />
Anpassung des Algorithmus<br />
Flaschenhals: Aktualisierung der Gewinne, Wahl des besten Paars<br />
Änderungen durch Fiduccia-Mattheyses:<br />
Verschiebung einzelner Knoten statt von Paaren<br />
Abwechselnd aus verschiedenen Knotenblöcken, um Balance zu<br />
erhalten<br />
Ermöglicht effiziente Speicherung und Aktualisierung der Gewinne mit<br />
zwei Bucket-Prioritätswarteschlangen<br />
19 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Effizienzverbesserung<br />
Anpassung des Algorithmus<br />
Flaschenhals: Aktualisierung der Gewinne, Wahl des besten Paars<br />
Änderungen durch Fiduccia-Mattheyses:<br />
Verschiebung einzelner Knoten statt von Paaren<br />
Abwechselnd aus verschiedenen Knotenblöcken, um Balance zu<br />
erhalten<br />
Ermöglicht effiziente Speicherung und Aktualisierung der Gewinne mit<br />
zwei Bucket-Prioritätswarteschlangen<br />
Weitere Einsicht: Gewinn-Aktualisierung nur bei Nachbarn notwendig<br />
19 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Effizienzverbesserung<br />
Bucket-Prioritätswarteschlange<br />
Pro möglichem Gewinn eine doppelt verkettete Liste (o.ä.) mit Knoten<br />
Zeiger von KnotenBucket-Datenstruktur auf ihre Einträge in der BPQ<br />
Zeiger auf maximalen Gewinn über alle Knoten<br />
● Bucket-Datenstruktur für beide Teilmengen<br />
v 9 9<br />
v 1 0<br />
20 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
v 9 9<br />
Knoten<br />
v 4 2<br />
v 7<br />
v 2<br />
v 17<br />
v 1<br />
v 1<br />
Gewinn<br />
|E|*w m a x<br />
. . .<br />
0<br />
. . .<br />
-|E|*w m a x<br />
D m a x<br />
Maximaler<br />
Gewinn<br />
Abbildung: Bucket-Datenstruktur nach Fiduccia-Mattheyses<br />
13<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Bucket-Prioritätswarteschlange<br />
Operationen:<br />
Besten Knoten v finden und löschen: O(1) bzw. O(deg(v))<br />
amortisiert (hier ohne Beweis), u.a. wegen Zeiger Dmax<br />
Anderen Knoten finden und löschen: O(1)<br />
Gewinne aller Nachbarn Bucket-Datenstruktur<br />
von v aktualisieren: O(deg(v))<br />
⇒ Laufzeit pro Durchgang: O(m) bei ungewichteten Graphen<br />
● Bucket-Datenstruktur für beide Teilmengen<br />
v 9 9<br />
21 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
v 1 0<br />
v 9 9<br />
Knoten<br />
v 4 2<br />
v 7<br />
v 2<br />
v 17<br />
v 1<br />
v 1<br />
Gewinn<br />
|E|*w m a x<br />
. . .<br />
0<br />
. . .<br />
-|E|*w m a x<br />
D m a x<br />
Maximaler<br />
Gewinn<br />
13<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Diskussion KL/FM<br />
KL/FM ist lokale Suche mit variabler Tiefe<br />
Begrenzte Möglichkeit aus lokalen Optima zu entkommen<br />
Beste Verbesserung wird genommen, aber Verschlechterungen sind<br />
kurzfristig möglich<br />
Zahl der Iterationen meist konstant<br />
22 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Diskussion KL/FM<br />
KL/FM ist lokale Suche mit variabler Tiefe<br />
Begrenzte Möglichkeit aus lokalen Optima zu entkommen<br />
Beste Verbesserung wird genommen, aber Verschlechterungen sind<br />
kurzfristig möglich<br />
Zahl der Iterationen meist konstant<br />
FM in der Praxis schnelle Heuristik wegen Bucket-PQ<br />
Bei kleinen Graphen gute Qualität<br />
Bei guter Startlösung auch bei großen Graphen sehr effektiv<br />
Nachteile: Fokussierung auf Kantenschnitt nicht bei allen<br />
Anwendungen vernünftig, Parallelisierung schwierig<br />
22 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Diskussion KL/FM<br />
KL/FM ist lokale Suche mit variabler Tiefe<br />
Begrenzte Möglichkeit aus lokalen Optima zu entkommen<br />
Beste Verbesserung wird genommen, aber Verschlechterungen sind<br />
kurzfristig möglich<br />
Zahl der Iterationen meist konstant<br />
FM in der Praxis schnelle Heuristik wegen Bucket-PQ<br />
Bei kleinen Graphen gute Qualität<br />
Bei guter Startlösung auch bei großen Graphen sehr effektiv<br />
Nachteile: Fokussierung auf Kantenschnitt nicht bei allen<br />
Anwendungen vernünftig, Parallelisierung schwierig<br />
⇒ Brauchen Mehrebenen-Methode für gute Startlösung!<br />
22 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Heuristiken
Inhalt<br />
<strong>Graphpartitionierung</strong><br />
Einführung<br />
Heuristiken<br />
Mehrebenen-Methode<br />
23 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Mehrebenen-Verfahren<br />
Allgemeiner Ablauf:<br />
Rekursives Vergröbern<br />
Initiale Partitionierung<br />
Interpolation und lokale<br />
Verbesserung<br />
Ziel: Struktur bei Vergröberung<br />
erhalten<br />
Einsicht: Initiale Partition<br />
bezogen auf Eingabe G viel<br />
besser als zufällige<br />
24 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Vergröberungsverfahren<br />
Zu beachten<br />
Struktur des Graphen möglichst gut erhalten<br />
Knoten zusammenfassen, die vermutlich in einen Block gehören<br />
Schwere Kanten möglichst nicht schneiden<br />
Gängige Verfahren<br />
Matchings maximalen Gewichts<br />
Unabhängige Mengen, AMG<br />
Verschmelzungsoperation: Siehe Tafel!<br />
25 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Matching<br />
Definition<br />
Ein Matching M ist eine Teilmenge von E, bei der keine zwei Kanten<br />
einen Knoten gemeinsam haben<br />
M größtmögliches Matching (engl.: maximum matching):<br />
|M| maximal unter allen Matchings in G<br />
M ist Matching maximalen Gewichts:<br />
∑e∈M ω(e) maximal unter allen Matchings in G<br />
26 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Matching<br />
Definition<br />
Ein Matching M ist eine Teilmenge von E, bei der keine zwei Kanten<br />
einen Knoten gemeinsam haben<br />
M größtmögliches Matching (engl.: maximum matching):<br />
|M| maximal unter allen Matchings in G<br />
M ist Matching maximalen Gewichts:<br />
∑e∈M ω(e) maximal unter allen Matchings in G<br />
Der beste exakte MWM-Algorithmus in allgemeinen Graphen hat eine<br />
Laufzeit von O( √ n · m).<br />
Ziel: Bessere Laufzeit bei geringen Qualitätseinbußen.<br />
26 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Matchings mit maximalem Gewicht in<br />
allgemeinen Graphen<br />
Gieriger Ansatz:<br />
Algorithm 1 Berechnung eines gewichteten Matchings mit Güte 2<br />
1: function GREEDYAPPROXMWM(G = (V , E, w))<br />
2: Sortiere E absteigend nach Gewicht: E = {e 1, . . . , em}, w(e i ) ≥ w(e j ) ∀i < j<br />
3: M = ∅<br />
4: while E = ∅ do<br />
5: Nehme nächste Kante e = (u, v) aus E und füge diese in M ein<br />
6: Entferne alle Kanten aus E, die zu u oder v inzident sind<br />
7: end while<br />
8: return M<br />
Beispiel: Siehe Tafel!<br />
27 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Beispielproblem<br />
Eigenschaften des Greedy-Algorithmus<br />
Theorem<br />
Sei G = (V , E) ein Graph mit nicht-negativen Kantengewichten und sei<br />
M ∗ ein Matching mit maximalem Gewicht in G.<br />
GREEDYAPPROXMWM berechnet ein Matching M mit w(M ∗ ) ≤ 2w(M)<br />
in Zeit O(m log m).<br />
28 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Beispielproblem<br />
Eigenschaften des Greedy-Algorithmus<br />
Theorem<br />
Sei G = (V , E) ein Graph mit nicht-negativen Kantengewichten und sei<br />
M ∗ ein Matching mit maximalem Gewicht in G.<br />
GREEDYAPPROXMWM berechnet ein Matching M mit w(M ∗ ) ≤ 2w(M)<br />
in Zeit O(m log m).<br />
Beweis.<br />
Laufzeit: Klar. Bleibt noch: Güte.<br />
Die als erstes gewählte Kante e = {u, v} ist schwerste Kante in G.<br />
Beim Löschen von e und aller inzidenten Kanten werden höchstens<br />
zwei Kanten e ′ und e ′′ von M ∗ entfernt.<br />
Es gilt: w(e ′ ) + w(e ′′ ) ≤ 2w(e). Rest: Übung.<br />
28 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Zwischenfazit <strong>Graphpartitionierung</strong><br />
Gängige Problembeschreibung:<br />
(Fast) Gleich große Knotenteilmengen<br />
Kantenschnitt minimal<br />
29 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Zwischenfazit <strong>Graphpartitionierung</strong><br />
Gängige Problembeschreibung:<br />
(Fast) Gleich große Knotenteilmengen<br />
Kantenschnitt minimal<br />
Anwendungen:<br />
Iterative Löser, z.B. bei numerischen Simulationen oder PageRank<br />
Teile-und-herrsche-Algorithmen<br />
Nächstes Mal mehr...<br />
29 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode
Zwischenfazit <strong>Graphpartitionierung</strong><br />
Gängige Problembeschreibung:<br />
(Fast) Gleich große Knotenteilmengen<br />
Kantenschnitt minimal<br />
Anwendungen:<br />
Iterative Löser, z.B. bei numerischen Simulationen oder PageRank<br />
Teile-und-herrsche-Algorithmen<br />
Nächstes Mal mehr...<br />
Algorithmen (bisher):<br />
Lokale Suchheuristik KL/FM:<br />
Verschiebe Knoten(paar) mit bestem Gewinn<br />
Mehrebenen-Ansatz zur Verbesserung der Effizienz von lokaler Suche<br />
29 Henning Meyerhenke, Institut für Theoretische Informatik<br />
Algorithmische Methoden für schwere Optimierungsprobleme<br />
<strong>Graphpartitionierung</strong><br />
Mehrebenen-Methode