Алгоритмы дерева поиска и дерева построения

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

В принципе, есть ли алгоритм BF, чтобы «генерировать» ширину дерева сначала, а не создавать дерево сначала, а затем искать через него в первой широте?

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

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

1 ответ

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

    Как правило, деревья уже есть, и мы проходим их, используя подход «ширина-первый» или «глубина-первый». Причина, по которой мы выбираем один из этих подходов, заключается в свойстве элемента поиска или дерева.

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