且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

javascript - 关于最短路径算法在业务情景中实现的改进,与技术选型决策探讨

更新时间:2022-10-28 21:46:17

换个角度看下你的问题。

  1. 既然现在的地图app都是毫秒级返回,那么计算肯定不是在请求后才进行(或部分进行),那必然有缓存

  2. 理论上构成线,是点的全排列,但可以排除很多无用的线,比如不可达(不认为有现实意义的不可达,应该算代价大小)

举例:程序运行一年后,发现某地区计算最多的是道路C-A-I,Y-O-N-G,J-I,那这部分可以缓存起来。现实中想去某个地方,你脑海里不会有太多路的走法,也就是说每单次请求并没有太多元素需要计算,更谈不上全排列。

如果我来设计,我会多设计一个概念优先级,来将地点/线路等概念(元素)进行区别对待。

假设一座城市有Pa-Pz主要地点,P1-P10000次要地点。
Ra-Rz主要道路,R1-R10000次要道路。
缓存Pa-Pz间全排列路径(地点间走法)。
缓存Ra-Rz间所有途径点,记录距离,权重等信息。
计算任意地点间路径逻辑:

  1. 计算地点A到主要地点路径,走法。

  2. 计算地点B到主要地点路径,走法。

  3. 连通,得到n条路径(点序列)。

以上是初步结果,再对结果进行纠正(条件导入):

  1. 遍历点序列,并跟据单点辐射范围道路,进行最短路径优化选择。

  2. 将其缓存或计入日志方便日后统计。