Поиск в ширину (Breadth-first-search, BFS)
Поиск в ширину — алгоритм для нахождения кратчайшего пути в графе. Алгоритм позволяет ответь на следующие вопросы:
- Существует ли путь от узла A к узлу B?
- Как выглядит кратчайший путь от узла A к узлу B?
Алгоритм
Добавить вершину А в очередь
Пока в очереди есть вершина
Достать вершину из очереди
Перебрать все соседние вершины
Если искомая вершина найдена то конец
Добавить вершину в очередь
Кроме того, нужно помечать и проверять уже просмотренные записи, чтобы не возникло бесконечного цикла.
Алгоритм может быть реализован с помощью очереди или рекурсии.
Сложность
Время выполнения зависит от количество вершин и количества ребер.
Сложность О(V+E) V — количество вершин, E — количество ребер.
Ссылки
- Грокаем алгоритмы. Адитья Бхаргава. Питер. 2018. Глава 6. Поиск в ширину. Поиск в ширину