Algorithm 允许A-star算法绕过x个障碍物

Algorithm 允许A-star算法绕过x个障碍物,algorithm,graph-algorithm,path-finding,a-star,maze,Algorithm,Graph Algorithm,Path Finding,A Star,Maze,现在我有一个迷宫: 标有S和E的节点表示此迷宫的开始和结束 橙色节点表示目前无法绕过的障碍物 我的目标是让A*算法绕过x个障碍物,以最快的方式到达终点 我的A*算法目前是这样导航的: 但如果我允许绕过一个障碍物,我希望它像这样导航: 如果我允许绕过两个障碍物: 如何修改A*算法来实现这一点?是否有其他算法可以帮助我解决这个问题?您可以复制图形中的节点,并为每个旁路生成实例。也就是说,您将创建几层图形,并从第0层开始(您已经绕过了0个障碍)。无论何时转到障碍物节点,都会切换到下一层(即,下

现在我有一个迷宫:

标有S和E的节点表示此迷宫的开始和结束

橙色节点表示目前无法绕过的障碍物

我的目标是让A*算法绕过x个障碍物,以最快的方式到达终点

我的A*算法目前是这样导航的:

但如果我允许绕过一个障碍物,我希望它像这样导航:

如果我允许绕过两个障碍物:


如何修改A*算法来实现这一点?是否有其他算法可以帮助我解决这个问题?

您可以复制图形中的节点,并为每个旁路生成实例。也就是说,您将创建几层图形,并从第0层开始(您已经绕过了0个障碍)。无论何时转到障碍物节点,都会切换到下一层(即,下一层的相邻障碍物节点有边,同一层的相邻非障碍物节点有边)。创建尽可能多的层,以绕过障碍物。如果您到达目标单元的任何实例(在任何层上),您就完成了。

对于您的最后一个示例,将有两条等长的最短路径