我注意到在实现搜索算法时会使用一些数据结构。 例如,我们使用队列来实现BFS,堆栈实现DFS和min-heap来实现A *算法。在这些情况下,我们不需要显式构建搜索树。
但我找不到简单的数据结构来模拟AO *算法的搜索过程。我想知道显式构建搜索树是否是实现AO *算法的唯一方法?任何人都可以为我提供有效的实施吗?我非常感谢你的帮助。
答案 0 :(得分:1)
免责声明:我没有实施AO *,因此我可能错了。
实施AO *不应与A *不同。您使用堆但不是只有一个节点,每个成员应该是节点的向量(一个或多个节点)。在某种程度上,它取决于(和/或)规则给你的方式,但填充堆应该非常简单。所以第一个问题的答案是否定的,没有必要明确地构造树,因为你不会为A *这样做。记住一个堆实际上是一个搜索树的表示,所以有人可能会说你在遍历它时真正构建了树。关于
有人能为我提供有效的实施吗?
你需要通过提供至少一些伪代码或甚至更好的代码来显示一些努力来显示你如何攻击问题。然后我们可以提出如何通过改进数据结构来提高效率的建议。