我在理解一些用于AI(人工智能)的搜索算法时遇到了一些麻烦。
请你提供一些例子吗?我整天都在阅读这些算法,我知道它们的优点和缺点,复杂性等等,但我找不到任何好的例子(除了A *;我知道BFS和DFS,其他人打扰我)。我在不同的地方发现了一些IDA *的伪代码,但它们都完全不同。
示例将是了解算法的最佳方式..但我找不到。即使在TopCoder我也没有找到任何关于IDA *的信息。
我已阅读维基文章,我正在寻找新的东西(:
非常感谢!
编辑: Here some nice articles,但他们太理论化了。没有例子,没有任何具体的东西。但仍然非常有用。我推荐他们(=
答案 0 :(得分:4)
让我们从迭代加深深度优先搜索开始。
这个想法是深度优先搜索是有效的,但不一定会很快找到正确的答案。所以,做一个深度为1的DFS。如果你没有找到答案,那就去深度2.重复直到你找到答案,或者决定放弃。这会自动为您提供搜索树上的最短路径,因为如果长度为N,则永远不会搜索长度为N + 1的路径。
你需要做的是改变深度优先搜索,使其深入N个节点(即,如果你是N深,不要生成新的节点),并用增加的N调用它。你不要存储任何超过N的值以及你为DFS做的任何事情。
迭代伴随着迭代地增加搜索深度。如果分支因子大于2,则性能可以令人惊讶地好,因为在这种情况下,深度限制DFS的大部分成本处于达到的最低水平。
首先学习迭代深化DFS,然后将其应用于IDA *。我在十五年前读过关于这些搜索的早期Korf论文,并且不记得IDA *如何运作得很好,但你的主要问题是你不了解迭代深化。