2017-01-16 14 views
0

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

В принципе, существует ли алгоритм BF для «генерации» дерева. Ширина - сначала, а не сначала создание дерева, а затем поиск по нему в ширину в первом порядке?

Вид как анимированные результаты here:

Спасибо за чтение

+1

У меня создалось впечатление, что наиболее распространенный подход к поиску дерева заключается в том, чтобы строить дерево неявно, как вы идете, а не строить все дерево, а затем искать его. У вас есть источник, который говорит иначе? – templatetypedef

+0

Ну, мой профессор сказал, что для поиска дерева вам сначала нужно построить дерево. Теперь я нахожусь в конфликте с тем, что ищет дерево. – JuroNemo

+0

Это звучит так: (1) они ссылаются на другую проблему, (2) они имели в виду абстрактную идею о том, что существует дерево, а не код для его построения , или (3) они ошибались. Необычно в таких проблемах поиска, чтобы они явно конструировали дерево заранее, именно по той причине, которую вы определили. – templatetypedef

ответ

0

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

Обычно есть деревья, которые уже присутствуют, и мы проходим их с использованием подхода Breadth-First или подхода Depth-First. Причина, по которой мы выбираем один из этих подходов, объясняется свойством элемента поиска или дерева.

Если вы видели случаи, когда мы строим дерево, а затем ищем его, это для педагогических целей, когда вам приходится писать автономную программу, которая строит дерево, а затем пересекает его. Это похоже на создание связанного списка чисел и выполнение линейного поиска или построение двоичного дерева поиска, а затем поиск значения. Как правило, этот подход учит созданию и обходу структуры данных, упакованной в одну программу.