我正在尝试在 Javascript 中实现广度优先搜索(还有其他算法,但目前是 bfs)。
最终我想在一个网格上应用所有的搜索算法,找到一条从起点到目标节点的路径(我知道 bfs 并不是特别擅长这个)。我已经做了一个实现,但问题是我没有提前整棵树。我想要的是给它一个 startnode 和 endnode 并在此基础上找到它们之间的路径。
我遇到的问题是,当我确定相邻的方格时,它会返回所有邻居,甚至那些已经遍历过的邻居。这将其变成图形搜索而不是树搜索。解决它的一种方法是记住所有路径,以便我可以检查哪些邻居已经被遍历,因此不需要进一步检查。但是,正如我在搜索算法课程中学到的那样,bfs 具有当前深度级别上所有节点的内存使用情况。如果我存储所有路径,那么它会消耗更多的内存,对吧?
当我事先没有树结构并且仍然避免循环时,是否可以只将 bfs 正在搜索的当前深度的节点保存在内存中?
我希望我已经把自己说清楚了。
在此先感谢,斯特凡