29.10.2013 Aufrufe

Graphpartitionierung - KIT

Graphpartitionierung - KIT

Graphpartitionierung - KIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!