Итеративное углубление Звезда (ID A *) - это ограниченный поиск по памяти. Мой вопрос заключается в том, что когда мы достигаем нового состояния s'
из открытого состояния s
в ID A *, почему мы не проверяем, находится ли s'
в «открытых состояниях» или «закрытых состояниях»?Почему итерационное углубление Звезда не нуждается в проверке на наличие повторяющихся состояний?
Для некоторых проблем, например: sudoku, поскольку состояние никогда не будет достигнуто дважды, потому что «граф состояний проблемы» является деревом. Однако для другой проблемы, например: 8-головоломка, она, вероятно, снова и снова будет достигать состояния. Таким образом, определенно нужно проверить, находится ли состояние уже «посещено» (либо в открытом, либо в закрытом состоянии) или нет.
Если такие тесты должны быть выполнены, то идентификатор A * больше не ограничен памятью, потому что необходимо сохранить большую хеш-таблицу всех возможных состояний.
Этот вопрос не соответствует теме, поскольку речь идет о алгоритмах, не относящихся к программированию. –
Подождите. Что вы подразумеваете под не по теме? Существуют теги «алгоритм» и «поиск». Как вы можете сказать, что алгоритм не является частью программирования? –
Лично я думаю, что это по теме (хотя, возможно, лучше подходит для http://cstheory.stackexchange.com.) Прочитайте раздел справки [Какие темы можно задать здесь?] (Http://stackoverflow.com/help/on-topic) –