人工智能实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能实验指导书
郑州大学信息工程学院
人工智能课程小组编制
人工智能实验指导书说明
人工智能是一门理论性和实践性都很强的学科,在其理论课中介绍了大量的人工智能基本原理、基本方法和基本技术,这些内容仅靠课堂讲解学生掌握起来觉得很抽象,无法和现实问题的求解联系在一起。因此,该课程的教学应贯彻理论与实践相结合的原则,为学生所学到的理论提供实践的场所,即对于书中的重点环节,通过实验课程中具体问题的求解达到深入了解并掌握的目的,更重要的目的是使学生达到学以致用的目的。
我们按照教材各大知识板块,选择其中的重点内容,设计了实验内容,而且将实验划分为两个层次:一是基本实验,主要是为了加深对教材内容的学习而设计的;二是拓展性实验,主要是针对有兴趣、学习程度较好的学生而设计的,让学生们真正认识到人工智能可以用于解决现实中很多具体问题,它在现实中有非常具体的应用,为进一步学习和实践奠定坚实的基础。
实验一归结原理实验
(6学时)
实验题目:
基于归结原理的自动定理证明
实验目的:
加深学生对归结原理进行定理证明过程的理解理解,掌握基于谓词逻辑的归结过程中子句变换过程、替换与合一算法即归结策略等重要环节,进一步了解实现机器自动定理证明的步骤。
实验要求:
对于任意一阶谓词逻辑描述的定理,给出基于归结原理的证明过程。如输入:A1 :(∀x)(P(x)→(Q(x) ∧R(x)))
A2 :(∀x)(P(x) ∧ S(x))
G :(∃x)(S(x)∧R(x))
要证明:G是A1和A2的逻辑结果。
要求给出如下过程:
1、求子句集:
(1) ¬P(x) ∨Q(x)
(2) ¬P(y) ∨R(y)
(3)P(a)
(4)S(a)
(5) ¬S(z) ∨ ¬ R(z) (¬G)
2、归结:
(6)R(a) [(2),(3), σ1={a/y}]
(7) ¬ R(a) [(4),(5), σ2 ={a/z}]
(8)Nil [(6),(7)]
实验步骤:
步骤一设计谓词公式的存储结构,即内部表示,注意对全称量词∀x和存在量词∃x可采用
其他符号代替。
步骤二变换子句集,可按以下过程变换:
1、消去蕴含词和等值词。
2、使否定词仅作用于原子公式。
3、适当改名使量词间不含同名指导变元。
4、消去存在量词。
5、消去全称量词。
6、化公式为合取范式。
7、适当改名,使子句间无同名变元。
8、消去合取词,以子句为元素组成一个集合S。
需要考虑子句、子句集的存储结构的设计。
步骤三选择并设计归结策略,常用的归结策略有:
删除策略、支持集策略、线性归结策略、输入归结策略、单元归结策略、锁归结策略、祖先过滤型策略等。建议分别采用并实现两种完备的归结策略,再自行设计并实现一种多种归结策略的结合型策略。
步骤四实现归结算法,并在其中实现合一算法,使用归结原理进行定理证明,要求采用归结反演过程,即:
1、先求出要证明的命题公式的否定式的子句集S;
2、然后对子句集S(一次或者多次)使用归结原理;
3、若在某一步推出了空子句,即推出了矛盾,则说明子句集S是不可满足的,从而原否定式也是不可满足的,进而说明原公式是永真的。
合一算法如下:
1、置k=0,Sk=S,σk =ε;
2、若Sk只含有一个谓词公式,则算法停止,σk就是最一般合一;
3、求Sk的差异集Dk;
4、若中存在元素xk和tk ,其中xk是变元,tk是项且xk不在tk中出现,则置Sk +1=Sk{tk/ xk} σk =ε然后转Step2;
5、算法停止,S的最一般合一不存在。
步骤五设计输出
动态演示归结过程,可以以归结树的形式给出。
步骤六编写代码,调试程序。
实验二 图搜索技术实验
(4学时)
实验题目:
基于图搜索技术的八数码问题求解
实验目的:
加深对图搜索技术的理解,尤其是对启发式搜索的基本原理的理解,使学生能够通过编程实现图搜索的基本方法和启发式搜索算法,并能够解决一些应用问题。
实验要求:
对任意的八数码问题,给出求解结果。例如:对于如下具体八数码问题:
通过设计启发函数,编程实现求解过程,如果问题有解,给出数码移动过程,否则,报告问
题无解(可以
通过限定时间阈值或步骤阈值)。
实
验步骤:
步骤
一.设计八数码
格局的隐式存储的节点结构: 将表示棋
局的状态用如下向量表示: A =(X0,X1 ,X2 ,X3 ,X4 ,X5 , X6 , X7 ,X8) 约束条件: Xi ∈{0,1 ,2,3,4,5,6,7,8} Xi ≠Xj ,当i ≠j 时。
初始状态: S0 =(0,1,3,2,4,8,6,6,5) 目标状态: Sg =(0,1,2,3,3,5,6,7,8) 步骤二. 采用广度优先、深度优先搜索算法实现搜索 步骤三. 设计启发函数,启发函数可参考如下定义方法: (1)启发函数h(n)定义为:h(n)=w(n)
其中,w(n)代表n 的格局域目标节点格局相比,位置不符的将牌数目。
(2)估计函数f(n)定义为:f(n)=d(n)+w(n)
其中,d(n)表示节点深度,w(n)意义与前同。
(3)对w(n)进一步改进:令h(n)=P(n)
其中,p(n)是n格局中每个将牌离家(在sg中的位置)的最短距离。
(4)另一种改进:h(n)=p(n)+3s(n)
其中,s(n)是这样计算的:沿着周围哪些非中心方格上依顺时针方向检查n格局上的每一个将牌,如果其后紧跟着的将牌正好是目标格局中该将牌的后续者,则该将牌得0分,否则得2分;在正中方格上有将牌得1分,否则得0分
步骤四.选择并设计搜索算法
(1)使用全局择优的树式搜索算法,即启发式的宽度优先搜索算法,但要考虑去掉已生成的格局。
(2)使用局部择优的树式搜索算法,即启发式的深度优先搜索算法,但要考虑去掉已生成的格局。
(3)使用A算法或A*算法,即图的启发式搜索算法,比上述两个算法略有难度。
步骤五设计输出
动态演示格局的变化情况,即数码的移动情况。
步骤六编写代码,调试程序。