我正在尝试用Javascript实现广度优先搜索(也包括其他算法,但目前仅限于BFS)。
最终,我想将所有搜索算法应用于网格上,以找到从起点到终点节点的路径(我知道BFS在这方面并不特别好)。我已经实现了一个版本,但问题是我没有整个树结构。我想要的是给它一个起始节点和结束节点,并基于此找到它们之间的路径。
我遇到的问题是当我确定相邻的网格方块时,它会返回所有邻居,甚至是已经遍历过的。这使得它成为图形搜索而不是树形搜索。解决方法是记住所有路径,以便我可以检查哪些邻居已经被遍历过,因此不需要进一步检查。然而,正如我在搜索算法课程中学到的,BFS在当前深度级别上使用所有节点的内存。如果我存储所有路径,那么它消耗的内存比这还要多,对吗?
如果我没有预先构建树结构,是否有可能只在内存中保留BFS正在搜索的当前深度的节点,并仍然避免循环呢?
希望我表述清楚了。
提前感谢, Stefan
最终,我想将所有搜索算法应用于网格上,以找到从起点到终点节点的路径(我知道BFS在这方面并不特别好)。我已经实现了一个版本,但问题是我没有整个树结构。我想要的是给它一个起始节点和结束节点,并基于此找到它们之间的路径。
我遇到的问题是当我确定相邻的网格方块时,它会返回所有邻居,甚至是已经遍历过的。这使得它成为图形搜索而不是树形搜索。解决方法是记住所有路径,以便我可以检查哪些邻居已经被遍历过,因此不需要进一步检查。然而,正如我在搜索算法课程中学到的,BFS在当前深度级别上使用所有节点的内存。如果我存储所有路径,那么它消耗的内存比这还要多,对吗?
如果我没有预先构建树结构,是否有可能只在内存中保留BFS正在搜索的当前深度的节点,并仍然避免循环呢?
希望我表述清楚了。
提前感谢, Stefan