Вступить в клуб →
лёгкаявопросГрафы и обходы

DFS вместо BFS: почему путь получается длиннее минимального

В невзвешенном неориентированном графе нужно найти минимальное число рёбер между вершинами A и B. Разработчик написал обход в глубину, который останавливается на первом достижении B и возвращает длину пройденного пути. Тесты показывают, что иногда возвращается число больше минимального.

В чём причина и как правильно?

  • Достаточно помечать вершину посещённой при входе, а не при выходе — тогда DFS начнёт давать кратчайший путь
  • DFS для этой задачи корректен, а число больше минимального получается только на несвязном графе
  • DFS уходит вглубь по первой ветке и фиксирует первый найденный путь, а не кратчайший; нужен BFS
  • Без весов не работают ни BFS, ни DFS: нужна Дейкстра с весами, равными единице

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела