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的求解过程就是一个不断通过规则进行匹配,最后匹配到事实后回溯得出解的过程。
本次实验通过求解险洞探险问题与农夫过河问题,加深了一些对人工智能这门课的理解。
实验很成功地完成,收获很大。
七、所附实验输出的结果或数据
1.险洞探险问题:
2.农夫过河问题:
八、实验问题解答
查询有哪些端口?
一开始使用Call端口进入目标,如果匹配成功就到了exit端口,如果失败就到了fail端口,如果用户输入回车,则又从redo端口进入目标每个端口的功能如下:
call 开始使用目标搜寻子句;
exit 目标匹配成功,在成功的子句上作记号,并绑定变量;
redo 试图重新满足目标,首先释放变量,并从上次的记号开始搜索;fail 表示再找不到更多的满足目标的子句了。
prolog实验报告小结
prolog实验报告小结Prolog实验报告小结在本次实验中,我们使用了Prolog编程语言来解决一系列逻辑推理和知识表示的问题。
Prolog是一种基于逻辑的编程语言,它使用逻辑规则和事实来进行推理和查询。
在本次实验中,我们学习了如何使用Prolog来表示知识,并使用它来解决一些经典的逻辑问题。
首先,我们学习了如何使用Prolog来表示事实和规则。
通过使用事实和规则,我们可以建立一个知识库,其中包含了我们关于世界的知识。
然后,我们可以使用这些知识来进行逻辑推理,找出答案或解决问题。
在实验中,我们还学习了如何使用Prolog来进行逻辑查询。
通过编写查询语句,我们可以向Prolog系统询问特定的问题,然后系统会使用已有的知识库来进行推理,并给出答案。
这种方式非常适合于解决逻辑问题,比如逻辑谜题或者逻辑推理问题。
此外,我们还学习了如何使用Prolog来实现递归。
递归是一种非常重要的编程技术,它可以帮助我们处理一些复杂的问题,比如树形结构或者列表操作。
在本次实验中,我们使用Prolog来实现了一些递归算法,比如计算阶乘或者斐波那契数列。
总的来说,本次实验让我们对Prolog编程语言有了更深入的了解。
通过实际操作,我们学会了如何使用Prolog来表示知识、进行逻辑推理和解决问题。
Prolog是一种非常强大的编程语言,它可以帮助我们解决许多复杂的逻辑问题,而且在人工智能领域也有着广泛的应用。
希望通过本次实验,同学们都能对Prolog有更深入的了解,并能够在以后的学习和工作中运用到这种强大的编程语言中。
人工智能实验报告(熟悉专家系统开发工具)
实验结论(结果)
求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!的值。
实验准备(预习程序)
人工智能实验报告一
实验内容、方法和步骤
一)实验内容:
1、熟悉Turbo prolog的运行环境,包括所用的机器的硬件与软件环境。
2、学习使用Turbo prolog,包括进入Prolog主程序、编辑源程序、修改
环境目录、退出等基本操作。
3、学习Turbo prolog的简单程序结构,掌握分析问题、询问解释技巧。
4、了解PROLOG语言中常量、变量的表示方法;
5、利用PROLOG进行事实库、规则库的编写,并在此基础上进行简单的询
问;
6、利用PROLOG中的谓词asserta和retract进行数据管理。
二)实验步骤:
1、启动Windows操作环境。
2、打开目录,执行prolog应用程序,启动Turbo prolog,并按空格键
(SPACE)集成开发环境。
3、选择Setup项,打开下拉菜单,选择Directories项,将工作目录进行
修改,按Esc键退出,选择Save Configuration项,保存修改。
选择Example 1示例程序,再选择Edit项,可以进行编辑源程序。
即外部目标的执行,并分析程序之功能。
6、仿前例,运行Example 11、Example 15,分析程序功能。
7、退出,选择Quit项,可以退出Turbo Prolog程序,返回到Windows环
境。
实验结果
Example 1:
Example 11:
Example 15:。
Prolog编程练习 实验报告
武 夷 学 院实验报告数学与计算机系PROLOG编程练习一、目的要求进入实验机房,加深学生理解-逻辑程序运行的机理,如简单逻辑与、或、非的运算等;使学生掌握PROLOG语言(也可用数据库、C或C++语言中逻辑类指令来实现的语言)的特点、熟悉其编程环境,同时为后面人工智能程序设计做好准备。
二、实验内容在Turbo PROLOG 或 Visual Prolog 集成环境下调试运行简单的PROLOG程序,如描述亲属关系的PROLOG程序,或其它语言小型演绎数据库程序,等等。
具体要求:1.程序自选,但必须是描述某逻辑关系的小程序(也可用数据库指令或C或C++语言实现)。
2.跟综程序运行过程,理解逻辑程序特点(特别是逻辑值状态等)。
3.对原程序可做适当修改,以方便熟悉程序的编辑、编译和调试等过程。
4.示例程序(逻辑电路模拟程序),详见教材P295-296。
⑴逻辑“与”运算⑵逻辑“或”运算⑶逻辑“非”运算三、实验环境Windows 7 , dev c++四、实验步骤1.概述逻辑程序运行的机理答:逻辑程序设计将逻辑直接作为程序设计语言并将计算作为受控推理的一种程序设计技术。
这种将逻辑与控制分开的方法具有下列的优点:①可以在控制部分设计之前不断改进逻辑程序。
②可以改进控制部分而无需变动逻辑程序本身。
③可以从程序说明中生成逻辑程序,加以验证和变换,而无需考虑其控制部分。
④只需在逻辑程序中规定目标和实现这些目标的现有条件,也就是只需告诉系统做什么(What to do),至于如何执行也就是说怎样做(How to do),则由系统的控制部分,即解释程序处理解决。
2.写出逻辑程序语言特点及其编程环境(结合你所选择语言系统硬软件情况)# include <stdlib.h>IntMain(){Int a,b,c;c = a || b; /* 或,与,非*/c = a && b;c = !a;c = !b;}五、实验心得体会通过本次实验,我懂得了什么是逻辑编程语言,懂得了基本的逻辑关系,与逻辑的实现。
人工智能试验一认识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语言编程练习
人工智能技术基础实验报告指导老师:朱力任课教师:张勇实验一PROLOG语言编程练习一、实验目的加强学生对逻辑程序运行机能的理解,使学生掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。
二、实验环境在Turbo PROLOG或Visual Prolog集成环境下调试运行简单的PROLOG程序,三、实验内容运行给定的五个程序,验证程序,得到结果,理解逻辑程序的特点,熟悉程序的编辑、编译和调试过程四、实验步骤1、打开Turbo prolog2.0文件,启动prolog.exe应用程序,并按空格键(SPACE)进入集成开发环境。
2、选择Setup项,打开下拉菜单,选择Directories项,进行工作目录修改,按Esc键退出,选择Save Configuration项,保存修改。
3、在相应的路径所在文件件夹中会生成work.Pro文件将其用文本打开,将要运行的程序写入,保存。
4、选择Files项,选择Load项,选择要打开的示例程序5、编辑之后,可以选择Run项,执行程序,可以在Dialog窗口进行询问,即外部目标的执行,查看程序运行结果,分析程序之功能。
6、仿前例,可以选择其他程序并运行,分析程序功能。
7、退出,选择Quit项,可以退出Turbo Prolog程序。
五、实验源程序验证题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: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: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: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:domainsname=symbolage =integer predicatesplayer(name,age)match(name,name) cluasesplayer(peter, 9).player(paul, 10).player(chris, 9).player(susan, 9).六、实验结果验证一:计算数的非,与,或,异或,验证逻辑关系,非,与,或,异或的正确性图1.1图1.2验证二:查找某个人的成绩图2 验证三:计算数的阶层图3验证四:走迷宫找出口图4验证五在外部Goal: match(X,Y)条件下,分别采用以上各match谓词,观察对应的执行结果。
北邮大三下 人工智能 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语言编程练习及图搜索问题求解
华北电力大学
实验报告
|
|
实验名称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语言>>教学实习报告题目:动物识别系统学号 0908054113 姓名丁浩轩系别计算机科学与信息工程系专业班级软件工程1班指导教师马国强成绩评定2012年8月目录1 开发内容 (1)1.1 开发目标 (1)1.2 实习任务 (1)1.3 运行设备及环境 (1)1.4 实习主要步骤 (1)2 问题及算法 (1)2.1 问题的描述 (1)2.2 算法的一般思路 (2)2.3求解问题的算法描述 (3)2.4 算法实现的关键技巧 (4)3 运行结果与分析 (13)5 程序分析及结论 (14)1 开发内容1.1 开发目标(1)综合应用“知识表示”、“知识获取”、“知识利用”这三个人工智能技术的基本知识以及程序设计的相关知识。
(2)通过设计一个专家系统,并使用Prolog语言将其实现,加深对专家系统和Prolog语言的了解。
1.2 实习任务使用prolog编写一个动物识别的专家系统,并对其尽可能多地进行改进。
1.3 运行设备及环境PC机; prolog软件1.4 实习主要步骤根据任务目标,明确开发的具体任务;设计求解问题的流程图,并编写程序实现算法;2问题及算法2.1 问题的描述尽管专家系统有众多类型, 名称各异, 但基本原理框图一致, 如图 1 所示。
专家系统的核心是知识库和推理机, 其基本工作过程为: 系统根据知识库中的知识和用户提供的事实进行推理, 不断地由已知前提推出一些初步结论, 并将这些初步结论作为中间结果存放在数据库中, 然后将其作为新的已知事实进行下一步推理, 往复循环, 逐步逼近求解目标。
在这个过程中, 系统可以通过人机接口不断地与用户交流, 向用户提问, 或对用户提出的问题做出解释。
知识库是专家系统的知识存储器, 用来存放求解问题的领域知识( 包括事实性知识和启发性知识) 。
常见的知识表示法有: 一阶谓词逻辑表示法、产生式规则表示法、语义网络表示法、框架表示法、脚本表示法、过程表示法、状态图表示法、面向对象表示法以及一些不确定知识的表示方法等。
实验二:使用Prolog的一阶逻辑推理实验
实验二:使用Prolog的一阶逻辑推理实验班级;智能1401姓名:蒙寿伟学号:201408070120一.实验目的1.学会使用Prolog语言;2.用Prolog语言巩固一阶逻辑知识;3.能够使用prolog语言实现一阶逻辑的证明;二、实验的硬件、软件平台硬件:计算机软件:操作系统:WINDOWS 10应用软件:Prolog三、实验内容及步骤熟悉prolog语言的使用并实现对于一阶逻辑推理的证明实验步骤:1:对于a,b,c,d四种输入情况,验证|?- p(a).的真假;a.p(b). p(a) :- p(b). p(a) :- p(c)推理分析:事实:p(b)为真.推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.运行结果:b. p(c). p(a) :- p(b). p(a) :- p(c).推理分析:事实:p(c)为真.推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.运行结果:c. p(b). p(a) :- p(b) ,p(c).推理分析:事实:p(b)为真.推理:由p(b)为真且p(c)为真可以推出p(a)为真.结论:p(a)为假.因为p(b)未知.d. p(c). p(a):- p(b) ; p(c).推理分析:事实:p(b)为真.推理:由p(b)为真或p(c)为真可以推出p(a)为真.结论:p(a)为真.2.验证?-friend(john,Y).likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane ,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).推理分析:1.如果X喜欢音乐,而且喜欢阅读,那么X是john的朋友。
