0

我正在解决一个 AI 课程的问题,我必须使用 Python 中的 BFS 算法实现图形搜索。我的实现实际上找到了解决方案,但它扩展了太多节点。答案说应该扩展 269 个节点,但我得到了 275 个。

为了跟踪访问过的节点,我使用字典。键是展开状态,值是 1。一旦我得到一个节点的后继者,我会检查它们是否存在于字典中。如果是,我就忽略这个继任者。如果没有,我把它推到边缘(队列)。我认为这个过程会阻止扩展已经访问过的节点,但似乎并非如此。

任何人都可以给我一个提示吗?不需要任何代码,因为我想要的只是对可能出现的问题有所了解。

提前致谢。

4

1 回答 1

2

没有太多信息可以继续,但我怀疑以下是您的问题。将节点添加到边缘队列后,您必须立即将它们添加到访问过的字典中。如果你等到你访问它们(即当它们到达边缘队列的头部时),那么你可能在边缘队列中有两次相同的节点。

也不要忘记将开始节点添加到访问过的字典中。

于 2012-10-07T00:38:18.187 回答