Алгоритм поиска в ширину (BFS) с примером

Что такое алгоритм BFS (поиск в ширину)?

Поиск в ширину (BFS) — это алгоритм, который используется для графического отображения данных, поиска в дереве или обхода структур. Полная форма BFS — это поиск в ширину.

Алгоритм эффективно посещает и маркирует все ключевые узлы графа с точностью по ширине. Этот алгоритм выбирает один узел (начальную или исходную точку) на графе, а затем посещает все узлы, соседние с выбранным узлом. Помните, что BFS обращается к этим узлам один за другим.

Как только алгоритм посещает и отмечает начальный узел, он движется к ближайшим непосещенным узлам и анализирует их. После посещения все узлы отмечаются. Эти итерации продолжаются до тех пор, пока все узлы графа не будут успешно посещены и отмечены.

Что такое обход графа?

Обход графа — это широко используемый метод определения положения вершины в графе. Это расширенный алгоритм поиска, который может анализировать граф быстро и точно, а также отмечать последовательность посещенных вершин. Этот процесс позволяет вам быстро посетить каждый узел графа, не зацикливаясь на бесконечном цикле.

Архитектура алгоритма BFS

Archiструктура алгоритма BFS

  1. На различных уровнях данных вы можете пометить любой узел как начальный или начальный узел для начала перемещения. BFS посетит узел, пометит его как посещенный и поместит в очередь.
  2. Теперь BFS посетит ближайшие и непосещенные узлы и отметит их. Эти значения также добавляются в очередь. Очередь работает на Модель ФИФО.
  3. Аналогичным образом анализируются оставшиеся ближайшие и непосещенные узлы графа, которые отмечаются и добавляются в очередь. Эти элементы удаляются из очереди по мере получения и печатаются в результате.

Зачем нам нужен алгоритм BFS?

Существует множество причин использовать алгоритм BFS для поиска вашего набора данных. Вот некоторые из наиболее важных аспектов, которые делают этот алгоритм вашим первым выбором:

  • BFS полезен для анализа узлов графа и построения кратчайшего пути прохождения через них.
  • BFS может пройти по графу за наименьшее количество итераций.
  • Архитектура алгоритма BFS проста и надежна.
  • Результат алгоритма BFS имеет высокий уровень точности по сравнению с другими алгоритмами.
  • Итерации BFS являются плавными, и этот алгоритм не может попасть в проблему бесконечного цикла.

Как работает алгоритм BFS?

Обход графа требует, чтобы алгоритм посещал, проверял и/или обновлял каждый непосещенный узел в древовидной структуре. Обходы графа классифицируются по порядку, в котором они посещают узлы графа.

Алгоритм BFS запускает операцию с первого или начального узла графа и тщательно его обходит. Как только он успешно пересекает начальный узел, затем посещается и помечается следующая непройденная вершина графа.

Следовательно, можно сказать, что все узлы, соседние с текущей вершиной, посещены и пройдены за первую итерацию. Для реализации работы алгоритма BFS используется простая методология очереди, которая состоит из следующих шагов:

Шаг 1)

Работа алгоритма BFS

Каждая вершина или узел графа известна. Например, вы можете пометить узел как V.

Шаг 2)

Работа алгоритма BFS

Если к вершине V нет доступа, добавьте вершину V в очередь BFS.

Шаг 3)

Работа алгоритма BFS

Запустите поиск BFS и после завершения отметьте вершину V как посещенную.

Шаг 4)

Работа алгоритма BFS

Очередь BFS все еще не пуста, поэтому удалите вершину V графа из очереди.

Шаг 5)

Работа алгоритма BFS

Получить все оставшиеся вершины графа, смежные с вершиной V.

Шаг 6)

Работа алгоритма BFS

Для каждой соседней вершины, скажем, V1, если она еще не посещена, добавьте V1 в очередь BFS.

Шаг 7)

Работа алгоритма BFS

BFS посетит V1, отметит его как посещенный и удалит из очереди.

Пример алгоритма BFS

Шаг 1)

Пример алгоритма BFS

У вас есть график из семи чисел в диапазоне от 0 до 6.

Шаг 2)

Пример алгоритма BFS

0 или ноль был помечен как корневой узел.

Шаг 3)

Пример алгоритма BFS

0 посещается, помечается и вставляется в структуру данных очереди.

Шаг 4)

Пример алгоритма BFS

Остальные 0 соседних и непосещенных узлов посещаются, помечаются и вставляются в очередь.

Шаг 5)

Пример алгоритма BFS

Итерации обхода повторяются до тех пор, пока не будут посещены все узлы.

Правила алгоритма BFS

Вот важные правила использования алгоритма BFS:

  • Очередь (FIFO — «первым пришел — первым обслужен») структура данных используется BFS.
  • Вы отмечаете любой узел графа как корневой и начинаете просматривать данные из него.
  • BFS обходит все узлы графа и продолжает удалять их как завершенные.
  • BFS посещает соседний непосещенный узел, отмечает его как выполненный и вставляет в очередь.
  • Удаляет предыдущую вершину из очереди, если соседняя вершина не найдена.
  • Алгоритм BFS выполняет итерации до тех пор, пока все вершины графа не будут успешно пройдены и не отмечены как завершенные.
  • При прохождении данных из любого узла из-за BFS не возникает петель.

Приложения алгоритма BFS

Давайте посмотрим на некоторые реальные приложения, в которых реализация алгоритма BFS может быть весьма эффективной.

  • Невзвешенные графики: Алгоритм BFS может легко создать кратчайший путь и минимальное связующее дерево для посещения всех вершин графа в кратчайшие сроки с высокой точностью.
  • P2P-сети: BFS может быть реализована для обнаружения всех ближайших или соседних узлов в одноранговой сети. Это позволит быстрее найти необходимые данные.
  • Веб-сканеры: Поисковые системы или веб-сканеры могут легко создавать несколько уровней индексов, используя BFS. Реализация BFS начинается с источника, которым является веб-страница, а затем посещаются все ссылки из этого источника.
  • Навигационные системы: BFS может помочь найти все соседние локации из основной или исходной локации.
  • Сетевое вещание: Широковещательный пакет управляется алгоритмом BFS для поиска и достижения всех узлов, для которых он имеет адрес.

Резюме

  • Обход графа — это уникальный процесс, который требует, чтобы алгоритм посещал, проверял и/или обновлял каждый непосещенный узел в древовидной структуре. Алгоритм BFS работает по аналогичному принципу.
  • Алгоритм полезен для анализа узлов графа и построения кратчайшего пути прохождения через них.
  • Алгоритм обходит граф за наименьшее количество итераций и за минимально возможное время.
  • BFS выбирает один узел (начальную или исходную точку) на графике, а затем посещает все узлы, соседние с выбранным узлом. BFS обращается к этим узлам один за другим.
  • Посещенные и отмеченные данные помещаются в очередь BFS. Очередь работает по принципу «первым пришел — первым обслужен». Следовательно, элемент, помещенный в график первым, сначала удаляется и в результате печатается.
  • Алгоритм BFS никогда не может попасть в бесконечный цикл.
  • Благодаря высокой точности и надежной реализации BFS используется во многих реальных решениях, таких как P2P-сети, веб-сканеры и сетевое вещание.