PROLOG语言编程练习及图搜索问题求解

((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((1, 1), (2, 2), 0), ((0, 0), (3, 3), 1), ((0, 2), (3, 1), 0), (0, 0), (3, 3), 1]
SOLUTION: L=[((3, 3), (0, 0), 0), ((3, 1), (0, 2), 1), ((3, 2), 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1), ((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((0, 2), (3, 1), 0), (0, 0), (3, 3), 1]
华北电力大学科技学院
实验报告
| |
实验名称 PROLOG 语言编程练习及图搜索问题求解
课程名称 人工智能及应用
| |
专业班级:
学生姓名:
学 号:
成 绩:
指导教师:
实验日期:
(实验报告如打印,纸张用 A4,左装订;页边距:上下 2.5cm,左 2.9cm, 右 2.1cm;字体:宋体小四号,1.25 倍行距。) 验证性、综合性实验报告应含的主要内容:
SOLUTION: L=[((3, 3), (0, 0), 0), ((3, 1), (0, 2), 1), ((3, 2), (0, 1),
0), ((3, 0), (0, 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1), ((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((1, 1), (2, 2), 0), ((0, 0), (3, 3), 1), ((0, 1), (3, 2), 0), (0, 0), (3, 3), 1]
(3, 2), 0), (0, 0), (3, 3), 1] SOLUTION:
L=[((3, 3), (0, 0), 0), ((3, 1), (0, 2), 1), ((3, 2), (0, 1), 0), ((3, 0), (0, 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1),
update((X,Y,1),Move,Statu1):(A,B)=X,
第 页共 页
华北电力大学科技学院实验报告
(C,D)=Y, (E,F)=Move, C1 is C-E, D1 is D-F, A1 is A+E, B1 is B+F, Statu1=((A1,B1),(C1,D1),0).//求出左岸的状态 //调用 connect 规则,求出 Statu1,并对其进行判断是否合法 connect(Statu,Statu1):move(X,Y), update(Statu,(X,Y),Statu1), legal(Statu1).
L=[((3, 3), (0, 0), 0), ((2, 2), (1, 1), 1), ((3, 2), (0, 1), 0), ((3, 0), (0, 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1),
((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((0, 2), (3, 1), 0), ((0, 0), (3, 3), 1), ((0, 1),
第 页共 页
华北电力大学科技学院实验报告
对字谜问题,初步了解规则与递归的使用方法;对于传教士与野人问题, 稍有难度,就是对许多小的规则一起调用的方法,最后涉及到深度优先的算 法,与老师和同学进行讨论,并一步步算出结果,加深深度优先算法,提高 了思维能力,并继续努力!
七、所附实验输出的结果或数据 实验一: SOLUTION:
L=[((3, 3), (0, 0), 0), ((2, 2), (1, 1), 1), ((3, 2), (0, 1), 0), ((3, 0), (0, 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1),
第 页共 页
华北电力大学科技学院实验报告
((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((1, 1), (2, 2), 0), ((0, 0), (3, 3), 1), ((0, 1), (3, 2), 0), (0, 0), (3, 3), 1]
word(V1,_,A,_,B,_,C,_),//行与列交叉的设为变量 word(V2,_,D,_,E,_,F,_), word(V3,_,G,_,H,_,I,_), word(H1,_,A,_,D,_,G,_), word(H2,_,B,_,E,_,H,_), word(H3,_,C,_,F,_,I,_).
SOLUTION: L=[((3, 3), (0, 0), 0), ((2, 2), (1, 1), 1), ((3, 2), (0, 1),
0), ((3, 0), (0, 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1), ((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((0, 2), (3, 1), 0), (0, 0), (3, 3), 1]
一、实验目的及要求 二、所用仪器、设备 三、实验原理 四、实验方法与步骤 五、实验结果与数据处理 六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问 题等进行分析和讨论,对实验的进一步想法或改进意见) 七、所附实验输出的结果或数据 设计性实验报告应含的主要内容: 一、设计要求 二、选择的方案 三、所用仪器、设备 四、实验方法与步骤 五、实验结果与数据处理 六、结论(依据“设计要求”) 七、所附实验输出的结果或数据
野人数),船的位置)。 (2) 定义目标状态。这里是:((0,0),(3,3),1) (3) 描述可能的动作。船上所能够载人的状态就是可能的操作。用谓词 move 表
第 页共 页
华北电力大学科技学院实验报告 示。 (4) 判断合法状态 (5)深度优先搜索
五、求解的问题与程序 实验一:字谜问题 //定义 word 规则 word(abalone,a,b,a,l,o,n,e). word(abandon,a,b,a,n,d,o,n). word(enhance,e,n,h,a,n,c,e). word(anagram,a,n,a,g,r,a,m). word(connect,c,o,n,n,e,c,t). word(elegant,e,l,e,g,a,n,t). crosswd(V1,V2,V3,H1,H2,H3):-//定义 crosswd 规则
二、所用仪器、设备
PC 机和 trinc prolog 编译软件
三、实验原理
PROLOG 语言是一种以逻辑推理为基础的逻辑型程序设计语言,是一种陈述性语言而 不是过程性语言。PROLOG 语言能够自动实现模式匹配和回溯、具备递归技术,而且语法 简明,可以简化复杂问题求解。
四、实验方法与步骤
1,先搭配实验环境:PC 机和 trinc prolog 编译软件 2,写好程序进行编译 3,用“?-”来检测程序结果 4,实验一 (1) 定义 word 规则 (2) 定义 crossword (3) 定义行列重复的设为变量 (4) 递归算法查找结果 5,实验二 (1)设计该问题的状态。例如:((左岸牧师数,左岸野人数),(右岸牧师数,右岸
member(X,[X|Tail]). member(X,[Head|Tail]):-member(X,Tail). //深度优先算法 findroad(X,X,L,L). findroad(X,Y,L,L1):connect(X,Z),not(member(Z,L)), findroad(Z,Y,[Z|L],L1). 六、讨论与结论 根据本次实验收获很大,又了解一门新的编程语言,与平时用的不一样, 是面向逻辑的,通过老师上课和课下的实验,又加深对其的了解。
SOLUTION: L=[((3, 3), (0, 0), 0), ((3, 1), (0, 2), 1), ((3, 2), (0, 1),
0), ((3, 0), (0, 3), 1), ((3, 1), (0, 2), 0), ((1, 1), (2, 2), 1), ((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((1, 1), (2, 2), 0), ((0, 0), (3, 3), 1), ((0, 2), (3, 1), 0), (0, 0), (3, 3), 1]
((2, 2), (1, 1), 0), ((0, 2), (3, 1), 1), ((0, 3), (3, 0), 0), ((0, 1), (3, 2), 1), ((0, 2), (3, 1), 0), ((0, 0), (3, 3), 1),
((0, 1), (3, 2), 0), (0, 0), (3, 3), 1] SOLUTION:
SOLUTION: L=[((3, 3), (0, 0), 0), ((2, 2), (1, 1), 1), ((3, 2), (0, 1),
合集下载

图搜索问题求解(二)

图搜索问题求解(二)
1
0
1
1
1
1
0
0
1
1
1
0
0
0
1
0
1
1
1
0
0
0
0
0
0
[实现提示]
可使用回溯方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;
否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的
通路都探索到而未能到达出口,则所设定的迷宫没有通路。
二实验过程记录:
1、打开Eclipse,新建一个public Position文件,输入如下函数代码:
pos =stack.pop();
newPos.push(pos);
}
}
/*
*图形化输出路径
* */
String resault[][]=newString[row+1][col+1];
for(intk=0;k<row;++k){
for(intt=0;t<col;++t){
resault[k][t]=(maze[k][t])+"";
p[i - 1][j] =true;
stack.push(newPosition(i - 1, j));
i--;
}else{
stack.pop();
if(stack.empty()){
break;
}
i =stack.peek().row;
j =stack.peek().col;
}
}
Stack<Position> newPos =newStack<Position>();

Prolog语言(耐心看完-你就入门了)剖析

Prolog语言(耐心看完-你就入门了)剖析
2024/8/13
Prolog的求解过程:
第一步:问题 uncle(a,U) 与事实逐个匹配, 不成功
2024/8/13
father(a, b). father(c, d). brother(a, c).
uncle(a,U) uncle(X, Y) :- brother(X, Z) , father(Z, Y). 第二步:与规则头(左部)匹配,即寻找合一者, 有 {a/X, U/Y} 转化为两个子问题:brother(a, Z)和father(Z, U)
人工智能
Artificial Intelligence (AI)
2024/8/13
Prolog 语言简介 Prolog语言是一种以一阶谓词为基础的逻辑性语 言(Programming in Logic)
2024/8/13
Prolog语言的特点 Prolog语言的基本内容 简单的例子
2024/8/13
例: P([the, cat, sat, down]).
?- P([ X | Y ]). 答案:X=the, Y=[cat, sat, down]
?-P([ X , Y | Z ]). 答案:X=the, Y=cat,Z=[sat, down]
2024/8/13
4 Prolog程序的结构
Prolog的程序分为两部分: 前提部分:所有事实和规则 问题部分:目标子句序列
2024/8/13
Prolog的求解过程
likes(m, f). likes(m, w). likes(j, w). likes(j, s).
现在有两个问题:likes(m, X) 和 likes(j, X))
第一步:第一个问题 likes(m, X) 去与事实匹配 (置换与合一),按顺序得到 {f/X}

Prolog实验报告-科技学院

Prolog实验报告-科技学院
inform(Loc1, Loc2):-nl,
write('Move a disk from '-Loc1-' to '-Loc2).
2、传教士与野人问题
源程序:
%船上所能够载人的状态就是可能的操作
move(1,0). %表示船上有一位牧师,没有野人。
move(0,1).
move(0,2).
move(2,0).
五、求解的问题与程序
1、汉诺塔问题
源程序:
hanoi(N):-move(N,left,middle,right).
move(1,A,_,C):-inform(A,C),!.
move(N,A,B,C):-N1 is N-1,move(N1,A,C,B),inform(A,C),move(N1,B,A,C).
2>、把最后一个盘子直接移到右边的杆子上
3>、最后把中间杆子上的盘子移到右边的杆子上(把左边的杆子作为临时存放盘子的位置)
2、传教士与野人问题
假设开始时传教士、野人和船都在右岸 用数组(a,b,c)分别表示右岸传教士个数、右岸野人个数、船的位置 则可分为三种情况讨论: A、n>m/2。此种情况下 先把所有的野人度过去 每次返回一个野人 当出现(m,0,0)情况时 返回m-n个野人(若m==n,返回1个野人)。然后渡n个传教士 此时野人==传教士 然后返回一个野人和传教士 再开始最大限度的渡传教士 每次返回一个野人,最终直到a==b==c==0B、n<=3&&n<=m/2 || n==1显然此时无解C、n>=4&&n<=m/2此时只能每次传n/2个传教士和野人,每次返返回一个野人和传教士,直到最终结果。

用于人工智能的Prolog语言

用于人工智能的Prolog语言
(7)如果有多个回答都满足目标,那么Prolog 将尽可能多地回答。
在示例程序中,添加有关性别的信息: Predicates
parent(symbol)
clauses parent(pam,bo
b). parent(tom,bo
b).
male(tom). male(bob). male( jim).
(3)关系的对象可以是常量 (如:tom,ann) ,也可以是变量(如:X,Y)。
(4)向系统提出问题,可由一个或多个目标组成。
(5)一个Prolog 程序由一些子句(clauses)组成。每个子句用句号结束。
(6)对一个问题的回答是肯定的或者是否定的,取决于相应的目标是否满足。 在肯定回答的情况下,说相应的目标是可满足的,而且这个目标成功了。 否则,说目标不可满足,目标失败了。
parent(Z,X), parent(Z,Y), female(X).
sister(X,pat).
改进的sister规则:
predicates
parent(symbol,symbol)
sister(symbol,symbol)
female(symbol)
male(symbol)
different(symbol,sym
R("zhsan").
4.2 家庭关系程序示例
下图是一个表示家庭关系的实例:
用Prolog 语句表示为:
Pam
Tom
).
Bob
Liz
).
Ann
Pat
Jim
parent(pam,bob
parent(tom,bob
parent(tom,liz). parent(bob,ann). parent(bob,pat).

第六章 PROLOG语言习题解答

第六章 PROLOG语言习题解答

第六章PROLOG语言6.3答:(1)目标不成功(2)目标不成功(3)目标成功,x,y,z被例化为x1,y1,z1(4)目标不成功(5)目标不成功6.4答:poglog规则Is_mother(x):_mother(x,y)Is_father(x):_father(x,y)Is_son(x):_father(y,x),male(x)Grandpa(x,y):_father(x,y1),father(y1,y)Sibling(x,y):_diff(x,y),mother(z1,x),mother(z1,y),father(z2,x), father(z2,y),parent(x,y)6.5答:(1)family1.cl文件头:/*****************************************************************************Copyright (c) Sabu Francis Associates******************************************************************************/ class family1open corepredicatesclassInfo : core::classInfo.% @short Class information predicate.% @detail This predicate represents information predicate of this class.% @endpredicatesrun : core::runnable.end class family1(2)family1.pack文件头:/*****************************************************************************Copyright (c) Sabu Francis Associates******************************************************************************/ #include @"family1.ph"% privately used packages#include @"pfc\filesystem\filesystem.ph"#include @"pfc\application\exe\exe.ph"#include @"pfc\console\console.ph"#include @"pfc\exception\exception.ph"% private interfaces% private classes% implementations#include @"family1.pro"(3)family1.ph文件头:/*****************************************************************************Copyright (c) Sabu Francis Associates******************************************************************************/ #requires @"family1.pack"% publicly used packages#include @"pfc\core.ph"% exported interfaces% exported classes#include @"family1.cl"(4) family1.prj6文件头:/*****************************************************************************Copyright (c) Sabu Francis Associates******************************************************************************/ implement family1open coreconstantsclassName = "family1".classV ersion = "$JustDate: $$Revision: $".clausesclassInfo(className, classVersion).domainsgender = female(); male().class facts - familyDBperson : (string Name, gender Gender).parent : (string Person, string Parent).class predicatesfather : (string Person, string Father) nondeterm anyflow.clausesfather(Person, Father) :-parent(Person, Father),person(Father, male()).class predicatesgrandFather : (string Person, string GrandFather) nondeterm (o,o).clausesgrandFather(Person, GrandFather) :-parent(Persoicates)文件尾:reconsult : (string FileName).clausesreconsult(FileName) :-retractFactDB(familyDB),file::consult(FileName, familyDB).clausesrun():-console::init(),stdIO::write("Load data\n"),reconsult("..\\fa.txt"),stdIO::write("\nfather test\n"),father(X, Y),stdIO::writef("% is the father of %\n", Y, X),fail.run():-stdIO::write("\ngrandFather test\n"),grandFather(X, Y),stdIO::writef("% is the grandfather of %\n", Y, X),fail.run():-stdIO::write("\nancestor of Pam test\n"),X = "Pam",ancestor(X, Y),stdIO::writef("% is the ancestor of %\n", Y, X),fail.run():-stdIO::write("End of test\n").end implement family1goalmainExe::run(family1::run).(5)family1.pro补充习题:1.编写一Prolog程序使得你能和计算机“交谈”(Conversations with a computer)。

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的求解过程就是一个不断通过规则进行匹配,最后匹配到事实后回溯得出解的过程。

图搜索问题求解

图搜索问题求解实验⼆图搜索问题求解⼀、实验⽬的加深学⽣对图搜索技术的理解,使学⽣掌握图搜索基本编程⽅法,并能利⽤图搜索技术解决⼀些应⽤问题。

1. 掌握Turbo prolog软件编程⽅法;2. 熟悉状态图搜索的基本算法;3.掌握图搜索问题求解中的问题表⽰、节点表⽰、close表和open表的构造。

⼆、实验环境计算机,Turbo PROLOG教学软件三、预习要求1.预习教材第四章有关状态图问题求解的内容,熟悉状态图求解的过程和⽅法;2.了解Turbo PROLOG程序设计的基本知识。

四、实验内容以求交通图中两地之间的路径和最短路径问题为例,分别⽤状态图搜索和代价树搜索,进⾏问题求解。

问题描述如下:G 为⼀有向图, 其每条边都有⼀个⾮负的权数。

对于图中任意两点间的路径, 定义⼀个路径长度, 其值为该路径所包含的各条边的权数之和。

两点间的路径⼀般不⽌⼀条。

对于给定的任意出发点s和到达点t,⾸先找到所有的从s⾄t的路径,然后从中找出长度最短的路径。

左图是某⼀城市的交通⽹络。

边的⽅向表⽰允许的通⾏⽅向。

边旁的权数表⽰该边的长度。

要求找出点 v1 ⾄ v5 的所有路径,并找出最短路径。

五、实验⽅法和步骤1. 启动prolog编辑环境;2. ⽤图搜索搜索思想编辑路径求解问题的源程序;2. 运⾏程序,分析结果;3. ⽤代价树搜索思想编辑最短路径求解问题的源程序;4.运⾏程序,分析结果。

六、⽰例程序以教材例4.1迷宫图的路径搜索为例,给出迷宫问题的求解程序。

DOMAINSstate=symbolDATABASE-mydatabaseopen(state,integer)closed(integer,state,integer)res(state)open1(state,integer)min(state,integer)mark(state)fail_PREDICATESsolveroad(state,state)search(state,state)resultsearchingstep4(integer,state)step56(integer,state)equal(state,state)repeatresulting(integer)rule(state,state)GOALsolve.CLAUSESsolve:-search(s0,sg),result.search(Begin,End):-retractall(_,mydatabase),assert(closed(0,Begin,0)),assert(open(Begin,0)),assert(mark(End)),repeat,searching,!.result:-not(fail_),retract(closed(0,_,0)),closed(M,_,_),resulting(M),!.result:-beep,write("sorry don't find aroad!"). searching:-open(State,Pointer),retract(open(State,Pointer)),closed(No,_,_),No2=No+1,asserta(closed(No2,State,Pointer)),!,step4(No2,State).searching:-assert(fail_).step4(_,State):-mark(End),equal(State,End).step4(No,State):-step56(No,State),!,fail.step56(No,StateX):-rule(StateX,StateY),not(open(StateY,_)),not(closed(_,StateY,_)),assertz(open(StateY,No)),fail.step56(_,_):-!.equal(X,X).repeat.repeat:-repeat.resulting(N):-closed(N,X,M),asserta(res(X)),resulting(M).resulting(_):-res(X),write(X),nl,fail.resulting(_):-!.rule(X,Y):-road(X,Y).road(s0,s4).road(s4,s1).road(s1,s4).road(s1,s2).road(s2,s1).road(s2,s3).road(s3,s2).road(s4,s7).road(s7,s4).road(s4,s5).road(s5,s4).road(s5,s6).road(s6,s5).road(s5,s8).road(s8,s5).road(s8,s9).road(s9,s8).road(s2,s5).road(s5,s2).road(s9,sg).七、实验报告要求1. 实验报告应简单明了,语⾔通顺,结果正确,程序规范。

逻辑型程序设计语言PROLOG详细教程

逻辑型程序设计语言PROLOG教程2.3. 1逻辑型程序设计语言PROLOGPROLOG的语句PROLOG语言只有三种语句,分别称为事实、规则和问题。

1.事实(fact)格式: <谓词名>(<项表>).功能一般表示对象的性质或关系。

其中谓词名是以小写英文字母打头的字母、数字、下划线等组成的字符串,项表是以逗号隔开的项序列。

例如:student(john).like( mary ,music).表示“约翰是学生”和“玛丽喜欢音乐”。

2. 规则(rule)格式:<谓词名>(<项表>):-<谓词名>(<项表>){,<谓词名>(<项表>)}.功能: 一般表示对象间的因果关系、蕴含关系或对应关系。

其中“:-”号表示“if”(也可以直接写为if),其左部的谓词是规则的结论(亦称为头),右部的谓词是规则的前提(亦称为体),{}表示零次或多次重复,逗号表示and(逻辑与),即规则的形式是一个逻辑蕴含式。

例如:bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).第一条规则表示“如果X是动物,并且X有羽毛,则X是鸟”;第二条规则就表示“X是Y的祖父,如果存在Z,X是Z的父亲并且Z又是Y的父亲”。

3.问题(question)格式: -<谓词名>(<项表>){,<谓词名>(<项表>)}.功能表示用户的询问,它就是程序运行的目标。

例如:-student(john).-like(mary,X).2.3. 2 PROLOG程序PROLOG程序一般由一组事实、规则和问题组成。

问题是程序执行的起点,称为程序的目标。

例如下面就是一个PROLOG程序。

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).-friend(john,Y).可以看出,这个程序中有四条事实、两条规则和一个问题。

逻辑型程序设计语言PROLOG


AT(JOHN, SCHOOL)
:-AT(FIDO, x)
:-AT(JOHN, x) □ x=?
第2章 人工智能程序设计语言
逻辑型语言
逻辑型程序设计语言起源于 PROLOG(PROgramminginLOGic的缩写)。PROLOG语 言首先由法国马塞大学的Colmerauer和它的研究小组于 1972年研制成功,后来在欧洲得到进一步发展。特别 是1981年日本宣布要以PROLOG作为他们正在研制的 新一代计算机——智能计算机的核心语言,更使 PROLOG举世瞩目,迅速风靡世界。
第2章 人工智能程序设计语言
应用归结原理求取问题答案
归结原理除了能用于对已知结果的证明外,还能用于对未
知结果的求解,即能求出问题的答案来。请看下例。 例3.23 已知:
(1)如果x和y是同班同学,则x的老师也是y的老师。
(2)王先生是小李的老师。 (3)小李和小张是同班同学。 问:小张的老师是谁?
第2章 人工智能程序设计语言
第2章 人工智能程序设计语言
可以看出,归结到这一步,求证的目标谓词已被消去, 即求证已成功,但还留下了谓词 ANS(Wang) 。由于该 谓词中原先的变元与目标谓词T(u,Zhang)中的一致,所 以,其中的 Wang 也就是变元 u 的值。这样,我们就求 得了小张的老师也是王老师。
第2章 人工智能程序设计语言
• 子目标之间的关系? • 子目标与其他子句合一的过程和意义。
– 子目标与事实合一:消去该子目标(已证明)。 – 子目标与过程合一:用过程右边的文字代替该子目标(还需 证明过程右边的条件)。
第2章 人工智能程序设计语言
• 例:~AT(JOHN, x)VAT(FIDO,x) AT(JOHN, SCHOOL) ~AT(FIDO,x) AT(FIDO,x):-AT(JOHN,x)

VisualProlog实验(DOCX页)

实验一Visual Prolog运行环境实验(1学时)一、实验目的1、了解PROLOG解释器;2、掌握PROLOG语言中常量、变量的表示方法;3、掌握利用PROLOG进行事实库、规则库的编写方法。

二、实验要求1、熟悉Visual Prolog运行环境,包括硬件与软件环境;2、学习示例程序,分析其功能;3、写出Example 1、Example 2、Example 3示例程序的功能;4、利用PROLOG进行事实库、规则库的编写,并在此基础上进行简单的询问。

三、实验设备计算机,Visual prolog教学软件。

四、实验内容及步骤(一)实验内容:1、熟悉Visual prolog的运行环境,包括所用的机器的硬件与软件环境;2、学习使用Visual prolog,包括进入Prolog主程序、编辑源程序、修改环境目录、退出等基本操作;3、学习Visual prolog的简单程序结构,掌握分析问题、询问解释技巧;4、了解PROLOG语言中常量、变量的表示方法;5、利用PROLOG进行事实库、规则库的编写,并在此基础上进行简单的询问。

(二)实验步骤:1、启动Windows 2000操作环境;2、安装Visual Prolog集成开发环境;3、双击桌面图标或者找到Visual Prolog可执行文件所在目录双击图标,启动Visual prolog集成开发环境;4、打开Project菜单,选择New Project菜单项,将工作目录修改为你要保存到的文件夹,例如,c:\11,给出工程文件名;5、打开Option菜单,选择Project菜单项打开下拉菜单,选择Compiler Options项,按下图中显示进行设置;6、从工程界面中选择“new”按钮或者从file菜单中选择“new”菜单项,弹出一个界面,将所有的复选框都去掉,进入Visual Prolog的程序编辑界面;7、将下面的Example 1编辑到编辑界面里面,Project菜单里面的Test goal菜单项或者直接点击菜单栏中的Test Goal按钮执行程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档