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