2012-03-31 462 views
6

我注意到当我们实现搜索算法时会使用一些数据结构。 例如,我们使用队列来实现BFS,堆栈实现DFS和最小堆来实现A *算法。在这些情况下,我们不需要明确构建搜索树。如何实现AO *算法?

但我找不到一个简单的数据结构来模拟AO *算法的搜索过程。我想知道是否明确构建搜索树是实现AO *算法的唯一方法?任何人都可以为我提供有效的实施吗?我非常感谢你的帮助。

+0

你可以尝试发布你的问题到:http://cs.stackexchange.com/ – 2012-04-01 07:28:52

回答

1

声明:我没有实现AO *,因此我可能是错的。

执行AO *不应该与A *不同。你使用堆而不是只有一个节点,每个成员应该是一个节点向量(一个或多个节点)。在某种程度上,它取决于(和 - 或)规则如何给予你,但填充堆应该很容易。所以对第一个问题的答案是否定的,没有必要明确地构造树,因为对于A *你不这样做。记住一堆实际上是一个搜索树的表示,所以你可以争辩说,当你遍历它时你确实构造了树。关于

任何人都可以提供一个有效的实现吗?

您需要通过提供至少一些伪代码或甚至更好的代码来显示一些努力,以显示如何使用您的攻击问题。然后我们可以提出一些建议,如何通过改进数据结构来提高效率。