现在我有这个迷宫:
标有 S 和 E 的节点代表该迷宫的开始和结束。
橙色节点代表目前无法绕过的障碍。
我的目标是允许A *算法绕过x个障碍物并以最快的速度到达终点。
我的A *算法当前正在这样导航:
。
但是,如果我允许绕过1个障碍物,我希望它像这样导航:
如果我允许绕过2个障碍,就这样:
如何修改A *算法来实现此目的?也许有替代算法可以帮助我解决这个问题吗?
答案 0 :(得分:1)
您可以复制图形中的节点并为每个旁路次数生成实例。也就是说,您将创建图形的几层并从第0层开始(您已经绕过了0个障碍)。每当您转到障碍节点时,都将切换到下一层(即,到下一层的相邻障碍节点的边和到同一层的相邻非障碍节点的边)。根据需要创建尽可能多的图层。如果到达目标单元的任何实例(在任何层上),就完成了。