Никто еще не упомянул ключевой фактор в тех случаях, когда поиск по ширине полезен: посещение узла одним способом может исключить необходимость посещения узла каким-либо другим способом.В некоторых случаях каждый будет выполнять одну и ту же работу независимо от порядка, в котором посещаются узлы, но в BFS будет выполняться гораздо меньше ожидающих действий, чем DFS. В других случаях посещение узлов в одной последовательности может потребовать больше работы, чем другие; В качестве примера приведены различные алгоритмы кратчайшего пути. Если посещение узла требует посещения его соседей, если только узел, как известно, недоступен по пути, короче текущего, узлы посещения в порядке ширины обычно приводят к тому, что узлам назначается самый короткий путь или что-то близкое к нему - во время их первого визита. Напротив, поиск по глубине приведет к тому, что многие узлы будут посещаться очень длинными дорожками в первый раз, затем с помощью немного более коротких путей, затем немного более коротких путей и т. Д., Требующих поистине чудовищного общего объема работы.
BTW, одна хорошая графическая иллюстрация разницы между алгоритмами глубины и ширины - это заливка области, где белый узел заполнен потоком, нарисовав его черным и заливая его соседи. Если попытаться заполнить квадратную область NxN, начиная с кукурузы, операция с глубиной заполнит квадрат в спиральной или зигзагообразной последовательности, а операции NxN-1 останутся в стеке. Сначала заполнение шириной будет «выливаться» из начальной точки и будет работать не более O (N), независимо от формы, которую нужно заполнить. BTW, заливка залива в IBM BASICA работала именно так (я не уверен в QBASIC).
Похоже, что это должен быть довольно экстремальный случай, когда BFS занимает меньше места, чем DFS, хотя, учитывая, что пространственная сложность BFS равна b^d. –
После того, как я понял, что на самом деле означает b и d в моем комментарии, я вспомнил, что каждый узел, имеющий один дочерний узел, будет равен 1^d. Таким образом, я предполагаю, что только один дочерний узел * будет * крайним. :-) –