使用距离矩阵查找带有航路点的最短路线

时间:2019-02-28 07:02:49

标签: algorithm google-maps

我想使用Google Maps v3获得A点和B点之间的最短路线,并在X点之间设置X个航路点。

对于此示例,我要计算A和B之间的最短路线,并在它们之间使用C,D,E航路点。

为此,我使用距离矩阵服务来查找[AB,AC,AD],[BC,BD,BE],[CD,CE],[DE]之间的距离,结果如下:

  

A)地址A [B:4,C:1.4,D:1.4]始终是路线的起点

     

B)地址B [C:3.8,D:1.3,E:3.1]

     

C)地址C [D:1.2,E:3.1]

     

D)地址D [E:2.7]

     

E)地址E-始终是路线终点

     

路线1:A + B + C + D + E = 4 + 3.8 + 1.2 + 2.7 = 11.7Kms

     

路线2:A + C + B + D + E = 1.4 + 3.8 + 1.3 + 2.7 = 9.2公里

     

路线3:A + D + B + C + E = 1.4 + 1.3 + 3.8 + 3.1 = 9.6Kms

     

路线:A + B + D + C + E = 4 + 1.3 + 1.2 + 3.1 = 9.6Kms

     

路线5:A + C + D + B + E = 1.4 + 1.2 + 1.3 + 3.1 = 7公里

     

路线6:A + D + C + B + E = 1.4 + 1.2 + 3.8 + 3.1 = 9.5公里

在这种情况下,冠军是5号公路,但我有三个问题:

  1. 这对Google地图计费量大的自杀吗?考虑到路由最多包含12个地址,包括开始和结束地址。

  2. 就JavaScript性能而言,这是自杀吗?

  3. 是否有更好的方法来解决此问题?

预先感谢

1 个答案:

答案 0 :(得分:0)

如何?

保留所有距离的列表(让我们说A-> F,带有B,C,D和E的中点):

A: AB, AC, AD, AE
B: BC, BD, BE, BF
C: CB, CD, CE, CF
D: DB, DC, DE, DF
E: EB, EC, ED, EF

让我们说我们根据距离对它们进行排序。

从A中选择最短的距离(假设它是AC)。

从C中选择到另一个中点(CE?)的最短距离

重复此操作,得到类似A-C-E-B-D-F的信息。将该距离存储为d_min。

返回并尝试其他路径。我们可以更改的第一件事是E-B,我们可以更改为E-D。 A-C-E-D-B比A-C-E-B-D-F长吗?如果是这样,请再回去尝试A-C-B。如果没有,请针对d_min测试A-C-E-D-B-F。

以此类推-这样可能会为您节省一些较长的路线,并且 会找到最短的路线,尽管它可以测试所有排列。我认为没有比这更快的方法了。