具有自动寻路功能的推箱子算法
使用A 寻路算法 效果并非最优 但是希望可以给大家一些启发
有问题或建议欢迎站内联系 或电邮chenc9410@gmail com
希望对大家学习人工智能或者C#有帮助
附:算法简介
忽略了小人的移动状态 以箱子的位置作为状态变量 在大多数情况下 通过仅仅移动小人可以达到的地图(状态)我们认为是相同的
当然 有时小人的状态不同但是箱子的位置相同时 也可能属于两种不同的状态 因此我规定了有效连通域的概念:在不移动箱子的情况下小人可以达到的位置都属于这个有效连通域 我们通过宽度优先搜索来处理一个原始的地图 来得到一个标记了有效连通域的地图(这两个地图绑定在一起)
我的方法本质上属于A 方法 评价函数的h n 指的是“不在位”的箱子个数(这个和“八数码”问题类似) 当然 由于有6种对应关系 我们需要计算然后取出最小的值作为h n
我们通过检查不在位的箱子个数是否为0来判断是否移动成功 如果成功我们通过记录在每一个状态中的它的前一个状态来获得正确的搜索路线 然后可以对每两个相邻的状态分别作为宽度优先搜索的起点和终点来获得小人的具体路线 ">具有自动寻路功能的推箱子算法
使用A 寻路算法 效果并非最优 但是希望可以给大家一些启发
有问题或建议欢迎站内联系 或电邮chenc9410@gmail com
希望对大家学习人工智能或者C#有帮助
附:算法简介
忽略了小人的移动 [更多]
1