第10章 人工智能程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能基
人工础主讲: 蔡自兴教授
主讲:蔡自兴
第十章人工智能程序设计10.1 符号和逻辑处理编程语言
101符号和逻辑处理编程语言
10.2 LISP语言
10.3 PROLOG语言
10.4 专用开发工具与人工智能机104专用开发工具与人工智能机
对符号和逻辑处理编程语言的要求
具有表结构形式
便于表示知识和逻辑计算
具有识别数据确定控制匹配模式和进行自具有识别数据、确定控制匹配模式和进行自
动演绎的能力
能够建立框架结构便于聚集各种知识和信能够建立框架结构,便于聚集各种知识和信
息,并作为一个整体存取
具有以最适合于特定任务的方式把程序与说
明数据结合起来的能力
具有并行处理的能力
现有的符号和逻辑处理语言编程语言
图10.1逻辑型编程语言的分类
10.2
LISP语言
10.2.1LISP的特点和数据结构LISP 语言的特点
主要数据结构是表
的特点和数据结构特性表简单
最主要的控制结构为递归
程序内外一致程序内外致
能够产生更复杂的函数和解释程序对事物的约束发生在尽可能晚的时刻数据和过程都可以表示成表交互方式运行
数据结构
原子
LISP中最小的符号单位
各种性质或属性可附加到单个原子上
最重要的属性除其名字外是值
表
递归地定义为括号内零个或n个元素的序列表的数据结构(CONS单元)
控制结构
变量约束及其辖域
变量约束到值上
建立函数
辖域
CAR和CDR
CDR返回表中除第一个元素之外的其余部分
CAR返回表中的第一个元素
SET和SETQ
赋值函数
SET使第二个自变量为第一个自变量的值
Q个求值
SETQ不对第一个变量求值
APPEND 、LIST 和CONS
APPEND 把所有作为自变量的表内各元素串
在一起
LIST 用自变量造出一张表,每个自变量成为用自变量造出张表每个自变量成为
表中的一个元素
作用于一张表,在其中插入一个新的CONS 作用于张表,在其中插入个新的第一元素
EVAL
DEFUN
建立新函数
T和NIL
逻辑上的真与假
AND、OR及NOT
COND
条件函数
PROG
10.2.2LISP的基本函数
GET和PUTPROP
GET检索特征值
PUTPROP存放特征值、替代特征值
LAMBDA
定义匿名函数
READ和PRINT
对话
10.2.3递归和迭代
递归
执行的一部分涉及到再次执行该函数
迭代
约束某些变量
①约束某些变量;
②测试变量以检查出口(停止)条件是否适
用若适用则进行③
用。若适用,则进行③;
③以某种方法改变变量的值;
④返回②。
10.2.4LISP编程举例
LISP程序设计的一般步骤
程序设计的般步骤
将问题用递归的表处理方式表示,即问题的
概念化。
根据问题求解的要求,设计问题求解的搜索
推理过程。
根据所设计的求解过程定义所需要的工作
根据所设计的求解过程,定义所需要的工作
函数。
根据求解过程,给出函数调用的顺序。
根据求解过程给出函数调用的顺序
根据问题求解的目标和解的评价准则,给出
程序结束的标志。
程序结束的标志
10.3PROLOG语言
10.3.1项的定义
语法与数据结构
子句
事实
规则
问题
表结构
匹配(Matching)
M t hi
设法满足一个目标从事实和规则的顶部开始
搜索。
找到一个与之匹配的事实或规则的头。
找不到相匹配的事实或规则的头,则目标失败。
设法重新满足这一目标。
设法重新满足这目标。
合一(Unification)
合(U ifi ti
①对事实子句(或规则)中的变量进行换名,使其不与
目标中的变量同名对变量受囿表进行初始化
目标中的变量同名,对变量受囿表进行初始化。
②检查目标子句与事实子句(或规则)的下一个相异项
是否不存在;若不存在,则结束合过程,合成功是否不存在;若不存在,则结束合一过程,合一成功,返回合一过程中产生的变量受囿表;若存在,则转③。
③根据合一原则,判断目标子句与事实子句(或规则)
的下一个相异项是否可合一。若可合一,就把这两项加入到变量受囿表中,并对目标子句和事实子句(或加入到变量受囿表中并对目标子句和事实子句(或规则)中的有关变量进行置换,然后转②;若不可合一,则结束合一过程,释放变量受囿表,返回不可合一信息。
信息
回溯(Backtracking)
B kt ki
①把问题语句作为初始目标,并置其为激发状态,开始
执行该目标
执行该目标。
②系统处于激发状态时,先为该目标保存必要的回溯信
息,然后判断它是否是单子句组成的目标。如果是息,然后判断它是否是单一子句组成的目标。如果是就转③;否则就依次从左到右求解激发目标的各个子目标。当所有的子目标都得到满足时,激发目标就成功返回否则激发目标就失败返回
功返回。否则,激发目标就失败返回。
③系统执行一个由单一子句组成的激发目标时,就从事
实规则库中取出与激发目标子句句首谓词符号相同的子句子集,从该子句子集的顶部开始查找可与激发目标合一的子句。