2010-08-18 4 views
11

Was ist in Bezug auf die Laufzeit der bekannteste transitive Abschlussalgorithmus für gerichtete Graphen?bekanntester transitiver Abschlussalgorithmus für Graph

Ich benutze derzeit den Warshall-Algorithmus, aber seinen O (n^3). Obwohl meine Implementierung aufgrund der Graphendarstellung etwas besser ist (anstatt alle Kanten zu überprüfen, werden nur alle ausgehenden Kanten überprüft). Gibt es einen transitiven Schließalgorithmus, der besser ist? Gibt es speziell etwas für Multi-Thread-Architekturen mit gemeinsam genutztem Speicher?

Vielen Dank im Voraus.

Raghava.

Antwort

11

Die Algorithm Design manual hat einige nützliche Informationen. Schlüsselpunkte:

  • Transitiver Verschluss ist so schwierig wie Matrixmultiplikation; so ist die bekannteste Grenze die Coppersmith–Winograd algorithm, die in O läuft (n^2.376), aber in der Praxis lohnt es sich wahrscheinlich nicht, Matrixmultiplikationsalgorithmen zu verwenden.
  • Berechnen Sie für eine heuristische Beschleunigung zuerst stark verbundene Komponenten.
+0

Vielen Dank für die Antwort. Ich denke, die heuristische Beschleunigung wäre nur dann sinnvoll, wenn viele stark zusammenhängende Komponenten im Graphen vorhanden sind. Ich muss die Graphen beobachten, die von verschiedenen Datensätzen erzeugt werden, um zu sehen, ob dies der Fall ist. Aber wenn das nicht der Fall ist, dann ist Warshalls beste, nicht wahr? Ich dachte, es könnte noch mehr geben. – Raghava

+0

Ich denke Ansatz im ersten Aufzählungspunkt der ersten Verbindung ist der Weg zu gehen. Es wird auch relativ einfach parallelisiert werden! –

+0

@Tom: Ab sofort verwende ich bereits eine Multi-Thread-Graph-Bibliothek. Also verwende ich ihre Graphendarstellung, die keine Matrix ist. – Raghava

14

Dieser Beitrag diskutiert die Leistung verschiedener transitive Erweiterung Algorithmen:

http://www.vldb.org/conf/1988/P382.PDF

Eine interessante Idee aus dem Papier ist recomputing den gesamten Verschluss wie die Grafik, die Änderungen zu vermeiden.

Es gibt auch diese Seite von Esko Nuutila, die ein paar neueren Algorithmen aufgeführt:

http://www.cs.hut.fi/~enu/tc.html

Seine Doktorarbeit auf dieser Seite aufgeführten kann der beste Ort, um zu starten:

http://www.cs.hut.fi/~enu/thesis.html

Von dieser Seite:

Die Experimente zeigen auch, dass mit der Intervalldarstellung und den neuen Algorithmen der transitive Verschluss typischerweise linear zur Größe des Eingabegraphen berechnet werden kann.