Prolog人工智能实验报告

合集下载

人工智能实验一指导

人工智能实验一指导

实验1: Prolog语言程序设计人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。

能够用它来编写求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。

Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。

尽管Prolog语言有许多版本,但它们的核心部分都是一样的。

Prolog的基本语句仅有三种,即事实、规则和目标三种类型的语句,且都用谓词表示,因而程序逻辑性强,方法简捷,清晰易懂。

另一方面,Prolog是陈述性语言,一旦给它提交必要的事实和规则之后,Prolog就使用内部的演绎推理机制自动求解程序给定的目标,而不需要在程序中列出详细的求解步骤。

一、实验目的1、加深学生对逻辑程序运行机理的理解。

2、掌握Prolog语言的特点、熟悉其编程环境。

3、为今后人工智能程序设计做好准备。

二、实验内容1、编写一个描述亲属关系的Prolog程序,然后再给予出一些事实数据,建立一个小型演绎数据库。

提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。

2、编写一个路径查询程序,使其能输出图中所有路径。

提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。

e3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。

为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。

(a)用Prolog规则表述这个雇主的选择准则。

(b)用Prolog事实描述下列申请者的情况:史密斯住在剑桥,会开车但不会打字。

布朗住在伦敦,会开车也会打字。

简住在格拉斯哥,不会开车但会打字。

埃文斯住在伦敦,会开车也会打字。

格林住在卢顿,会开车也会打字。

(c)要求Prolog提供一个候选人名单。

prolog实验报告小结

prolog实验报告小结

prolog实验报告小结Prolog实验报告小结在本次实验中,我们使用了Prolog编程语言来解决一系列逻辑推理和知识表示的问题。

Prolog是一种基于逻辑的编程语言,它使用逻辑规则和事实来进行推理和查询。

在本次实验中,我们学习了如何使用Prolog来表示知识,并使用它来解决一些经典的逻辑问题。

首先,我们学习了如何使用Prolog来表示事实和规则。

通过使用事实和规则,我们可以建立一个知识库,其中包含了我们关于世界的知识。

然后,我们可以使用这些知识来进行逻辑推理,找出答案或解决问题。

在实验中,我们还学习了如何使用Prolog来进行逻辑查询。

通过编写查询语句,我们可以向Prolog系统询问特定的问题,然后系统会使用已有的知识库来进行推理,并给出答案。

这种方式非常适合于解决逻辑问题,比如逻辑谜题或者逻辑推理问题。

此外,我们还学习了如何使用Prolog来实现递归。

递归是一种非常重要的编程技术,它可以帮助我们处理一些复杂的问题,比如树形结构或者列表操作。

在本次实验中,我们使用Prolog来实现了一些递归算法,比如计算阶乘或者斐波那契数列。

总的来说,本次实验让我们对Prolog编程语言有了更深入的了解。

通过实际操作,我们学会了如何使用Prolog来表示知识、进行逻辑推理和解决问题。

Prolog是一种非常强大的编程语言,它可以帮助我们解决许多复杂的逻辑问题,而且在人工智能领域也有着广泛的应用。

希望通过本次实验,同学们都能对Prolog有更深入的了解,并能够在以后的学习和工作中运用到这种强大的编程语言中。

人工智能实验报告(熟悉专家系统开发工具)

人工智能实验报告(熟悉专家系统开发工具)
1 Solution
实验结论(结果)
求N! 值的:
该程序通过递归算法有效的解决了求N! 值的问题。并熟悉了Visual Prolog软件开发平台。
该程序通过递归算法有效的解决了求N!值的问题。并熟悉了Visual Prolog软件开发平台。
实验心得与小结
通过这次实验我更加熟悉了 Prolog语言和该软件开发平台。对Prolog语言的基本语法规则和使用技巧有了更好的掌握。在使用Visual Prolog软件开发平台的过程中, 我从对软件的不熟悉, 经常出错, 到会编写一些小型完整的Visual Prolog应用程序, 在这过程中, 我增长了很多知识。最后经过本次试验, 我的动手能力和分析问题的能力得到提高。
father(name,name)
everybody
clauses
father(leonard,katherine).
father(carl,jason).
father(carl,marilyn).
everybody :-father(X,Y),write(X," is ",Y,"'s father\n"),fail.
Example3:
设定目标为: everybody.
结果为:
leonard is katherine's father
carl is jason's father
carl is marilyn's father
No
求N! 值的:
设定目标为: X=6,factorial(X, FactX).
结果为:
X=6, FactX=720
6.完成简单程序的编写:求N!的值。
实验准备(预习程序)

人工智能(蔡自兴)实验2事实表示

人工智能(蔡自兴)实验2事实表示

实验2 Prolog程序事实表示Visual Prolog是面向对象的、严格类型化的和模式检验的程序设计语言。

在编写Visual Prolog程序时,必须掌握这些内容,但是在这里将集中在编写代码这个核心问题上,也就是说,编写这些代码时暂时不考虑类、类型和模式。

为此,将使用包含在Visual Prolog 6 中的PIE例子。

PIE是一个经典的Prolog解释器,通过它,可以学会和实现Prolog程序,而不必关心类、类型等方面的知识。

这里的内容是基于使用Build6004或者是以后的Visual Prolog 6版本,否则,PIE应用程序将不会象现在描述的这样工作。

这个编译号可以在VDE的About对话框中找到。

1.Horn子句逻辑Visual Prolog 和其它Prolog用语都是基于Horn子句逻辑的。

Horn 子句逻辑是对事物及其相互关系进行推理的形式系统。

在自然语言中,可以有这样样的一个陈述句:John是Bill的父亲。

这里涉及两个实体,John和Bill,以及他们之间的关系,即一个是另一个的父亲.在Horn子句逻辑中,可以这样形式化地表述上面的陈述句:father(“Bill”,”John”).上面的father是带两个参量的一个谓词或关系,它表示第2个人是第1个人的父亲。

注意:此处已经选择了第2个人是第1个人的父亲,也可以选择另外的方式,变量的顺序形式化设计者的选择,然而一旦选定了,就必须保持一致,在这里的表述中,父亲始终是第2个人。

已经选择用人名来代表人,因为在现实世界中,许多人有相同的名字,所以这一方法不一定有效。

但在这里,用这一简单的形式化表示。

有了上面的形式化方法,可以表示任何人之间的任何类型的家庭关系,但是,为了让这些表述更为有趣,制定下面的规则。

X是Z的祖父,如果X是Y的父亲且Y是Z的父亲其中X,Y,Z指人。

在Horn子句逻辑中,可以这样表述grandFathe(Person,GrandFathe):-father(Person,Father),father(Father,GrandFather).已经选择使用了比X,Y,Z更容易理解的变量名。

人工智能试验一认识prolog

人工智能试验一认识prolog

数学与软件科学学院实验报告学期:___至___ 第 __ 学期年月日课程名称:___人工智能 ___ 专业: _级__ _班实验编号:01实验项目熟悉Prolog语言环境和程序编写方法指导教师__姓名:_ __ 学号: __实验成绩:_____一、实验目的及要求(1) 熟悉VIP(Visual Prolog 5.2)的安装、运行环境;(2)基本Prolog程序语言技术(包含表的创建、查找、分解、拼接等主要技术)。

二、实验内容(1) 安装VIP;(2) 熟悉VIP的基本环境(掌握一个Prolog语言程序或工程的构建方法、测试目标、代码浏览等基本操作方法);(3)了解和熟悉一个实际的Prolog程序文件的基本结构。

例如:DOMAINS/PREDICATES/CLAUSES/GOAL等;(4) 编写并执行简单的Prolog程序,并熟悉测试或调试的方法。

三、实验准备及设备准备好VIP安装源;复习有关Prolog语言的上课记录;按实验大纲要求事先编制几个简单的Prolog语言程序,并根据Prolog的执行特点分析其执行结果过程,预测其执行结果。

四、实验步骤和实验过程及实验结果(1)安装VIP软件环境,如果已安装好,可以跳过此步;(2) 熟悉Prolog语言环境;打开prolog应用程序图标,可以看到整个菜单有File, Edit, Project, Options, Window和Help六种功能。

其下面是浮动菜单条,最下面有消息窗口和提示信息窗口。

File子菜单:主要涉及有关文件的操作。

新建、打开、关闭/保存/另存为、打印操作。

Edit子菜单:进入编辑器进行相应的文本编辑操作。

Project子菜单:有关工程文件的菜单功能。

主要用于生成一个包含多个文件和资源的工程环境及相关参数设置。

Options子菜单:其包括Project和Global两项内容的选择设置。

Project主要是有关Project的目录、编译方式、代码生成方法和运行参数和执行文件的生成等方面。

人工智能实验一

人工智能实验一

实验一 PROLOG语言编程一、实验目的1.加深学生对逻辑程序运行机理的理解。

2.掌握PROLOG语言的特点、熟悉其编程环境。

3.为今后人工智能程序设计做好准备。

二、预习要求1.复习PROLOG语言的语法。

2.熟悉PROLOG的语言环境。

3.阅读一些PROLOG的程序。

三、实验要求1.用PROLOG语言编程。

四、实验内容1、编写一个描述亲属关系的PROLOG程序,然后再给予出一些事实数据,建立一个小型演绎数据库。

提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。

domainsname=symbol.predicatesmother(name,name).father(name,name).grandfather(name,name).grandmother(name,name).sister(name,name).aunt(name,name).goalgrandmother(a,X),write("X=",X),nl,father(b,Y),write("Y=",Y),nl,sister(d,Z),write("Z=",Z),nl,aunt(d,T),write("T=",T).clausesmother(a,c).mother(a,d).mother(c,g).mother(c,f).father(b,c).father(b,d).father(e,g).father(e,f).grandfather(X,Z):-father(X,Y),father(Y,Z).grandmother(X,Z):-mother(X,Y),mother(Y,Z).sister(X,Y):-mother(Z,X),mother(Z,Y).aunt(X,Y):-mother(Z,Y),sister(Z,X).2、编写一个路径查询程序,使其能输出图中所有路径。

prolog实验报告

prolog实验报告

华北电力大学实验报告||实验名称PROLOG语言编程练习及图搜索问题求解课程名称人工智能及应用专业班级:学生姓名:学号:成绩:指导教师:实验日期:2014年5月(实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm, 右2.1cm;字体:宋体小四号,1.25倍行距。

)验证性、综合性实验报告应含的主要内容:一、实验目的及要求二、所用仪器、设备三、实验原理四、实验方法与步骤五、实验结果与数据处理六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)七、所附实验输出的结果或数据设计性实验报告应含的主要内容:一、设计要求二、选择的方案三、所用仪器、设备四、实验方法与步骤五、实验结果与数据处理六、结论(依据“设计要求”)七、所附实验输出的结果或数据reverse_writelist([H|T]):-reverse_writelist(T),write(H),nl.empty_stack([]).stack(Top,Stack,[Top|Stack]).reverse_print_stack(Stack):-empty_stack(Stack).reverse_print_stack(Stack):-stack(E,Rest,Stack),reverse_print_stack(Rest),write(E),nl.member(X,[X|T]).member(X,[_|T]):-member(X,T).member_stack(Element,Stack):-member(Element,Stack).go(Start,Goal):-empty_stack(Empty_been_stack),stack(Start, Empty_been_stack, Been_stack),path(Start, Goal, Been_stack).test:-go(state(w,w,w,w), state(e,e,e,e)).六、讨论与结论Prlolg的求解过程就是一个不断通过规则进行匹配,最后匹配到事实后回溯得出解的过程。

北邮大三下 人工智能 prolog作业2013 实验报告

北邮大三下 人工智能 prolog作业2013 实验报告

作业:用PROLOG完成以下系统的编写。

給出代码和一个运行实例,指出某人吞入毒物后要采取什么措施。

已知下列毒物:酸(如去溴剂、碘酒)、碱(如氨水、漂白剂),以及石油产品(如汽油、松节油)。

其他所有毒物归为其他类型other类。

中毒时,应呼叫医师或中毒控制中心。

对于酸、碱和其他类型毒物,应该让病人喝水或牛奶之类的液体以稀释毒药。

对于其他类型的毒物,要呕吐。

但对于酸、碱或石油产品不能呕吐。

如果病人神志不清或惊厥,则不要喝水类液体,也不要呕吐。

*写出一个运行实例(输入、输出)。

源代码:predicatesacid(symbol)alkali(symbol)oil(symbol)other(symbol)patient_unaware(symbol)patient_aware(symbol)emergency_treatment(symbol,symbol,symbol)goalemergency_treatment(aware,bleach,What).clausesacid(take_bromine). /*去溴剂*/acid(iodine).alkali (ammonia_water).alkali(bleach).oil(gasoline).oil(turpentine).other(_).patient_unaware(unaware).patient_aware(aware).emergency_treatment(Patient,Drug,"can't drink"):-patient_unaware(Patient),other(Drug),fail. emergency_treatment(Patient,Drug,"can't vomit"):-patient_unaware(Patient),other(Drug).emergency_treatment(Patient,Drug,"can drink"):-patient_aware(Patient),acid (Drug),fail. emergency_treatment(Patient,Drug,"can't vomit"):-patient_aware(Patient),acid (Drug). emergency_treatment(Patient,Drug,"can drink"):-patient_aware(Patient),alkali (Drug),fail. emergency_treatment(Patient,Drug,"can't vomit"):-patient_aware(Patient),alkali (Drug). •emergency_treatment(Patient,Drug,"can't vomit"):-patient_aware(Patient),oil(Drug). emergency_treatment(Patient,Drug,"drink"):-patient_aware(Patient),other(Drug),fail. emergency_treatment(Patient,Drug,"vomit"):-patient_aware(Patient),other(Drug).运行实例:输入是emergency_treatment (aware,gasoline,What)输出是What=can't vomit1 Solution。

人工智能实验一

人工智能实验一

人工智能技术基础 PROLOG语言编程练习实验报告一、实验目的:加强对逻辑程序运行机能的理解,更好地掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。

二、实验要求:(1)程序自选,但必须是描述某种逻辑关系的小程序。

(2)跟踪程序的运行过程,理解逻辑程序的特点。

(3)对原程序可作适当修改,以便熟悉程序的编辑、编译和调试过程。

三、实验内容:在Turbo PROLOG或Visual Prolog集成环境下调试运行简单的PROLOG程序,如描述亲属关系的PROLOG程序或其他小型演绎数据库程序等。

四、实验结果:(1)验证题1源程序domainsd=integerpredicatesnot_(D,D)and_(D,D,D)or_(D,D,D)xor(D,D,D)clausesnot_(1,0).not_(0,1).and_(0,0,0).and_(0,1,0).and_(1,0,0).and_(1,1,1).or_(0,0,0).or_(0,1,1).or_(1,0,1).or_(1,1,1).xor(Input1,Input2,Output):-not_(Input1,N1),/*(1,0)*/not_(Input2,N2),/*(0,1)*/and_(Input1,N2,N3),and_(Input2,N1,N4),or_(N3,N4,Output).(2)验证题2源程序predicatesstudent(integer,string,real)gradegoalgrade.clausesstudent(1,"zhang",90.2).student(2,"li",95.5).student(3,"wang",96.4).grade:-write("Please input name:"),readln(Name), student(_,Name,Score),nl,write(Name,"grade is",Score).grade:-write("Sorry,the student cannot find!").(3)验证题3源程序domainsn,f=integerpredicatesfactorial(n,f)goalreadint(I),factorial(I,F),write(I,"!=",F).clausesfactorial(1,1).factorial(N,Res):-N>0,N1=N-1,factorial(N1,FacN1),Res=N*FacN1.(4)验证题4源程序domainss=symbolpredicatesp(s) p1(s) p2(s) p3(s) p4(s) p5(s,s) p11(s) p12(s) p31(s) goalp(X),write("the x is ",X).clausesp(a1):-p1(b),p2(c).p(a2):-p1(b),p3(d),p4(e).p(a3):-p1(b),p5(f,g).p1(b):-p11(b1),p12(b2).p3(d):-p31(d1).p2(c1).p4(e1).p5(f,g).p11(b1).p12(b2).p31(d11).(5)验证题5源程序domainsname=symbolage =integerpredicatesplayer(name,age)match(name,name)clausesplayer(peter,9).player(paul,10).player(chris,9).player(susan,9).match(X,Y):- player(X,9), player(Y,9), X<>Y.match(X,Y):- !, player(X,9), player(Y,9), X<>Y.match(X,Y):- player(X,9), !, player(Y,9), X<>Y.match(X,Y):- player(X,9), player(Y,9), !, X<>Y.match(X,Y):- player(X,9), player(Y,9), X<>Y, ! .在外部Goal: match(X,Y)条件下,“分别”采用以上各match谓词,观察对应的执行结果如下:(a)(b)(c)(d)(e)五、实验总结(1)实验中出现的问题a、做完验证题一,用load加载已改为.PRO格式的验证题二文本,加载不成功。

人工智能实验报告_3

人工智能实验报告_3
positive(has,claws), positive(has,forward_eyes). it_is(ungulate):-it_is(mammal),positive(has,hooves). it_is(ungulate):-it_is(mammal),positive(has,chew_cud). 谓词解释: Xpositive 肯定数据库——记录 yes 选项的谓词,xnegative 否定数
clauses run:-animal_is(X),!,write("\nyour animal may be a(n) ",X), nl,nl,clear_facts. run:-write("\n unable to determine what "),
write("\n your animal is \n\n"), clear_facts. positive(X,Y):-xpositive(X,Y),!. positive(X,Y):-not(xnegative(X,Y)),!,ask(X,Y). negative(X,Y):-xnegative(X,Y),!. negative(X,Y):-not(xpositive(X,Y)),!,ask(X,Y). ask(X,Y):-write(X," is ",Y,"\n" ),readln(Reply),
animal_is(penguin):-it_is(bird), negative(does,fly), positive(does,swim), positive(has,black_and_white_color).
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,feather). it_is(bird):-positive(does,fly),positive(does,lay_eggs). it_is(carnivore):-positive(does,eat_eat). it_is(carnivore):-positive(has,pointed_teeth),

prolog实验报告PROLOG语言编程练习及图搜索问题求解

prolog实验报告PROLOG语言编程练习及图搜索问题求解

华北电力大学
实验报告
|
|
实验名称PROLOG语言编程练习及图搜索问题求解
课程名称人工智能及应用
专业班级:学生姓名:
学号:成绩:
指导教师:实验日期:2014.5.28
(实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm, 右2.1cm;字体:宋体小四号,1.25倍行距。


验证性、综合性实验报告应含的主要内容:
一、实验目的及要求
二、所用仪器、设备
三、实验原理
四、实验方法与步骤
五、实验结果与数据处理
六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)
七、所附实验输出的结果或数据
设计性实验报告应含的主要内容:
一、设计要求
二、选择的方案
三、所用仪器、设备
四、实验方法与步骤
五、实验结果与数据处理
六、结论(依据“设计要求”)
七、所附实验输出的结果或数据
* 封面左侧印痕处装订
1、字谜问题
结果输出
2、八皇后问题
结果输出
zebra.txt程序中,如何定义房间的位置关系?
答:next(A,B,[A,B,C,D,E])A的房间的下一个房间是B房间。

用Prolog编写的人工智能专家系统设计与实现

用Prolog编写的人工智能专家系统设计与实现

用Prolog编写的人工智能专家系统设计与实现人工智能(Artificial Intelligence,AI)作为一门前沿的科学技术,正在逐渐渗透到各个领域,并在其中发挥着重要作用。

专家系统(Expert System)作为人工智能的一个重要分支,在知识表示和推理方面具有独特优势,被广泛应用于医疗、金融、工业控制等领域。

而Prolog作为一种逻辑编程语言,其规则引擎和模式匹配特性使其成为构建专家系统的理想选择。

本文将介绍如何使用Prolog编写人工智能专家系统,包括设计思路、实现步骤和案例分析。

1. 专家系统概述专家系统是一种模拟人类专家决策过程的计算机程序,通过将专家的知识和经验转化为计算机可处理的形式,来解决复杂的问题。

专家系统通常由知识库、推理机制和用户接口三部分组成,其中知识库存储了领域知识,推理机制根据用户输入的问题和知识库中的规则进行推理,最终给出结论或建议。

2. Prolog简介Prolog是一种基于逻辑的编程语言,其核心思想是利用逻辑规则进行推理。

Prolog程序由事实(Facts)和规则(Rules)组成,通过匹配规则中的条件来实现推理过程。

Prolog具有强大的模式匹配能力和自动回溯机制,非常适合用于构建专家系统。

3. 人工智能专家系统设计3.1 知识表示在设计人工智能专家系统时,首先需要将领域知识表示为Prolog 中的事实和规则。

事实通常包括对象之间的关系或属性,而规则描述了根据某些条件得出结论的推理过程。

例如,在医疗领域的专家系统中,可以表示疾病与症状之间的关系,以及根据症状推断可能患有的疾病。

3.2 推理机制推理是专家系统的核心功能,Prolog通过自动搜索匹配规则来实现推理过程。

当用户提出问题时,系统会根据用户输入的信息和知识库中的规则进行匹配,并逐步推导出结论。

如果存在多个可能的结论,Prolog会尝试不同路径直到找到所有可能解。

3.3 用户接口为了方便用户与专家系统交互,需要设计友好的用户接口。

人工智能实验报告(二)2024

人工智能实验报告(二)2024

人工智能实验报告(二)
引言概述:
本文是关于人工智能实验的报告,主要研究了人工智能技术在
不同领域应用的情况。

通过实验,我们探讨了人工智能在语音识别、图像处理、自然语言处理、机器学习和智能推荐等方面的应用。


过这些实验,我们可以深入了解人工智能技术的发展和应用前景。

正文内容:
1. 语音识别
- 分析语音识别技术的基本原理和方法
- 探索语音识别在智能助手、语音控制和语音翻译等领域的应

- 研究不同语音识别算法的准确性和鲁棒性
2. 图像处理
- 研究图像处理算法及其在人脸识别、图像识别和图像增强等
方面的应用
- 比较不同图像处理算法的效果和性能
- 探讨图像处理技术在医疗、安防和智能交通等领域的潜力
3. 自然语言处理
- 分析自然语言处理技术的研究方向和应用场景
- 探讨自然语言处理在智能客服、文本分类和情感分析等方面
的应用
- 研究不同自然语言处理模型的性能和可扩展性
4. 机器学习
- 研究机器学习算法的基本原理和发展趋势
- 探索机器学习在数据挖掘、预测分析和推荐系统等领域的应用
- 比较不同机器学习算法的准确性和效率
5. 智能推荐
- 分析智能推荐算法的特点和应用场景
- 探讨智能推荐在电商、社交媒体和音乐平台等领域的应用
- 研究不同智能推荐算法的精度和个性化程度
总结:
通过本次实验,我们对人工智能技术在不同领域的应用有了更深入的了解。

语音识别、图像处理、自然语言处理、机器学习和智能推荐等方面的技术都展现出了巨大的潜力和发展空间。

随着人工智能技术的不断进步,我们可以期待在未来的各个领域看到更多创新和应用。

人工智能PROLOG程序

人工智能PROLOG程序

实验一 PROLOG 语言编程一、实验目的1.加深学生对逻辑程序运行机理的理解。

2.掌握PROLOG 语言的特点、熟悉其编程环境。

3.为今后人工智能程序设计做好准备。

二、预习要求1.复习PROLOG 语言的语法。

2.熟悉PROLOG 的语言环境。

3.阅读一些PROLOG 的程序。

三、实验内容1、编写一个描述亲属关系的PROLOG 程序,然后再给予出一些事实数据,建立一个小型演绎数据库。

提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。

2、编写一个路径查询程序,使其能输出图中所有路径。

提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。

3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。

为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。

(a )用Prolog 规则表述这个雇主的选择准则。

(b )用Prolog 事实描述下列申请者的情况:史密斯住在剑桥,会开车但不会打字。

布朗住在伦敦,会开车也会打字。

简住在格拉斯哥,不会开车但会打字。

埃文斯住在伦敦,会开车也会打字。

格林住在卢顿,会开车也会打字。

(c )要求Prolog 提供一个候选人名单。

e四、代码1、编写一个描述亲属关系的PROLOG程序,然后再给予出一些事实数据,建立一个小型演绎数据库。

提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。

domainsname=symbol.predicatesmother(name,name).father(name,name).grandfather(name,name).grandmother(name,name).sister(name,name).aunt(name,name).goalgrandmother(a,X),write("X=",X),nl,father(b,Y),write("Y=",Y),nl,sister(d,Z),write("Z=",Z),nl,aunt(d,T),write("T=",T).clausesmother(a,c).mother(a,d).mother(c,g).mother(c,f).father(b,c).father(b,d).father(e,g).father(e,f).grandfather(X,Z):-father(X,Z),father(Y,Z).grandmother(X,Z):-mother(X,Y),mother(Y,Z).sister(X,Y):-mother(Z,X),mother(Z,Y).aunt(X,Y):-mother(Z,Y),sister(Z,X).2、编写一个路径查询程序,使其能输出图中所有路径。

人工智能实验报告

人工智能实验报告

人工智能课程报告——专业:计算机科学与技术年级:姓名:学号:成绩:2011-11-01 实验名称:人工智能程序设计——少量动物识别专家系统本程序用于识别豹子、老虎、鸟、长颈鹿、斑马等七种动物的一个实验专家系统。

通过本程序的编制理解PROLOG的运行机制及推理规则,同时对专家系统有初步的了解。

源程序代码如下:databasexpositive(symbol,symbol).xnegative(symbol,symbol).predicatesrunanimal_is(symbol)it_is(symbol)positive(symbol,symbol)negative(symbol,symbol)clear_factsremember(symbol,symbol,symbol)ask(symbol,symbol)clausesrun:-animal_is(X),!,write("\nyour animal may be a(n) ",X),nl,nl,clear_facts.run:-write("\n unable to determine what "),write("\n your animal is \n\n"), clear_facts.positive(X,Y):-xpositive(X,Y),!.positive(X,Y):-not(xnegative(X,Y)),!,ask(X,Y).negative(X,Y):-xnegative(X,Y),!.negative(X,Y):-not(xpositive(X,Y)),!,ask(X,Y).ask(X,Y):-write(X," is ",Y,"\n" ),readln(Reply),remember(X,Y,Reply).remember(X,Y,yes):-assertz(xpositive(X,Y)).remember(X,Y, no):-assertz(xnegative(X,Y)),fail.clear_facts:-retract(xpositive(_,_)),fail.clear_facts:-retract(xnegative(_,_)),fail.clear_facts:-write("\n\nplease press the space bar to Exit"),readchar(_).animal_is(cheetah):-it_is(mammal),it_is(carnivore),positive(has,tawn y_color),positive(has,black_spots).animal_is(tiger):-it_is(mammal),it_is(carnivore),positive(has,tawny_c olor),positive(has,black_stripes).animal_is(giraffe):-it_is(ungulate),positive(has,long_neck),positive(has,long_legs),positive(has,dark_spots).animal_is(zebra):-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). 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,feather).it_is(bird):-positive(does,fly),positive(does,lay_eggs).it_is(carnivore):-positive(does,eat_eat).it_is(carnivore):-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(has,chew_cud).谓词解释:Xpositive肯定数据库——记录yes选项的谓词,xnegative否定数据库——记录no选项的谓词。

prolog实验报告-周俊雯参考模板

prolog实验报告-周俊雯参考模板

北邮人工智能实验报告prolog班级:2011211307姓名:周俊霞日期:2014-05-111、实验题目:用PROLOG完成以下系统的编写。

給出代码和一个运行实例,辨别云的类型。

低纬度云是那些高度等于或低于6000英尺高的云,包括层云和层积云;中纬度云是高度在6000—20000英尺的云,包括高层云、高积云和乱层云;高纬度云是那些高于20000英尺的云,包括卷云、卷层云和卷积云。

积云和积雨云可以从低到高纬度之间分布;层云、高层云、卷层云、积云和积雨云呈大圆锥状;层积云、高积云、乱层云、卷积云象平滑绵延的被单;卷云有纤细的外观,象一簇簇头发;乱层云和积雨云是含雨云,呈黑灰色。

2、实验要求:编写一个程序辨别云的类型,程序的输入是描述云特征的事实,输出为已辨别的云的类型。

*写出一个运行实例(输入、输出)。

3、源代码:/***************************************************************************** Copyright (c) My CompanyProject: CLOUDFileName: CLOUD3.PROPurpose: No descriptionWritten by: Visual PrologComments:******************************************************************************/ include "cloud.inc"domainsCloud_x,Type,Shape,Color,What = symbolHight = integerfacts% 云,有云的名字,高度,形状,颜色四个属性;cloud(Cloud_x,Hight,Shape,Color)predicatesnondeterm is(Cloud_x,Type)clauses%此处为某个已知的云,有云的名字,高度,形状,颜色四个属性;cloud(cloud_lily,7000,big_cone,blackgray).%判断某云是否为~~云;如is(Cloud_x,cengyun)判断某云是否为层云is(Cloud_x,cengyun):-cloud(Cloud_x,Hight,Shape,Color),Hight<=6000,Shape="big_cone", Color="white".is(Cloud_x,cengjiyun):-cloud(Cloud_x,Hight,Shape,Color),Hight<=6000,Shape="sheets",C olor="white".is(Cloud_x,gaocengyun):-cloud(Cloud_x,Hight,Shape,Color),Hight>=6000,Hight<=20000, Shape="big_cone",Color="white".is(Cloud_x,gaojiyun):-cloud(Cloud_x,Hight,Shape,Color),Hight>=6000,Hight<=20000,Sha pe="sheets",Color="white".is(Cloud_x,luancengyun):-cloud(Cloud_x,Hight,Shape,Color),Hight>=6000,Hight<=20000 ,Shape="sheets",Color="blackgray".is(Cloud_x,juanyun):-cloud(Cloud_x,Hight,Shape,Color),Hight>20000,Shape="hair",Color ="white".is(Cloud_x,juancengyun):-cloud(Cloud_x,Hight,Shape,Color),Hight>20000,Shape="big_co ne",Color="white".is(Cloud_x,juanjiyun):-cloud(Cloud_x,Hight,Shape,Color),Hight>20000,Shape="sheets",C olor="white".is(Cloud_x,jiyun):-cloud(Cloud_x,_,Shape,Color),Shape="big_cone",Color="white".is(Cloud_x,jiyuyun):-cloud(Cloud_x,_,big_cone,blackgray).goalwrite("input the name,hight(0~200000),the shape(big_cone,or sheets,or hair),and the color(blackgray or white) of your cloud"),nl,write("input the name"),nl,readln(Cloud_x),write("name:",Cloud_x),nl,write("input the hight"),nl,readint(Hight),write("hight:",Hight),nl,write("input the shape"),nl,readln(Shape),write("shape:",Shape),nl,write("input the color"),nl,readln(Color),write("color:",Color),nl,assertz(cloud(Cloud_x,Hight,Shape,Color)),is(Cloud_x,What).4、运行实例:其中,云的名字,如lily高度如7000形状如big_cone形状如blackgray根据提示每次输入一个属性然后得到运行结果5、搜索规则:PROLOG自动搜索机制为满足一目标,从知识库顶起以遍历方式逐一匹配。

人工智能实验报告-PROLOG语言编程练习

人工智能实验报告-PROLOG语言编程练习

课程实验报告学年学期2015—2016年第一学期课程名称人工智能原理与技术实验名称PROLOG语言编程练习实验室无专业年级电气134水利与建筑工程学院第一章 PROLOG语言编程练习1.1 实验目的加深学生对逻辑程序运行机理的理解,使学生掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。

(1)熟悉PROLOG语言编程环境的使用;(2)了解PROLOG语言中常量、变量的表示方法;(3)了解利用PROLOG进行事实库、规则库的编写方法;1.2 实验环境计算机,Turbo PROLOG教学软件。

1.3 预习要求实验前应阅读实验指导书,了解实验目的、预习PROLOG语言的相关知识。

1.4 实验内容(1)学习使用Turbo PROLOG,包括进入PROLOG主程序、编辑源程序、修改环境目录、退出等基本操作。

(2)在Turbo prolog集成环境下调试运行简单的Turbo PROLOG程序,如描述亲属关系的PROLOG程序或其他小型演绎数据库程序等。

1.5 实验方法和步骤(1)启动Windows XP操作环境。

(2)打开文件目录,执行prolog应用程序,启动Turbo prolog,并按空格键(SPACE)进入集成开发环境。

(3)选择Setup项,打开下拉菜单,选择Directories项,进行工作目录修改,按Esc键退出,选择Save Configuration项,保存修改。

(4)选择Files项,打开下拉菜单,选择New file项,进入源程序输入和编辑,或选择Load项,选择要打开的示例程序,再选择Edit项,可以进行编辑源程序。

(5)编辑之后,可以选择Run项,执行程序,可以在Dialog窗口进行询问,即外部目标的执行,查看程序运行结果,分析程序之功能。

(6)仿前例,可以选择其他程序并运行,分析程序功能。

(7)退出,选择Quit项,可以退出Turbo Prolog程序,返回到Windows XP环境。

程序语言prolog_实验报告

程序语言prolog_实验报告
图 1 编写、解释程序结果
(2)打开 SWI-Prolog,单击打开选项,选择刚才生成的程序解释 文件“家谱.pl”运行。
图 2 运行文件“家谱.pl” (3)检验程序。根据程序已知相互关系和给定关系规则,通过询 问语句检测程序的正确性。首先,分别输入并执行如下语句: grandfather(X,c). ——问 c 的(外)祖父是谁。 grandmother(Y,c). ——问 c 的(外)祖母是谁。 daughter(a1,Z). ——问 a1 的女儿是谁。 如图 3 所示,程序回答结果如下: X = a1. Y = a2. Z = b2.
就是对递归功能运用。 (四)Prolog 没有特定的运行顺序,顺序由电脑决定。比如问题
2 中,选择 a 到 g 的路径,如果不使用关键字“fail”,当执行语句 “path(a,g,L),write(L). ”时,并不能决定程序给出哪条路径。由于 程序员不能决定程序运行顺序,所以 Prolog 没有其它语言的 if、when、 case、fo 控制流程语句。
father(b1,c). mother(a2,b2). mother(b2,c). grandfather(X,Y):-father(X,Z),father(Z,Y). grandfather(X,Y):-father(X,Z),mother(Z,Y). grandmother(X,Y):-mother(X,Z),father(Z,Y). grandmother(X,Y):-mother(X,Z),mother(Z,Y). daughter(X,Y):-father(X,Y),female(Y). 执行解释后保存为 Prolog 文件“家谱.pl”。
问题 1:假设有这样一个家庭成员示意图:
a1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北电力大学科技学院
实验报告
|
|
实验名称PROLOG语言编程练习及图搜索问题求解
课程名称人工智能及应用
|
|
专业班级:学生姓名:
学号:成绩:
指导教师:刘丽实验日期:
(实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.9cm, 右2.1cm;字体:宋体小四号,1.25倍行距。


验证性、综合性实验报告应含的主要内容:
一、实验目的及要求
二、所用仪器、设备
三、实验原理
四、实验方法与步骤
五、实验结果与数据处理
六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)
七、所附实验输出的结果或数据
设计性实验报告应含的主要内容:
一、设计要求
二、选择的方案
三、所用仪器、设备
四、实验方法与步骤
五、实验结果与数据处理
六、结论(依据“设计要求”)
七、所附实验输出的结果或数据
* 封面左侧印痕处装订
抽Lucky Strike牌香烟的人喜欢喝桔子汁(orange juice)
乌克兰人(ukrainian)喜欢喝茶(tea)
日本人(japanese)抽parliaments牌的烟
抽kools牌的香烟的人与养马(horse)的人是邻居
喜欢喝咖啡(coffee)的人住在绿(green)房子里
绿(green)房子在象牙白(ivory)房子的右边(图中的右边)
中间那个房子里的人喜欢喝牛奶(milk)
根据以上条件,你能告诉我哪个房子里的人养斑马(zebra),哪个房子里的人喜欢喝水(water)吗?或者你能把所有的东西都对号入座吗?
传教士与野人问题:有N个传教士和N个野人来到河边准备渡河,河岸有一条船,每次至多可k人乘渡。

问传教士为了安全起见,应如何规划摆渡方案,使得任何时刻,在河的两岸以及船上的野人数目总是不超过传教士的数目。

即求解传教士和野人从左岸全部摆渡到右岸的过程中,任何时刻满足M(传教士数)≥C(野人数)和M+C≤k的摆渡方案。

四、实验方法与步骤
1、启动Windows 2000以上版本操作环境。

2、启动PROLOG集成开发环境。

3、选择Files/New/Text Edit项可以进行源程序编辑。

4、编辑结束之后,选择Compile项编译程序,并分析程序是否有语法或逻辑错误。

5、在主窗口的询问栏写入问题,选择Prove求取问题答案。

6、退出,选择Files/Exit项,可以退出PROLOG编辑编译环境,返回到Windows环境。

移动作用的某个状态上,从而到达新的状态。

最后再使用深度搜索方法就可以找到答案了。

六、讨论与结论
爱因斯坦超级问题:由于第13个条件中我们没有使用题目中的右边的限制,所以答案就有两个,你可以看到这两个答案的最后两个房间正好倒了过来。

传教士野人问题:人工智能搜索可分为盲目搜索和启发式搜索。

盲目搜索算法有宽度优先算法、深度优先算法,启发式搜索算法有A算法、A*算法。

本实验采用的是盲目搜索算法。

Prolog是描述型的语言,你只要使用Prolog的语言把问题描述一遍就行了,剩下的问题就让计算机做吧。

如果使用其它的语言,例如C、Basic等,你就不得不自己考虑程序的流程,所以这些语言都叫作过程型的语言。

比起Prolog可是低级多了。

七、所附实验输出的结果或数据
爱因斯坦的超级问题:
- solve(X,TT,TTT).
传教士野人问题:
- findroad(((0,0),(3,3),1),((3,3),(0,0),0),[((0,0),(3,3),1)],L).
需要回答的问题
13题.总结prolog的发展历史
答:Prolog(Programming in Logic的缩写)是一种逻辑编程语言。

它创建在逻辑学的理论基础之上,最初被运用于自然语言等研究领域。

现在它已广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解、智能知识库等。

Prolog语言最早由Aix-Marseille大学的Alain Colmerauer与Phillipe Roussel 等人于60年代末研究开发。

1972年被公认为是Prolog语言正式诞生的年份,自1972年以后,分支出多种Prolog的方言。

最主要的两种方言为Edinburgh和Aix-Marseille。

最早的Prolog解释器由Roussel建造,而第一个Prolog编译器则是David Warren编写的。

Prolog一直在北美和欧洲被广泛使用。

日本政府曾经为了建造智能计算机而用Prolog来开发ICOT第五代计算机系统。

在早期的机器智能研究领域,Prolog曾经是主要的开发工具。

80年代Borland开发的Turbo Prolog,进一步普及了Prolog的使用。

相关文档
最新文档