2010-08-18 11 views
11

Co jest najbardziej znanym algorytmem przechwytywania dla grafów skierowanych?najlepiej znany algorytm przechwytywania dla wykresu

Obecnie używam algorytmu Warshall, ale jego O (n^3). Chociaż z powodu reprezentacji wykresu moja implementacja jest nieco lepsza (zamiast sprawdzać wszystkie krawędzie, sprawdza tylko wszystkie wychodzące krawędzie). Czy istnieje jakiś algorytm zamknięcia przechodniego, który jest lepszy od tego? W szczególności, czy istnieje coś specjalnie dla wielowątkowych architektur pamięci współdzielonej?

Z góry dziękuję.

Raghava.

Odpowiedz

11

Na Algorithm Design manual można znaleźć przydatne informacje. Kluczowe punkty:

  • Zamknięcie przejściowe jest tak trudne jak mnożenie macierzy; więc najlepiej znaną granicą jest Coppersmith–Winograd algorithm, która działa w O (n^2,376), ale w praktyce prawdopodobnie nie warto używać algorytmów mnożenia macierzy.
  • Aby przyspieszyć heurystycznie, oblicz najpierw silnie połączone komponenty.
+0

Dziękuję za odpowiedź. Sądzę, że przyspieszenie heurystyczne przydałoby się tylko wtedy, gdy na wykresie znajduje się wiele silnie połączonych komponentów. Muszę obserwować wykresy generowane przez różne zestawy danych, aby sprawdzić, czy tak jest. Ale jeśli tak nie jest, to Warshall jest najlepszy, prawda. Myślałem, że może być ich więcej. – Raghava

+0

Myślę, że podejście wspomniane w pierwszym punkcie pierwszego linku jest drogą do zrobienia. Równolegle będzie to łatwe do zrównoleglenia! –

+0

@ Tom: W tej chwili używam już wielowątkowej biblioteki grafów. Używam więc ich reprezentacji grafów, która nie jest matrycą. – Raghava

14

Dokument ten opisuje działanie różnych algorytmów przechodniego Zamknięcie:

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

Interesujący pomysł z papieru jest wyeliminowane ponowne obliczenie całą Zamknięcie zmian wykresu.

Jest też ta strona Esko Nuutila, który wymienia kilka nowszych algorytmów:

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

Jego praca doktorska wymieniony na tej stronie może być najlepszym miejscem do rozpoczęcia:

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

Od tej stronie:

Eksperymenty wskazują również, że z reprezentacją przedziału i nowymi algorytmami, zamknięcie przechodnie można obliczyć w postaci liniowej w stosunku do wielkości wykresu wejściowego.

Powiązane problemy