def explore(start, goal, grid,visited, h=False): start.g = 0 start.cost =start.h goal.g = math.inf hap = [] steps = 0 hapq.heappush(heap, (start.cost, start)) während len(heap) > 0: u = hapq.heappop(heap)[1] goalPoint=[goal.row, goal.col] if visited[u.row][u.col]: continue visited[u.row][u.col] = True steps +=1 if ([u.row, u.col] ==goalPoint) : goal.parent = u.parent found = True break for i in u.adjacent(grid): if (visited[i[0]]]] [i[i]] = True steps +i[i[1]] = True steps +h(h: print adjj
Es scheint, als hätten Sie einen Code-Snippet für die Pathfinding mit Dijkstras Algorithmus und A* Algorithmus mit einer heuristischen Funktion zur Verfügung gestellt. Die Funktion explore nimmt in Start- und Zielknoten, Gitter und ein 2D boolean besuchten Array als Eingabe. Es initialisiert den g-Score des Starts auf 0 und den g-Score des Ziels auf Unendlichkeit. Ein Haufen wird verwendet, um Knoten zu speichern und priorisieren sie auf der Grundlage ihrer Kosten. Die Funktion iteriert dann durch den Haufen und findet den kürzesten Weg zum Zielknoten. Wenn h wahr ist, wird A* Algorithmus verwendet, der sowohl die Kosten des Knotens als auch eine heuristische Funktion berücksichtigt, die die Kosten für den Zielknoten abschätzt. Wenn h falsch ist, wird Dijkstras Algorithmus verwendet, der nur die Kosten des Knotens berücksichtigt. Die Funktion gibt den Zielknoten und die Anzahl der Schritte zurück, um den kürzesten Pfad zu finden. Es ist jedoch erwähnenswert, dass dieser Code snippet nicht vollständig ist und nicht die Definitionen von Knoten und Distanzfunktion enthält, die benötigt werden, um den Code auszuführen.