我正在寻找一种路径搜索算法,它允许我找到已知点A和B之间的最短路径,它们是节点,并且连接到其他节点。
在我的情况下,大约有20,000个节点,每个节点最多可以有16个连接(链接)指向(我的意思是,如果节点A连接到节点B,它并不意味着节点B连接到节点A,这是用于右车道驾驶和左车道驾驶,高速公路)
为了避免出现问题,这里有一个关于连接(以及指示)的意思的图像:
示例地图:
从A到D,这里最短的路线是A-> C-> D,从D到A,它只是D-> A
我知道每条链路之间的距离都是负的。 (因为我知道节点的所有XYZ位置)
简而言之:
- 对于我的案例,C或C ++中最快的算法(我可以同时使用)?
-ofcourse我需要检索路线,但我还需要(计算/或)检索从A点到B点的距离。
- 是否有可满足我需求的图书馆
- 可选:是否有一个具有多线程(支持)的库(如果是,哪一个)?
- 是否有可用的代码示例?
为什么我问这个问题是因为我想改进一些非常慢的代码。我想通过重写代码来做到这一点,因为目前正在使用Dijkstra而不是这种情况。
我目前使用的代码在这里:
https://gpb.googlecode.com/files/RouteConnector_180.zip
这里是代码现实生活中的一个示例用法:
答案 0 :(得分:2)
A *已被证明是解决一般问题的最快寻路算法。
答案 1 :(得分:0)
试试Dijkstra algorithm。 Boost::Graph implemented也有{{3}}。