Как понять проблему с памятью поиска в ширину в ветке и привязке

Недавно меня смутил метод ветвления и привязки. В методе ветвления и привязки есть три стратегии поиска: поиск по глубине, поиск по ширине и поиск по первому. Во всех книгах и литературах утверждается, что в первую очередь и в лучшую очередь потребуется больше памяти для используемого компьютера. Это как понять? Возьмем в качестве примера двоичное дерево, когда для обработки узла (родительского узла) из списка активных узлов генерируются два подузла (или дочерних узла), которые вставляются в список живых узлов, но родительский узел следует удалить. таким образом, увеличивается только память одного узла. С этой точки зрения все три стратегии поиска занимают одинаковые воспоминания о компьютере. Я прав? Это смущало меня долго. Кто-нибудь может дать мне совет?

1 ответ

Что ж,

Вы можете подумать о структурах данных:

Поиск в ширину : реализован в виде очереди. Когда вы расширяете узел (родительский узел), вы включаете в очередь дочерние узлы. Родительский узел удален. Давайте сделаем пример:

  1. Разверните 45: мы включаем 20 и 70 в очередь и удаляем 45 так:

    20 | 70

  2. Разверните 20. Мы расширяем первый узел из очереди и включаем его сыновей:

    70 | 10 | 28

  3. Разверните 70: Мы расширяем первый узел из очереди и включаем его сыновей:

    10 | 28 | 60 | 85

    И так далее...

Как видите, сложность пространства экспоненциальна: O ( ) (b = коэффициент ветвления; d = глубина, изначально 0)

Deepth-first-search: реализован как стек:

  1. Разверните 45: мы включаем 20 и 70 в стек и удаляем 45 так:

    20 | 70

  2. Разверните 20: Мы расширяем первый узел с вершины стека и включаем его сыновей:

    10 | 28 | 70

  3. Разверните 10. Мы расширяем первый узел с вершины стека и включаем его сыновей:

    1 | 18 | 28 | 70

    И так далее...

Теперь сложность пространства линейна: O (d). Временная сложность составляет О ( ) в обоих алгоритмах.

Поиск наилучшего первого: сортирует очередь в соответствии с эвристической функцией оценки f(n) и расширяет преемника с лучшим f(n). Пространственная сложность линейна: O (d).

Надеюсь это поможет.

Другие вопросы по тегам