实验二:使用Prolog的一阶逻辑推理实验

合集下载

prolog实验报告小结

prolog实验报告小结

prolog实验报告小结

Prolog实验报告小结

在本次实验中,我们使用了Prolog编程语言来解决一系列逻辑推理和知识表示

的问题。Prolog是一种基于逻辑的编程语言,它使用逻辑规则和事实来进行推

理和查询。在本次实验中,我们学习了如何使用Prolog来表示知识,并使用它

来解决一些经典的逻辑问题。

首先,我们学习了如何使用Prolog来表示事实和规则。通过使用事实和规则,

我们可以建立一个知识库,其中包含了我们关于世界的知识。然后,我们可以

使用这些知识来进行逻辑推理,找出答案或解决问题。

在实验中,我们还学习了如何使用Prolog来进行逻辑查询。通过编写查询语句,我们可以向Prolog系统询问特定的问题,然后系统会使用已有的知识库来进行

推理,并给出答案。这种方式非常适合于解决逻辑问题,比如逻辑谜题或者逻

辑推理问题。

此外,我们还学习了如何使用Prolog来实现递归。递归是一种非常重要的编程

技术,它可以帮助我们处理一些复杂的问题,比如树形结构或者列表操作。在

本次实验中,我们使用Prolog来实现了一些递归算法,比如计算阶乘或者斐波

那契数列。

总的来说,本次实验让我们对Prolog编程语言有了更深入的了解。通过实际操作,我们学会了如何使用Prolog来表示知识、进行逻辑推理和解决问题。Prolog是一种非常强大的编程语言,它可以帮助我们解决许多复杂的逻辑问题,而且在人工智能领域也有着广泛的应用。希望通过本次实验,同学们都能对Prolog有更深入的了解,并能够在以后的学习和工作中运用到这种强大的编程

逻辑型程序设计语言PROLOG详细教程

逻辑型程序设计语言PROLOG详细教程

逻辑型程序设计语⾔PROLOG详细教程

逻辑型程序设计语⾔PROLOG教程

2.3. 1逻辑型程序设计语⾔PROLOG

PROLOG的语句

PROLOG语⾔只有三种语句,分别称为事实、规则和问题。

1.事实(fact)

格式: <谓词名>(<项表>).

功能⼀般表⽰对象的性质或关系。

其中谓词名是以⼩写英⽂字母打头的字母、数字、下划线等组成的字符串,项表是以逗号隔开的项序列。

例如:

student(john).

like( mary ,music).

表⽰“约翰是学⽣”和“玛丽喜欢⾳乐”。

2. 规则(rule)

格式:<谓词名>(<项表>):-<谓词名>(<项表>){,<谓词名>(<项表>)}.

功能: ⼀般表⽰对象间的因果关系、蕴含关系或对应关系。

其中“:-”号表⽰“if”(也可以直接写为if),其左部的谓词是规则的结论(亦称为头),右部的谓词是规则的前提(亦称为体),{}表⽰零次或多次重复,逗号表⽰and(逻辑与),即规则的形式是⼀个逻辑蕴含式。

例如:

bird(X):-animal(X),has(X,feather).

grandfather(X,Y):-father(X,Z),father(Z,Y).

第⼀条规则表⽰“如果X是动物,并且X有⽻⽑,则X是鸟”;第⼆条规则就表⽰“X 是Y的祖⽗,如果存在Z,X是Z的⽗亲并且Z⼜是Y的⽗亲”。

3.问题(question)

格式: ?-<谓词名>(<项表>){,<谓词名>(<项表>)}.

第2章 逻辑程序设计语言PROLOG(蓝)

第2章 逻辑程序设计语言PROLOG(蓝)

考虑下面的各组谓词是否可匹配合一? pre1(″ob1″,″ob2″,Z) pre1(″ob1″, ″ob3″,Y) pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X, ″ob3″) pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X,Y)
3. 回溯 所谓回溯, 就是在程序运行期间, 当某一个子 目标不能满足(即谓词匹配失败)时,控制就返回到 前一个已经满足的子目标(如果存在的话), 并撤消 其有关变量的约束值, 然后再使其重新满足。 成 功后, 再继续满足原子目标。如果失败的子目标前 再无子目标, 则控制就返回到该子目标的上一级目 标(即该子目标谓词所在规则的头部)使它重新匹配。 回溯也是PROLOG的一个重要机制。
功能 一般表示对象间的因果关系、蕴含关系或对应 关系。
3. 问题(question) 格式 ?-〈谓词名〉(〈项表〉){,〈谓词名〉 (〈项表〉)}. ? -student(john).
? -like(mary,X). 问题就是Horn子句逻辑中的目标子句,只是 形式略有不同 功能 问题表示用户的询问, 它就是程序运行的 目标。 问题可以与规则及事实一同给出,也可以在 程序运行时临时给出。
3) 表 表的一般形式
[x1, x2, …, xn]
相当于规则头部被消去,目标子句变成
?-likes(X,reading),likes(X,music).

prolog 逻辑程序设计语言Prolog教程

prolog 逻辑程序设计语言Prolog教程

5.2.2 程序结构
(3)表域 表 域 是 一 种 特 殊 的 复 合 对 象 , 如 : student(zhangsan,[82,75,90,92]) 就 表 示 某一位学生的某学期的学习成绩,其中 [82,75,90,92]就是一个表。 要在Turbo Prolog中说明一个表,需在程序的3 个部分加以说明:表的域说明段定义表的域类型, 谓词说明段定义表的谓词,表本身必须在程序的 某个地方(即子句段)出现。 表的域说明是通过在表元素的域名后面加上一个 星号(*)来实现的,例如:
5.2.1 数据结构

常量: 常量是数据结构的基本组成部分,用来对特定对象及关
系的命名。
在Prolog语言中,合法的常量有: (1)整数,一个纯数字串,例182 000,581 202。 (2)原子,分为两种: 1)标识符:以小写字母开头的,包含字母、数字、下划线的串, 例aBcl2,is_ 2)符号: Prolog语言规定的符号集的非空序列,例?、-、=。 若原子用单引号(‘’)括住,则可含有任何字符。 (3)字符集: AB…Z; ab…z; 012…9; ?,―,#,$,,&,’,(,),=,_,~,^,\,|,[,], ―,‖,-,@,+,;,*,<,>
5.2.1 数据结构

结构 在Prolog语言中,常用的结构形式有: (1)函子(分量1,分量2,……,分量n)。如上例Mary的住 所。 (2)表。表是Prolog语言中最常用的数据结构,它由一些有 序分量组成,其长度可任意。有序即表示表中的分量次序是 有意义的。同样,表的分量可以是原子、结构等,当然也可 以是表。 例如含有3个分量[a,b,c]的表可写成 [a,b,c]如用函 数的方式可写成 · · (a (b · (c[ ])))。其中符号“· ” 是表的函子.也就是说,表是以“· ”为函子的特殊结构。

Horn子句与Prolog语言简介

Horn子句与Prolog语言简介
Horn子句与Prolog语言简介
• 一阶逻辑公式 –优点:表示方法具有表达力强,表示方便等优点。 –缺点: • 不够规范化 • 不够简洁 –从而不利于其在计算机中的使用与处理,因此需要 对这种形式做规范化,从而形成一阶逻辑公式的: • 子句形式 • Horn子句形式。
• 定义6.4(子句): –具有如下形式的公式被称为子句: A1 ∧ A2 ∧ … ∧ AK → AK+1 ∨ AK+2 ∨ … ∨ An –也可以将其简写为: AK+1 ,AK+2 ,… ,An :- A1 ,A2 ,… ,AK –其中Ai为原子公式。在该子句中,A1 ,A2 ,… , AK被成为前件,AK+1 ,AK+2 ,… ,An被称为后件。 在前件和后件中的 ‘,’分别表示不同的逻辑运算 符。
–由于Horn子句的后件是单一的,因此利用Horn子句 做推理可以得到确定的推理结论。 –不同的Horn子句可以有完全相同的一组前件。因此, 同样一组前件利用不同的Horn子句可以推理得到多 个不同的结论。
• 几种不同形式的Horn子句
断言:没有前件,只有后件的Horn子句。例如: An :一个断言表明该结论是永远成立的。
• 子句表示形式单一,非常适合于在计算机中使用,也 易于作知识推理。但利用子句作推理会引起推理结论 的不确定性,为解决此问题,瑞士数学家Horn将其改 造成为一种更简单的形式,即Horn子句。 • 定义6.5( Horn子句): –具有如下形式的公式被称为Horn子句: An :- A1 ,A2 ,… ,AK

基于问题解决的Prolog教学类型与过程

基于问题解决的Prolog教学类型与过程

200 5.06
25
课程与教材
观点与实践
续表
阶 段 要思考的问题
实施方案
对每个需要的关系: 如何用英语描述它们? 如何将描述转换成 Prolog 语句? 根据方案的要求,它们有效吗?
回顾求解 过程
结果正确吗? 求解方法有哪些用处? 程序中每个关系的用处如何?
描述事实之间的依赖关系;“目标”则是求解的问题。 以下是一个简单的例子:
likes(xiaofang,badminton)./* 以下 2 行是一组 事实 * /
likes(xiaoming,pingpong). friend(X,xiaohua):-likes(X,pingpong)./* 本行 是 规 则 ,: - 的 左 、右 分 别 是 结 论 和 条 件 * / ?-friend(X,xiaohua). /* 本行是目标 */ 该程序询问 x i a o h u a 的朋友是谁,显然问题的 答案应该是 X = x i a o m i n g 。
中小学信息技术教育
24
200 5.06
观点与实践
课程与教材
序或其他任务的问题。例如,要求计算机在屏幕上画 一座房子,或者打印某一年份的日历,或者要求计算 机与人对弈。与该类问题对应的 P r o l o g 目标语句可 以是:
draw_house print_calendar(1986) play_chess 上述目标语句通常是一个程序名,用来描述一 条规则。规则体给出了执行该程序的步骤。实现型问 题主要与控制计算机的行为有关, 而与关系的真假无 关, 也称之为“非逻辑型”问题。

prolog实验报告

prolog实验报告

华北电力大学

实验报告

|

|

实验名称PROLOG语言编程练习及图搜索问题求解

课程名称人工智能及应用

专业班级:学生姓名:

学号:成绩:

指导教师:实验日期:2014年5月

(实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm, 右2.1cm;字体:宋体小四号,1.25倍行距。)

验证性、综合性实验报告应含的主要内容:

一、实验目的及要求

二、所用仪器、设备

三、实验原理

四、实验方法与步骤

五、实验结果与数据处理

六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)

七、所附实验输出的结果或数据

设计性实验报告应含的主要内容:

一、设计要求

二、选择的方案

三、所用仪器、设备

四、实验方法与步骤

五、实验结果与数据处理

六、结论(依据“设计要求”)

七、所附实验输出的结果或数据

reverse_writelist([H|T]):-reverse_writelist(T),write(H),nl.

empty_stack([]).

stack(Top,Stack,[Top|Stack]).

reverse_print_stack(Stack):-empty_stack(Stack).

reverse_print_stack(Stack):-stack(E,Rest,Stack),reverse_print_stack(Rest),write(E),nl.

member(X,[X|T]).

member(X,[_|T]):-member(X,T).

member_stack(Element,Stack):-member(Element,Stack).

Prolog逻辑编程语言建模实践案例分享

Prolog逻辑编程语言建模实践案例分享

Prolog逻辑编程语言建模实践案例分

在计算机科学领域中,逻辑编程语言被广泛应用于问题求

解和知识表达方面。Prolog(Programming in Logic)作为其中

的一种重要逻辑编程语言,具有非常强大的建模能力。本文将通过分享几个Prolog建模实践案例,以展示该语言在解决实

际问题时的优势。

1. 汽车诊断系统

假设我们要设计一个汽车诊断系统,可以根据用户输入的

车辆异常症状来判断可能的故障原因,并给出相应的修复建议。利用Prolog可以轻松地建立一个知识库,其中包含各种不同

故障及其症状的关联。例如,如果发动机发出异常声音并且油耗增加,系统可以根据这些输入自动诊断可能是排气系统问题,并给出相应的修复建议。通过使用Prolog的模式匹配和逻辑

推理机制,我们可以快速有效地实现这样一个汽车诊断系统。

2. 旅行规划系统

假如我们要设计一个旅行规划系统,用户可以输入自己的

出发地和目的地,系统可以自动帮助用户规划最佳的旅行路线。利用Prolog可以很方便地建立一个地理知识库,其中包含各

个城市之间的距离、交通方式和时间等信息。通过在这个知识库上进行逻辑推理,系统可以根据用户提供的起始点和目标点,找到最短的路线,并提供相应的交通工具和时间表。这样的旅行规划系统可以帮助用户减少在规划旅行时的繁琐工作,提供更好的旅行体验。

3. 学生选课系统

学生选课是每个大学校园中重要的事务之一。利用Prolog 可以轻松地建立一个学生选课系统,用于帮助学生选择合适的课程。系统可以根据学生的兴趣、先修课程要求和当前可选课程等信息,提供最佳的选课建议。通过在Prolog知识库中存储学生的个人信息、课程信息和选修规则等数据,系统可以利用Prolog的逻辑推理功能,从中推导出最佳的选课方案。这样的学生选课系统将大大减轻学生选课过程中的困扰,提供更加个性化的课程选择。

实验二:使用Prolog的一阶逻辑推理实验

实验二:使用Prolog的一阶逻辑推理实验

实验二:使用Prolog的一阶逻辑推理实验

班级;智能1401

姓名:蒙寿伟

学号:201408070120

一.实验目的

1.学会使用Prolog语言;

2.用Prolog语言巩固一阶逻辑知识;

3.能够使用prolog语言实现一阶逻辑的证明;

二、实验的硬件、软件平台

硬件:计算机

软件:操作系统:WINDOWS 10

应用软件:Prolog

三、实验内容及步骤

熟悉prolog语言的使用并实现对于一阶逻辑推理的证明

实验步骤:

1:对于a,b,c,d四种输入情况,验证|?- p(a).的真假;

a.p(b). p(a) :- p(b). p(a) :- p(c)

推理分析:

事实:p(b)为真.

推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.

运行结果:

b. p(c). p(a) :- p(b). p(a) :- p(c).

推理分析:

事实:p(c)为真.

推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.

运行结果:

c. p(b). p(a) :- p(b) ,p(c).

推理分析:

事实:p(b)为真.

推理:由p(b)为真且p(c)为真可以推出p(a)为真.

结论:p(a)为假.因为p(b)未知.

d. p(c). p(a):- p(b) ; p(c).

推理分析:

事实:p(b)为真.

推理:由p(b)为真或p(c)为真可以推出p(a)为真.

结论:p(a)为真.

2.验证

?-friend(john,Y).

likes(bell,sports).

tensorlog框架 知识推理 -回复

tensorlog框架 知识推理 -回复

tensorlog框架知识推理-回复

什么是[tensorlog框架知识推理]?

TensorLog是一个基于逻辑编程语言Prolog的扩展框架,用于知识推理。它的灵感来源于TensorFlow,这是一个流行的深度学习框架。TensorLog 的目标是将逻辑编程和深度学习结合起来,以提高对复杂领域的推理能力。

TensorLog的核心特征是支持概率逻辑编程(Probabilistic Logic Programming,PLP),这是一种结合了概率论和逻辑编程的推理模型。与传统的逻辑编程语言不同,TensorLog允许推理规则和事实被赋予不同的概率值,从而能够处理不确定性和不完整信息。

TensorLog中的知识表示为一组逻辑谓词,每个谓词由一组规则和事实组成。规则定义了推理的逻辑关系,事实是已知的和不可改变的知识。TensorLog中的推理过程是通过对知识图谱进行搜索和推理来实现的。

TensorLog框架的工作流程如下:

1. 定义谓词和规则:首先,我们需要定义谓词和规则来表示所需的推理关系。例如,我们可以定义一个谓词“父亲”,并用规则“如果X是Y的父亲,则Y是X的孩子”表示父亲和孩子之间的关系。

2. 定义事实:然后,我们定义一组已知的事实,这些事实构成了我们的知识库。例如,我们可以定义事实“约翰是亚当的父亲”和“亚当是比尔的父亲”。

3. 运行推理模型:使用定义的谓词、规则和事实,TensorLog框架可以自动推理出新的事实。例如,在上面的例子中,TensorLog可以根据规则“如果X是Y的父亲,则Y是X的孩子”,推理出“亚当是约翰的孩子”和“比尔是亚当的孩子”。

《人工智能》实验二 图搜索问题求解

《人工智能》实验二 图搜索问题求解

淮海工学院计算工程学院实验报告书

课程名:《人工智能》

题目:实验二:图搜索问题求解

班级:D软件081

学号:510856106

姓名:汪晓骏

评语:

成绩:指导教师:

批阅时间:年月日

实验二图搜索问题求解

实验目的和要求

1、熟悉Prolog程序编写环境。

2、掌握图搜索问题求解的基本方式。

3、完成实验,并自己编写程序。

实验重点

1、自己编写程序。

2、掌握头搜索实现方法。

实验难点

自己编写程序。

实验环境

Windows XP prolog

实验学时

3学时,必做实验

实验内容及实验步骤:

实验内容:有一农夫带一只狼、一只羊和一筐菜欲从河的左岸乘船到右岸,但受下列条件限制:

1)船太小,农夫每次只能带一样东西过河。

2)如果没有农夫看管,则狼要吃羊,样要吃菜。

请设计一个国和方案,使得农夫、狼、羊、菜都能不受损失地过河。画出相应的状态空间图。

提示:

1)用四元组(农夫、狼、羊、菜)表示状态,其中每个元素都可为0或1,用0表示在左岸,用以表示在右岸。

2)把每次过河的一种安排作为一个算符,每次过河都必须有农夫,因为只有他可以划船。

实验步骤:

DOMAINS

LOC = east ; west /*定义河的两岸*/

STA TE = state(LOC,LOC,LOC,LOC) /*定义一个状态表示河两岸的情况*/

PATH = STATE* /*状态改变的列表*/

PREDICATES

go(STATE,STATE) /* 开始状态*/

path(STATE,STATE,PATH,PATH) /* 记录过河路径*/

move(STATE,STATE) /* 移动一个对象*/

prolog语法

prolog语法

prolog语法

Prolog(Programming in Logic)是一种基于逻辑的编程语言,用于表达知识和实现逻辑推理。Prolog 的语法相对简单,主要由事实(Facts)、规则(Rules)、查询(Queries)和目标(Goals)组成。以下是一些 Prolog 的基本语法元素:

1. 事实(Facts):

事实是关于某个关系的陈述,形式为:

predicate(term1, term2, ..., termN).

例如:

father(john, jim).

female(mary).

2. 规则(Rules):

规则定义了一种逻辑关系,形式为:

head :- body.

其中,head 是结论,而 body 是规则的前提。例如:

parent(X, Y) :- father(X, Y).

parent(X, Y) :- mother(X, Y).

3. 查询(Queries):

查询是用户向 Prolog 提出的问题,形式为:

例如:

- parent(john, jim).

4. 变量(Variables):

变量以大写字母开头,用于表示可替代的元素。例如:

father(X, Y) :- parent(X, Y), male(X).

5. 列表(Lists):

列表是由方括号括起来的元素序列,例如:

numbers([1, 2, 3, 4, 5]).

6. 剪枝(Cut):

剪枝操作通过 ! 符号表示,用于阻止 Prolog 回溯到规则的先前选择点。

maximum(X, Y, X) :- X >= Y, !.

Prolog语言的开发与研究

Prolog语言的开发与研究
< 量 > :< 子 > 常 := 原 k整 数 > < 子 > :< 识 性 原 子 >< 符 串 原 子 >< 殊 原 子 > 原 := 标 I 字 l特
谓词 的组 合 。其句 型 为 : 。 2 一, ? , p p 。其 中P ,2… , 为 l , P均 P 谓词 。 问题 的含义 表示 : P ^… ^p为真 吗 ? P^ :
如动态关 系数 据库 、 理 自动证 明 、 能 问题求解 、 定 智 符号 方 程求 解、 规则 生 成 、 算机 辅 助设 计 、 计 编译 程 序 的构 造 、 自然 语 言理
解 、 家系 统和 专家 系统工 具 等方 面 , 专 它都有 广 泛 的应用 。
1 P o0 语 法及 数 据 结构 rlg
明 了它的 程序 结构 。 关 键 词 : 阶 谓 词 ;rlg 言 ; o 一 P0o语 Hr n
中图分 类 号 :P 1 T 32
文 献标 识码 : A
文章 编号 :6 2 7 0 (0 8 0 — 0 5 0 17 — 8 0 2 0 )9 0 4 — 2
0 引 言
Poo 语 言 是 Pormmigi oi 的 缩 写 . 它 是 以 一 阶 谓 rl g rga n L gc n
构 与 事 实 或 规 则 相 同 。 以 是 一 个 简 单 的 谓 词 , 可 以 是 多 个 可 也

用OwlReady2实现智能人机对话系统

用OwlReady2实现智能人机对话系统

一阶逻辑DLs自然语言

A()∶A“地球”是行星

R(,)(,)∶R“月亮”是“地球”的卫星

“地球”围绕恒星

“地球”只围绕恒星

行星是一种天体

1概述

研究的最终目的是建立一个具备逻辑推理能力和知

识存储的人机对话系统。现代计算机语言已经可以实现

一阶逻辑推理,比如Prolog,CLIPS,Python实现的

PyKE,还有基于描述逻辑和语义网络的推理引擎[1]。不

过使用它们,需要学会一种计算机语言和现代逻辑学基

本原理。有一些网络机器人[2,3]能够实现自然语言交互,

但是不具有逻辑推理能力。这些网络机器人主要依赖基

于统计学的自然语言处理方法,对语法要求不大,但问

答的逻辑性不强。人们自然会想到设计一套解析程序,

将自然语言翻译成计算机语言,然后交给软件进行推

理。这样的解析程序和软件构成的系统具备了两种功

能:既能用自然语言交流,又能进行逻辑推理。系统既

可以进行日常式对话,也能构建各种领域的专家系统。

用OwlReady2(Python对OWL的封装)[4]实现自然

语言人机交互。会写一个解析器,将自然语言翻译成

OwlReady2对象,然后交给一个对话流程,在这个流程

中,读取并处理这些对象。每一次交互,程序至少应该

完成下面几个任务:

(1)解析陈述句,并作为知识存储,如果包含未知

信息,应该反问用户。还允许检验与原有知识的一致性。

(2)解析一般疑问句,判断真假。同样的,应该反

问用户未定义词语。

(3)解析特殊疑问句,枚举疑问词可选的对象,同

时排除平凡的答案。

2DLs、OWL与OWLOready2

DLs一般被认为是一阶逻辑的子集,尽管术语、

逻辑编程语言

逻辑编程语言
由于目标和规则的左部都限定为原子公式的合取,而这些原子公式又可激活多条规则(这些规则间隐含或关 系)。所以,Prolog演绎推理过程建立的与或图具有与、或关系呈现逐层交替的局面。随着与或图的向下扩展, 最终会形成(搜索到)一致解图,从而演绎推理成功;否则推理失败。
把目标中包含的各原子公式视为子目标,每当由子目标激活的规则插入与或图时,规则左部的各原子公式又 成为新的子目标,再用于激活新的规则;如此,随着规则的激活和新子目标的产生,与或图逐步扩展,直到子目 标直接与事实元素(原子公式)匹配为止。
Prolog程序中没有if、case、for这样的控制流程语句。通常情况下,程序员不需要了解程序的运行过程, 只需要注重程序的描述是否全面。不过Prolog也提供了一些控制程序流程的方法,这些方法和其他语言中的方法 有很大区别。
谢谢观看
特点
Prolog语言的语法结构相当简单,但描述能力很强。例如,当事实和规则描述的是某一学科公理。那么问题 就是待证的命题;当事实和规则描述的是某些数据和关系,那么问题就是数据查询语句;当事实和规则描述的是 某些状态变化规律,那么问题就是目标状态。因此,Prolog语言是一种智能型程序设计语言。
Prolog程序没有特定的运行顺序,程序运行顺序完全按照数理逻辑推导(消解法)的方式进行.而不是由编程 序的人决定。Prolog是一种描述型语言,用特定的方法描述一个问题,然后由计算机自动找到这个问题的答案。 举个极端的例子:当建立好事实和规则后,只需要把某个问题告诉它,它就会自动查找答案。

人工智能实验指导书

人工智能实验指导书

人工智能及应用

前言

《人工智能及应用》课程实验的目的是为了配合课堂教学,进一步强化对人工制能的不同实现途径的理解。实验的任务是要结合相关的人工智能语言平台(PROLOG语言),熟练掌握和深入理解课堂教学内容。帮助学生更好地学习本课程,理解和掌握人工智能算法设计与实现所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计等各环节的训练,使学生深刻理解、牢固掌握所用到的一些原理与技术。实验中的内容和教科书的内容是密切相关的,在反复实践的过程中才能掌握。使学生在掌握抽象人工智能理论的基础之上学到更多可操作性很强的智能算法技术及实践经验。

目录

实验一 Prolog语言及逻辑程序设计 (1)

实验二搜索策略实验 (3)

实验三专家系统实验 (6)

实验一 Prolog语言及逻辑程序设计

一、实验目的

加深学生对逻辑程序运行机理的理解,使学生掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。

1、熟悉PROLOG语言编程环境的使用;

2、了解PROLOG语言中常量、变量的表示方法;

3、了解利用PROLOG进行事实库、规则库的编写方法。

二、实验环境

计算机,Visual PROLOG教学软件。

三、预习要求

实验前应阅读实验指导书,了解实验目的、预习PROLOG语言的相关知识。

四、实验内容

1、学习使用Visual PROLOG,包括进入PROLOG主程序、编辑源程序、修改环境目录、退出等基本操作。

2、在Visual prolog集成环境下调试运行简单的Visual PROLOG程序。

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

实验二:使用Prolog的一阶逻辑推理实验

班级;智能1401

姓名:蒙寿伟

学号:201408070120

一.实验目的

1.学会使用Prolog语言;

2.用Prolog语言巩固一阶逻辑知识;

3.能够使用prolog语言实现一阶逻辑的证明;

二、实验的硬件、软件平台

硬件:计算机

软件:操作系统:WINDOWS 10

应用软件:Prolog

三、实验内容及步骤

熟悉prolog语言的使用并实现对于一阶逻辑推理的证明

实验步骤:

1:对于a,b,c,d四种输入情况,验证|?- p(a).的真假;

a.p(b). p(a) :- p(b). p(a) :- p(c)

推理分析:

事实:p(b)为真.

推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.

运行结果:

b. p(c). p(a) :- p(b). p(a) :- p(c).

推理分析:

事实:p(c)为真.

推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.

运行结果:

c. p(b). p(a) :- p(b) ,p(c).

推理分析:

事实:p(b)为真.

推理:由p(b)为真且p(c)为真可以推出p(a)为真.

结论:p(a)为假.因为p(b)未知.

d. p(c). p(a):- p(b) ; p(c).

推理分析:

事实:p(b)为真.

推理:由p(b)为真或p(c)为真可以推出p(a)为真.

结论:p(a)为真.

2.验证

?-friend(john,Y).

likes(bell,sports).

likes(mary,music).

likes(mary,sports).

likes(jane ,smith).

friend(john,X):-likes(X,reading),likes(X,music).

friend(john,X):-likes(X,sports),likes(X,music).

推理分析:

1.如果X喜欢音乐,而且喜欢阅读,那么X是john的朋友。

2.如果X喜欢音乐,而且喜欢运动,那么X是john的朋友。

相关事实:mary喜欢音乐也喜欢运动。

结论:mary是john的朋友。

运行结果:

3.验证

likes(bill,X)

likes(ellen,tennis).

likes(john,football).

likes(tom,baseball).

likes(eric,swimming).

likes(mark,tennis).

likes(bill,X) if likes(tom,X).

推理分析:

如果tom喜欢X,则bill喜欢X。相关事实:tom喜欢baseball

结论:bill喜欢baseball

运行结果:

4.构建与,或,非,异或表达,并验证。

代码:

and(X,Y) :- X,Y.

or(X,Y) :- X;Y.

no(X) :- not(X).

xor(X,Y) :- X\==Y.

推理分析: 推理:X,Y都为真时and(X,Y)为真。

X,Y有一个为真时or(X,Y)为真。X为真时no(X)为真。 X不等于Y时,异或xor(X,Y)

为真。

运行结果:

5.已知兄弟sib(X, Y)的定义如下

sib(X, Y):- p(Z, X), p(Z, Y), X \== Y.

5.1:定义堂兄弟co(X, Y);

5.2; 定义二代堂兄弟sco(X, Y),X,Y的父母是堂兄弟。

并做验证。

代码:

p(ye,ba).

p(ye,bo).

p(ba,wo).

p(bo,tg).

p(wo,tom).

p(tg,jerry).

sib(X,Y) :- p(Z,X),p(Z,Y), X\==Y.

co(X,Y) :- sib(A,B),p(A,X),p(B,Y),A\==B,X\==Y.

sco(X,Y) :- co(A,B),p(A,X),p(B,Y),A\==B,X\==Y.

推理分析:

当X不等于Y,Y且Z是和Y的父亲,则X和Y是兄弟。

当A不等于B,X不等于Y,A和B是兄弟,且A是X的父亲,B是Y的父亲,则X和Y是堂兄弟。

当A不等于B,X不等于Y,A和B是堂兄弟,且A是X的父亲,B是Y的父亲,则X和Y是二代堂兄弟。

相关事实:

ye是ba和bo的父亲,ba是wo的父亲,bo是tg的父亲,wo是tom的父亲,tg 是jerry的父亲。

结论:

Wo和tg是堂兄弟,tom和jerry是二代堂兄弟。

运行结果:

6.自动实现搜索算法-回溯,判断JOHN是谁的朋友

TOM喜欢TALK,BILL喜欢游泳,BILL喜欢谈话;若X既喜欢TALK,有喜欢SWIM,则JOHN是X的朋友。

代码:

likes(tom,talk).

likes(bill,swim).

likes(bill,talk).

friend(X,Y) :- likes(X,talk),likes(X,swim).

推理分析:

当X喜欢talk,且喜欢swimming,则X是Y的朋友。

相关事实:bill喜欢talk,且喜欢swimming。

结论:bill是JOHN的朋友。

运行结果:

7.谁是盗窃犯问题:某人被盗,公安局派出所派出5个侦察员去调查。研究案情时:

侦察员A说:“赵与钱中至少有一人作案”;

侦察员B说:“钱与孙中至少有一人作案”;

侦察员C说:“孙与李中至少有一人作案”;

相关文档
最新文档