Graphen-Algorithmen

Aus Infostudium Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Floyd-Warshall-Algorithmus

  • All-Pairs Best Path

Floyd

  • Er findet die Länge der kürzesten Wege zwischen allen Paaren von Knoten eines gewichteten Graphen.
  • Zeitkomplexität O( | V | 3)

Durchführung:

Zunächst eine Kosten-Matrix erstellen, die die Kosten von einem Knoten zu einem anderen auf direktem Wege darstellt. Dann wird versucht, die Knoten nacheinander über einen bestimmten Knoten zu erreichen. Der minimalen Kosten werden immer in die Matrizen eingetragen. Das macht dann Anzahl der Elemente + 1 Matrizen. Die jeweiligen Änderungen werden in einer separaten Matrix vermerkt, um den Weg rekonstruieren zu können.

Ak[i,j]: = min{Ak − 1[i,j],Ak − 1[i,k] + Ak − 1[k,j]}

Warshall

Ähnlich wie Floyd, aber er benutzt eine reflexive, transitive Hülle eines Graphen. Er verzichtet auf Werte, sondern beachtet nur, ob die Knoten miteinander verbunden sind. Das vereinfacht den Algorithmus ein wenig.

Algorithmus von Dijkstra

  • Single-Source Best Path
  • Dient der Berechnung eines kürzesten Pfades zwischen einem Startknoten und einem beliebigen Knoten in einem kantengewichteten Graphen.
  • Zeitkomplexität:

C[w] := min \sum\limits_{i=1}^{j} c[v_{i-1},v_i]

In Worten: Man berechnet die Kosten zwischen dem Vorgänger-Knoten und dem aktuellen Knoten und summiert dann immer. Der Pfad wird dann genommen, der am preiswertesten ist.

Prim-Algorithmus (Algorithmus von Prim)

  • Dient der Berechnung eines minimalen Spannbaumes
  • Immer die von einem Knoten abgehende kostengünstigste Kante nehmen
  • Komplexität: O( | V | 2)