Я читал статью wikipedia Astar . В своей реализации они проверяют каждый node, если он установлен в closed
, и если это так, они пропускают его. Разве не возможно, что если эвристика допустима, а НЕ согласована, нам может потребоваться дважды вернуться к node (или более), чтобы улучшить ее значение f
?
Это соответствующий код
for each neighbor in neighbor_nodes(current)
if neighbor in closedset //This if condition bothers me
continue
tentative_g_score := g_score[current] + dist_between(current,neighbor)
if neighbor not in openset or tentative_g_score < g_score[neighbor]
came_from[neighbor] := current
g_score[neighbor] := tentative_g_score
f_score[neighbor] := g_score[neighbor] + heuristic_cost_estimate(neighbor, goal)
if neighbor not in openset
add neighbor to openset