我遇到了以下问题。我正在编写一个游戏,它将使用寻路算法来确定如何为房间和隧道迷宫制作隧道。但是我需要一种能够找到障碍路线的路径的算法,其中方向是相关的。即水平穿过障碍物的路径可能没问题,而垂直移动的路径可能没有。
图解示例:
. = free space
X = path
| = vertical-blocking obstacle
a = start point
b = end point
如果我们有
.....
a.|.b
.....
然后我们应该得到像
这样的路径.....
XXXXX
.....
但如果我们有
..a..
..|..
..b..
然后我们应该得到像
这样的路径..XX.
..|X.
..XX.
什么样的算法可以做到这一点?可以修改“A *”来做到这一点吗?
答案 0 :(得分:1)
A *将解决问题无需修改。
您正在考虑在网格上进行路径查找,但(至少在discrete work spaces中)该问题等同于在图表上进行规划。因此,如果您可以将网格转换为适当的图形,则任何完整的图形搜索都将成功解决此问题,并且任何最佳图形搜索都将提供您请求的计划(或等效成本的路径)。
然后挑战就是从网格中制定图表。您在上面提供的网格的无向图表将类似于: