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

时间:2018-11-18 13:21:49

标签: algorithm graph-algorithm path-finding a-star maze

现在我有这个迷宫:

maze

标有 S E 的节点代表该迷宫的开始和结束。

橙色节点代表目前无法绕过的障碍。

我的目标是允许A *算法绕过x个障碍物并以最快的速度到达终点。

我的A *算法当前正在这样导航:

like this

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

this

如果我允许绕过2个障碍,就这样:

this

如何修改A *算法来实现此目的?也许有替代算法可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

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