если задана проблема с графом, как мы узнаем, нужно ли нам использовать алгоритм bfs или dfs??? или когда мы используем алгоритм dfs или алгоритм bfs. Каковы различия и преимущества одного над другим?
Структура данных графов: DFS vs 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 - нет.