Как изменить следующий поиск 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

0 ответов

Другие вопросы по тегам