Коэффициент ветвления широты первого поиска

время выполнения BFS равно O (b^d)

b-коэффициент ветвления d-глубина (#уровня) графика от начального узла.

Я некоторое время гуглил, но я все еще не вижу, чтобы кто-нибудь упоминал, как они выясняют эту "b"

поэтому я знаю, что фактор ветвления означает "# дочернего узла, который имеет каждый узел"

например, коэффициент ветвления для двоичного дерева равен 2.

Итак, для графа BFS является то, что b= средний коэффициент ветвления каждого узла в нашем диаграмма.

или b = MAX (среди всех коэффициентов ветвей каждого узла)?

кроме того, независимо от того, каким образом мы выбираем b, все еще кажется неоднозначным, чтобы приблизиться к нашему времени выполнения. Например, если наш граф имеет 30000 узлов, только 5 узлов имеют 10000 ветвлений, а все остальные 29955 узлов имеют только 10 ветвлений. а у нас глубина установки до 100.

кажется, O (b^d) не имеет смысла в этом случае.

может кто-нибудь объяснить немного. Спасибо!

3 ответов


среда выполнения, которая чаще цитируется, заключается в том, что BFS-это O(m + n), где m-количество ребер и n-количество узлов. Это связано с тем, что каждая вершина обрабатывается один раз, а каждое ребро не более двух раз.

Я думаю, что O (b^d) используется при использовании BFS, скажем, для грубой игры в шахматы, где каждая позиция имеет относительно постоянный коэффициент ветвления, и ваш движок должен искать определенное количество позиций глубоко. Например, b около 35 для шахмат и Deep Blue имел поиск глубину 6-8 (до 20).

в таких случаях, поскольку граф относительно ациклический, b^d примерно такой же, как m + n (они равны для деревьев). O (B^d) более полезен, поскольку B фиксирован, а d-это то, что вы контролируете.


в графах O (b^d) на b = MAX. Так как это худший случай. проверьте эту ссылку из Принстона http://www.princeton.edu / ~achaney/tmve/wiki100k/docs/Breadth-first_search.html - перейти к части сложности времени


цитата из искусственный интеллект - современный подход Стюарт Рассел и Питер Норвиг:

сложность времени и пространства всегда рассматривается в отношении некоторой меры сложности проблемы. В теоретической информатике типичной мерой является размер графа пространства состояний |V | + | E/, где V-множество вершин (узлов) графа, А E-множество ребер (связей). Это уместно, когда график является явными данными структура, входящая в программу поиска. (Пример тому-карта Румынии.) В AI график часто представлен неявно исходным состоянием, действиями и моделью перехода и часто является конечным. По этим причинам сложность выражается в терминах трех величин: b-коэффициент ветвления или максимальное число преемников любого узла; d-глубина самого мелкого целевого узла (т. е. количество шагов по пути от корня); и m-максимальная длина любого путь в пространстве состояний. Время часто измеряется в терминах количества узлов, генерируемых во время поиска, и пространства в терминах максимального количества узлов, хранящихся в памяти. По большей части мы описываем сложность времени и пространства для поиска по дереву; для графика ответ зависит от того, насколько "избыточны" пути в пространстве состояний.

Это должно дать вам четкое представление о разнице между O (|V|+| E/) и b^d