第6章 PROLOG语言

更新时间:2023-08-13 19:17:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人工智能课件,PROLOG语言

第6章 PROLOG语言

第6章 PROLOG语言6.1 PROLOG语言概述6.2 PROLOG语言的结构 6.3 PROLOG语言的内部谓词 6.4 PROLOG语言的搜索策略 6.5 谓词!的讨论 6.6 PROLOG程序设计 6.7 PROLOG语言与C语言的连接2013-8-3 1

人工智能课件,PROLOG语言

第6章 PROLOG语言

6.1 PROLOG语言概述到目前为止,PROLOG语言是两种主要的人工智能程序设 计语言之一(另一个是LISP)。本章对PROLOG语言做 一描述,并讨论几个例子,使大家了解PROLOG语言及

其特点,并能编写简单的PROLOG程序。

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

6.1.1 PROLOG语言的发展 PROLOG(Programming in Logic)语言是一种以逻辑 推理为基础的逻辑型程序设计语言。它是陈述性语言 而不是过程性的语言。 PROLOG语言首先由法国马塞大学的Colmerauer和它

的研究小组于1972年研制成功,后来在欧洲得到进一步发展。特别是1981年日本宣布要以PROLOG作为他们 正在研制的新一代计算机——智能计算机的核心语言,

更使PROLOG举世瞩目,迅速风靡世界

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

Prolog是建立在逻辑学的理论基础之上的, 最初是运用 于自然语言的研究领域。然而现在它被广泛的应用在 人工智能的研究中,它可以用来建造专家系统、自然 语言理解、智能知识库等。 同时它对一些通常的应用程序的编写也很有帮助。使用

它能够比其他的语言更快速地开发程序,因为它的编程方法更象是使用逻辑的语言来描述程序。 从纯理论的角度来讲,Prolog是一种令人陶醉的编程语言,

接近人的思维习惯。

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

早期PROLOG版本都是解释型的,1986年美国的Borland公 司推出了编译型PROLOG-TurboPROLOG,并很快成为PC 机上流行的PROLOG。 现在运行在Windows环境下的可视化编程语言Visual PROLOG也已面世。

但这些PROLOG语言版本属顺序逻辑程序设计语言。目前的常用 PROLOG环境有:Visual Prolog 、Amzi! Prolog、SWI Prolog、Turbo Prolog、B Prolog 、Strawberry Prolog、Sicstus Prolog、EZY Prolog 等。2013-8-3 5

人工智能课件,PROLOG语言

第6章 PROLOG语言 6.1.2 PROLOG语言的特点 作为一种程序设计语言,PROLOG语言它与一般的程序设计语言有很 大的差别。用一般的程序设计语言,像Fortran C等等来解决问题

的时候,都要指明算法。即告诉计算机“如何做”。prolog是更加容易理解的语言。 (1) PROLOG语言求解问题的时候,只要求程序员描述所解问题中的对

象和反映他们之间关系的某些已知事实,描述,定义各个对象和他们之间关系的某些规则。它强调的是对象之间的逻辑关系。 (2) PROLOG语言的数据和程序结构统一,PROLOG提供了一种统一的数

据结构称为“项”。所有的程序和数据都由项组成(3) PROLOG可以自动实现模式匹配和回溯。 (4) 递归是PROLOG语言的重

要特点之一

语法简明,只有三种句型2013-8-3 6

人工智能课件,PROLOG语言

第6章 PROLOG语言

一个例子:比如一群年轻人正在恋爱,每个人都有自己心中所追求的对象: 张学友爱王菲

张学友爱周慧敏王菲爱谢廷峰 周慧敏爱张学友 谢廷峰爱王菲 谢廷峰爱周慧敏 刘德华爱周慧敏 问题:我们说两个年轻人要互相都喜爱,他们就算是一

对情侣,那么上面的谁和谁是情侣呢?2013-8-3 7

人工智能课件,PROLOG语言

第6章 PROLOG语言

解答: 1、事实的表达:“张学友爱王菲”是一条已知的事实, 用prolog语言来表达就是:爱(张学友,王菲). 注意1:prolog是不允许使用除了基本字符以外字符的, 上面的句子必须写成love(zhangxueyou,wanfei).,电脑

才能够真正的理解。注意2:最末尾的“.”一定不能掉,它表示一个句子结束。 注意3:上面词汇对于电脑来说并没有真正的含义,所以 我们完全可以用 ai(zxy,wf).来表达这个关系 。 注意4:张学友和王菲的顺序也没有特别的规定,你完全

可以把他们换个位置:爱(王菲,张学友).2013-8-3 8

人工智能课件,PROLOG语言

第6章 PROLOG语言

2、规则的表达:即,那么情侣的概念怎么定义呢? 情侣(某人甲,某人乙):-爱(某人甲,某人乙),爱(某人乙,某人 甲). :-在prolog中表示“如果”的意思 。 规则:lovers(X,Y):-love(X,Y),love(Y,X).

3、如果把上面的程序调入prolog解释器然后就可以对以上的程序进行询问。 prolog解释器的提示符号为“?-”,你只需要在在这个提 示符后面输入自己的句子就可以了。

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

完整的可运行的prolog程序如下: love(zhangxueyou,wanfei). love(zhangxueyou,zouhuimin). love(wanfei,xietinfen). love(zouhuimin,zhangxueyou). love(xietinfen,wanfei). love(xietinfen,zouhuimin).

love(liudehua,zouhuimin).lovers(X,Y):-love(X,Y),love(Y,X).

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

询问: 1)?-love(zhangxueyou,wanfei). yes. 2)?-love(zhangxueyou,X). X=wanfei; X=zouhuimin; no.

用户输入“;”,解释器将继续寻找其他的答案 。解释器又找不到其他的答案了,于是输出no.来终止查询。 3)?-love(X,zouhuimin).2013-8-3 11

人工智能课件,PROLOG语言

第6章 PROLOG语言

在上面的询问中,我们只涉及到对事实的查询,下面我 们来看规则的用法。 1)?- lovers(X,Y).X = zhangxueyou Y = zouhuimin ; X = wanfei

Y = xietinfen ;X = zouhuimin Y = zhangxueyou ; X = xietinfen Y = wanfei ; no

2) ?- lovers(wanfei,Y).2013-8-3 12

人工智能课件,PROLOG语言

第6章 PROLOG语言

编写一个寻找情敌的规则 : rival_in_love(X,Y):-love(X,Z),not(love(Z,X)),love(Z,Y). ?- rival_in_love(X,Y). X = zhangxueyou Y = xietinfen ;

X = xietinfenY = zhangxueyou ; X = liudehua Y = zhangxueyou ; no

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

和其他的语言进行比较 prolog的特点: 1. prolog程序没有特定的运行顺序,其运行顺序是由电 脑决定的,而不是编程序的人。 2. pro

log程序中没有if、when、case、for这样的控制 流程语句。程序的运行方式有电脑自己决定 。

3. prolog程序和数据高度统一。在prolog程序中,是很难分清楚哪些是程序,哪些是数据的。 4. prolog程序实际上是一个智能数据库。prolog的原理 就是关系数据库,它是建立在关系数据库的基础上的。 5. 强大的递归功能。在prolog中,递归的功能得到了充

分的体现 。2013-8-3 14

人工智能课件,PROLOG语言

第6章 PROLOG语言

6.2 PROLOG语言的结构6.2.1数据结构

PROLOG语言和其他任何一种计算机高级语言一样,有其定义的数据结构。1. 常量 PROLOG的常量有整数、实数、字符、串、符号、结构、表和文件这八种数

据类型。如:123(整数),abC21(标识符), ?、-、=(符号),abc、012、#、$(字符集)。 2. 变量

同理,PROLOG的变量也就有这八种取值。另外,变量名要求必须是以大写字母或下划线开头的字母、数字和下划线序列,或者只有一个下划线 (_)。最后一种变量称为无名变量(匿名变量)。比如想知道是否有人喜

欢跳舞,但是不需要知道这个人的名字的时候,就可以用匿名变量2013-8-3 15

人工智能课件,PROLOG语言

第6章 PROLOG语言

3. 结构 结构也称复合对象,它是PROLOG谓词中的一种特殊的参量项 (类似于谓词逻辑中的函数)。结构的一般形式为: <函子>(<参量表>) 其中函子及参量的标识符与谓词相同。注意,这意味着结构中

还可包含结构。所以,复合对象可表达树形数据结构。例如下面的谓词 likes(Tom,sports(football,basketball,table-tennis)) 其中sports(football,basketball,table-tennis)就是一个结 构,即复合对象。2013-8-3 16

人工智能课件,PROLOG语言

第6章 PROLOG语言

又如: person("张华",student("西安石油学院"),address("中 国","陕西","西安")). reading("王宏",book("人工智能技术基础教程","西安 电子科技大学出版社")).

friend(father("Li"),father("Zhao")).这几个谓词中都有复合对象。 复合对象在程序中的说明,需分层进行。

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

例如,对于上面的谓词 在PROLOG中常用的结构形式有: (1)函子表示为:<函子>(<参量表>) (2)表:他是PROLOG语言中最常用的数据结构 表的一般形式是[x1,x2,…,xn]表的分量可以是原子, 结构也可以是表。 其中xi(i=1,2,…,n)为PROLOG的项,一般要求同一个表 的元素必须属于同一领域。不含任何元素的表称为空 表,记为[ ]。

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言 例如下面就是一些合法的表。 [1,2,3] [apple,orange,banana,grape,cane]

["PROLOG","MAENS","PROGRAMMING","in logic"][[a,b],[c,d],[e]] [] 表的最大特点是其元素个数可在程序运行期间动态变化。这时其元素可 以属于不同领域。 例如:

[name("Li Ming"),age(20),sex(male),address(xi an)][

[1,2],[3,4,5],[6,7]]

都是合法的表。后一个例子说明,表也可以嵌套。2013-8-3 19

人工智能课件,PROLOG语言

第6章 PROLOG语言 (3)表达式 PROLOG提供了五种最基本的算术运算:加、减、乘、除和取模,相 应运算符号为+、-、*、/、mod。这五种运算的顺序为:*、/、

mod优先于+、-。同级从左到右按顺序运算,括号优先。算术表达式的形式与数学中的形式基本一样。例如: 数学中的算术表达式 PROLOG中的算术表达式

x+yzab-c/d u mod v

X+Y*ZA*B-C/D U mod V(表

示求U除以V所得的余数)运算符+、-、*、/和mod实际也就是PROLOG内部定义好了的函数符。

2013-8-3

人工智能课件,PROLOG语言

第6章 PROLOG语言

Prolog语言中的运算可以是中缀形式,使之简明直观,符 合人们的习惯。 算术表达式X+Y&Z中,“+”、“&”便是运算符,该表达式 如用函数结构形式来表示就是:+(X&(YZ))。所以, 表达式也是一种结构。

※ Prolog语言提供了统一的数据结构——项(term)。在Prolog中,无论是程序还是数据,都是由项所构成。 项的定义为: < 项 > ∷ = < 常量 > | < 变量 > | < 结构 > | “ (”< 项 > “ )” 每一个项书写为一个字符串。2013-8-3 21

本文来源:https://www.bwwdw.com/article/4xhj.html

Top