algorithm - 为什么迭代加深A星不需要测试重复状态?

标签 algorithm search

Iterative deepening A star (ID A*) 是一种内存有界搜索。我的问题是,当我们从 ID A* 中的打开状态 s 到达新状态 s' 时,为什么我们不测试是否 s' 是否已经处于“打开状态”或“关闭状态”?

对于某些问题,例如:数独,因为状态永远不会达到两次,因为“问题状态图”是一棵树。然而,对于其他问题,例如:一个8字谜题,它很可能会一次又一次地达到一个状态。因此,绝对应该测试一个状态是否已经“访问”(处于打开或关闭状态)。

如果必须进行此类测试,则 ID A* 不再受内存限制,因为必须存储所有可能状态的大型哈希表。

最佳答案

我们不测试 s' 是否重复,以保持内存配置文件较小。一般来说,IDA* 实际上会将同一个状态展开多次。

关于algorithm - 为什么迭代加深A星不需要测试重复状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19213751/

相关文章:

javascript - 如何为 Web 上的自定义 DSL 设计丰富的编辑器

python - 计算至少有一位数字重复的数字的有效方法

database - Neo4j - 通过可选匹配和收集加速查询(慢)

search - 如何在 Perforce depot (P4V) 中搜索文件内容?

整行中的pandas数据框搜索字符串

PHP 与 MySQL 的搜索功能

algorithm - 修剪和搜索算法有困难

algorithm - 最小化二分图中的交叉数

c# - 一组超过 2 个整数的最大公约数

search - Elasticsearch 映射配置文件 boost 字段