图片显示的节点图形像一个具有直行和列的像素网格。每个节点(边缘上的节点除外)都有8条边,这些边都到达它周围最近的8个节点。右边的图片显示了一个A *搜索,其中有一个简单的距离旅行+欧几里德到目标启发式的距离。
现在,我说右边图片给出的路径不够好。相反,如果您使用最短的字符串连接起始节点和目标节点,我想要一条路径。获取该名称的算法是什么?
答案 0 :(得分:2)
可以使用Theta*算法执行基于可穿越空间的2D网格离散化的欧几里德最短路径。
另一种(更常用的)方法是基于标准的4路或8路路径查找(左图),然后是“拉线”优化。最常见的算法称为"Funnel algorithm"。
请注意,这两种方法都不能保证产生全局最短路径。而且,这些假设您将世界表示为网格;如果您将其表示为一组凸多边形,则其他算法更合适。
答案 1 :(得分:0)
这是多边形障碍物的2D Fisbowl问题。
对于算法解决方案,请检查以下两个参考:
Hershberger,约翰; Suri,Subhash(1999),“平面中欧几里德最短路径的最优算法”,SIAM Journal on Computing 28(6):2215-2256,doi:10.1137 / S0097539795289604。
Kapoor,S。; Maheshwari,S.N。(1988),“欧几里德最短路径和多边形障碍物能见度问题的有效算法”,Proc。第四届ACM计算几何学术研讨会,第172-182页,doi:10.1145 / 73393.73411,ISBN 0-89791-270-5。