综合性实验报告1

更新时间:2023-12-16 01:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

综合性实验报告

课程名称:人工智能及其应用

实验题目:等费用(代价驱动)搜索算法的实现 指导教师:王保忠

开课时间:2010至2011学年第一学期 开始时间:2010、10、19 完成时间:2010、10、22 班 级: 姓 名: 学 号:

一、实验设计方案 实验名称:等费用搜索算法的 实验时间:2010-10-19到实现 2010-10-22 1、实验目的:熟悉等代价搜索算法 2、实验场地及仪器: 实验场地: 仪器:Vc++6.0 3、实验思路(实验内容、数据处理方法、实验步骤): (1)实验内容:求A-E最短距离(不能产生回路),动态表示 open表与close表 (2)实验步骤: <1>写出代价矩阵:A B C D E A ∞ 2 3 7 ∞ B 2 ∞ 3 4 ∞ C 3 3 ∞ 4 10 D 7 4 4 ∞ 5 E ∞ ∞ 10 5 ∞ <2>写出open表和close表 open表 close表 状态 代价值 状态 代价值 (A) 0 (AB) 2 (AB) 2 (AC) 3 (AC) 3 (ABC) 5 (AD) 7 (ABD) 6 (ABC) 5 (ACB) 6 (ABD) 6 (AD) 7 (ACB) 6 (ACD) 7 (ACD) 7 (ABCD) 9 (ACE) 13 (ACBD) 10 (ABCD) 9 (ABDE) 11 (ABCE) 15 (ABDE) 11 (ACBD) 10 (ADE) 12 (ACDE) 12 (ABCDE) 14 (ACBDE) 15 <3> 根据以上等费用搜索算法的过程得到最短距离为11, 最短路径为ABDE <4> 根据以上算法编出程序,实现等费用搜索算法; 第1页 共2页 二、实验结果与分析

1、原程序代码清单及程序运行结果(若为程序设计): (1)等代价搜索算法的原程序: #include #include using namespace std; int a[5][5]={ {20,2,3,7,20}, {20,20,3,4,20}, {20,20,20,4,10}, {20,20,20,20,5}, {20,20,20,20,20} }; int b[5][5]={ {20,2,3,7,20}, {20,20,3,4,20}, {20,20,20,4,10}, {20,20,20,20,5}, {20,20,20,20,20} }; void main() { listh1; listh2; int var1; int var2; for(int m=0;m<=4;m++) { if(a[0][m]<20) h1.push_back(a[0][m]); } for(int i=0;i<=4;i++) { if(b[0][i]>b[0][i+1]) { var1=b[0][i]; b[0][i]=b[0][i+1]; b[0][i+1]=var1; } for(int n=0;n<=4;n++) { if(a[0][n]=b[0][0]) var1=n; } h1.pop_front(); h2.pushbach(a[0][var1]); for(int j=var1;j<=4;j++) { b[1][j+1]=b[1][j]+b[0][0]; if(b[1][j+1]<20) h1.pushback(b[1][j+1]); } h1.sort(); h2.push_back(h1.front()); h1.pop_front(); for(int m=0;m<=4;m++) { for(int f=0;f<=4;f++) { if(a[m][f]=h2.back()) var1=m; var2=f; } } for(int i=var1+1;i<=4;i++) { for(int j=var2;j<=4;j++)

{ b[i][j+1]=b[i][j+1]+b[0][0]; if(b[i][j+1]<20) h1.pushback(b[i][j+1]); } h1.sort(); h2.push_back(h1.front()); h1.pop_front(); for(int m=0;m<=4;m++) { for(int f=0;f<=4;f++) { if(a[m][f]=h2.back()) var1=m; var2=f; } } } cout<<'从A到E的最短路径为:'< h1出现undeclared错误,将中间空格去掉变为listh1则正确; 3、实验总结: 由于本实验中的open表和close表是动态变化的,因此 在考虑存储open和close的数据容器时经历了数组、Hashmap 表、map、list表,最后由于list表的优点:有库函数方便进行元素的插入与删除以及可以直接对数据元素排序既方便排序 又方便扩展节点的实现。 4、教师评语、评分: 教师签名: 时间: 第2页 共2页

本文来源:https://www.bwwdw.com/article/o8i5.html

Top