资源描述:
《人工智能程序设计语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、人工智能程序设计语言----Prolog1概述1970年由法国马赛大学AlainColmerauer等开发,作为逻辑程序设计的工具。很多著名的专家系统外壳都用Prolog编写,如ESP/Advisor,APE,X1等。程序特点:陈述式语言。只要给出必要的事实和规则,Prolog就可以用演绎推理自动求解问题。而过程式语言必须告之求解过程才行。实例与基本概念:一个Prolog的实例程序如下:domains/*领域声明段*/person,activity=symbol/*域person和activity的声明,symbol为标准
2、域*/predicates/*谓词格式说明段*/likes(person,activity)/*likes为谓词名,表示某人person喜欢activity活动*/clauses/*子句段*/likes(ellen,tennis)./*事实:ellen喜欢tennis*/likes(john,football).likes(tom,baseball).likes(eric,swimming).likes(mark,tennis).likes(bill,X):-likes(tom,X)./*规则:tom喜欢的,bill也喜欢
3、*/goal/*目标段*/likes(bill,football)./*考察bill是否喜欢football*/变量:以大写字母开头,后跟若干数字、下划线、字母组成的符号名称。是在满足目标时,其值未知的量。例如:likes(X_Persons,tennis).中的X。对象与关系:谓词表示一个或多个对象之间的某种关系。例如:likes(mark,tennis).中的likes谓词表示某人喜欢某类活动。其中,mark和和tennis分别是关系likes中的对象。又如:owns(susan,horse).eats(jill,me
4、at).valuable(gold)./*黄金是值钱的*/注:对象名和关系名都必须以小写字母开头。领域与谓词:谓词是用语描述事实和关系的。但与此相关的谓词之涉及对象的领域范围必须明确。因此,在Prolog中,需要对关系中的对象的域进行声明。例如:likes(person,activity).表明,谓词likes中第一个参数为person域,第二个为activuty域。如果目标中输入likes(12,x),系统将给出一个领域类型错的信息。因为,第一个参数不属于person域,此处即symbol域。复合目标:由多个子目标构成的
5、问题目标描述。例如:likes(tom,X)andlikes(erric,X)。无名变量:即谓词参数中以下划线表示时,该变量称为无名变量。表示此时该变量的值无关紧要。例如:likes(_,baseball)andlikes(ellen,tennis).表示只要有人喜欢baseball,ellen就喜欢tennis。car(_,_,Age,_,Cost)andCost<27000.表示查找价格在27000$以下的车,并给出其使用年限和价格。无名变量用于事实时,表示任意或全部都成立。例如:owns(_,shirt).表示人人都
6、有一件衬衣。washface(_).表示人人都洗脸。回溯:当子目标匹配或搜索失败时,回到最近的成功点继续进行余下的事实或规则的匹配的过程。以如下程序为例:domainschild=symbolage=integerpredicatespupil(child,age)clausespupil(peter,9).pupil(chris,9).pupil(paul,10).pupil(susan,9).问题:安排一次班级上9岁同学的乒乓球比赛,每对运动员赛两场。则目标子句可描述pupil(P1,9)andpupil(P2,9)a
7、ndP1<>P2.的执行过程如下:子目标1子目标2子目标3结果说明peterpeterpeter<>peter失败回溯到第二子目标chrispeter<>chris成功回溯到第二子目标继续寻找下一组解susanpeter<>susan成功子目标2已搜索完毕,回溯到子目标1chrispeterchris<>peter成功回溯到第二子目标继续寻找下一组解chrischirs<>chris失败回溯到第二子目标susanchris<>susan成功子目标2已搜索完毕,回溯到子目标1susanpetersusan<>peter成功回
8、溯到第二子目标继续寻找下一组解chrissusan<>chris成功回溯到第二子目标继续寻找下一组解susansusan<>susan失败全部搜索完毕not的用法:表示谓词或规则的否定。例如:likes(X,baseball)andnot(likes(X,tennis)).表示喜欢baseball但不喜