Algorithm 在非退化梯形中寻找全局最短路径

Algorithm 在非退化梯形中寻找全局最短路径,algorithm,graph,path-finding,Algorithm,Graph,Path Finding,我正在寻找一种有效的算法,它可以在有多边形障碍物的二维空间中找到两点之间的全局最短路径 源数据采用非退化垂直梯形的形式,由多达10^4个梯形组成(非退化意味着每个梯形的下侧和上侧最多各有2个相邻梯形) 在梯形本身上运行最短路径算法,然后使用漏斗算法并不能保证找到全局最短路径 计算角点的可见性图可能会起作用,尽管我怀疑这可能会占用太多内存,因为该算法的要求是,它可以在内存中有多个(多达700个)贴图的服务器上频繁使用(大约每秒100次),但如果你认为这不是问题,请随时纠正我 为了可视化数据的外观,

我正在寻找一种有效的算法,它可以在有多边形障碍物的二维空间中找到两点之间的全局最短路径

源数据采用非退化垂直梯形的形式,由多达10^4个梯形组成(非退化意味着每个梯形的下侧和上侧最多各有2个相邻梯形)

在梯形本身上运行最短路径算法,然后使用漏斗算法并不能保证找到全局最短路径

计算角点的可见性图可能会起作用,尽管我怀疑这可能会占用太多内存,因为该算法的要求是,它可以在内存中有多个(多达700个)贴图的服务器上频繁使用(大约每秒100次),但如果你认为这不是问题,请随时纠正我

为了可视化数据的外观,我上传了一个小地图的三角剖分,您可以单击该图像以SVG的形式查看它


.

如果使用

1) 除了源点和目标点之外,梯形的所有顶点上的顶点

2) 这些顶点中任意两个顶点之间的边,如果它们彼此是视线,且边权重等于两个顶点之间的距离


那么这个问题看起来就像一个图问题中两点之间的最短距离,它有许多众所周知的解(等等)

最短路径是由从边界点到边界点的直线段组成的(除了从起点到终点的线段和到终点的线段(如果它们不是边界点)。因此,所有边界点的可见性图应该为您提供最短路径。是的,我在问题中考虑了这一点,但在我看来,这将占用相当大的内存。我开始看到点…使用10^4梯形,一个点大约有2*10^4个点(每个点可以由16位整数表示,即2个字节)在最坏的情况下,会产生4*10^8条边,这意味着仅700张地图中的一张就有800兆字节……另一方面,可见性图上的一些边永远不会被使用,例如某些区域中从一个边界到另一个边界的边(更好地定义…)。a*可能比Dijkstra更有效