Поиск в ширину (Breadth-first-search, BFS)

Поиск в ширину — алгоритм для нахождения кратчайшего пути в графе. Алгоритм позволяет ответь на следующие вопросы:

  • Существует ли путь от узла A к узлу B?
  • Как выглядит кратчайший путь от узла A к узлу B?

Алгоритм

Добавить вершину А в очередь
Пока в очереди есть вершина
  Достать вершину из очереди
  Перебрать все соседние вершины
    Если искомая вершина найдена то конец
    Добавить вершину в очередь

Кроме того, нужно помечать и проверять уже просмотренные записи, чтобы не возникло бесконечного цикла.

Алгоритм может быть реализован с помощью очереди или рекурсии.

Сложность

Время выполнения зависит от количество вершин и количества ребер.

Сложность О(V+E) V — количество вершин, E — количество ребер.

Ссылки

Ссылки на эту заметку

Эта заметка на GitHub

Обсудить на форуме

Последниее изменение: