Учебники

9) BFS против DFS

Что такое BFS?

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

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

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

В этом ЧФ против. Учебник по двоичному дереву DFS, вы изучите:

Что такое DFS?

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

Пример БФС

В следующем примере DFS мы использовали граф, имеющий 6 вершин.

Пример БФС

Шаг 1)

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

Шаг 2)

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

Шаг 3)

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

Шаг 4)

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

Шаг 5)

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

Пример ДФС

В следующем примере DFS мы использовали неориентированный граф с 5 вершинами.

Шаг 1)

Мы начали с вершины 0. Алгоритм начинается с помещения его в список посещений и одновременного размещения всех смежных вершин в структуре данных, называемой стеком.

Шаг 2)

Вы посетите элемент, который находится вверху стека, например, 1, и перейдете к смежным узлам. Это потому, что 0 уже был посещен. Поэтому мы посещаем вершину 2.

Шаг 3)

У вершины 2 есть соседняя не посещенная вершина в 4. Поэтому мы добавляем это в стек и посещаем его.

Шаг 4)

Наконец, мы посетим последнюю вершину 3, она не имеет никаких не посещенных соседних узлов. Мы завершили обход графа, используя алгоритм DFS.

Разница между BFS и DFS Binary Tree

BFS ДФС
BFS находит кратчайший путь к месту назначения. DFS переходит в конец поддерева, а затем возвращается.
Полная форма BFS — поиск в ширину. Полная форма DFS — поиск в глубину.
Он использует очередь для отслеживания следующего места для посещения. Он использует стек для отслеживания следующего места для посещения.
BFS проходит в соответствии с уровнем дерева. DFS проходит по глубине дерева.
Это реализовано с использованием списка FIFO. Это реализовано с использованием списка LIFO.
Это требует больше памяти по сравнению с DFS. Это требует меньше памяти по сравнению с BFS.
Этот алгоритм дает решение с минимальным путем. Этот алгоритм не гарантирует решения с минимальным путем.
В BFS нет необходимости возвращаться назад. В DFS есть необходимость возврата.
Вы никогда не сможете попасть в ловушку конечных циклов. Вы можете попасть в бесконечные петли.
Если вы не нашли никакой цели, вам может потребоваться расширить множество узлов до того, как решение будет найдено. Если вы не найдете никакой цели, может произойти откат конечного узла.

Приложения BFS

Вот приложения BFS:

Невзвешенные графики:

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

P2P-сети:

BFS может быть реализован для определения местоположения всех ближайших или соседних узлов в одноранговой сети. Это позволит найти необходимые данные быстрее.

Веб-сканеры:

Поисковые системы или веб-сканеры могут легко создавать индексы нескольких уровней, используя BFS. Реализация BFS начинается с источника, который является веб-страницей, а затем посещает все ссылки из этого источника.

Сетевое вещание:

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

Приложения DFS

Вот важные приложения DFS:

Взвешенный график:

В взвешенном графе обход по графу DFS генерирует дерево кратчайшего пути и минимальное остовное дерево.

Обнаружение цикла на графике:

Граф имеет цикл, если мы нашли задний край во время DFS. Таким образом, мы должны запустить DFS для графа и проверить для задних ребер.

Найти путь:

Мы можем специализироваться на алгоритме DFS для поиска пути между двумя вершинами.

Топологическая сортировка:

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

Поиск сильно связанных компонентов графика:

Он используется в графе DFS, когда есть путь от каждой вершины графа до других оставшихся вершин.

Решение головоломок только с одним решением:

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

ОСНОВНЫЕ РАЗЛИЧИЯ:

  • BFS находит кратчайший путь к месту назначения, тогда как DFS идет в конец поддерева, а затем возвращается.
  • Полная форма BFS — поиск в ширину, а полная форма DFS — поиск в глубину.
  • BFS использует очередь для отслеживания следующего места для посещения. тогда как DFS использует стек для отслеживания следующего места для посещения.
  • BFS проходит в соответствии с уровнем дерева, в то время как DFS проходит в соответствии с глубиной дерева.
  • BFS реализована с использованием списка FIFO, с другой стороны, DFS реализована с использованием списка LIFO.
  • В BFS вы никогда не попадете в конечные циклы, тогда как в DFS вы можете попасть в бесконечные циклы.