В чем разница между BFS и DFS

Оглавление:

Anonim

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

Граф - это нелинейная структура данных, которая упорядочивает элементы данных в виде сетевой модели. Узлы в графе называются вершинами, и ребра соединяют эти узлы. Большинство задач с графами можно решить с помощью методов поиска. Часто используемые методы поиска - это поиск в ширину (BFS) и поиск в глубину (DFS). Короче говоря, BFS использует очередь, а DFS - стек.

BFS, DFS

Что такое BFS

BFS означает Дыхание первым поиск. Он использует очередь. Процесс выглядит следующим образом.

Пример следующий.

Рисунок 1: BFS

Предположим, что начальная вершина на изображении выше - 1. Узлы, подключенные к 1, - это 2 и 4. Таким образом, мы можем поместить 1, 2 и 4 в очередь. На выходе будет 1, 2, 4. Для 1 нет оставшихся вершин. Следовательно, мы можем удалить 1 из очереди. Теперь мы можем перейти к 2. Смежные вершины 2 - это 3, 5 и 6. Таким образом, мы можем поместить в очередь 3, 5 и 6. Результатом будет 1, 2, 4, 3, 6. В дополнение к этим трем числам, нет смежных вершин, связанных с 2. Итак, мы можем удалить 2 из очереди. Теперь перейдем к 4. Единственный смежный узел с 4 - 6. Он уже был посещен. Для 4 больше нет вершин, поэтому мы можем удалить 4 из очереди. Вы должны повторять этот процесс, пока очередь не станет пустой. Это указывает на прекращение поисковой операции.

Что такое DFS

DFS означает Поиск в глубину. Процесс выглядит следующим образом.

Посетите соседнюю непосещенную вершину и отметьте ее как посещенную. Затем отобразите его на выходе и вставьте в стек.

Если смежная вершина не найдена, вытащить вершину из стека.

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

Рисунок 2: DFS

Начальная вершина - A. Она помещается в стек. Соседние вершины - это B и E. Рассмотрим B. Мы можем поместить B в стек. Поскольку к B нет смежных узлов, мы можем вытолкнуть B из стека. На выходе получается A B. Оставшийся смежный узел с A - это E, поэтому мы можем поместить E в стек. Теперь на выходе получается A B E.

Поскольку к A нет смежных узлов, мы можем извлечь «A» из стека. Смежные узлы для E - это C и H. Теперь рассмотрим C. Мы можем поместить C в стек. Результатом будет A B E C. Процесс продолжается до тех пор, пока стек не станет пустым. Завершает поисковую операцию.

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

Определение

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

Длинная форма

В то время как BFS означает поиск в ширину, DFS означает поиск в глубину.

Метод хранения узлов

Еще одно важное различие между BFS и DFS заключается в том, что BFS использует очередь, а DFS - стек.

Потребление памяти

Метод обхода

Еще одно различие между BFS и DFS - метод прохождения. BFS фокусируется на посещении в первую очередь самых старых непосещенных вершин, в то время как DFS фокусируется на посещении вершин вдоль ребра в начале.

Заключение

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

Ссылка:

1. Алгоритм поиска в ширину | Псевдокод | Введение, Education 4u, 22 марта 2018 г., доступно здесь 2. Поиск в ширину | Примеры BFS |, Education 4u, 22 марта 2018 г., доступно здесь 3. Алгоритм поиска в глубину | Алгоритм обхода графа |, Education 4u, 22 марта 2018 г., доступно здесь 4. «Алгоритм BFS - Javatpoint». Www.javatpoint.com, доступен здесь 5. «Алгоритм DFS - Javatpoint». Www.javatpoint.com, доступен здесь.

В чем разница между BFS и DFS