Path finding 带“";“方向相关”;障碍?

Path finding 带“";“方向相关”;障碍?,path-finding,Path Finding,我遇到了以下问题。我正在编写一个游戏,它将使用寻路算法来确定如何为房间和隧道迷宫创建隧道。但我需要一种算法,它能找到通过障碍物的路径,在这些障碍物中,接近的方向是相关的。也就是说,水平穿过障碍物的路径可以,而垂直穿过障碍物的路径可能不行 图示示例: . = free space X = path | = vertical-blocking obstacle a = start point b = end point 如果我们有 ..... a.|.b ..... 那么我们应该得到一条像这样的

我遇到了以下问题。我正在编写一个游戏,它将使用寻路算法来确定如何为房间和隧道迷宫创建隧道。但我需要一种算法,它能找到通过障碍物的路径,在这些障碍物中,接近的方向是相关的。也就是说,水平穿过障碍物的路径可以,而垂直穿过障碍物的路径可能不行

图示示例:

. = free space
X = path
| = vertical-blocking obstacle
a = start point
b = end point
如果我们有

.....
a.|.b
.....
那么我们应该得到一条像这样的路径

.....
XXXXX
.....
..XX.
..|X.
..XX.
但如果我们有

..a..
..|..
..b..
那么我们应该得到一条像这样的路径

.....
XXXXX
.....
..XX.
..|X.
..XX.

什么样的算法可以做到这一点?是否可以修改“A*”以执行此操作?

A*将在不修改的情况下解决问题

您正在考虑在网格上进行路径查找,但(至少在中)该问题相当于在图形上进行规划。因此,如果您可以将网格转换为适当的图,任何完整的图搜索都将成功解决此问题,并且任何优化的图搜索都将给出您请求的计划(或同等成本的路径)

接下来的挑战是从网格中构造图形。上面提供的网格的无向图将类似于:


A*将在不修改的情况下解决问题

您正在考虑在网格上进行路径查找,但(至少在中)该问题相当于在图形上进行规划。因此,如果您可以将网格转换为适当的图,任何完整的图搜索都将成功解决此问题,并且任何优化的图搜索都将给出您请求的计划(或同等成本的路径)

接下来的挑战是从网格中构造图形。上面提供的网格的无向图将类似于: