Структура данных графов: DFS vs BFS?

если задана проблема с графом, как мы узнаем, нужно ли нам использовать алгоритм bfs или dfs??? или когда мы используем алгоритм dfs или алгоритм bfs. Каковы различия и преимущества одного над другим?

Ответ 1

BFS будет использовать больше памяти в зависимости от фактора ветвления... однако BFS - это полный алгоритм... что означает, что если вы используете его для поиска чего-то на самой низкой глубине, BFS даст вам оптимальное решение. Сложность BFS-пространства составляет O(b^d)... коэффициент ветвления, поднятый до глубины (может быть МНОГО памяти).

DFS, с другой стороны, намного лучше о пространстве, однако может оказаться неоптимальным решением. Если вы просто ищете путь от одной вершины к другой, вы можете найти субоптимальное решение (и остановиться там), прежде чем найти самый короткий путь. Сложность DFS-пространства составляет O(|V|)... что большая часть памяти, которую может потребоваться, - это самый длинный путь.

Они имеют одинаковую сложность времени.

С точки зрения реализации BFS обычно реализуется с помощью Queue, тогда как DFS использует Stack.

Ответ 2

Вначале поисковая раскрутка сначала начинается. Сначала глубина сначала сначала ищет детей. Поэтому, я думаю, это будет зависеть от того, какой поиск вы хотите делать. поиск типов отношений по полям, вероятно, будет поддан bfs, где иерархические (деревья, папки, ранги и т.д.) будут более подходящими как dfs.

Ответ 3

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

Хотите найти (сильно/) связанные компоненты графика? или решить лабиринт или судоку? Используйте DFS. Если вы внимательно присмотритесь, предварительный заказ, пост-порядок и порядок ввода - все варианты DFS. Итак, да, это интересные приложения.

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

Ответ 4

В bfs очередь используется, когда в стеке dfs используется для хранения вершин в соответствии с обходом графика.
2- в процессе bfs выполняется уровень до уровня (согласно направленному или не направленному графику) в то время как в dfs процесс выполняется до глубины (процесс первого посещения корня node, а другой - далеко, а затем применяется откат с последнего node до корня node).

Ответ 5

BFS отлично подходит для кратчайших путей, а DFS - нет.