Also zuerst definieren wir Dijkstra Algorithmus:
Dijkstra-Algorithmus findet Single-Source kürzeste Wege in einem gerichteten Graphen mit nicht-negativen Kantengewichten.
Ich möchte wissen, wie kann ich den kürzesten Pfad Form s zu t mit Dijkstra Algorithmus speichern.
Ich suchte auf Google, aber ich konnte nichts bestimmtes finden; Ich habe auch den Dijkstra-Algorithmus geändert, aber ich konnte keine Antwort bekommen. Wie kann ich den kürzesten Weg von s nach t mit Dijkstra speichern?
Ich weiß, meine Frage ist einfach und unprofessionell, aber jede Hilfe wäre willkommen. Danke, dass du meine Frage bedenkst.So speichern Sie den kürzesten Pfad im Dijkstra-Algorithmus
Antwort
Wenn man sich die aus dem Wikipedia-Link pseudocode schauen Sie gaben, werden Sie dort eine Reihe sehen in prev[]
genannt. Dieses Array enthält für jeden Knoten v in dem Diagramm, den vorherigen Knoten u in dem kürzesten Pfad zwischen dem Quellknoten s und v. (. Dieses Array wird auch als Vorgänger oder Mutter array)
Mit anderen Worten, der kürzeste Weg zwischen s und v ist:
s -> u -> v
where u = prev[v]
Der Weg von s bis u möglicherweise mehrere Knoten dazwischen haben, um den Pfad von s bis v zu rekonstruieren, die Sie gerade auf dem Weg zu Fuß zurück durch der den Code-Snippet unter dem Haupt Pseudo-Code mit prev[]
Array definiert (Ziel ist v):
1 S ← empty sequence
2 u ← target
3 while prev[u] is defined: // Construct the shortest path with a stack S
4 insert u at the beginning of S // Push the vertex onto the stack
5 u ← prev[u] // Traverse from target to source
6 end while
Die meisten Bibliotheken, die diesen Algorithmus verwenden, geben Ihnen wahrscheinlich einen Weg, dies zu tun. Aber behalten Sie im Allgemeinen den Weg zu jedem Knoten im Auge. Dh gibt Sie jeden Knoten ein attrribute shortestPathToNode
, in dem Sie speichern die Liste der Knoten
Ein extrem kurzer Weg, dies zu tun, ist die Rekursion zu verwenden und ein "Eltern-Array". Wenn Sie alle Eltern der Punkte auf -1 initialisieren und dann, wenn Sie Dijkstra's vervollständigen, das Eltern-Array aktualisieren, können Sie von jedem beliebigen Punkt aus zurückspringen, bis Sie zur Quelle gelangen und den Pfad ausdrucken. Hier ist eine sehr kurze und einfache Rekursion Schnipsel zu verstehen:
// Function to print shortest path from source to j using parent array
void path(parent array, int j)
{
// Base Case : If j is source
if (jth element of parent is -1) return;
path(parent, jth element of parent);
print j;
}
Beachten Sie, dass anstelle des Druckens „j“ aus, können Sie es in einem globalen Vektor speichern kann (oder einem anderen Datentyp für Sprachen, die nicht C bezogen sind) für späteren Gebrauch.
- 1. Neo4j finde den kürzesten Pfad aber schließe einen Pfad aus
- 2. Den kürzesten Pfad mit FGL finden
- 3. So positionieren Sie den Pfad zur Knotenmitte im Strukturlayout
- 4. Den kürzesten Pfad in großen Diagrammen effizient finden
- 5. Den kürzesten Pfad in einem Diagramm mit zusätzlichen Einschränkungen finden
- 6. Kann ich den kürzesten Pfad von Dijkstra verwenden?
- 7. Berechnen Sie den kürzesten Weg durch ein Lebensmittelgeschäft
- 8. Finde den kürzesten Teilstring
- 9. So ändern Sie den npm-Pfad
- 10. So speichern Sie Text im Textfeld
- 11. So speichern Sie Koordinaten im Azure-Tabellenspeicher
- 12. So speichern Sie die Ausgabetabelle im DB
- 13. So speichern Sie konstante Daten im DB
- 14. So speichern Sie Daten dauerhaft im Smartphone
- 15. So speichern Sie den Seitenstatus beim Schließen
- 16. Wie das Gewicht kürzesten Pfad in einem Netzwerk bedeuten berechnen
- 17. Den kürzesten Weg in einem Labyrinth finden
- 18. So speichern Sie den Inhalt der Zwischenablage
- 19. So speichern Sie den Eingabetyp "Farbe"
- 20. So bestätigen Sie den Pfad zu den Schemadefinitionen
- 21. Pfad im Server zum Speichern von Bildern
- 22. Speichern Sie den Pfad des Bildes in verschiedenen Datenbankspalte
- 23. VisualStudio: So speichern Sie den Ordner obj woanders
- 24. So ändern Sie den ipch-Pfad in Visual Studio 2010
- 25. Speichern Sie XML-Konfigurationsdatei in der Datenbank als ein Feld, oder speichern Sie den Pfad davon?
- 26. So speichern Sie TypeInfo
- 27. So speichern Sie den Verweis auf den Handler im Feld "hashmap"
- 28. So stellen Sie Datum und Uhrzeit im absoluten Pfad ein
- 29. So erhalten Sie den Pfad zum Ausführen von Java-Programm
- 30. So markieren Sie den Menüpunkt im Menü