- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲第2章PROLOG语言2012年5月4日
人工智能 Artificial Intelligence 第八次课程:prolog语言与产生式专家系统 董春游(Chunyou Dong) PhD,Professor Email:chunyoudong@126.com Heilongjiang institute of Science and Technology Harbin 150027,China) 谓词逻辑表示的应用----机器人移盒子问题 分别定义描述状态和动作的谓词 描述状态的谓词: TABLE(x):x是桌子 EMPTY(y):y手中是空的 AT(y, z):y在z处 HOLDS(y, w):y拿着w ON(w, x):w在x桌面上 变元的个体域: x的个体域是{a, b} y的个体域是{robot} z的个体域是{a, b, c} w的个体域是{box} c 你得到什么启示? 什么语言可以实现? The main players in the development team 你的任务是什么? 什么语言可以实现? Complete structure of a rule-based expert system 你得到什么启示? KB,DB如何作? IN如何实现? 什么语言可以实现? Forward chaining 2.3.5 产生式系统的类型(按推理方向) 1.正向推理产生式系统 也称数据驱动方式,它是从初始状态出发,朝着目标状态前进,正向使用规则的一种推理方法。 所谓正向使用规则,是指以问题的初始状态作为初始综合数据库,仅当综合数据库中的事实满足某条规则的前提时,该规则才被使用。 优点:简单明了,且能求出所有解 缺点:执行效率较低,原因是使用规则具有一定的盲目性。 2.逆向推理产生式系统 也称目标驱动方式,它是从目标(作为假设)状态出发,朝着初始状态前进,反向使用规则的一种推理方法。 所谓逆向使用规则,是指以问题的目标状态作为初始综合数据库,仅当综合数据库中的事实满足某条规则的后件时,该规则才被使用。 优点:不使用与问题无关的规则。因此,对那些目标明确的问题,使用反向推理方式是一种最佳选择。 3.双向推理产生式系统 双向推理是把正向推理和反向推理结合起来使用的一种推理方式 它需要把问题的初始状态和目标状态合并到一起构成综合数据库 Prolog即PROgramming in LOGic,即用逻辑进行程序设计,它是由逻辑学家开发的一种描述式语言。它以谓词逻辑为基础,故也称为逻辑型语言。 Prolog语言于20世纪70年代诞生于法国Marseille大学,此后其应用日益广泛,尤其在日本宣布Prolog为五代机的核心语言以后,更引起世界的普遍关注。这主要由于Prolog语言有以下一些主要特点。 PROLOG语言 (1)Prolog语言有极强的描述能力 (2)Prolog能自动实现模式匹配和回溯。这是人工智能系统中最常用的基本操作,Prolog通过内部合一程序提供了完成这些操作的功能。 (3)递归是Prolog语言的重要特点。在Prolog程序及其数据结构中大量用到递归。 虽然Prolog解题能力很强,但令人吃惊的是它只有三种基本语句,它的语法比任何惯用的常规语言都要简单。这归功于一阶逻辑表示法的简洁和严谨。由于Prolog语法简单,其直接实现也十分简单。 PROLOG语言特点 Prolog的三种基本语句 1.事实 事实说明对象及对象之间的已知事实,是用谓词逻辑表示的。其一般形式为: 关系名[(对象1,对象2,…,对象n)]. 其中关系名即谓词名,对象称为谓词的参数,所有的对象名及关系名必须以小写字母开始,事实的末尾必须以句号结束。 一个谓词可以没有参数,称为裸谓词。它也可以有一个参数或多个参数。当有多个参数时,其次序和关系是由程序员预先任意赋予的,而且一旦确定就要一以贯之,不可更改。比如,令father(a, b).?表示“a是b的父亲”,就要一直把父亲放在前,儿女放在后。 谓词的意义是由程序员赋予的。下面是一些谓词的例子: 裸谓词: go. (常用作程序的目标及规则头) 一元谓词:valuable (gold). 金子值钱。 male (zhang).
文档评论(0)