文档详情

人工智能理论第二章.ppt

发布:2017-11-20约1.07万字共88页下载文档
文本预览下载声明
基本PROLOG PROLOG程序的运行机理(续): 匹配合一(续): 合一是一种操作,可使两个能匹配的谓词合一起来,即为参加匹配的自由变量和常量,或者两个自由变量建立一种对应关系,使得常量作为对应变量的约束值,使得两个对应的自由变量始终保持一致(若其中一个被某值约束,则另一个也被同一值约束;反之,若其中一个的值被解除,则另一个的值也被解除) 基本PROLOG PROLOG程序的运行机理(续): 回溯: 在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标 如果失败的子目标前再无子目标,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配 上述过程详见P30-P32实例 PROLOG程序运行机理示例 基本PROLOG PROLOG程序的运行机理(续): 回溯: 上述程序的运行是一个通过推理实现的求值过程。我们也可以使它变为证明过程。例如,把上述程序中的询问改为 friend(john,mary) 则系统会回答:yes 若将询问改为:friend(john,smith) 则系统会回答:no 基本PROLOG PROLOG程序的运行机理(续): PROLOG程序的执行过程是一个(归结)演绎推理过程 特点:推理方式为反向推理,控制策略是深度优先,且有回溯机制 实现方法:匹配子句的顺序是自上而下;子目标选择顺序是从左向右;(归结后)产生的新子目标总是插入被消去的目标处(即目标队列的左部) 基本PROLOG PROLOG程序的运行机理(续): 这种归结演绎方法被称为SLD (Linear resolution with Selection function for Definite clause)归结,或SLD反驳-消解法 SLD 归结就是 PROLOG 程序的运行机理——这就是所谓的PROLOG语言的过程性语义 提纲 PROLOG简介 基本PROLOG Turbo PROLOG程序设计 Turbo PROLOG程序设计 程序结构: 一个完整的Turbo PROLOG(2.0版)程序一般包括常量段、 领域段、数据库段、谓词段、目标段和子句段等六个部分 各段以其相应的关键字 constants、domains、database、predicates、goal和clauses开头加以标识 在程序的首部还可以设置指示编译程序执行特定任务的编译指令,在程序的任何位置都可设置注解 Turbo PROLOG程序设计 程序结构(续):一个完整的Turbo PROLOG(2.0版)程序的结构如下: /*〈 注 释〉 */ 〈编译指令〉 constants  〈常量说明〉 domains 〈域说明〉 database 〈数据库说明〉 predicates 〈谓词说明〉 goal 〈目标语句〉 clauses 〈子句集〉 Turbo PROLOG程序设计 程序结构(续): 一个程序至少要有一个predicates段、clauses段和goal段 在大多数情形中,还需要一个domains段,以说明表、复合结构及用户自定义的域名 若省略goal段,则可在程序运行时临时给出,但这仅当在开发环境中运行程序时方可给出。若要生成一个独立的可执行文件,则在程序中必须包含goal段 一个程序只能有一个goal段 Turbo PROLOG程序设计 程序结构(续):如果把上节中的程序要作为Turbo PROLOG程序,则应改写为: /* 例子程序-1 */ DOMAINS name=symbol PREDICATES likes(name,name) friend(name,name) Turbo PROLOG程序设计 GOAL friend(john,Y), write(Y=, Y). CLAUSES likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):- likes(X,sports),likes(X,music). friend(john,X):- likes(
显示全部
相似文档