PROLOG程序设计

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

适合的领域 专家系统、规划和其他AI相关问题的求解, AI相关问题的求解 专家系统、规划和其他AI相关问题的求解, 是智能程序设计语言中具有代表性且应用较多 的一种语言。 的一种语言。 自然语言理解、机器定理证明等方面。 自然语言理解、机器定理证明等方面。 和其它语言一样, 和其它语言一样,可以轻松地开发出各种 应用,包括数据库和WEB应用。 应用,包括数据库和WEB应用。 WEB应用
二、Visual Prolog的使用 Prolog的使用环境 Visual Prolog的使用环境 运行和测试一个程序 GOAL 从磁盘中载入例子 处理错误 example01.pro
三、Prolog基本原理 3.1 逻辑设计 PROLOG中 在PROLOG中,可以。 一个PROLOG程序不是一个顺序的行动, PROLOG程序不是一个顺序的行动 一个PROLOG程序不是一个顺序的行动,是 说明性语言。 说明性语言。 通过对比问题的答案来取回存储的信息。 通过对比问题的答案来取回存储的信息。
四、基本语法及结构(续) 2、项的匹配 两个项T1 T2之间进行匹配的规则 T1与 之间进行匹配的规则: 两个项T1与T2之间进行匹配的规则: a)如果T1是一个自由变量 则无论T2 如果T1是一个自由变量, T2属于项中的 a)如果T1是一个自由变量,则无论T2属于项中的 那种情况,匹配均获得成功且T1 T2具体化 T1为 具体化。 那种情况,匹配均获得成功且T1为T2具体化。 X=capital(‘Beijing china Beijing’, china’) ?- X=capital( Beijing ,’china ) X=capital(‘Beijing china Beijing’, china’) X=capital( Beijing ,’china ) b)常量只能与自身匹配 常量只能与自身匹配。 b)常量只能与自身匹配。 (匹配成功 匹配成功) ?- energy=energy (匹配成功) yes 匹配失败) ?- paper=pencil (匹配失败) no
PROLOG程序设计 程序设计 (1)
一、Prolog语言的产生和发展 Prolog( Prolog(PROgramming in LOGic) 法国的柯尔迈伦和他在马塞大学的助手发 明的一种高效的逻辑性语言。 明的一种高效的逻辑性语言。 是一种逻辑推理机,具有表处理的功能, 是一种逻辑推理机,具有表处理的功能, 通过合一、置换、消解、 通过合一、置换、消解、回溯和匹配等机制来 求解问题。 求解问题。 已应用于许多符号运算研究领域。 已应用于许多符号运算研究领域。 是人工智能与专家系统领域最著名的逻辑 程序设计语言。 程序设计语言。
Prolog是当代最有影响的人工智能语言之 Prolog是当代最有影响的人工智能语言之 一,由于该语言很适合表达人的思维和推理规 在自然语言理解、机器定理证明、 则,在自然语言理解、机器定理证明、专家系 统等方面得到了广泛的应用, 统等方面得到了广泛的应用,已经成为人工智 能应用领域的强有力的开发语言。 能应用领域的强有力的开发语言。 Prolog意指可视化逻辑程序设计 Visual Prolog意指可视化逻辑程序设计 语言,是基于Prolog Prolog语言的可视化集成开发环 语言,是基于Prolog语言的可视化集成开发环 其语言符合相应的国际标准ISO/IEC 境,其语言符合相应的国际标准ISO/IEC 1321113211-1:1995.
2、规则:从给出的事件推断出的凭据
规则由几个互相有依赖性的简单句(谓词)组成, 规则由几个互相有依赖性的简单句(谓词)组成, 用来描述事实之间的依赖关系。从形式上看, 用来描述事实之间的依赖关系。从形式上看,规则 由左边表示结论的后件谓词和右边表示条件的前提 谓词组成。 谓词组成。 例如,规则 例如, bird(X):bird(X):-animal(X),has(X,feather). 表示凡是动物并且有羽毛,那么它就是鸟。 表示凡是动物并且有羽毛,那么它就是鸟。 travels(liying,X):travels(liying,X):- travels(zhangming,X). 表示张明到哪里旅行,李英就到那里旅行。 表示张明到哪里旅行,李英就到那里旅行。
+,+,-,*,/,likes,!,=
现在的Prolog语言有许多版本, 现在的Prolog语言有许多版本,但它们 Prolog语言有许多版本 的核心部分都是一样的。Prolog的基本语句仅 的核心部分都是一样的。Prolog的基本语句仅 有三种,即事实、规则和目标三种类型的语句, 有三种,即事实、规则和目标三种类型的语句, 且都用谓词表示,因而程序逻辑性强, 且都用谓词表示,因而程序逻辑性强,文法简 清晰易懂。 捷,清晰易懂。 另一方面,Prolog是陈述性语言, 另一方面,Prolog是陈述性语言,一旦给 是陈述性语言 它提交必要的事实和规则之后,Prolog就使用 它提交必要的事实和规则之后,Prolog就使用 内部的演绎推理机制自动求解程序给定的目标, 内部的演绎推理机制自动求解程序给定的目标, 而不需要在程序中列出详细的求解步骤。 而不需要在程序中列出详细的求解步骤。
四、基本语法及结构(续) c)两个结构相匹配,如果它们具有相同的函数符, c)两个结构相匹配,如果它们具有相同的函数符, 两个结构相匹配 具有相同数量的成分, 具有相同数量的成分,并且每一对对应的成分都能 匹配成功。 匹配成功。 ?- eats(tiger,meat)=eats(tiger,X) ?- X=Y, X=last, Y=Z 表明X,Y,Z X,Y,Z共享 表明X,Y,Z共享 3、算子
3、目标(问题)
把事实和规则写进Prolog程序中后, 把事实和规则写进Prolog程序中后,就可以向 Prolog程序中后 Prolog询问有关问题的答案 询问有关问题的答案, Prolog询问有关问题的答案,询问的问题就是程序 运行的目标。目标的结构与事实或规则相同, 运行的目标。目标的结构与事实或规则相同,可以 是一个简单的谓词,也可以是多个谓词的组合。 是一个简单的谓词,也可以是多个谓词的组合。目 标分内、外两种,内部目标写在程序中, 标分内、外两种,内部目标写在程序中,外部目标 在程序运行时由用户手工键入。 在程序运行时由用户手工键入。 例如问题 ?-student(john). 表示“john是学生吗 是学生吗? 表示“john是学生吗?” Goal travels(liying,X). 表示“李英到哪里去旅行” 表示“李英到哪里去旅行”
PROLOG程序的组成: (2)谓词部分(PREDICATES) 先声明谓词名,然后是参数。 谓词名字(argument_type1, argument_type2, argument_type3,…, argument_typeN). 参数之间由逗号隔开,参数类型应是标准的域 或在域节声名的域。 谓词的名字必须以字母开始,后跟一系列的字 母数字和下划线。 字母的大小写没有关系,但是推荐谓词名字的 第一个字母使用小写字母。
PROLOG程序的组成:
(1)/* */之间的部分,为注释,可写程 序的标题等喜欢的内容。 (2)domains(领域):定义开始在 Predicates(谓词)中所使用的变量。 (3) Predicates(谓词):定义关系。 (4)clauses (5)goal
PROLOG程序的组成: (1)子句部分(CLAUSES) 可以放置所有的构成程序的事实和规则。 一个已知断言的子句必须被一起放在子句部分, 一定次序的子句定义了一个谓词,这被称为程序。 当试着去实现一个目标时,Visual Prolog将从 子句部分的顶步开始,它搜索时查看每一个事实和 规则。 当Visual Prolog顺着子句部分执行时,它把内 部的指针放在匹配当前的子目标的每个子句上。 如果不只是一个答案,Visual Prolog将回到集 合指针的开始并且寻找另外的匹配。
预计短时期内 开来,并将迅速成为我国研究和开发智能化应 开来, 用的重要工具。 用的重要工具。 功能 模式匹配、递归、回溯、对象机制、 模式匹配、递归、回溯、对象机制、事实 数据库和谓词库。 数据库和谓词库。 图形开发环境、编辑器、连接器和调试器, 图形开发环境、编辑器、连接器和调试器, 支持模块化和面向对象编程技术, 支持模块化和面向对象编程技术,支持系统级 编程、文件操作、字符串处理、位级运算、 编程、文件操作、字符串处理、位级运算、算 术和逻辑运算,和其它编程语言的接口。 术和逻辑运算,和其它编程语言的接口。
事实用来说明一个问题中已知的对象和它们之间 的关系。 Prolog程序中 程序中, 的关系。在Prolog程序中,事实由谓词名及用括号 括起来的一个或几个对象组成。 括起来的一个或几个对象组成。谓词和对象可由用 户自己定义。 户自己定义。 例如,谓词likes(bill,book). 例如,谓词likes(bill, likes(bill 是一个名为like的关系,表示对象bill和 是一个名为like的关系,表示对象bill和book like的关系 bill 之间有喜欢的关系。 之间有喜欢的关系。 travels(zhangming,beijing). 张明到北京旅行。 张明到北京旅行。
四、基本语法及结构(续) 5、symbol(符号型) symbol(符号型) 符号型 c”, &55 &55” 例:abc, a, “a b c , “&55 a 用双引号的与字符串完全相同,没有双引号的, 用双引号的与字符串完全相同,没有双引号的, 要以字母开头,对于中间有空格的要加下划线。 要以字母开头,对于中间有空格的要加下划线。 以大写字母开头的为变量,不能作为符号用。 以大写字母开头的为变量,不能作为符号用。 6、结构 函数符+其它成分,成分由圆括号内的“ 函数符+其它成分,成分由圆括号内的“,”分 结构中的成分可以是常量、变量、 结构。 开,结构中的成分可以是常量、变量、表、结构。 accident(date(year,month,day),character,place) 例、以上结构表示成树。 以上结构表示成树。
四、基本语法及结构 1、数据类型 1、integer(整数型) integer(整数型) 整数型 例:-20000,-1,5,0 20000, 2、real(实数型) real(实数型) 实数型 例:-18.5, 12.34e+5,0.001,3.14 (字符型 字符型) 3、 char (字符型) 例:‘a’, ‘B’, ‘/’, ‘&’, ‘3’ , B, /, &, 3 4、string(字符串型) string(字符串型) 字符串型 &&”, ?a ?a” 例:“abc”, “ONE TWO , “&& , “?a abc , ONE TWO”, &&
三、Prolog基本原理(2) 自然语言 Bill likes a car. A car is red.
Bill likes a car if a car is red.
谓词逻辑 likes(car). red(car).
Likes(bill,car) if red(car).
1、事实:众所周知的
在国际上已经十分流行的最新版本可视化逻辑 程序设计语言Visual Prolog语言将在我国流行 程序设计语言Visual Prolog语言将在我国流行
环境支持
Windows3.x/95/98/Me/NT/2000/XP、OS/2和文 Windows3.x/95/98/Me/NT/2000/XP、OS/2和文 本方式下的DOS Linux和 DOS、 UNIX。 本方式下的DOS、Linux和SCO UNIX。
相关文档
最新文档