我用google搜索"导航网格上的A *算法"只是为了得到错误的估计g值的方法,比如这个
通过总计蓝线段的长度,我们得到g值,但它被高估了(g值应该被低估)。此算法将返回优化路径,但不保证最短路径。
我能想到的唯一方法是根据导航网格绘制可见性图。但这会花费太多内存。
还有其他方法可以计算导航网格中的最短路径吗?
答案 0 :(得分:2)
要获得距离您的意思更近的最短路径,您应该停止使用固定点作为A-star节点,即停止使用三角形中心或三角形中心。
尝试在A星传播时移动点。 例如,在三角形的边缘使用A星形节点:
下一个A-star节点的三角形边缘与前一个A-star节点形成的线段和目的地的交点
或上一个交点的最近点,位于下一个A-star节点的三角形边缘
或者,尝试使用类似标准在计算A-star之后更改路径节点。
请注意,这将平滑最终路径(如图纸上的红线)。 但这只会有助于减少高估,这并不能保证找到最短的路径。
更好的是,尝试使用字符串拉动a.k.a漏斗算法,在使用三角形中心计算你的A-star之后更改路径节点。这将为您提供通过A-star输出路径所经过的三角形的最短路径。