我在理解 AI(人工智能)中使用的一些搜索算法时遇到了一些麻烦。
- A*和IDA* (Iterative Deeping A Star)之间的确切区别是什么?仅仅是启发式函数吗?如果是这样,我仍然无法想象 IDA* 是如何工作的……:/
- IDA*是否与BFS(广度优先搜索)相同(当扩展深度仅为 1 级时,我的意思是 - 仅“向下”一层一层地移动,IDA*和BFS之间有什么区别)
- IDDFS (Iterative-Deeping Depth-First Search)是否与IDA*相同,除了启发式函数(相当于IDDFS中的 0 )
- IDDFS到底是什么——只向下移动一层,然后使用DFS(深度优先搜索)?如果是这样,那么通过这种方式计算(扩展)的状态远远多于状态。或者就像这样 - 使用具有特定深度的DFS,然后存储“叶子”(最后扩展的节点),并遍历它们以使用再次DFS(实际上,它是BFS吗?)
- “迭代”从何而来?如我所见,IDDFS根本不是迭代的,它仍然是递归的,只是混合了BFS和DFS?还是我错了?或者这个“迭代”与递归的反义词无关?
- 什么是IDA*的“迭代” ?
请您提供一些例子吗?我整天阅读这些算法,我知道它们的优缺点、复杂性等,但我就是找不到任何好的例子(除了 A*;我知道 BFS 和 DFS,其他的困扰我)。我在不同的地方找到了一些 IDA* 的伪代码,但它们都完全不同。
示例将是理解算法的最佳方式..但我找不到。即使在TopCoder中,我也没有找到任何关于 IDA* 的信息。
我已经阅读了 wiki 文章,并且正在寻找新的东西(:
非常感谢!
编辑: 这里有一些不错的文章,但它们太理论化了。没有例子,没有任何具体的东西。但还是很有用的。我会推荐他们(=