图搜索问题求解实验报告讲解.docx
- 文档编号:3951619
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:9
- 大小:131.02KB
图搜索问题求解实验报告讲解.docx
《图搜索问题求解实验报告讲解.docx》由会员分享,可在线阅读,更多相关《图搜索问题求解实验报告讲解.docx(9页珍藏版)》请在冰点文库上搜索。
图搜索问题求解实验报告讲解
实验报告
|
|
实验名称图搜索问题求解
课程名称人工智能
|
|
验证性、综合性实验报告应含的主要内容:
一、实验目的及要求
二、所用仪器、设备
三、实验原理
四、实验方法与步骤
五、实验结果与数据处理
六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见)
七、所附实验输出的结果或数据
设计性实验报告应含的主要内容:
一、设计要求
二、选择的方案
三、所用仪器、设备
四、实验方法与步骤
五、实验结果与数据处理
六、结论(依据“设计要求”)
七、所附实验输出的结果或数据
*封面左侧印痕处装订
一、实验目的及要求
1.熟悉PROLOG的运行环境,进行prolog的基本编程练习。
了解PROLOG语言中常量、变量的表示方法。
PROLOG的简单程序结构,掌握分析问题、询问解释技巧;进行事实库、规则库的编写,并在此基础上进行简单的询问。
具体实验课上相关内容,练习例1到例6的内容。
2.图搜索问题求解。
任选以下实际应用题目:
爱因斯坦的超级问题、字谜问题、汉诺塔问题、八数码问题、八皇后问题、过河问题等,选两个。
要求实验报告中包括:
程序及其注释和说明、console表单中的程序运行结果。
二、所用仪器、设备
PC机和trincprolog编译软件
三、实验原理
PROLOG语言是一种以逻辑推理为基础的逻辑型程序设计语言,是一种陈述性语言而不是过程性语言。
PROLOG语言能够自动实现模式匹配和回溯、具备递归技术,而且语法简明,可以简化复杂问题求解。
四、实验方法与步骤
1熟悉trincprolog开发环境,编写简单的prolog程序,学习prolog的语法,进行事实库、规则库的编写,并进行简单的询问。
2.按照所给题目选择汉诺塔与过河问题,熟悉其算法思想,编程并调试运行。
3.写实验报告
五、求解的问题与程序
求解问题:
汉诺塔问题
代码:
hanoi(N):
-
move(N,left,middle,right).
move(1,A,_,C):
-
inform(A,C),
!
.
move(N,A,B,C):
-
N1isN-1,
move(N1,A,C,B),
inform(A,C),
move(N1,B,A,C).
inform(Loc1,Loc2):
-nl,
write('Moveadiskfrom'-Loc1-'to'-Loc2).
求解问题:
传教士与野人
代码:
get_integer(L,H,X):
-L>H,!
fail.
get_integer(L,H,L).
get_integer(L,H,X):
-L1isL+1,get_integer(L1,H,X).
append([],X,X).
append([A|X],Y,[A|Z]):
-append(X,Y,Z).
member(A,[A|X]).
member(A,[B|X]):
-member(A,X).
del_move:
-
retract(move(X,Y)),
fail.
del_move.
del_stat:
-
retract(inistatu(X)),
retract(desstatu(Y)),!
.
del_stat.
insert_move(N):
-
insert_move0(N),
insert_move1(N).
insert_move0(0).
insert_move0(N):
-
asserta(move(N,0)),
asserta(move(0,N)),
N1isN-1,
insert_move0(N1).
insert_move1(N):
-
get_integer(1,N,X),
get_integer(X,N,Y),
X+Y= asserta(move(Y,X)), fail. insert_move1(_). legal((X,Y,_)): - legal1(X), legal1(Y). legal1((X,Y)): - X=: =0,Y>=0,! . legal1((X,Y)): - Y=: =0,X>=0,! . legal1((X,Y)): - X>=Y,X>=0,Y>=0. update((X,Y,0),Move,Statu1): - (A,B)=X, (C,D)=Y, (E,F)=Move, C1isC+E, D1isD+F, A1isA-E, B1isB-F, Statu1=((A1,B1),(C1,D1),1). update((X,Y,1),Move,Statu1): - (A,B)=X, (C,D)=Y, (E,F)=Move, C1isC-E, D1isD-F, A1isA+E, B1isB+F, Statu1=((A1,B1),(C1,D1),0). connect(Statu,Statu1): - move(X,Y), update(Statu,(X,Y),Statu1), legal(Statu1). findroad(X,X,L,L).%递归的边界条件。 findroad(X,Y,L,L1): -%L为储存的路由表。 connect(X,Z), not(member(Z,L)),%X所连接的节点Z不在已经储存的路由表中。 findroad(Z,Y,[Z|L],L1). insert_statu(N): - asserta(inistatu(((N,N),(0,0),0))), asserta(desstatu(((0,0),(N,N),1))). writelist([]). writelist([X|L]): - write(X), nl, writelist(L). widesolve(N,M): - del_move, del_stat, insert_move(M), insert_statu(N), inistatu(X), desstatu(Y), ! findroad(L,X,Y), writelist(L), nl. deepsolve(N,M): - del_move, del_stat, insert_move(M), insert_statu(N), inistatu(X), desstatu(Y), ! findroad(Y,X,[Y],L), writelist(L), nl. 六、讨论与结论 传教士与野人问题中的顺序输出问题。 七、所附实验输出的结果或数据 汉诺塔数据 结果输出 过河问题数据 结果输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜索 问题 求解 实验 报告 讲解