Я читал Astar vikipedia article. В своей реализации они проверяют каждый узел, если он находится в наборе closed
, и если да, то они пропускают его. Разве не возможно, что если эвристика допустима, но NOT согласуется с тем, что нам может потребоваться повторно обратиться к узлу дважды (или более), чтобы улучшить его значение f
? Это соответствующий кодМожет ли Astar посещать узлы более одного раза?
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
Пропущено это, спасибо – Shmoopy