Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在我的场景中,哪种路径搜索算法的实现速度最快?_C++_C_Path Finding - Fatal编程技术网

C++ 在我的场景中,哪种路径搜索算法的实现速度最快?

C++ 在我的场景中,哪种路径搜索算法的实现速度最快?,c++,c,path-finding,C++,C,Path Finding,我正在寻找一种路径搜索算法,该算法将允许我找到已知点a和B之间的最短路径,这些点是节点,并且与其他节点相连 在我的例子中,大约有20000个节点,每个节点最多可以有16个定向连接(链路)(我的意思是,如果节点a连接到节点B,并不意味着节点B连接到节点a,这是用于右车道驾驶和左车道驾驶,用于高速公路) 为了避免出现问题,以下是我对连接(以及定向连接)的理解: 示例地图: 从A到D这里最短的路线是A->C->D,从D到A的路线是D->A 我知道每个链接之间的所有距离,没有距离是负的。 (因为我知

我正在寻找一种路径搜索算法,该算法将允许我找到已知点a和B之间的最短路径,这些点是节点,并且与其他节点相连

在我的例子中,大约有20000个节点,每个节点最多可以有16个定向连接(链路)(我的意思是,如果节点a连接到节点B,并不意味着节点B连接到节点a,这是用于右车道驾驶和左车道驾驶,用于高速公路)

为了避免出现问题,以下是我对连接(以及定向连接)的理解:

示例地图:

从A到D这里最短的路线是A->C->D,从D到A的路线是D->A

我知道每个链接之间的所有距离,没有距离是负的。 (因为我知道节点的所有XYZ位置)

简言之:

< > C或C++中最快的算法(我可以同时使用)? -当然,我需要检索路线,但我还需要(计算/或)检索从A点到B点的距离)

-有适合我需要的图书馆吗

-可选:是否有支持多线程的库(如果有,是哪一个)

-是否有可用的代码示例

我问这个问题是因为我想改进一些非常慢的代码。我想通过重写代码来做到这一点,因为目前使用的是Dijkstra,而不是这种情况下的默认值

我目前使用的代码如下:

下面是代码在实际生活中的用法示例:


试试看。也有。

A*已被证明是解决一般问题的最快路径查找算法。

20k节点?16条可能的路线?听起来太多可能的组合16从一个节点到另一个节点的连接你所说的“Dijkstra在这种情况下被使用而不是使用”是什么意思,然后节点之间的欧几里德距离是最短路径长度的下限,你可以使用a*。我的意思是我知道这两个点的位置,Dijkstra计算从a到每个其他节点的距离,这使得它做的工作比需要的多。”对于给定的源顶点(节点)在图中,算法查找该顶点与其他每个顶点之间成本最低的路径(即最短路径)。它还可用于查找从单个顶点到单个目标顶点的最短路径的成本,方法是在确定到目标顶点的最短路径后停止算法。”我建议使用boost的A*搜索