Beim Ausprobieren des folgenden Applets habe ich festgestellt, dass dieser Pfadfindungsalgorithmus namens Sprungpunktsuche ein deutlich schnelleres Ergebnis liefert als A * und Dijkstra.
http://qiao.github.io/PathFinding.js/visual/
A *: 46 Sekunden
Dijkstra: 1 Minute 39 Sekunden
Sprungpunktsuche: Weniger als 3 Sekunden
Unnötig zu sagen, ich bin ziemlich erstaunt über das Ergebnis. Aufgrund der visuellen Darstellung scheint die Sprungpunktsuche viele zufällige (wahrscheinlich sehr intelligente) Vermutungen anzustellen, um den Pfad zu finden (zumindest aus der Blockauswahl), aber ich habe noch keinen Testfall gefunden, bei dem dieser Algorithmus schlechter ausfiel Ergebnisse als A * und Dijkstra.
Wie funktioniert dieser Algorithmus? Wie ist es im Vergleich zu A * und Dijkstra so effizient?
quelle
Antworten:
Die Grundidee ist, dass JPS es ermöglicht, viele Kandidatenpfade frühzeitig wegzuwerfen, wodurch der Rechenaufwand reduziert wird.
In vielen Karten führen mehrere Pfade mit denselben Kosten zu demselben Ziel, z. B. eine Spielkarte mit großen offenen Flächen. JSP ermöglicht das Bereinigen dieser Pfade.
Eine ausführliche Erklärung finden Sie hier .
quelle
Mit der neuesten Version des Tools wird JPS für viele Diagrammtypen tatsächlich als langsamer als A * angezeigt, da sie jetzt auch die JPS-Rekursion anzeigen.
Graue Knoten sind untersuchte Knoten
Dies gilt auch in der realen Welt; Während JPS normalerweise weit weniger Knoten in die Warteschlange stellt, werden normalerweise viel mehr Knoten untersucht . Ob dies zu einer tatsächlichen Beschleunigung führt, hängt von der Grafik ab.
quelle