人工智能课程报告——推箱子小游戏的人工智能寻路学院:姓名:学号:班级:指导教师:人工智能课程报告一.简介推箱子游戏简介经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力
在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务
胜利条件就是把所有的箱子都推到目的地
本程序的目标就是利用启发式搜索实现电脑自动推箱子
推箱子游戏地图程序采用手机中的推箱子小游戏的程序,地图总共75张,难度由易到难,搜寻路径的计算复杂度也会越来越高
每一张地图都以文本文件的形式存储起来
地图展示:(第1关)(第35关)(第56关)(第75关)保存到文本文件中的地图代码:推箱子中人的行为人只可以推箱子,不可以拉,而且一次只能推动一个
即使是处于目的位置的箱子也可以推走
二.基本概念启发式搜索考虑一个普通的图搜索问题:给出初始状态(节点s)和目标状态(节点t,可以不止一个)以及状态的产生规则,求从s到t的一条路经
搜索过程可描述如下:1待展开的节点集合(OPEN表)为{s},已展开的节点集合(CLOSED表)为{},节点s的层深为g(s)=0
2每次从OPEN表中取出一个节点n,根据规则扩展产生一组节点mi,然后把n放入CLOSED表中
节点mi可能属于下列三种情况之一:(1)新的节点,则把mi的源标记为n,层深g(mi)=g(n)+1,并放入OPEN表中
(2)已在OPEN表中存在的节点,并且层深g(mi)>g(n)+1,说明从s到mi并且经由n的路径要比先前搜索得到的路径要短
因此,把mi的源改记为n,层深g(mi)=g(n)+1,仍放入OPEN表中
(3)已在CLOSED表中存在的节点,并且层深g(mi)>g(n)+1
同理,把mi的源改记为n,层深g(mi)=