path-finding

___ answer14591158 ___

Ich denke, Ihr Algorithmus hat kein Problem, und wenn keine diagonalen Bewegungen verfügbar sind, ist es nicht notwendig, dies zu berücksichtigen. Die Manhattan-Distanz ist eine einfache Heuristik, und wenn Sie näher am Zielknoten sind, gibt die H-Funktion kleinere Zahlen, obwohl die G-Funktion (Entfernung vom ersten Knoten bis hier) größer wird. Als Ergebnis haben viele Knoten den gleichen f-Wert.

    
___ qstnhdr ___ Ein Sternalgorithmus ohne diagonale Bewegung ___ answer14171559 ___

Ich denke, es ist egal, wie viele Quadrate die gleiche f-Punktzahl haben. Wie im Hauptalgorithmus von A * gesagt, "Für die Zwecke der Geschwindigkeit kann es schneller sein, die letzte zu wählen, die Sie der offenen Liste hinzugefügt haben". Ich hoffe, es wäre kein Problem, wenn Sie keine diagonalen Kosten in Betracht ziehen. Es scheint interessant, wie es Ergebnisse liefert.

Ich hoffe, Sie haben diesen Artikel bereits gelesen. Wenn nicht, schau es dir klar an.

    
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ answer14591345 ___

A * ist vollständig generisch - der Graph, den Sie ihm geben, kann eine beliebige Form haben. Es interessiert nur, ob Sie von X nach Y gehen können, nicht warum. Wenn diagonale Bewegung nicht erlaubt ist, ist es egal. Und es ist ziemlich gut und legitim für viele Knoten, die gleiche %code% Punktzahl zu haben - es wird tatsächlich erwartet.

    
___ qstntxt ___

Situation: Ich versuche, den A * -Algorithmus in C ++ - Code zu übersetzen, wo keine diagonale Bewegung erlaubt ist, aber ich habe seltsames Verhalten.

Meine Frage : Ist es notwendig, auch die diagonalen Kosten zu berücksichtigen, auch wenn keine diagonale Bewegung möglich ist. Wenn ich die Berechnungen ohne Diagonalkosten mache (mit einem "heuristischen" Faktor 10), habe ich immer den gleichen fscore von 80 (das kann man im zweiten Bild sehen, wo ich fscore, gscore und hscore berechnet) und das scheint wirklich seltsam zu sein mich. Aus diesem Grund (fast alle Knoten haben einen fscore von 80) scheint das Algorimth nicht zu funktionieren, weil zu viele Knoten den gleichen kleinsten fscore von 80 haben.

Oder ist das normales Verhalten und wird eine A * Stern-Implementierung ohne Diagonale viel mehr Arbeit leisten müssen (weil mehr Knoten den gleichen minimalen fscore haben)?.

Ich glaube nicht, dass diese Frage etwas mit meinem Code zu tun hat, sondern mit meiner Argumentation, aber ich poste sie trotzdem:

pathFind.cpp

%Vor%

node.cpp

%Vor%     
___ tag123astar ___ A * ist ein Graph Shortest-Path-Algorithmus, der eine heuristische Funktion verwendet, um die Suche zu beschleunigen ___ Tag123Pfadfinding ___ Pathfinding bezieht sich im Allgemeinen auf das Problem, die kürzeste Route zwischen zwei Punkten zu finden, unter Vorbehalt irgendwelcher Hindernisse. Pathfinding findet Anwendung in einer Vielzahl von Bereichen einschließlich Robotik und Spieleentwicklung. Algorithmen zur Wegfindung neigen dazu, eng mit Graph- und Baumsuchalgorithmen verwandt zu sein. ___
3
Antworten

Algorithmus zum Finden verschiedener Pfade von A nach B in gewichteten, gerichteten, zyklischen Graphen

Angenommen, wir haben einen DIRECTED , GEWICHTET und CYCLIC . Angenommen, wir interessieren uns nur für Pfade mit einem Gesamtgewicht von weniger als MAX_WEIGHT Was ist der am besten geeignete (oder ein beliebiger) Algorithmus, um di...
17.01.2012, 10:56
2
Antworten

A * Pathfinding über mehrere Gitter

Ich versuche A * Pathfinding um einen Würfel zu implementieren, der Würfel besteht aus 6 Grids und um es einfach zu halten habe ich 4 Methoden GetXPlus, GetXMinus, GetYPlus, GetYMinus. Jede Methode überprüft, ob die nächste Kachel innerhalb des...
18.04.2013, 17:03
6
Antworten

Algorithmus, um die effizientesten Bewegungen zu finden, um zu einem bestimmten Punkt zu gelangen

(Dies ist nicht genau das Problem, das ich habe, aber es ist isomorph, und ich denke, dass diese Erklärung für andere am einfachsten zu verstehen sein wird.) Angenommen, ich habe eine Menge von Punkten in einem n -dimensionalen Raum. Verwen...
21.01.2010, 18:46
5
Antworten

Grundlegende Pfadfindung mit Vermeidung von Hindernissen in einem kontinuierlichen 2D-Raum

Ich schreibe eine Simulation, in der ein Kreaturobjekt in der Lage sein sollte, sich auf ein beliebiges anderes Objekt in der Umgebung zu bewegen, um Hindernisse zu gleiten, anstatt irgendeine intelligente Pfadsuche durchzuführen. Ich versuche n...
17.05.2009, 16:03
1
Antwort

Schnelle Implementierung von Warteschlangen in Lua?

Ich mache ein Spiel mit Lua und ich muss Breadth-First Search verwenden, um einen schnellen Pfadfindungsalgorithmus zu implementieren, der den kürzesten Weg zwischen der feindlichen KI und dem Spieler findet. Ich werde bis zu 3 Feinde gleichz...
17.09.2013, 07:18
3
Antworten

Ist der A-Stern garantiert der kürzeste Weg in einem 2D-Gitter?

Ich arbeite mit einem A-Sterne-Algorithmus, wobei ich ein 2D-Gitter und einige Hindernisse habe. Jetzt habe ich nur vertikale und horizontale Hindernisse, aber sie können dicht variieren. Nun funktioniert der A-Stern gut (dh der kürzeste Pfad...
26.04.2013, 22:15
4
Antworten

KI-Navigation um eine 2D-Karte - Vermeidung von Hindernissen

Ich weiß, dass meine Frage ziemlich vage erscheint, aber ich kann mir keinen besseren Weg vorstellen, um es auszudrücken, also werde ich damit beginnen, zu erklären, was ich versuche zu tun. Ich arbeite gerade an einem Projekt, bei dem mir ei...
01.05.2010, 23:21
4
Antworten

Pathfinding-Algorithmus mit angegebener Entfernung / Anzahl der Knoten

___ qstnhdr ___ Pathfinding-Algorithmus mit angegebener Entfernung / Anzahl der Knoten ___ answer12510193 ___ Da es NP-vollständig ist, wie von Haile gezeigt, ist hier eine Heuristik, falls Ihr Problem klein genug ist: Finden Sie Halbinseln (d...
20.09.2012, 09:23
1
Antwort

Was ist der Sinn von IDA * gegen A * -Algorithmus?

Ich verstehe nicht, wie IDA* Speicherplatz spart. Wie ich verstehe IDA* ist A* mit iterativer Vertiefung. Was ist der Unterschied zwischen der Menge an Speicher A* verwendet vs IDA* . Würde sich die letzte Iteration von IDA*...
08.10.2015, 21:52
2
Antworten

Den günstigsten Pfad in einem Graphen finden, die Kosten werden durch das maximale Gewicht der verwendeten Knoten bestimmt

Ich habe einen Graphen G mit einem Startknoten S und einem Endknoten E. Das Besondere an diesem Graphen ist, dass anstelle von Kanten Kosten anfallen, hier sind es die Knoten, die Kosten haben. Ich möchte den Weg (eine Menge von Knoten, W) zwisc...
04.02.2015, 10:21