Я не понимаю, как IDA*
экономит пространство памяти. Как я понимаю IDA*
is A*
с итерационным углублением.В чем смысл алгоритма IDA * vs A *
В чем разница между объемом памяти A*
использует vs IDA*
.
Не было бы последней итерации IDA*
вести себя точно так же, как A*
и использовать тот же объем памяти. Когда я отслеживаю IDA*
, я понимаю, что он также должен помнить приоритетную очередь узлов, которые ниже порога f(n)
.
Я понимаю, что первый поиск ID-Глубина помогает глубине первого поиска, позволяя ему делать ширину сначала, как поиск, а не запоминать каждый узел. Но я думал, что A*
уже ведет себя как глубина, так как в ней игнорируются некоторые поддеревья на этом пути. Как итеративно углубление делает использование меньше памяти?
Еще один вопрос: поиск по глубине с итерационным углублением позволяет найти кратчайший путь, заставляя его вести себя сначала по ширине. Но A*
уже возвращает оптимальный кратчайший путь (учитывая, что эвристика допустима). Как итеративное углубление помогает. Я чувствую, что последняя итерация IDA * идентична A*
.
Но не IDA * по-прежнему нужно хранить узлы он намерен посетить, так как он все еще откатывается, а когда отступает, он хочет найти лучший путь, чтобы пойти дальше. A * должен хранить узлы, не является ли IDA * тем же, что и A *, но вы останавливаетесь после определенного f (n) и снова перезапускаете? Вы говорите, что IDA * - это только IDDFS, кроме эвристики.Как и во всех узлах ниже порога, обрабатываются одинаково и что посещение дочерних узлов узла не в определенном порядке, если все дочерние f (n) ниже порога? – tcui222
Каждый узел, на котором посещаются 'IDA *', уже содержит ссылку на его соседние узлы, поэтому, когда у вас есть этот узел в стеке вызовов (желтый на картинке выше), вы можете перебирать их. –
Перечитайте мое редактирование. –