(1.1.1.20)--第2章 人工智能程序设计语言.ppt
《(1.1.1.20)--第2章 人工智能程序设计语言.ppt》由会员分享,可在线阅读,更多相关《(1.1.1.20)--第2章 人工智能程序设计语言.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 人工智能程序设计语言人工智能程序设计语言 第第2章章 人工智能程序设计语言人工智能程序设计语言 2.1 综述综述2.2 函数型程序设计语言函数型程序设计语言LISP 2.3 逻辑型程序设计语言逻辑型程序设计语言PROLOG 2.4 Turbo PROLOG程序设计程序设计第第2章章 人工智能程序设计语言人工智能程序设计语言 2.1 综述综述2.1.1函数型语言LISP是一种函数型程序设计语言。LISP程序由一组函数组成,程序的执行过程就是一系列的函数调用和求值过程。20世纪70年代:J.Backus还提出了一种纯函数型程序设计语言FP。但仅限于理论研究,实现上还存在一定困难。第第2
2、章章 人工智能程序设计语言人工智能程序设计语言 2.1.2逻辑型语言逻辑型程序设计语言起源于PROLOGPROLOG,ProgramminginLogic。PROLOG语言由法国马塞大学的Colmerauer和它的研究小组于1972年研制成功,在欧洲得到进一步发展。1981年日本宣布要以PROLOG作为他们正在研制的新一代计算机智能计算机的核心语言,更使PROLOG举世瞩目,迅速风靡世界。第第2章章 人工智能程序设计语言人工智能程序设计语言 PROLOG语言以Horn子句逻辑为基础,是目前最具代表性的一种逻辑程序设计语言。早期PROLOG版本都是解释型的,1986年美国的Borland公司推出
3、了编译型:TurboPROLOG,很快在PC机上流行。运行在Windows环境下的可视化编程语言VisualPROLOG也已面世(5.2/6.0v)。(下载地址:www.visual-)第第2章章 人工智能程序设计语言人工智能程序设计语言 2.1.3面向对象语言20世纪80年代以来,面OOP发展迅速,日渐成熟,成为主流程序设计方法。面向对象程序以信息隐蔽、封装、继承、多态、消息传递等一系列优良机制改善了软件的复杂性、模块性、重用性和可维护性,有望从根本上解决软件的生产效率问题。另一方面,由于面向对象程序设计的类、对象、继承等概念,与AI的知识表示理论与方法和知识库技术产生了天然的联系。因此OO
4、P语言也成为一种人工智能程序设计语言特别是知识工程、专家系统程序设计。面向对象程序设计语言也种类繁多,已发展成为一个大家族。其中最纯正、最具面向对象风格的语言当推Smalltalk,而最流行的OOP语言是C+、Java。第第2章章 人工智能程序设计语言人工智能程序设计语言 2.1.4混合型语言以上三种语言都各有所长,但也都有其不足之处。为了扬长避短,于是便出现了基于这三种语言的混合型语言。1.函数型与逻辑型相结合的语言函数型与逻辑型语言的结合方式有耦合型和统一型两类。统一型又可分为具有归结语义的函数型语言和集成式语言两个子类。2.函数型与面向对象相结合的语言在LISP语言的基础上再扩充面向对象
5、机制而产生的语言,称为函数型的面向对象程序设计语言(亦称为面向对象的LISP)。3.逻辑型与面向对象相结合的语言第第2章章 人工智能程序设计语言人工智能程序设计语言 2.3 逻辑型程序设计语言逻辑型程序设计语言PROLOG 2.3.1PROLOG的语句PROLOG语言只有三种语句,分别称为事实、规则和问题。1.事实(fact)格式().其中谓词名是以小写英文字母打头的字母、数字、下划线等组成的字符串,项表是以逗号隔开的项序列。第第2章章 人工智能程序设计语言人工智能程序设计语言 PROLOG中的项包括:由常量或变量表示的简单对象;函数、结构、表事实的形式是一个原子谓词公式。例如:student
6、(john).like(mary,music).事实的功能:一般表示对象的性质或关系。特殊的,一个事实也可以只有谓词名而无参量。例如:abc.repeat.也是允许的。第第2章章 人工智能程序设计语言人工智能程序设计语言 2.规则(rule)格式():-(),().其中“:-”号表示“if”(也可以直接写为if)。左部的谓词是规则的结论(亦称为头),右部的谓词是规则的前提(亦称为体),表示零次或多次重复,逗号表示and(逻辑与),即规则的形式是一个逻辑蕴含式。例如:bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),f
7、ather(Z,Y).功能:一般表示对象间的因果关系、蕴含关系或对应关系。作为特殊情形,规则中的谓词也可以只有谓词名而无参量。例如:run:-start,step1(X),step2(X),end.第第2章章 人工智能程序设计语言人工智能程序设计语言 3.问题(question)格式?-(),().例如:?-student(john).?-like(mary,X).功能:问题表示用户的询问,它就是程序运行的目标。第第2章章 人工智能程序设计语言人工智能程序设计语言 2.3.2PROLOG程序完整的PROLOG程序一般由一组事实、规则和问题组成。问题是程序执行的起点,称为程序的目标。例如:lik
8、es(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).该程序中有四条事实、两条规则和一个问题。其中事实、规则和问题都分行书写。规则和事实可连续排列在一起,其顺序可随意安排,但同一谓词名的事实或规则必须集中排列在一起。问题不能与规则及事实排在一起,它作为程序的目标要么单独列出,要么在程序运
9、行时临时给出。第第2章章 人工智能程序设计语言人工智能程序设计语言 PROLOG程序中的目标可以变化,也可以含有多个语句(上例中只有一个)。如果有多个语句,则这些语句称为子目标。例如对上面的程序,其问题也可以是?-likes(mary,X).或?-likes(mary,music).或?-friend(X,Y).或?-likes(bell,sports),likes(mary,music),friend(john,X).对于不同的问题,程序运行的结果一般是不一样的。第第2章章 人工智能程序设计语言人工智能程序设计语言 2.3.3PROLOG程序的运行机理PROLOG程序作为基于Horn子句的逻
10、辑程序,其运行机理基于归结原理的演绎推理(归结原理将在第3章介绍)。PROLOG程序运行是从目标出发,并不断进行匹配、合一、归结,有时还要回溯,直到目标被完全满足或不能满足时为止。什么是匹配、合一和回溯?第第2章章 人工智能程序设计语言人工智能程序设计语言 1.自由变量与约束变量PROLOG中称无值的变量为自由变量,有值的变量为约束变量。一个变量取了某值就说该变量约束于某值,或者说该变量被某值所约束,或者说该变量被某值实例化了。2.匹配合一两个谓词可匹配合一,是指两个谓词的名相同,参量项的个数相同,参量类型对应相同,并且对应参量项还满足下列条件之一:(1)如果两个都是常量,则必须完全相同。(2
11、)如果两个都是约束变量,则两个约束值必须相同。(3)如果其中一个是常量,一个是约束变量,则约束值与常量必须相同。(4)至少有一个是自由变量第第2章章 人工智能程序设计语言人工智能程序设计语言 例如:下面的两个谓词pre1(ob1,ob2,Z)pre1(ob1,X,Y)只有当变量X被约束为“ob2”,且Y、Z的约束值相同或者至少有一个是自由变量时,它们才是匹配合一的。3.回溯所谓回溯是在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标。如果失败的子目标前再无子目标
12、,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配。回溯是PROLOG的一个重要机制。第第2章章 人工智能程序设计语言人工智能程序设计语言 仍以上面的程序为例。设所给的询问是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)./john和谁是朋友?则
13、求解目标为friend(john,Y).这时,系统对程序进行扫描,寻找能与目标谓词匹配合一的事实或规则头部。显然,程序中前面的四条事实均不能与目标匹配。注意第五、六个语句的左端程序运行结果:Y=mary第第2章章 人工智能程序设计语言人工智能程序设计语言 上述程序的运行是一个通过推理实现的求值过程。我们也可以使它变为证明过程。例如,把上述程序中的询问改为?-friend(john,mary)则系统回答:yes若将询问改为:?-friend(john,smith)则系统回答:no第第2章章 人工智能程序设计语言人工智能程序设计语言 PROLOG程序的执行过程是一个(归结)演绎推理过程。其特点是:
14、推理方式为反向推理;控制策略是深度优先,且有回溯机制。具体实现方法是:匹配子句的顺序是自上而下;子目标选择顺序是从左向右;归结后产生的新子目标总是插入被消去的目标处(即目标队列的左部)。PROLOG的这种归结演绎方法被称为SLD(LinearresolutionwithSelectionfunctionforDefiniteClause)归结,或SLD反驳-消解法。SLD归结就是PROLOG程序的运行机理,它也就是所谓的PROLOG语言的过程性语义。第第2章章 人工智能程序设计语言人工智能程序设计语言 2.4 Turbo PROLOG程序设计程序设计2.4.1TurboPROLOG的程序结构一
15、个完整的TurboPROLOG(2.0版)程序一般包括常量段、领域段、数据库段、谓词段、目标段和子句段等六个部分。各段以其相应的关键字constants、domains、database、predicates、goal和clauses开头加以标识。在程序的首部还可以设置指示编译程序执行特定任务的编译指令;在程序的任何位置都可设置注解。第第2章章 人工智能程序设计语言人工智能程序设计语言 一个完整的TurboPROLOG(2.0v)程序的结构如下/*/constantsdomainsdatabasepredicatesgoalclauses第第2章章 人工智能程序设计语言人工智能程序设计语言 一
16、个程序不一定要包括上述所有段,但一个程序至少要有一个predicates段、clauses段和goal段。在大多数情形中,需要一个domains段,以说明表、复合结构及用户自定义的域名。如若省略goal段,则可在程序运行时临时给出,但这仅当在开发环境中运行程序时方可给出。若要生成一个独立的可执行文件,则在程序中必须包含goal段。一个程序只能有一个goal段。第第2章章 人工智能程序设计语言人工智能程序设计语言 例2.3/*例子程序-1*/DOMAINSname=symbolPREDICATESlikes(name,name).friend(name,name)GOALfriend(john,
17、Y),write(Y=,Y).CLAUSESlikes(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章章 人工智能程序设计语言人工智能程序设计语言 表2.1TurboPROLOG的标准领域第第2章章 人工智能程序设计语言人工智能程序设计语言 谓词段该段说明程序中用到的谓词的名和参量项的名(但TurboPROLO
18、G的内部谓词无须说明)。子句段该段是TurboPROLOG程序的核心,程序中的所有事实和规则就放在这里,系统在试图满足程序的目标时就对它们进行操作。目目标标段段该段是放置程序目标的地方。目标段可以只有一个目标谓词,例如上面的例子中就只有一个目标谓词;也可以含有多个目标谓词,如:goalreadint(X),Y=X+3,write(Y=,Y).就有三个目标谓词。这种目标称为复合目标。称程序目标段中的目标为内部目标,而称在程序运行时临时给出的目标为外部目标。第第2章章 人工智能程序设计语言人工智能程序设计语言 2.4.2TurboPROLOG的数据与表达式1.领域1)标准领域TurboPROLOG
19、中不定义变量的类型,只说明谓词中各个项的取值域。2)结构结构也称复合对象,它是TurboPROLOG谓词中的一种特殊的参量项(类似于谓词逻辑中的函数)。第第2章章 人工智能程序设计语言人工智能程序设计语言 结构的一般形式为()其中函子及参量的标识符与谓词相同。注意,这意味着结构中还可包含结构。所以,复合对象可表达树形数据结构。例如:likes(Tom,sports(football,basketball,table-tennis).person(张华,student(西安石油学院),address(中国,陕西,西安).reading(王宏,book(人工智能技术基础教程,电子科技大学出版社).
20、friend(father(Li),father(Zhao).第第2章章 人工智能程序设计语言人工智能程序设计语言 复合对象在程序中可以分层进行。例如:likes(Tom,sports(football,basketball,table-tennis).在程序中可说明如下:domainsname=symbolsy=symbolsp=sports(sy,sy,sy)predicateslikes(name,sp)第第2章章 人工智能程序设计语言人工智能程序设计语言 3)表表的一般形式是x1,x2,xn其中xi(i=1,2,n)为PROLOG的项,一般要求同一个表的元素必须属于同一领域。不含任何元
21、素的表称为空表,记为。例如:1,2,3apple,orange,banana,grape,canePROLOG,MAENS,PROGRAMMING,inlogica,b,c,d,e表的最大特点是其元素个数可在程序运行期间动态变化。第第2章章 人工智能程序设计语言人工智能程序设计语言 表的元素是结构或表时,其元素可以属于不同领域。例如:name(LiMing),age(20),sex(male),address(xian)1,2,3,4,5,6,7都是合法的表。后一个例子说明,表也可以嵌套。实际上,表是一种特殊的结构。它是递归结构的另一种表达形式。这个结构的函数名取决于具体的PROLOG版本。这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1.1.1.20-第2章 人工智能程序设计语言 1.1 1.20 人工智能 程序设计语言
限制150内