algorithm - Astar vs IDAstar 性能

标签 algorithm graph-algorithm a-star iterative-deepening

我似乎无法回避为什么 A* 在大多数时候优于 IDA* 的原因。我的教授说过,原因不是因为早期(更接近根)节​​点在达到 f-limit 后一直被重新探索为 IDA* 回溯,而是因为 A* 维护一个开放和封闭的列表,以便给定状态不会在树中多次探索,而在 IDA* 中,如果树中的给定节点有多条路径,它将一次又一次地探索这些节点。我的问题是它与 IDA* 相同。是否可以使用开放和封闭列表实现 IDA*,如果不能,为什么?

最佳答案

我不确定您是否完全理解 IDA*。 IDA* 使用重复有限深度 depth-first-search es 以减少与 A* 相关的内存需求(其中 A* 通常使用更多类似 breadth-first-search (BFS) 的进程)。

如果您修改 IDA* 以使用开放和封闭列表,您可能会回到类似 BFS 的过程,因此您实际上会回到 A*。

关于algorithm - Astar vs IDAstar 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421294/

相关文章:

c - 实现A*算法

algorithm - 如何计算可能的不同序列的数量?

c# - 为两个订单 ID 的排列创建唯一哈希码

javascript - 插入或拖动后重新索引对象数组的算法 'n' 放置顺序更改

algorithm - 检查图形是否至少单向连接

graph-algorithm - 该算法在欧拉图中找到欧拉路径是否有反例?

algorithm - 动态规划和相互适合的矩形序列的最大长度

neo4j - 度中心性算法仅返回 0.0 作为分数

algorithm - 计算从网格中的一个正方形到达另一个正方形的步数,并将其用于 A* 算法中的 h 成本

java - 优先级队列 - 背后更新 key 的影响