我正在写一个电脑自己寻找路径推箱子的游戏
递归当然少不了
但我发现一个使不少地图下效率提高很多的方法:
把推箱子改成拉箱子
从目标位置向箱子起始位置走
再仔细看一下推箱子游戏的地图你会发现很多情况下,目的位置是连续的,
而且靠着墙壁,也就是说如果拉箱子的话,只有相比之下很少的几种选择
你知道,在递归情况下,减少情况会很大程度的提高算法效率,
这正是剪枝、A*等算法得以推广的原因
我们在寻找算法时总要增加约束、减少遍历情况,虽然这种“倒行逆施”
并未增加什么约束,但使情况减少了很多,对于不少的图,这种效率的提高是
质的
推箱子亦有类似之处,不少地图下,起始状态,也就是箱子可移动的位置
很多,但终态却很少,
换个角度,有时候问题会变得很简单