C++ 对于多个入口和多个出口,什么是合适的BFS类最优路径算法?

C++ 对于多个入口和多个出口,什么是合适的BFS类最优路径算法?,c++,algorithm,optimization,path-finding,breadth-first-search,C++,Algorithm,Optimization,Path Finding,Breadth First Search,我正在搜索一个最优路径算法,它可以找到从任何开始节点到最近的退出节点的最优路径 本例中的图形为正方形网格,相邻正方形的所有成本均为1。 任何使用这些限制的优化都是可以的 基本上,你从一个随机选择的入口进入方格,现在你想找到最接近任何给定出口的路径 到目前为止,我做了多次BFS,每次退出一次,并结合结果。尽管我怀疑这是最有效的方法。你从所有出口开始做BFS。当您发现一个新的正方形时,它到最近出口的距离是前一个正方形的距离+1,路径方向是朝向前一个正方形 由于所有(距离、方向)元组都不取决于您输入的

我正在搜索一个最优路径算法,它可以找到从任何开始节点到最近的退出节点的最优路径

本例中的图形为正方形网格,相邻正方形的所有成本均为1。 任何使用这些限制的优化都是可以的

基本上,你从一个随机选择的入口进入方格,现在你想找到最接近任何给定出口的路径


到目前为止,我做了多次BFS,每次退出一次,并结合结果。尽管我怀疑这是最有效的方法。

你从所有出口开始做BFS。当您发现一个新的正方形时,它到最近出口的距离是前一个正方形的距离+1,路径方向是朝向前一个正方形


由于所有(距离、方向)元组都不取决于您输入的位置,因此您可以一次预先计算所有正方形的这些值,因此,如果您从新入口重新开始,则无需重新进行搜索。

您可以从所有出口开始执行BFS。当您发现一个新的正方形时,它到最近出口的距离是前一个正方形的距离+1,路径方向是朝向前一个正方形


由于没有(距离、方向)元组取决于您输入的位置,因此您可以一次对所有正方形的这些值进行预计算,因此,如果您从新的入口重新开始,则无需重新进行搜索。

但这不是我正在做的吗?多次参加BFS?因为BFS通常只有一次启动?也许我弄错了。一个BFS,从外面开始作为根,连接到所有出口广场,连接到他们的邻居,等等。但我不是在做这种事吗?多次参加BFS?因为BFS通常只有一次启动?也许我理解错了,一个BFS,从外部开始作为根,连接到所有出口广场,连接到他们的邻居,等等。