Я читал статью 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
