Как изменить следующий поиск Dijkstra/ Uniform-cost, чтобы он возвращал результат для всех конечных точек?
Я знаю, что есть много кода, который делает это, но, в частности, я пытаюсь изменить следующий код, чтобы не просто возвращать целевой узел / одну конечную точку, но и все конечные точки. Как мне это сделать? Я пытался подумать о сохранении набора просмотренных / посещенных, но это кажется излишним и убивает всю точку достигнутой карты.
def best_first_search(problem, f):
"Search nodes with minimum f(node) value first."
node = Node(problem.initial)
frontier = PriorityQueue([node], key=f)
reached = {problem.initial: node}
while frontier:
node = frontier.pop()
if problem.is_goal(node.state):
return node
for child in expand(problem, node):
s = child.state
if s not in reached or child.path_cost < reached[s].path_cost:
reached[s] = child
frontier.add(child)
return failure