Xie-AI-第8章-人工智能程序设计.ppt

上传人(卖家):罗嗣辉 文档编号:2046323 上传时间:2022-01-21 格式:PPT 页数:64 大小:3.48MB
下载 相关 举报
Xie-AI-第8章-人工智能程序设计.ppt_第1页
第1页 / 共64页
Xie-AI-第8章-人工智能程序设计.ppt_第2页
第2页 / 共64页
Xie-AI-第8章-人工智能程序设计.ppt_第3页
第3页 / 共64页
Xie-AI-第8章-人工智能程序设计.ppt_第4页
第4页 / 共64页
Xie-AI-第8章-人工智能程序设计.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、主 讲:谢 榕 武汉大学国际软件学院第八章第八章 人工智能程序设计人工智能程序设计内容提要:概述函数型程序设计语言LISP逻辑型程序设计语言PROLOGLISP和PROLOG的比较8.1 8.1 概述概述程序设计语言分类人工智能编程语言人工智能编程语言及其发展人工智能编程方法 vs.传统方法1.1.程序设计语言分类程序设计语言分类提问:世界上有多少种程序设计语言?提问:世界上有多少种程序设计语言?BillKinnersley1991年搜集整理出了一份TheLanguageList(http:/people.ku.edu/nkinners/LangList/Extras/langlist.htm

2、),其中列出2500多种程序设计语言并附有简要介绍。Language Categories(1)Language Categories(1)过程性语言过程性语言Procedural Language: A language which states how to compute the result of a given problem. This term encompasses both imperative and functional languages.命令式语言命令式语言Imperative Language: A language which operates by a sequ

3、ence of commands that change the value of data elements. Imperative languages are typified by assignments and iteration.声明性语言声明性语言Declarative Language: A language which operates by making descriptive statements about data, and relations between data. The algorithm is hidden in the semantics of the l

4、anguage. This category encompasses both applicative and logic languages. Examples of declarative features are set comprehensions and pattern-matching statements.http:/people.ku.edu/nkinners/LangList/Extras/classif.htmLanguage Categories(2)Language Categories(2)应用型语言应用型语言Applicative Language: A langu

5、age that operates by application of functions to values, with no side effects. A functional language in the broad sense.功能性语言功能性语言Functional Language: In the narrow sense, a functional language is one that operates by use of higher-order functions, building operators that manipulate functions direct

6、ly without ever appearing to manipulate data. Example: FP.定义型语言定义型语言Definitional Language: An applicative language containing assignments interpreted as definitions. Example: Lucid.单赋值语言单赋值语言Single Assignment Language: An applicative language using assignments, with the convention that a variable ma

7、y appear on the left side of an assignment only once within the portion of the program in which it is active.Language Categories(3)Language Categories(3)数据流语言数据流语言Dataflow Language: A language suitable for use on a dataflow architecture. Necessary properties include freedom from side effects, and th

8、e equivalence of scheduling constraints with data dependencies. Examples: Val, Id, SISAL, Lucid.逻辑型语言逻辑型语言Logic Language: A logic language deals with predicates or relationships p(X,Y). 约束型语言约束型语言Constraint Language: A language in which a problem is specified and solved by a series of constraining r

9、elationships.面向对象语言面向对象语言Object-Oriented Language: A language in which data and the functions which access it are treated as a unit.并发型语言并发型语言Concurrent Language: A concurrent language describes programs that may be executed in parallel.Language Categories(4)Language Categories(4)第四代语言第四代语言Fourth Ge

10、neration Language (4GL): A very high-level language. It may use natural English or visual constructs. Algorithms or data structures may be selected by the compiler.查询语言查询语言Query Language: An interface to a database.规范性语言规范性语言Specification Language: A formalism for expressing a hardware or software d

11、esign.汇编语言汇编语言Assembly Language: A symbolic representation of the machine language of a specific computer.中间语言中间语言Intermediate Language: A language used as an intermediate stage in compilation. May be either text or binary.元语言元语言Metalanguage: A language used for the formal description of another lan

12、guage.1.1.程序设计语言分类程序设计语言分类常见程序设计语言大体上分为:q过程性语言q函数性语言q逻辑性语言q面向对象语言提问:世界上有多少种程序设计语言?提问:世界上有多少种程序设计语言?BillKinnersley1991年搜集整理出了一份TheLanguageList(http:/people.ku.edu/nkinners/LangList/Extras/langlist.htm),其中列出2500多种程序设计语言并附有简要介绍。过程性语言过程性语言如BASIC、FORTRAN、PASCAL、C等。特点:必须告诉程序每一步走的详细算法。函数性语言函数性语言函数性语言的代表:表处

13、理语言LISP(List Processing)。美国麻省理工学院的J.McCarthy及其研究小组于1960年首先设计和推出的第一个人工智能程序设计语言。LISP程序由一组函数组成,程序的执行过程就是调用函数和求值的过程。但它还不是纯函数语言,是基于-函数的语言。最擅长符号处理,世界上许多著名人工智能系统都是用LISP写成的。逻辑性语言逻辑性语言逻辑性语言的典型代表:PROLOG (Programming in Logic)。法国马塞大学的A.Comerauer及其研究小组于1972年开发的,以谓词逻辑为基础的通用程序设计语言。程序由一系列表达逻辑的规则和数据组成,用户程序不需告诉计算机“怎

14、么做”,只告诉它“做什么”。可称为面向目标的语言。面向对象程序设计语言面向对象程序设计语言20世纪80年代以来,面向对象程序设计(Object-Oriented Programming)语言开始流行,典型代表是Smalltalk,但最流行的却是C+语言。下一代程序设计语言下一代程序设计语言.q过程性语言q函数性语言q逻辑性语言q面向对象语言2.2. 人工智能语言人工智能语言人工智能语言是一类适应于人工智能人工智能和知识工程知识工程领域领域的、具有符号处理符号处理和逻辑推理能力逻辑推理能力的计算机程序设计语言。能用来编写程序求解非数值计算非数值计算、知识处理知识处理、推推理理、规划规划、决策决策

15、等具有智能的各种复杂问题。典型的人工智能语言主要有LISPLISP、PROLOGPROLOG、SmalltalkSmalltalk、C+C+等。3.3.人工智能编程语言及其发展人工智能编程语言及其发展编程语言编程语言描述描述IPL很早期的表处理语言LISP目前应用最广泛的逻辑型语言INTERLISP新近开发的一种LISP方言,比纯粹LISP的规模大,并提供更广泛的数组能力。SAILALGOL语言的变种,具有支持相关存储器等附加特性。PLANNER一种便于目标定向处理的早期语言。KPL一种能够支持复杂框架结构的语言。PROLOG一种基于规则的语言,把程序写为提供对象关系的规则。图:逻辑型编程语言

16、的分类4.4.人工智能编程方法人工智能编程方法 vs.vs.传统方法传统方法传统方法q解决问题的思路与冯.诺依曼式计算机结构相吻合。q当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。q通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。人工智能编程方法q建立知识库(包含事实和推理规则),程序根据环境和输入信息以及所要解决的问题来决定自己的行动。q灵活性、对话能力、有自我解释能力和学习能力。q对解决一些条件和目标不大明确或不完备的非结构化问题比传统方法好。q通常采用启发式、试探法策略来解决问题。8.2 8.2 函数型

17、程序设计语言函数型程序设计语言LISPLISP概述LISP语言的数据结构LISP程序结构LISP语言的基本函数LISP语言的递归和迭代LISP程序设计的一般步骤LISP语言程序举例1.1.概述概述L1SP是LISt Processing(表处理)的缩写。LISP是最早和最重要的逻辑型编程语言之一,1958年由美国McCarthy提出,并于1960年发表了他的第一篇关于LISP的论文。语言特点q 主要数据结构是表,程序和数据形式一样,都是符号表达式,简称为S表达式。q 主要的控制结构是递归,用于问题求解、过程描述。q 程序由一组函数组成,程序的执行过程是函数的调用过程。q 程序以交互方式运行,便

18、于开发各类程序。q 能够产生更复杂的函数和解释程序。流行的版本比较多,比较有名的是Mac LISP,Inter LISP,UCI LISP,Common LISP等。2.LISP2.LISP语言的数据结构语言的数据结构数据结构表结构或S表达式语法表示(S表达式):=原子|(S表达式), S表达式)3.LISP3.LISP程序结构程序结构LISP程序由函数定义函数定义和函数调用函数调用两大部分构成。例:设某函数为f(x)=2x+5x+4,试用LISP语言编程。解:(1)定义函数F,自变量规定为X,则有(DEFUNF(X)(+(4(+(*2X)(*5X)函数定义的基本形式(DEFUN(函数名 变量

19、1 变量2 变量3.变量n) 函数定义体)函数调用的基本形式(函数名 变量1 变量2 变量3.变量n)例:设某函数为f(x)=2x+5x+4,试用LISP语言编程。解:(2)调用格式为(F2),假设自变量X=2,则F返回值18。4.LISP4.LISP语言的基本函数语言的基本函数输入输出函数q(READ)-等待用户在键盘上输入一个S表达式q(READCH)-读入一个字符q(PRINT X)-换行打印变量X的值表处理函数q(CARL)-取出表L的表头q(CDRL)-取出表L的表尾q(CONS)-把S表达式作为一个原子加到表中q(APPEND.-将n个表中的元素合并为一个新表qLIST.-把n个S

20、表达式作为元素括在一起构成一张新表算术函数5.LISP5.LISP语言的递归和迭代语言的递归和迭代递归递归q在过程或函数里调用自身qLISP语言中,递归的应用将简化数据结构,使程序设计简洁优美,并且易于读懂。迭代迭代q 在许多程序设计语言中,迭代被用作主要的控制结构。在LISP程序设计中也可实现迭代。q 迭代的一般算法如下:(1)设置循环初值。(2)由循环定参量值,决定是否退出循环,若是则转(5),否则转(3)。(3)完成某一预定的计算和操作过程。(4)修改循环判定参量,转(2)。(5)结束。例:用递归实现例:用递归实现FIBONACCIFIBONACCI数列数列FIBONACCI数列为1,2

21、,3,5,8,13,其数学表达式为u假定n5,求第6个FIBONACCI数,则函数调用结果为(FIBONACCI 5) 136.LISP6.LISP程序设计的一般步骤程序设计的一般步骤将问题用递归的表处理方式表示,即问题概念化根据问题求解要求,设计问题求解的搜索推理过程根据所设计的求解过程,定义所需要的工作函数根据求解过程,给出函数调用的顺序根据问求解目标和解评价准则,给出程序结束标志7.LISP7.LISP语言程序举例:梵塔难题语言程序举例:梵塔难题1 1梵塔难题描述梵塔难题描述q设三根柱子为A、B、C,n个圆盘从小到大为1,2,n(n为有限正整数)。q初始状态:圆盘DISK(1,2,n)全

22、在柱子A上。q目标状态圆盘全在柱子C上。q移动规则为每次只移动一个圆盘,但大盘不能放在小盘上。2 2问题求解步骤问题求解步骤q用递归算法求解梵塔难题的步骤:先将A柱上n个圆盘中的上面(n一1)个圆盘移至缓冲的B柱上。再将最大的圆盘n从A柱移到C柱。逐步将圆盘(1,2,n1)从B柱移到C柱。3 3定义函数定义函数qTRANSFER函数定义一个TRANSFER函数以实现将n个圆盘从X柱移到Y柱。qMOVE函数定义一个MOVE函数,其功能为移动一个圆盘,并打印输出。梵塔难题的梵塔难题的LISPLISP程序及运行结果程序及运行结果8.3 8.3 逻辑型程序设计语言逻辑型程序设计语言PROLOGPROL

23、OG概述PROLOG的基本数据结构PROLOG程序的基本结构PROLOG的三种基本语句PROLOG语言程序举例1.1.概述概述PROLOG:PR0gramming LOGicPROLOG语言是一种逻辑型语言1981年10月,日本宣布它的第5代计算机研制计划,并将PROLOG语言作为其核心机器语言,从此,PROLOG举世瞩目,各国无不在竞相研究与开发。1972年由法国马赛大学的A.Colmerauer设计和实现的。PROLOGPROLOG的语言版本的语言版本 1979年,苏格兰爱丁堡大学开发的Dec-10 PROLOGDec-10 PROLOG 1986年,美国Quintus计算机公司用于UNI

24、X操作系统下的Quintus Quintus PROLOGPROLOG Turbo PROLOGTurbo PROLOG1986年美国Borland公司开发的一种编译型语言,主要在IBM PC系列及其兼容机,MS-DOS环境下运行。 PDC PROLOGPDC PROLOGTurbo PROLOG版本从2.0以后改名为PDC(PROLOG Development Center-PDC)PROLOG,它把运行环境扩展到OS/2操作系统。 Visual PROLOGVisual PROLOGVisual PROLOG是基于PROLOG语言的可视化集成开发环境,是PDC推出的基于Windows环境的

25、智能化编程工具。目前,Visual PROLOG是国际上研究和开发智能化应用的主流工具之一。软件的下载地址为:http:/www.visual-2.PROLOG2.PROLOG的基本数据结构的基本数据结构表放在中括号 内的若干同类元素的有序序列。表中的元素可以是常量、变量、项或表,元素之间用逗号隔开。例如:abcd1,3,5,2,4,6,the,robot,moves,up 2.PROLOG2.PROLOG的基本数据结构的基本数据结构项:=|:=|:=|:=(,)|例如:own(Mary,(computer(Pentium 600, win 2000)表示Mary拥有一台CPU为Pentium

26、600,操作系统为win2000的计算机这一事实。2.PROLOG2.PROLOG的基本数据结构的基本数据结构动态数据库例如:databaseperson(name,address,age,sex)关键词动态数据库的谓词Person的对象动态数据库的操作q assserta:在现有谓词前插入新事实q asssertz:在现有谓词后插入新事实q retract:从数据库中删除一个事实q save:以文本文件的形式保存动态数据库的内容q consult:从磁盘上把动态数据库的文本文件调入内存用来在程序运行期间向数据库中添加新的知识或规则,删除旧的事实或规则,存放中间推理结果或最终结果以及用户回答信

27、息等数据的工作存储器。3.PROLOG3.PROLOG程序的基本结构程序的基本结构领域段领域段以关键字domains或global domains打头,用来定义程序中将要用到的变量和符号的类型及取值范围。谓词段谓词段以关键字predicates或global predicates打头,用来定义程序中用到的谓词。目标段目标段以关键字goal打头,用来定义程序的目标,即程序运行的起点。子句段子句段以关键字clauses打头,用来存放事实和规则。例:一个例:一个Turbo PROLOGTurbo PROLOG程序结构程序结构/*注释*/constantsdomainsdatabasepredicat

28、esgoalclause例如:/*找朋友*/DOMAINS(领域段)name=symbolPREDICATES(谓词段)likes(name,name)friend(name,name)GOAL(目标段)?-friend(Mary,Y),write(Y=,Y)CLAUSES(子句段)likes(John,music)likes(Peter,music)likes(John,football)likes(Peter,baseball)likes(George,Ellen)friend(Mary,X):-likes(X,music),likes(X,football).friend(Mary,X)

29、:-likes(X,shopping),likes(X,baseball).4.PROLOG4.PROLOG的三种基本语句的三种基本语句程序只含有谓词表达的三种类型语句q事实q规则q目标4.PROLOG4.PROLOG的三种基本语句的三种基本语句事实事实q事实用来说明一个问题中已知的对象和它们之间的关系。q在PROLOG程序中,事实由谓词(或称为关系)名后跟用括号括起来的一个或几个对象组成。q谓词和对象由用户自己定义,并起不同名字。例:谓词likes(bill,book)是一个名为like的关系,表示对象bill和book之间有喜欢的关系。例:谓词number(坐位号,票上坐号)表示对象坐位号

30、和票上坐号之间有对号的关系。4.PROLOG4.PROLOG的三种基本语句的三种基本语句规则规则q规则表示事实之间的逻辑蕴涵关系,由表示前提条件的谓词和表示结论的谓词。q格式:例如,规则:bird(X):-animal(X),has(X,feather)表示凡是动物并且有羽毛,那么它就是鸟。表示“if”表示逻辑与“and”逻辑推理的结论规则的前提():-(),()4.PROLOG4.PROLOG的三种基本语句的三种基本语句目标(询问)目标(询问)q把事实和规则写进PPROLOG程序中后,就可以向PROLOG询问有关问题的答案,即要求PROLOG系统求解问题。q格式?-(), ().例1:?-f

31、ind(animal,X)该问题要求PROLOG回答X是否属于动物。例2:?-likes(John,X)此问题要求PROLOG回答John喜欢什么。5.PROLOG5.PROLOG语言程序举例语言程序举例例1:谁是John的朋友?Predicates/*谓词段,对要用的谓词名和参数进行说明*/ likes(symbol, symbol) friend(symbol, symbol)Clauses/*子句段,存放所有的事实和规则*/ likes(bell,sports). /*前4行是事实*/ likes(mary,music). likes(mary,sports). likes(jane,s

32、mith). friend(john,X):-likes(X,sports),likes(X,music)./*本行是规则*/ 运行该程序,输入目标:?-friend(john,X), 即询问john的朋友是谁计算机的运行结果为:X=mary (mary是john的朋友)1 Solution (得到了一个结果)例例2 2:汉诺塔问题:汉诺塔问题采用递归法思想来求解。predicates /*谓词段*/ hanoi(integer) move(integer,symbol,symbol,symbol) inform(symbol,symbol).clauses /*子句段*/ hanoi(N):

33、-move(N,a,b,c). move(1,A,_,C):-inform(A,C),!. move(N,A,B,C):-N1=N-1,move(N1,A,C,B),inform(A,C),move(N1,B,A,C). inform(Loc1,Loc2):-nl,write(移动1个盘子从柱 ,Loc1,到柱,Loc2). goal /*目标段,问移动3个盘子的方法*/ ?-hanoi(3). 例例3 3:学生成绩数据库查询程序:学生成绩数据库查询程序PREDICATES student(integer, string, real) gradeGOAL grade.CLAUSES stude

34、nt(1,张三,90.2). student(2,李四,95.5). student(3,王五,96.4). grade:-write(请输入姓名:),readln(Name),student(-,Name,Score), nl,write(Name,的成绩是,Score). grade:-write(“对不起,找不到这个学生!”). 程序运行时: 请输入姓名: 王五 王五的成绩是96.4 8.4 LISP8.4 LISP和和PROLOGPROLOG的比较的比较相同点相同点LISPLISPPROLOGPROLOG数据结构简单用于符号数据处理,只有S-表达式用于符号数据处理,只有项都具有递归性数

35、据结构的定义是递归的,如表中元素还可以是表;程序运行的递归处理。同LISP。程序和数据在形式上的一致性程序和数据都是S-表达式,每个程序是一串表程序和数据项是由项构造而成。8.4 LISP8.4 LISP和和PROLOGPROLOG的比较的比较不同点不同点LISPLISPPROLOGPROLOG两种语言的变量性质除了定义函数DEFINE中参数、LAMBDA表达式和LABEL表达式中的参数以及PROG函数中的局部变量外,其它变量都是全程变量。变量都是局部变量数据结构采用S-表达式采用项。PROLOG的项比LISP的S-表达式功能强的多。求解过程函数求值过程调用控制结构除了大量的函数调用外,仍有条

36、件、转向、循环等控制结构。程序本身反映了执行流程由PROLOG系统实现自动搜索匹配和回溯等控制操作,从程序本身看不出程序的执行流程。8.4 LISP8.4 LISP和和PROLOGPROLOG的比较的比较PROLOG在许多方面吸取了LISP语言的特点,并作改进。它以逻辑型语言出现,无论在表达问题的求解,还是易读性上,都比LISP好。PROLOG的自动搜索、回溯和模式匹配把人工智能系统中最基本的操作和实现技术加入到PROLOG实现系统内部,从而,大大简化了求解问题的表达。LISP执行速度比PROLOG程序快。这两种语言作为入工智能程序设计语言使用都会延续下去。现在人们又在研究集LISP与PROL

37、OG的优点的新的逻辑程序设计语言了。Whichonedoyouprefer?1. 1. 分析下列程序,写出运行结果。分析下列程序,写出运行结果。predicatespredicates parent(symbol, symbol) parent(symbol, symbol) mother(symbol, symbol) mother(symbol, symbol) female(symbol) female(symbol) male(symbol) male(symbol)clausesclauses parent(pam, bob). parent(pam, bob). parent(to

38、m, bob). parent(tom, bob). parent(tom, parent(tom, lizliz).). parent(bob, parent(bob, annann).). parent(bob, pat). parent(bob, pat). parent(pat, parent(pat, jimjim).). mother(X,Y) :- parent(X,Y), mother(X,Y) :- parent(X,Y), female(X). female(X). male(tom). male(tom). male(bob). male(bob). male( male

39、(jimjim).). female(pam). female(pam). female( female(lizliz).). female( female(annann).). female(pat). female(pat).goalgoal ?-mother(pat, X). ?-mother(pat, X).课堂练习课堂练习2.2.迷宫求解迷宫求解在迷宫中,不允许走的路径用斜线表明。假设起始点为3。目标位置为15,则可按以下路径走:3678121615。mother(pat, X):Jim1. 1. 分析下列程序,写出运行结果。分析下列程序,写出运行结果。predicatespredi

40、cates parent(symbol, symbol) parent(symbol, symbol) mother(symbol, symbol) mother(symbol, symbol) female(symbol) female(symbol) male(symbol) male(symbol)clausesclauses parent(pam, bob). parent(pam, bob). parent(tom, bob). parent(tom, bob). parent(tom, parent(tom, lizliz).). parent(bob, parent(bob, a

41、nnann).). parent(bob, pat). parent(bob, pat). parent(pat, parent(pat, jimjim).). mother(X,Y) :- parent(X,Y), mother(X,Y) :- parent(X,Y), female(X).female(X). male(tom). male(tom). male(bob). male(bob). male( male(jimjim).). female(pam). female(pam). female( female(lizliz).). female( female(annann).)

42、. female(pat). female(pat).goalgoal mother(pat, X). mother(pat, X).迷宫求解迷宫求解教学实验教学实验:PROLOG:PROLOG语言语言u了解Visual PROLOG的运行环境及使用方法。u了解Visual PROLOG实现逻辑推理程序设计的过程。u了解PROLOG语言设计专家系统的能力。u从网上下载并安装Visual PROLOG程序包。u运行Visual PROLOG,熟悉Visual PROLOG运行环境及使用方法。u了解运用Visual PROLOG实现逻辑推理程序设计的方法。u开发一个小型动物分类专家系统。1.1.实

43、验目的实验目的u开发一个小型动物分类专家系统q动物分类规则集(1)若某动物有奶,则它是哺乳动物。(2)若某动物有毛发,则它是哺乳动物。(3)若某动物有羽毛,则它是鸟。(4)若某动物会飞且生蛋,则它是鸟。(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。(6)若某动物是哺乳动物且吃肉,则它是食肉动物。(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。(8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它

44、是长颈鹿。(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。(15)若某动物是鸟且善飞且不怕风浪,则它是海燕。2.2.实验内容实验内容u小型动物分类专家系统图:规则集所形成的(部分)推理网络/*AnAnimalClassifyingExpertSystem*/databasexpositive(symbol,symbol)xnegative(symbol,symbol)predicatesrunanimal_is(symbol)it_is(symbol)positi

45、ve(symbol,symbol)negative(symbol,symbol)clear_factsremember(symbol,symbol,symbol)ask(symbol,symbol)goalrun.clausesrun:-animal_is(X),!,write(nYouranimalmaybea(n),X),nl,nl,clear_facts.run:-write(nUnabletodeterminewhat),write(youranimalis.nn),clear_facts.positive(X,Y):-xpositive(X,Y),!.positive(X,Y):-n

46、ot(xnegative(X,Y),ask(X,Y).negative(X,Y):-xnegative(X,Y),!.negative(X,Y):-not(xpositive(X,Y),ask(X,Y).3.3.源程序源程序ask(X,Y):-write(X,it,Y,n),readln(Reply),remember(X,Y,Reply).remember(X,Y,y):-asserta(xpositive(X,Y).remember(X,Y,n):-asserta(xnegative(X,Y),fail.clear_facts:-retract(xpositive(_,_),fail.cl

47、ear_facts:-retract(xnegative(_,_),fail.clear_facts:-write(nnPleasepressthespacebartoExit),readchar(_).animal_is(albatross):-it_is(bird),positive(does,fly_well).it_is(mammal):-positive(has,hair).it_is(mammal):-positive(does,give_milk).it_is(bird):-positive(has,feathers).it_is(bird):-positive(does,fly

48、),positive(does,lay_eggs).it_is(carnivore):-positive(does,eat_meat).it_is(carnivore):-it_is(mammal),positive(has,pointed_teeth),positive(has,claws),positive(has,forward_eyes).it_is(ungulate):-it_is(mammal),positive(has,hooves).it_is(ungulate):-it_is(mammal),positive(does,chew_cud)./*KnowledgeBase*/a

49、nimal_is(cheetah):-it_is(carnivore),positive(has,tawny_color),positive(has,black_spots).animal_is(tiger):-it_is(carnivore),positive(has,tawny_color),positive(has,black_stripes).animal_is(giraffe):-it_is(ungulate),positive(has,long_neck),positive(has,long_legs),positive(has,dark_spots).animal_is(zebr

50、a):-it_is(ungulate),positive(has,black_stripes).animal_is(ostrich):-it_is(bird),negative(does,fly),positive(has,long_neck),positive(has,long_legs),positive(has,black_and_white_color).animal_is(penguin):-it_is(bird),negative(does,fly),positive(does,swim),positive(has,black_and_white_color).u专家系统程序中并无

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(Xie-AI-第8章-人工智能程序设计.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|