【发布时间】:2011-05-21 21:08:28
【问题描述】:
我在理解 AI(人工智能)中使用的一些搜索算法时遇到了一些麻烦。
- A* 和 IDA* (Iterative Deeping A Star) 之间的确切区别是什么?仅仅是启发式函数吗?如果是这样,我仍然无法想象 IDA* 是如何工作的……:/
- IDA*和BFS (Breadth-First search)一样吗(当扩展深度只有1级的时候,我的意思是——只是一层一层地“向下”移动,之间有什么区别吗? >IDA* 和 BFS)
- IDDFS (Iterative-Deeping Depth-First Search)和IDA*一样,除了启发式函数(相当于IDDFS中的0)
- IDDFS 到底是什么 - 向下移动 仅一级,然后使用 DFS (Depth-First Search)?如果是这样,那么通过这种方式计算(扩展)的状态远远多于状态。或者就像这样 - 使用具有特定深度的 DFS,然后存储“叶子”(最后扩展的节点) ,并遍历它们以再次使用 DFS(实际上是 BFS?)
- “迭代”从何而来?如我所见,IDDFS 根本不是迭代的,它仍然是递归的,只是混合了 BFS 和 DFS?还是我错了?还是这个“iterative”跟递归的反面没有关系?
- IDA* 的“迭代”是什么?
请您提供一些例子吗?我整天阅读这些算法,我知道它们的优缺点、复杂性等,但我就是找不到任何好的例子(除了 A*;我知道 BFS 和 DFS,其他的困扰我)。我在不同的地方找到了一些 IDA* 的伪代码,但它们完全不同。
示例将是理解算法的最佳方式..但我找不到。即使在TopCoder,我也没有找到任何关于 IDA* 的信息。
我已经阅读了 wiki 文章,并且正在寻找新的东西(:
非常感谢!
编辑: Here some nice articles,但它们太理论化了。没有例子,没有任何具体的东西。但还是很有用的。我会推荐他们(=
【问题讨论】:
-
您要解决什么样的问题?你问的问题花了我大学 AI 课大约 5 周的时间来回答,所以要回答的有点多。
-
这个问题与THIS one 有点关系,但只是一点点。我需要先深入了解这些算法。任何讲座或文章都会有所帮助。谢谢(:
-
这个问题最好不止一个问题。我在下面解释了 IDDFS,在尝试 IDA* 之前您确实需要了解这一点。你在 A* 上怎么样?在尝试学习 IDA* 之前,您应该熟悉 A* 和 IDDFS。
-
@David - 我完全理解 A*。或者,至少,我是这么认为的。
-
你需要给自己买一本书,坐下来阅读。 Russel & Norvig “AI - 现代方法”可能是合适的。
标签: algorithm search artificial-intelligence belongs-to