zerlegung von graphen

25
1 Zerlegung von Graphen

Upload: jiro

Post on 21-Jan-2016

58 views

Category:

Documents


0 download

DESCRIPTION

Zerlegung von Graphen. Gliederung:. Anwendungen Gewichtete Graphen Knotenseparator Kantenseparator Kernighan-Lin Algorithmus Fiduccia-Matteyes Algorithmus. Anwendungen. Probleme in Teilprobleme zu zerlegen um sie dadurch besser und schneller zu lösen - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Zerlegung von Graphen

1

Zerlegung von Graphen

Page 2: Zerlegung von Graphen

2

Gliederung:

• Anwendungen

• Gewichtete Graphen

• Knotenseparator

• Kantenseparator

• Kernighan-Lin Algorithmus

• Fiduccia-Matteyes Algorithmus

Page 3: Zerlegung von Graphen

3

Anwendungen

Probleme in Teilprobleme zu zerlegen um sie dadurch besser und schneller zu lösen

z.B. Verteilung von Aufgaben gleichmäßig auf mehrere Prozessoren und gleichzeitig die Minimierung der notwendigen Kommunikation zwischen den Prozessoren

Page 4: Zerlegung von Graphen

4

Es gibt viele Zerlegungsvarianten

• Nach Anzahl der getrennten Kanten

• Nach Anzahl der Knoten in den Teilgraphen

Page 5: Zerlegung von Graphen

5

Graphen mit Gewichten

Zerlegung des Graphen G = (V,E,Wv,We)

• V = {v1, … , vn} Knoten

• E = {e1k, … , eij} Kanten

• Wv = Gewichte der Knoten

• We = Gewichte der Kanten

Page 6: Zerlegung von Graphen

6

Separatoren

Separatoren dienen zum Zerlegen eines Graphen, da diese den Graphen nach dem Entfernen teilen.

Es gibt zwei Arten von Separatoren:• Knotenseparator• Kantenseparator

Page 7: Zerlegung von Graphen

7

Knotenseparator

Eine Knotenmenge C V zerlegt bzw. trennt einen Graph G = (V,E) in die Mengen A,B V , falls A,B,C eine Partitionierung von V ist und zwischen Knoten der Mengen A und B keine Kante existiert. In diesem Fall heißt das Tupel (A,B) Zerlegung und C trennende Knotenmenge des Graphen G. Ein Weg von einem Knoten aus A zu einem Knoten aus B muß über einen Knoten aus C laufen.

Page 8: Zerlegung von Graphen

8

Kantenseparator

Eine Kantenmenge Es E zerlegt bzw. trennt einen Graph G = (V,E) in die Mengen A,B V , falls A,B eine Partitionierung von V ist und zwischen Knoten der Mengen A und B nur Kanten der Menge Es existieren. In diesem Fall heißt das Tupel (A,B) Zerlegung und Es trennende Kantenmenge des Graphen G.

Page 9: Zerlegung von Graphen

9

Der Kernighan-Lin Algorithmus I

Der Kernighan-Lin Algorithmus verbessert eine vorgegeben Zerlegung G=A U B iterativ, in dem er versucht Gruppen von Knoten zwischen den Partitionen auszutauschen, so dass die Anzahl der Kanten zwischen A A und B minimiert wird. In der Praxis erreicht der Algorithmus bei einer guten Start-Zerlegung schnell ein Optimum.

Page 10: Zerlegung von Graphen

10

Der Kernighan-Lin Algorithmus II

gegeben Graph G=(V,E,We) und Zerlegung G= A U B in gleichgroße Teile.

Das Ziel ist es gleichgroße Teilmengen X aus A und Y aus B zu finden, deren Vertauschung das Gesamtgewicht T aller Kanten zwischen A und B reduziert.

Page 11: Zerlegung von Graphen

11

Der Kernighan-Lin Algorithmus III

Man benötigt

• E(a) = Summe aller Gewichte der Kanten zwischen a in A und Knoten in B  →    Externes Gewicht I(a) = Summe aller Gewichte der Kanten zwischen a und den restlichen Knoten in A    →    Internes GewichtD(a) = E(a)-I(a) Differenz der Kantengewichte intern und extern 

• anolog E(b), I(a), D(a)

Page 12: Zerlegung von Graphen

12

Der Kernighan-Lin Algorithmus IV

Das Vertauschen von a aus A und b aus B ergibt für newT:newT= T - ( D(a)+D(b) - 2*w(a,b))         = T - gain(a,b)  

gain(a,b) ist ein Maß für die Verbesserung der Zerlegung

beim tausch von a und b, kann auch negativ sein

Page 13: Zerlegung von Graphen

13

Kernighan-Lin Algorithmus0. Berechne TRepeat1.    Berechne D(n) für alle n2.    Demarkiere alle Knoten in G3.    while unmarkierte Knoten vorhanden

Finde ein umarkiertes Paar (a,b) für das gain(a,b) maximal ist    Markiere a und b    Berechne D(n) für alle noch unmarkierten n

endwhile ...nun gibt es eine Reihe von Paaren (a1,b1)...(ak,bk) und den entsprechende gains, gain(1)...gain(k) ...k=|V|/2 in der Reihenfolge, in der sie markiert wurden4.    Wähle ein j, so daß Summe i=1..j der gain(i) maximal ist. 5.    if die Summe > 0 ist dann          A= A -(a1,...,aj) U (b1,....bj)              B= B -(b1,...,bj) U (a1,....aj)    ... Vertauschen der Knoten          T=T-Summe endifAbbruch wenn Summe <=0

Page 14: Zerlegung von Graphen

14

Beispiel

Page 15: Zerlegung von Graphen

15

Page 16: Zerlegung von Graphen

16

Page 17: Zerlegung von Graphen

17

Page 18: Zerlegung von Graphen

18

Page 19: Zerlegung von Graphen

19

Fiduccia-Matteyes Algorithmus

Unterschied zu Kernighan-Lin Algorithmus: Man vertauscht in jeder Iteration jeweils nur einen Knoten a oder b und lässt einen gewissen Unterschied in der Anzahl an Knoten pro Teilgebiet zu z.B.

|A| < (1 + e)|B|, e ≈ 0,1

D(a) = Abnahme des „edge-cuts", falls man Knoten a in das Gebiet B verschiebt.

Page 20: Zerlegung von Graphen

20

Fiduccia-Matteyes Algorithmus

• 1 Repeat• 2 Compute edge-cut T = cost(A,B) for initial A,B• 3 Compute D(v) for initial A, B with V = A U B • 4 Initialize two queues (QA,QB) with highest D(v) on top • 5 Unmark all nodes in V • 6 While there are nodes v in queue QA,QB that can be moved • 7 v = TopNode(QA,QB) • 8 Mark node v and move it in the other subgraph • 9 Remove node v from selected queue QA or QB • 10 Update gains of adjacent vertices v • 11 Order priority queue QA and QB • 12 Update T = TD(v) ..O(j1j)• 13 Endwhile• 14 Until T 0

Page 21: Zerlegung von Graphen

21

Fiduccia-Matteyes Algorithmus

• Auswahl des Knoten v aus den Priority Queues QA und QB

• 15 node v = TopNode(QA,QB)• 16 /* Auswahl des Knotens v aus QA oder QB */• 17 a := TopNode in queue QA• 18 b := TopNode in queue QB• 19 /* Falls ein Teilgebiet gr¨osser als (1 + e) ist,• 20 dann w¨ahle Knoten v des kleineren Gebietes. */• 21 if ((|A| > (1 + e)|B|) or (|B| > (1 + e)|A|)) then• 22 select the node v from smaller domain• 23 else• 24 if (D(a) < D(b)) select node b to move• 25 if (D(a) > D(b)) select node a to move• 26 if (D(a) = D(b)) select node from smaller domain• Graph-Partitionierung – p. 32/55

Page 22: Zerlegung von Graphen

22

Fiduccia-Matteyes Algorithmus

Page 23: Zerlegung von Graphen

23

Fiduccia-Matteyes Algorithmus

Page 24: Zerlegung von Graphen

24

Zusammenfassung

• Kernighan/Lin und FM benötigen eine Anfangs-Partitionierung V = A U B

• – Ursprünglich nahm man eine zufällige erste Graph Partitionierung und verbesserte diese durch mehrere K/L-Iterationen (1972).

• – Für grössere Probleme ist die Komplexität zu hoch →FM.

• Es kann sein, dass „gain(k)" negativ ist, falls aber spätere „gains" positiv sind, dann

• kann der endgültige Gewinn auch positiv werden. Damit ist gewährleistet, dass „lokale

• Minima" überwunden werden können.