Ich versuche, den Dijkstra-Algorithmus mit der Prioritätswarteschlange zu implementieren, aber ich kann nicht verstehen, wie es funktioniert. Ich lese viele Führer im Web, aber ich kann diesen Algorithmus überhaupt nicht verstehen.Dijkstra-Algorithmus mit Min-Priority-Warteschlange
Meine Frage ist: Was ist die Priorität für jeden Knoten? Ich denke, dass es das Gewicht der ankommenden Kante mit minimalem Wert ist, aber ich bin mir nicht sicher. Ist das wahr?
Zweite Frage, wenn ich die Wurzel der Warteschlange extrahieren, wie funktioniert, wenn dieser Knoten keine Nachbarschaft mit keinem der besuchten Knoten ist?
Wenn Sie von Dijkstra als denken "für gewichtete Graphen Breitensuche", wird es ziemlich einfach zu verstehen. Um Ihre Fragen zu beantworten: 1. Nicht ganz - es ist das Minimum der Kanten ** zu weit gegangen **. 2. Genau wie bei BFS, wenn es nicht an einen besuchten Knoten angrenzt, kann es noch nicht ganz besucht werden. Wenn es von einem besuchten Knoten * nicht erreichbar ist, wird es niemals besucht. –