Это похоже на Как проследить путь в ширине -First Search?, но метод, описанный в ответах в этом посте, похоже, не работает для моего случая.
Под путем здесь я, по сути, подразумеваю последовательность соединенных узлов, чтобы добраться от начального до конечного состояния.
Рассмотрим неориентированный граф с вершинами V={a,b,c} и ребрами = {{a,b},{a,c}} и предположим, что мы должны пройти по преемникам в алфавитном порядке. Мы начинаем с узла a
, а конечным состоянием является посещение всех трех узлов.
Поиск в ширину сначала посетит ребро a->b
, а затем ребро a->c
. Таким образом, путь решения — a->b->a->c
. Поскольку между b
и c
нет ребра, мы должны вернуться через a
(поэтому мы должны пройти ребро b->a
). В ответе в приведенном выше сообщении принятое решение будет выводить только a->c
.
Я не могу придумать способ изменить обычный алгоритм bfs, чтобы сделать это. У меня тот же вопрос по dfs, но я хотел бы начать с bfs.
a->b->a->c
представляет собой последовательность посещенных узлов. Путь - это не та последовательность. Путь отa
кc
проходит не черезb
, а напрямую черезa>c
. - person c0der   schedule 09.02.2020c
изa
должен будет пройти черезb
. - person 24n8   schedule 09.02.2020a->b->a->c
. Найден путьa->c
- person c0der   schedule 10.02.2020