人工智能实验指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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*算法,即图的启发式搜索算法,比上述两个算法略有难度。

步骤五设计输出

动态演示格局的变化情况,即数码的移动情况。

步骤六编写代码,调试程序。

相关文档
最新文档