БФС (поиск в ширину, breadth-first search) - способ обхода графа, очень часто применяется как в простых алгоритмах, так и в продвинутых. Поиск в ширину работает путём последовательного просмотра отдельных уровней графа, начиная с узла-источника, и постепенно удаляясь от него. Наглядно это показанно на анимации.
Для написания простейшего БФСа необходимо уметь работать с очередью, такой структурой данных, которая позволяет брать из начала
и класть в конец, а также уметь хранить граф в виде списка смежности.
Формальное описание алгоритма:
1)Поместить номер вершины, с которого начинается поиск, в изначально пустую очередь.
2)Извлечь из начала очереди вершину U и в отдельном массиве пометить ее как использованную.
3)В конец очереди добавить все вершины до которых мы можем дойти используя ребро из вершины U и которые еще не помечены.
4)Если очередь пуста, то все узлы связного графа были просмотрены, иначе вернуться к п. 2.
Сложность работы
Так как в худшем случае алгоритм посещает все узлы графа, при хранении графа в виде списков смежности,
временная сложность алгоритма составляет O(|V| + |E|), где V - множество вершин графа, а E - множество ребер.
Другими словами алгоритм в худшем случае работает за количество ребер + количесто вершин.