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

⚡ Умное резюме

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

  • 📊 Порядок уровней: Поиск в ширину (BFS) посещает каждый узел на текущей глубине, прежде чем перейти на следующий уровень.
  • 📥 На основе очередей: В очереди FIFO хранятся посещенные узлы, поэтому соседи обрабатываются в порядке очереди.
  • 🎯 Кратчайший путь: В невзвешенных графах алгоритм BFS находит кратчайший путь за наименьшее количество итераций.
  • Без циклов: Пометка посещенных узлов предотвращает застревание алгоритма BFS в бесконечном цикле.
  • 🌐 Области применения: BFS используется в веб-краулерах, P2P-сетях, навигации и сетевой трансляции.

Алгоритм поиска в ширину (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 – First in First Out – Первый вошел – Первый вышел) структура данных используется BFS.
  • Вы помечаете любой узел в графе как корень и начинаете обход данных, начиная с него.
  • Метод BFS обходит все узлы графа и продолжает удалятьping их в завершенном виде.
  • BFS посещает соседний непосещенный узел, отмечает его как выполненный и вставляет в очередь.
  • В случае, если не найдена смежная вершина, предыдущая вершина удаляется из очереди.
  • Алгоритм BFS выполняет итерации до тех пор, пока все вершины графа не будут успешно пройдены и помечены как пройденные.
  • При прохождении данных из любого узла из-за BFS не возникает петель.

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

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

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

Часто задаваемые вопросы (FAQ)

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

Да. Искусственные интеллекты могут писать код в формате BFS. Python, Java или C++ Используя очередь и множество посещенных узлов из простого описания, протестируйте это на примерах графов, поскольку такие крайние случаи, как отключенные узлы, легко пропустить.

BFS (Backward Sequence for Search) исследует граф уровень за уровнем, используя очередь, и находит кратчайший путь в невзвешенных графах. DFS (Daily Search Forness) исследует как можно глубже вдоль каждой ветви, используя стек или рекурсию, прежде чем вернуться назад.tracкороль.

Алгоритм BFS работает за время O(V + E), где V — количество вершин, а E — количество рёбер, поскольку каждая вершина и каждое ребро проверяются один раз. Его пространственная сложность составляет O(V) для очереди и множества посещённых вершин.

Подведем итог этой публикации следующим образом: