Нашли ошибку?

Путь по таблице родителей

ЛёгкаяДописатьГлава 7

#алгоритм Дейкстры#восстановление путиid: ga-restore-path

После работы алгоритма Дейкстры остаётся таблица родителей: parents[x] — узел, из которого выгоднее всего прийти в x. Допишите restore_path(parents, start, goal): функция восстанавливает путь от start до goal в виде списка узлов. Если goal недостижим (его нет в таблице и он не совпадает со start), она возвращает []. Пропуски помечены # TODO.

Пример

parents = {"B": "start", "A": "B", "fin": "A"}
restore_path(parents, "start", "fin")    # ["start", "B", "A", "fin"]
restore_path(parents, "start", "start")  # ["start"]
restore_path(parents, "start", "X")      # []

Решение

def restore_path(parents: dict[str, str], start: str, goal: str) -> list[str]:
    """Путь от start до goal по таблице родителей или [] если goal недостижим."""
    if goal != start and goal not in parents:
        return []
    path = [goal]
    # TODO: пока не дошли до start, добавляйте в path родителя последнего узла
    # TODO: верните путь в порядке от start к goal
    return path

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 restore_path.py — тесты те же, результат покажет ✓ / ✗ и итог.