人工智能技术导论(第2章)-逻辑程序设计语言prolog

合集下载

AI PROLOG语言

AI PROLOG语言

no
3
【例4.2】求解以下六个英语单词的纵横字谜 问题。
abalone, abandon, anagram, connect, elegant, enhance
事实
规则
2020/10/16
4
2020/10/16
aac ab and on
aan e l egant
or e e nhan c e
13
2020/10/16
14
在线资源
1. Learn Prolog Now! by Patrick Blackburn, Johan Bos, and Kristina Striegnitz
/
2. ON-LINE GUIDE TO PROLOG PROGRAMMING by ROMAN BARTÁK
Prolog的基本语句仅有三种,即事实、规则和目标。
Prolog是陈述性语言,一旦给它提交必要的事实和规则之后, Prolog就使用内部的演绎推理机制自动求解程序给定的目标, 而不需要在程序中列出详细的求解步骤。
1、事实
事实用来说明一个问题中已知的对象和它们之间的关系。 在Prolog程序中,事实由谓词名及用括号括起来的一个或几 个对象组成。谓词和对象可由用户自己定义。
例如,likes(bill,book).
是一个名为like的关系,表示对象bill和book之间有喜欢的 关系。
2020/10/16
7
2、规则 由几个互相有依赖性的简单句(谓词)组成,用来描
述事实之间的依赖关系。从形式上看,规则由左边表示结 论的后件谓词和右边表示条件的前提谓词组成。
bird(X):-animal(X),has(X,feather). 表示凡是动物并且有羽毛,那么它就是鸟。 3、目标(问题)

人工智能导论-第2章 逻辑推理3 - 知识图谱

人工智能导论-第2章 逻辑推理3 - 知识图谱
目标谓词:ℎ ,
目标谓词只有一个正例ℎ(David, Mike)。
反例在知识图谱中一般不会显式给出,但可从知
识图谱中构造出来。如从知识图谱中已经知道
(David, James)成立,则ℎ(David,
James)可作为目标谓词的一个反例,记为

ෞ− = 0
NA
(, )

ෞ+ = 1

ෞ− = 2
0.74
e(, )

ෞ+ = 0

ෞ− = 1
NA
(, )
ෞ+ =

ෞ− =

1.32
e(, )

ෞ+ = 0

ෞ− =0
NA
e(, )

ෞ+ = 0

ෞ− = 0

ෞ+ = 1

ෞ− = 3
0.32
(, )

ෞ+ = 0

ෞ− = 1
NA
(, )

ෞ+ = 0

ෞ− = 1
NA
(, )

ෞ+ = 0

ෞ− = 0
NA
(, )

ෞ+ = 0

ෞ− = 0
NA
(, )

ෞ+ = 1

ෞ− = 3
0.32
(, )

ෞ+ = 0

ෞ− = 1
NA
(, )

ෞ+ = 0

ෞ− = 1
NA
(, )

ෞ+ = 0

人工智能导论-第2章分析

人工智能导论-第2章分析
点C目前不能肯定是可解节点,故A和S0也还不能确定为可解节 点。左子树仍然是希望树,下面对节点C进行扩展。
24
与或树的有序搜索:示例
S0
A D
B
L
M
C
N
P
E
F
2
G
H
0
0
22
0
0
3
2
3
2
2
2
h(N)=2, h(P)=7, h(C)=3, h(A)=8, 由此可推算出h(S0)=9。
25
2.3 博弈树搜索
P
P1
P2
P3
2
第二章 与或图搜索问题
• 等价变换:对于一个复杂问题,除了可用“分解”方 法进行求解外,还可利用同构或同态的等价变换,把 它变换为若干个较为容易求解的新问题。若新问题中 有一个可求解,则就得到了原问题的解。因此下图称 为“或”树
P
P1
P2
P3
3
第二章 与或图搜索问题
• 与或树 P
3. 如果x是“与”节点, 则节点x的代价有两种计算方
法:和代价法与最大代价法。 n
4. 和代价法:
h( x ) ( c( x, yi ) h( yi )) i 1
5. 最大代价法:
h( x ) max { c( x, yi ) h( yi )}
6. 如果x不可扩展,且又不是终止节1点in,则定义h(x)=。
• 扩展5号节点,得到t3、t4,由于t3、t4均为终止 节点,所以被标识为可解节点,通过应用可解 标识过程可得到5、3、1号节点均为可解节点。
12
与或树的有界深度优先搜索
• 1. 把初始节点S0放入OPEN表。
• 2. 把OPEN表中的第一个节点(记为节点n)取出放入CLOSED 表。

Prolog百度百科

Prolog百度百科

PrologProlog(Programming in Logic的缩写)是一种逻辑编程语言。

它建立在逻辑学的理论基础之上,最初被运用于自然语言等研究领域。

现在它已广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解、智能知识库等。

同时它对一些通常的应用程序的编写也很有帮助。

使用它能够比其他的语言更快速地开发程序,因为它的编程方法更象是使用逻辑的语言来描述程序。

历史Prolog语言最早由Aix-Marseille大学的Alain Colmerauer与Phillipe Roussel等人于60年代末研究开发。

1972年被公认为是Prolog语言正式诞生的年份,自1972年以后,分支出多种Prolog的方言。

最主要的两种方言为Edinburgh和Aix-Marseille。

最早的Prolog解释器由Roussel建造,而第一个Prolog编译器则是David Warren 编写的。

Prolog一直在北美和欧洲被广泛使用。

日本政府曾经为了建造智能计算机而用Prolog来开发ICOT第五代计算机系统。

在早期的机器智能研究领域,Prolog曾经是主要的开发工具。

80年代Borland开发的Turbo Prolog,进一步普及了Prolog的使用。

1995年确定了ISO Prolog标准目前比较流行的实现工具包括SWI-Prolog, Yap 等prolog的几个特点:1. prolog程序没有特定的运行顺序,其运行顺序是由电脑决定的,而不是编程序的人。

从这个意义上来说,prolog程序不是真正意义上的程序。

所谓程序就是按照一定的步骤运行的计算机指令,而prolog程序的运行步骤不由人来决定。

它更像一种描述型的语言,用特定的方法描述一个问题,然后由电脑自动找到这个问题的答案。

举个极端的例子,你只需要把某个数学题目告诉它,它就会自动的找到答案,而不像使用其他的语言一样,必须人工的编制出某种算法。

人工智能导论课参考答案第2章

人工智能导论课参考答案第2章

人工智能导论课参考答案第2章第2章知识表示方法部分参考答案2.8 设有如下语句,请用相应的谓词公式分别把他们表示出来:(1) 有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花。

解:定义谓词P(x):x是人L(x,y):x喜欢y其中,y的个体域是{梅花,菊花}。

将知识用谓词表示为:( x )(P(x)→L(x, 梅花)∨L(x, 菊花)∨L(x, 梅花)∧L(x, 菊花))(2) 有人每天下午都去打篮球。

解:定义谓词P(x):x是人B(x):x打篮球A(y):y是下午111 P(x):x 是人L(x, y):x 喜欢y将知识用谓词表示为:(x) (P(x)∧L(x,pragramming)→L(x, computer))2.9 用谓词表示法求解机器人摞积木问题。

设机器人有一只机械手,要处理的世界有一张桌子,桌上可堆放若干相同的方积木块。

机械手有4个操作积木的典型动作:从桌上拣起一块积木;将手中的积木放到桌之上;在积木上再摞上一块积木;从积木上面拣起一块积木。

积木世界的布局如下图所示。

图 机器人摞积木问题 C AB A B C解:(1) 先定义描述状态的谓词CLEAR(x):积木x上面是空的。

ON(x, y):积木x在积木y的上面。

ONTABLE(x):积木x在桌子上。

HOLDING(x):机械手抓住x。

HANDEMPTY:机械手是空的。

其中,x和y的个体域都是{A, B, C}。

问题的初始状态是:ONTABLE(A)ONTABLE(B)ON(C, A)CLEAR(B)CLEAR(C)HANDEMPTY问题的目标状态是:ONTABLE(C)ON(B, C)ON(A, B)CLEAR(A)2HANDEMPTY(2) 再定义描述操作的谓词在本问题中,机械手的操作需要定义以下4个谓词:Pickup(x):从桌面上拣起一块积木x。

Putdown(x):将手中的积木放到桌面上。

Stack(x, y):在积木x上面再摞上一块积木y。

人工智能_人工智能导论课件第2章知识表示导论

人工智能_人工智能导论课件第2章知识表示导论

P:老李是小李的父亲
P:李白是诗人 Q:杜甫也是诗人
13
2.2.2 谓词
谓词的一般形式: P (x1, x2,…, xn)
个体 x1, x2,…, xn :某个独立存在的事物或者某个抽象 的概念; 谓词名 P:刻画个体的性质、状态或个体间的关系。
(1)个体是常量:一个或者一组指定的个体。
“老张是一个教师”:一元谓词 Teacher (Zhang)
Human(Zhugeliang)
{ 1, 2 }
Die(Zhugeliang)
T规则
29
2.2.4 谓词公式的性质
谓词逻辑的其他推理规则:
④ 反证法: P Q,当且仅当 P Q F ,即Q为P
的逻辑结论,当且仅当 P Q 是不可满足的。
… ,P 的逻辑结论,当且仅当 定理:Q为 P , , P 1 2 n
2
第2章 知识表示
2.1 知识与知识表示的概念
2.2 一阶谓词逻辑表示法
2.3 产生式表示法 2.4 框架表示法
3
第2章 知识表示
2.1
知识与知识表示的概念
2.2 一阶谓词逻辑表示法
2.3 产生式表示法
2.4 框架表示法
4
2.1.1 知识的概念
知识:在长期的生活及社会实践中、在科学研究及实验 中积累起来的对客观世界的认识与经验。 知识:把有关信息关联在一起所形成的信息结构。 知识反映了客观世界中事物之间的关系,不同事物或者 信息关联形式:“如果„„,则„„” 相同事物间的不同关系形成了不同的知识。
“5>3” :二元谓词 Greater (5, 3) “Smith作为一个工程师为IBM工作”: 三元谓词 Works (Smith, IBM, engineer)

《人工智能导论》实验指导书(新)

目录实验一 PROLOG语言编程练习 (2)实验二图搜索问题求解 (4)实验三小型专家系统(原型)设计 (7)实验一 PROLOG语言编程练习一、实验目的加深学生对逻辑程序运行机理的理解,使学生掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。

1、熟悉PROLOG语言编程环境的使用;2、了解PROLOG语言中常量、变量的表示方法;3、了解利用PROLOG进行事实库、规则库的编写方法;二、实验环境计算机,Turbo PROLOG教学软件。

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

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

2、在Turbo prolog集成环境下调试运行简单的Turbo PROLOG程序,如描述亲属关系的PROLOG程序或其他小型演绎数据库程序等。

五、实验方法和步骤1、启动Windows XP操作环境。

2、打开文件目录,执行prolog应用程序,启动Turbo prolog,并按空格键(SPACE)进入集成开发环境。

3、选择Setup项,打开下拉菜单,选择Directories项,进行工作目录修改,按Esc键退出,选择Save Configuration项,保存修改。

4、选择Files项,打开下拉菜单,选择New file项,进入源程序输入和编辑,或选择Load项,选择要打开的示例程序,再选择Edit项,可以进行编辑源程序。

5、编辑之后,可以选择Run项,执行程序,可以在Dialog窗口进行询问,即外部目标的执行,查看程序运行结果,分析程序之功能。

6、仿前例,可以选择其他程序并运行,分析程序功能。

7、退出,选择Quit项,可以退出Turbo Prolog程序,返回到Windows XP环境。

六、示例程序逻辑电路模拟程序。

该程序以逻辑运算“与”、“或”、“非”的定义为基本事实,然后在此基础上定义了“异或”运算。

人工智能导论-第2章-2 知识图谱

(实体1-关系-实体2):中国-首都-北京 (实体-属性-属性值):北京-人口-2069万
7
2.5.3 知识图谱的表示
知识图谱也可被看作是一张图,图中的节点表示实体 或概念,而图中的边则由属性或关系构成。
法国
英国
963万平 方公里
面积
13.6亿亿
人口 首都
中国
国家
……
面积
美国
人口 首都
937万平 方公里
人工智能导论
Introduction of Artificial Intelligence
人工智能导论
Introduction of Artificial Intelligence
第 2 章-2 知识图谱
第2章 知识表示与知识图谱
第2章 知识表示与知识图谱
2.1 知识与知识表示的概.4 框架表示法 2.5 知识图谱
3.1亿亿
1.6万平 方公里
面积 北京 人口 纬度
经度
2069万
北纬 39°54′
东经 116°25′
华盛顿
经度
面积
纬度
西经 77°02′25′
178平 方公里
北纬 9°53′
8
2.5.4知识图谱的架构
1. 知识图谱的逻辑结构:模式层与数据层。 数据层主要是由一系列的事实组成,而知识以事实为单 位进行存储。 模式层构建在数据层之上,是知识图谱的核心。 2. 知识图谱的体系架构
5
2.6 知识图谱
由于互联网内容的大规模、异质多元、组织结构松散 的特点,给人们有效获取信息和知识提出了挑战。
谷歌于2012年5月16日首先发布 知识图谱(Knowledge Graph)。
知识图谱是一种互联网环境下的知识表示方法。 知识图谱的目的是为了提高搜索引擎的能力,改善用

(完整word版)人工智能导论课参考答案第2章

第2章知识表示方法部分参考答案2.8设有如下语句,请用相应的谓词公式分别把他们表示出来:(1)有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花。

解:定义谓词P(x):x是人L(x,y):x喜欢y其中,y的个体域是{梅花,菊花}。

将知识用谓词表示为:(∃x )(P(x)→L(x, 梅花)∨L(x, 菊花)∨L(x, 梅花)∧L(x, 菊花))(2) 有人每天下午都去打篮球。

解:定义谓词P(x):x是人B(x):x打篮球A(y):y是下午将知识用谓词表示为:(∃x )(∀y) (A(y)→B(x)∧P(x))(3)新型计算机速度又快,存储容量又大。

解:定义谓词NC(x):x是新型计算机F(x):x速度快B(x):x容量大将知识用谓词表示为:(∀x) (NC(x)→F(x)∧B(x))(4) 不是每个计算机系的学生都喜欢在计算机上编程序。

解:定义谓词S(x):x是计算机系学生L(x, pragramming):x喜欢编程序U(x,computer):x使用计算机将知识用谓词表示为:¬(∀x) (S(x)→L(x, pragramming)∧U(x,computer))(5)凡是喜欢编程序的人都喜欢计算机。

解:定义谓词P(x):x是人L(x, y):x喜欢y将知识用谓词表示为:(∀x) (P(x)∧L(x,pragramming)→L(x, computer))2.9 用谓词表示法求解机器人摞积木问题。

设机器人有一只机械手,要处理的世界有一张桌子,桌上可堆放若干相同的方积木块。

机械手有4个操作积木的典型动作:从桌上拣起一块积木;将手中的积木放到桌之上;在积木上再摞上一块积木;从积木上面拣起一块积木。

积木世界的布局如下图所示。

解:(1) 先定义描述状态的谓词CLEAR(x):积木x 上面是空的。

ON(x, y):积木x 在积木y 的上面。

ONTABLE(x):积木x 在桌子上。

HOLDING(x):机械手抓住x 。

(人工智能原理)prolog



用于表示层次结构和分层数据的 数源自结构。图链表用于表示节点和边的关系的数据 结构,用于解决复杂的网络问题。
用于存储和操作元素的线性数据 结构,可以动态扩展和缩小。
根据已知事实和规则逐步推断出结论。
2 后向推理
从目标向已知事实和规则方向推断,找到满足目标的解决方案。
3 剪枝策略
通过减少搜索空间来提高推理过程的效率。
(人工智能原理)Prolog中的算法设计
分治算法
将问题分解为更小的子问题,并 将结果合并为原始问题的解决方 案。
递归算法
动态规划算法
通过将问题分解为更小的同类型 问题来解决,直到达到基本情况。
采用堆栈来追踪和探索候选解决 方案,沿着路径深入,直到找到 解决方案或无法继续。
广度优先搜索
使用队列来追踪和探索候选解决 方案,按层级进行搜索,从当前 节点扩展到下一级节点。
启发式搜索
利用启发式函数来评估候选解决 方案的优劣,并选择最有可能导 致解决方案的路径。
(人工智能原理)逻辑推理及其实现
1 前向推理
通过存储子问题的解决方案来避 免重复计算,以提高计算效率。
(人工智能原理)Prolog中的规则和谓词
规则 实体关系 数值逻辑 列表操作 字符串处理
描述 定义实体之间的关系和连接 对数值进行比较和运算的规则和谓词 处理和操作列表的规则和谓词 对字符串进行操作和处理的规则和谓词
(人工智能原理)Prolog中的高级数据结构
3
变量和常量
使用变量和常量来进行查询和规则中的匹配。
(人工智能原理)Prolog的知识表示
事实
用于描述真实世界中的已知信息和属性。
规则
用于说明和描述问题的解决方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

其中谓词名是以小写英文字母打头的字母、 数字、 下 划线等组成的字符串, 项表是以逗号隔开的项序列。 PROLOG中的项包括由常量或变量表示的简单对象以及函数、 结构和表等, 即事实的形式是一个原子谓词公式。
第 2 章 逻辑程序设计语言 例如: student(john). like(mary,music). 就是PROLOG中的两个合法事实。 功能 一般表示对象的性质或关系。 例如上面的两个事实就分别表示“约翰是学生”和 “玛丽喜欢音乐”。
实际是一种应用相当广泛的智能程序设计语言。 同过程性语言相比, 一个PROLOG程序, 其问题就相当于 主程序, 其规则就相当于子程序, 而其事实就相当于数据。
第 2 章 逻辑程序设计语言 2.1.3 PROLOG程序的运行机理 1. 自由变量与约束变量 PROLOG中称无值的变量为自由变量, 有值的变量为约束 变量。一个变量取了某值就说该变量约束于某值, 或者说该变 量被某值所约束, 或者说该变量被某值实例化了。 在程序运行 期间, 一个自由变量可以被实例化而成为约束变量, 反之, 一个 约束变量也可被解除其值而成为自由变量。
[[1, 2], [3, 4, 5], [6, 7]]
都是合法的表。 后一个例子说明, 表也可以嵌套。
第 2 章 逻辑程序设计语言 表的说明方法是在其组成元素的说明符后加一个星号*。 如: domains lists=string* predicates
第 2 章 逻辑程序设计语言
当然, 一个程序不一定要包括上述所有段, 但一个程序 至少要有一个predicates段、clauses段和goal段。 如若省略 goal段, 则可在程序运行时临时给出, 但这仅当在开发环境中
运行程序时方可给出。若要生成一个独立的可执行文件, 则
在程序中必须包含goal段。另一方面, 一个程序也只能有一
需告诉计算机“做什么”,而不需要告诉计算机 “怎么做”。 与通常过程性程序设计语言相比, PROLOG 是更高级语言。
第 2 章 逻辑程序设计语言
2.1 基本PROLOG
2.1.1 PROLOG的语句 PROLOG语言只有三种语句:事实、规则和问题。 1. 事实(fact) 格式 〈谓词名〉(〈项表〉).
第 2 章 逻辑程序设计语言
例如: bird(X):-animal(X),has(X,feather).
grandfather(X,Y):-father(X,Z),father(Z,Y).
就是PROLOG的合法规则。 作为特殊情形, 规则中的谓词也可以只有谓词名而无参量。 例如: run:-start,step1(X),step2(X),end. 也是一个合法规则。
第 2 章 逻辑程序设计语言
2.1.2 PROLOG的程序
PROLOG程序一般由一组事实、 规则和问题组成。 问题 是程序执行的起点, 称为程序的目标。 例如下面就是一个 PROLOG程序段。 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).
?-friend(john,Y).
第 2 章 逻辑程序设计语言
可以看出, 这个程序中有四条事实、 两条规则和一个问 题。 其中事实、规则和问题都分行书写。 规则和事实可连 续排列在一起, 其顺序可随意安排, 但同一谓词名的事实或规 则必须集中排列在一起。 问题不能与规则及事实排在一起, 它作为程序的目标要么单独列出, 要么在程序运行时临时给
第 2 章 逻辑程序设计语言
作为特殊情形, 一个事实也可以只有谓词名而无参量。
例如:
abc. repeat. 等也是允许的。
第 2 章 逻辑程序设计语言 2. 规则(rule) 格式:〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){, 〈谓词名〉(〈项表〉)}. 其中“:-”号表示“if”,其左部是规则的结论, 右部是 规则的前提, 逗号表示and(逻辑与), 即规则的形式是一个 逻辑蕴含式。 功能: 一般表示对象间的因果关系、 蕴含关系或对应关 系。
goal
readint(X),Y=X+3,write(″Y=″,Y). 就有三个目标谓词。 这种目标称为复合目标。
第 2 章 逻辑程序设计语言 2.2.2 数据与表达式 1. 领域
1) 标准领域
Turbo PROLOG中不定义变量的类型, 只说明谓词中各个
项的取值域。 由上节我们知道, Turbo PROLOG有整数、实数、
第 2 章 逻辑程序设计语言
第 2 章 逻辑程序设计语言
2.2 Turbo PROLOG程序设计
2.2.1 程序结构 一个完整的Turbo PROLOG(2.0版)程序一般包括常量段、 领域段、数据库段、谓词段、目标段和子句段等六个部分。各 段 以 其 相 应 的 关 键 字 constants 、 domains 、 database 、 predicates、 goal和clauses开头加以标识。在程序的任何位置
都可设置注解。 总之, 一个完整的Turbo PROLOG(2.0版)程序
的结构如下:
第 2 章 逻辑程序设计语言 /*〈 注 释〉 */ constants 〈常量说明〉 domains 〈域说明〉 database 〈数据库说明〉 predicates 〈谓词说明〉 goal 〈目标语句〉 clauses 〈子句集〉
第 2 章 逻辑程序设计语言
3. 问题(question)
格式 ?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}. 例如:
?
?
-student(john).
-like(mary,X).
就是两个合法的问题。

功能 问题表示用户的询问, 它就是程序运行的目标。
问题可以与规则及事实同时一起给出, 也可以在程序运行 时临时给出。
个goal段。
第 2 章 逻辑程序设计语言 例 如果把上节中的程序要作为Turbo PROLOG程序,
则应改写为: /* 例P33-1 */
DOMAINS name=symbol
PREDICATES
likes(name,name). friend(name,name)
第 2 章 逻辑程序设计语言 GOAL friend(john,Y), write(″Y=″, Y).
起来, 即为参加匹配的自由变量和常量, 或者两个自由变量建
立一种对应关系, 使得常量作为对应变量的约束值, 使得两个
对应的自由变量始终保持一致, 即若其中一个被某值约束, 则
另一个也被同一值约束;反之, 若其中一个的值被解除, 则另
一个的值也被解除。合一操作是PROLOG的一个特有机制。
第 2 章 逻辑程序设计语言 3. 回溯 所谓回溯, 就是在程序运行期间, 当某一个子目标不能满
第 2 章 逻辑程序设计语言 表 2.1 Turbo PROLOG的标准领域
第 2 章 逻辑程序设计语言
谓词段 该段说明程序中用到的谓词的名和参量项的名(但 Turbo PROLOG 的内部谓词无须说明)。
子句段 该段是Turbo PROLOG程序的核心, 程序中的所有 事实和规则就放在这里, 系统在试图满足程序的目标时就对它 们进行操作。 目标段 该段是放置程序目标的地方。 目标段可以只有一 个目标谓词, 例如上面的例子中就只有一个目标谓词; 也可以 含有多个目标谓词, 如
字符、 串和符号等五种标准域。另外, 它还有结构、表和文件 等三种复合域。
第 2 章 逻辑程序设计语言
2) 结构
结构也称复合对象, 它是Turbo PROLOG谓词中的一种特 殊的参量项(类似于谓词逻辑中的函数)。 结构的一般形式为 〈函子〉(〈参量表〉) 其中函子及参量的标识符与谓词相同。 注意, 这意味着结 构中还可包含结构。 所以, 复合对象可表达树形数据结构。 例 如下面的谓词 likes(″Tom″, sports(football, basketball, table_tennis)).
CLAUSES
likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith).
friend(john,X):-likes(X,sports),likes(X,music).
friend(john,X):-likes(X,reading),likes(X,music).
出。
第 2 章 逻辑程序设计语言 PROLOG语言的文法结构相当简单,但描述能力很强。 例如, 当它的事实和规则描述的是某一学科的公理, 那么问题就
是待证的命题; 当事实和规则描述的是某些数据和关系, 那么
问题就是数据查询语句; 当事实和规则描述的是某初始状态和
状态变化规律, 那么问题就是目标状态。所以, PROLOG语言
第 2 章 逻辑程序设计语言
第 2 章 逻辑程序设计语言
2.1 基本PROLOG
2.2 Turbo PROLOG程序设计
第 2 章 逻辑程序设计语言
PROLOG是Programming in Logic的缩写。
它是由法国马塞大学于1972年研制,是一种逻辑
型程序设计语言。在PROLOG程序中,一般只
[″PROLOG″,″MAENS″,″PROGRAMMING″,″in logic″ ]
[]
第 2 章 逻辑程序设计语言 表的最大特点是其元素个数可在程序运行期间动态变化。 表的元素也可以是结构或表, 且这时其元素可以属于不同领域。
相关文档
最新文档