Algorithm 可变环境下的路径搜索算法
我在调整A*算法以适应不断变化的环境方面遇到了困难。作为一个最小的例子,考虑这类流氓地图:Algorithm 可变环境下的路径搜索算法,algorithm,path-finding,a-star,Algorithm,Path Finding,A Star,我在调整A*算法以适应不断变化的环境方面遇到了困难。作为一个最小的例子,考虑这类流氓地图: ###### #! # ### # #S # ##+### ##F### ###### 目标是从S到F,但要做到这一点,玩家必须踩下打开门。我遇到的问题是,在A*中,一旦访问了一个网格点,它就会“关闭”,并且无法重新进入。如何修改算法以解决此难题?您可以运行*两次: 首先找到开关(!)的最短路径,该开关的门类似于 墙 然后找到从开关到门的最短路径 是空白瓷砖 最短路径将是这两条路径的组合。在您
######
#! #
### #
#S #
##+###
##F###
######
目标是从S
到F
,但要做到这一点,玩家必须踩下代码>打开门。我遇到的问题是,在A*中,一旦访问了一个网格点,它就会“关闭”,并且无法重新进入。如何修改算法以解决此难题?您可以运行*两次:
首先找到开关(!
)的最短路径,该开关的门类似于
墙
然后找到从开关到门的最短路径
是空白瓷砖
最短路径将是这两条路径的组合。在您的问题中,在A*中,当您访问一个点(x,y线)时,您不会再次访问同一点
原因是在您的问题中,状态是网格中的位置,每个门的状态(打开或关闭)。
在开始的时候,在你的例子中,初始状态是(3,1,{false})。(false表示门已关闭)
当你到达'时位置,新状态将为(1,1,{true}),因此现在当你到达门时,你将通过门。玩家是否知道按下该代码>打开门+
?因为如果有多个开关没有指示它们打开了哪扇门,那么A*假设的完整信息将失败,算法无法解决问题。(此外,香草A*在处理迷宫方面相当糟糕。)