AIWork2报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用A*搜索算法来求解八数码问题(采用3种启发函数)
一.带有说明的源程序,见附件中的文件。

二.实验用输入数据,输出结果及分析
3种启发函数如下:
(1)f(n)=d(n)+0
d(n)代表搜索的深度,h(n)=0表示启发函数为零,该方法等效于宽度优先搜索。

(2)f(n)=d(n)+w(n)
d(n)定义同上,h(n)=w(n)为启发函数,w(n)等于当前状态每一个数字偏移目标状态的部数和。

(3)f(n)=d(n)+p(n)
d(n)定义同上,h(n)=w(n)为启发函数,p(n)等于当前状态每个数字要走到目标状态的位置需要的部数和。

试验数据及结果:
试验1.选择(1)的启发函数时:
选择(2)的启发函数时:
选择(3)的启发函数时:
试验2.选择(1)的启发函数时:(搜索状态要不小于18000个)
选择(2)的启发函数时:
选择(3)的启发函数时:
由以上输出结果可以看出,A*算法和它的启发函数h(n)的选择有很大关系,从试验结果来看,(1)的效率不如(2),(2)的效率不如(3),但它们在搜索状态数足够大时都可能找到最优解,只是每种方法用的时间长短不同。

可见,A*算法所选的启发函数很重要,一个好的启发函数有利于尽快找到最优解。

相关文档
最新文档