Der Dijkstra-Algorithmus wird nur verwendet, wenn Sie über eine einzige Quelle verfügen und den kleinsten Pfad von einem Knoten zum anderen ermitteln möchten. Er schlägt jedoch fehl [in Diagrammen mit negativen Kanten].
Der Dijkstra-Algorithmus ist ein Beispiel für einen Single-Source-Shortest- Path- oder SSSP- Algorithmus. Jeder SSSP Algorithmus berechnet die kürzeste Pfad Abständen von einem ausgewählten Quellknoten an jedem anderen Knoten in dem Graph. Darüber hinaus wird eine kompakte Darstellung aller kürzesten Pfade von zu jedem anderen Knoten in Form eines Stammbaums berechnet . Ist im Wikipedia-Code das übergeordnete Element von in diesem Baum.ssprevious[v]
v
Das Verhalten des Dijkstra-Algorithmus in Diagrammen mit negativen Flanken hängt von der konkreten Variante ab, die zur Diskussion steht. Einige Varianten des Algorithmus, wie der in Wikipedia, werden immer schnell ausgeführt, aber bei negativen Flanken werden die kürzesten Pfade nicht korrekt berechnet. Andere Varianten, wie die in diesem Skript, berechnen die kürzesten Pfade immer korrekt (es sei denn, es ist ein negativer Zyklus von der Quelle aus erreichbar), benötigen jedoch im schlimmsten Fall exponentielle Zeit, wenn negative Flanken vorliegen.
Der Floyd-Warshall-Algorithmus wird verwendet, wenn einer der Knoten eine Quelle sein kann. Sie möchten also, dass die kürzeste Entfernung von einem Quellknoten zu einem Zielknoten besteht. Dies schlägt nur bei negativen Zyklen fehl.
Das ist richtig. Floyd-Warshall ist ein Beispiel für einen All-Pair-Shortest-Path-Algorithmus , der die kürzesten Pfade zwischen jedem Knotenpaar berechnet . Ein weiteres Beispiel ist "Führen Sie für jeden Knoten v Dijkstra mit v als Quellknoten aus". Es gibt mehrere andere.
Bellman-Ford wird wie Dijkstra verwendet, wenn es nur eine Quelle gibt. Dies kann mit negativen Gewichten umgehen und funktioniert genauso wie bei Floyd-Warshall mit Ausnahme einer Quelle, oder?
O ( V3)O ( V2E)O ( VE)
Weitere Informationen finden Sie in Ihrem Lieblingslehrbuch für Algorithmen. (Sie haben ein Lieblingslehrbuch für Algorithmen, nicht wahr?)