A星寻路的分层寻路的问题 想请教下这样到底行不行 或者有没有更优的方法

我尽量简短点
我想在原地图30 * 30也就是900格进行寻路
将原地图缩放了100倍得到了3 * 3的9格地图
因为这个地图在服务器上是二维坐标,所以只能走格子的中间点

现在开始 拼好路:起点是E,终点是S,起点位于缩放地图的0,终点位于缩放地图的4

首先在缩放的地图上找到路径:0 - 1 - 3 - 4(黄色实线)然后连接这些路径找到撞线的点,也就是红色方块

然后再分别对起点的0区域和终点的4区域进行2次精确寻路:S-边界的红色方块,E - 边界的红色方块

最终拼好路得到最终路径:E - a - b - c -S
然后我的后处理会将多余的点或者没用的点删去
最后返回:E - a -S(红色虚线) 是这个分层寻路的最终路径

实际如果使用真实寻路不使用分层寻路,那么路径是:E - M - S (绿色虚线)

我的问题是这样做的话 是不是某些情况下 偏差会特别大 比如起点E在0区域的左下角的情况,实际黄色实线可能还有N种相同的路径,比如这里的左下半部分其实也算,这样的话最终还要将所有路径拿出来比对找返回最短的那条,做出来逻辑感觉有点复杂了

这个例子障碍物不够准确 待会我更新一个

没看懂你的分层寻路是什么,不过猜测你做这些应该是为了提升寻路效率用的,提升寻路效率,可以考虑jps寻路来优化a星

就是我将原来的900格30 * 30的地图缩小100倍变成3 * 3进行寻路,相当于对起点终点原来所处30 * 30对应3 * 3的其中2格的区域进行10 * 10的精确寻路,对中间部分进行缩放的3 * 3粗略寻路,然后拼接这3段路进行路径后处理,这样时间消耗从原来的900格缩小到209格,也就是 起点终点区域的10 * 10 + 3 * 3粗略寻路 = 209

这个只是为了方便说明,实际我有个1000 * 1000的地图,我想用类似同样的手段缩放100倍进行
中间部分最多100 * 100 + 起点和终点部分的100 * 100 =3W,相当于把原来100W格的地图寻路时间降低到3W的时间

走格子中心点就必然是1234,不会出现13格子的b对角线,允许走对角线就必然是EMS

3 * 3格可以斜着走,能出现13