Zum Inhalt springen

Graphpartitionierung

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 23. Juni 2006 um 17:51 Uhr durch Chiccodoro (Diskussion | Beiträge) (Neu hinzugefügt, erste Erläuterungen verfasst. Hauptquelle angegeben.). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Graphpartitionierung bezeichnet die Anwendung geeigneter Algorithmen zur Berechnung von Graphpartitionen (vgl. Schnitt (Graphentheorie)) mit gewünschten Eigenschaften.

Graphpartitionierung in der parallelen Programmierung

Um die Vorteile eines parallelen Systems optimal ausnutzen zu können, sind zwei Kriterien zu erfüllen:

  1. Die Rechenlast muss gleichmässig auf die Recheneinheiten verteilt werden.
  2. Die zur Abarbeitung des Programms nötige Kommunikation zwischen den Recheneinheiten soll möglichst klein gehalten werden, da diese zusätzliche Ausführungszeit beansprucht.

Dieses Optimierungsproblem lässt sich als Graph-Partitionierungsproblem formulieren, wenn die einzelnen Berechnungsaufgaben als Knoten eines Graphen modelliert werden. Für jede Berechnung, welche vom Resultat einer andern Berechnung abhängig ist, werden die entsprechenden Knoten mit einer Kante verbunden. Die einzelnen Teilmengen des Graphen widerspiegeln die Recheneinheiten, auf welche die Aufgaben verteilt werden sollen. Damit lautet das Optimierungsproblem neu: Finde eine Partition des gegebenen Graphen so, dass:

  1. Die Knoten gleichmässig auf die Teilmengen verteilt sind.
  2. Möglichst wenig Kanten Knoten aus verschiedenen Partitionen verbinden.

Kanten, deren adjazente Knoten in unterschiedlichen Partitionen liegen, werden Schnittkanten genannt.

Man kann das Optimierungsproblem auch für gewichtete Graphen formulieren. Damit lassen sich unterschiedlich schwierige Rechenaufgaben durch verschiedene Knotengewichte darstellen. Ebenso kann durch gewichtete Kanten der Datenaustausch von unterschiedlichen Datenmengen modelliert werden. Das Optimierungsproblem heisst also allgemeiner:

  1. Das Knotengewicht gleichmässig auf die Teilmengen aufteilen und
  2. die Summe der Gewichte der geschnittenen Kanten minimieren.

Die Summe der Gewichte der geschnittenen Kanten wird auch als Schnittgrösse (engl. cutsize, edge-cut) bezeichnet. Die obige, spezielle Formulierung des Optimierungsproblems ist mit diesem äquivalent, wenn alle Kanten und Knoten das Gewicht 1 erhalten.

Algorithmen

Die optimale Partition für einen Graphen zu finden, ist ein NP-vollständiges Problem. Deshalb existiert eine Reihe von vorgeschlagenen Algorithmen oder Ansätzen, um in kurzer Zeit wenigstens annähernd optimale Partitionen zu finden:

Quellen