yanyuLinxi / A-Star_15

A*算法求解15数码问题

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A-Star_15

A*算法求解15数码问题

Begin:

读入初始状态和目标状态,计算初始状态评价值f
初始化open表和closed表,初始状态放入open表
If(open表为空)
查找失败;
Else
① 在open表中找到评价值最小的节点,作为当前结点,并放入closed表中
② 判断当前结点状态和目标状态是否一致,若一致,跳出循环;否则跳转到③
③ 对当前结点,分别按照上、下、左、右方向移动空格位置来扩展新的状态结点,并计算新扩展结点的评价值f并记录其父节点
④ 对于新扩展的状态结点,进行如下操作:
If 新节点既不在open表中,也不在closed表中
将新节点添加到open表
Else if 新节点在open表中
用新节点替换旧节点 IF 新节点的f值小于旧节点
Else if 新节点在closed表中
用新节点替换旧节点 IF 新节点的f值小于旧节点
⑤ 把当前结点从open表中移除
End

About

A*算法求解15数码问题