A-Stern
Der A-Stern unterscheidet sich vom Dijkstra nur noch durch die Heuristik, welche bei der Auswahl des nächstbesten Knotens berücksichtigt wird. Hier muss also nur eine klitzekleine Änderung geschehen: Der beste Knoten auf der Open-List ist nicht mehr derjenige mit dem besten g, sondern der mit dem besten f, wobei f = g + h.
"""
Name: S. Forster
Datum: 21.2.2019
Beschreibung: Demo von Graph
"""
from graph import Graph
def step():
"""
Schrittfunktion: Stellt ein einzelner Suchschritt dar.
Muss beim erzeugen des Graph-Objektes registriert werden.
Wird dann bei jedem Tastendruck aufgerufen.
"""
print(str(graph.openList))
node = graph.openList[0] # bester Knoten suchen auf openlist
for candidate in graph.openList:
if node.g + node.h > candidate.g + candidate.h:
node = candidate
if node == graph.targetNode:
graph.running = False
else:
for peer in graph.peers[node]:
if peer not in graph.closedList:
g = node.g + graph.dist[node][peer]
if peer in graph.openList:
if g