版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 4 易雪媛 智能1201 罗马尼亚问题一、问题描述(1)罗马尼亚问题:Find Bucharest starting at Arad分别用宽度优先、深度优先、贪婪算法和A*算法求解“罗马利亚度假问题”。要求:分别用文件存储地图和启发函数表,用生成节点数比较几种算法在问题求解时的效率,列表给出结果。(2) 附(罗马尼亚地图)(3)(3)各结点启发值:二、实现算法1.深度优先 1.1算法思想: 深度优先搜索是一种每次都要达到被搜索结构的叶结点的搜索方法 ,直到不能再深入为止,然后返回到另一个结点,继续对该结点进行深搜。当有目标结点出现时,返回目标结点,搜索结束;否则,若
2、待扩展结点表已空,且未找到目标结点,则返回失败,停止搜索。同样,深度优先搜索从Arad结点出发,判断是否为目标结点,若否,探寻与该结点相连的结点,算法首先搜索一条分支上的所有顶点,然后再去搜索和Arad的其它分支结点,找出并存进待扩展结点表,等待扩展,每次先判断待扩展结点表是否为空,若否,则从待扩展结点表中取出一个结点进行扩展,并将扩展后的结点存进该表,若是,则返回失败。 1.2算法核心代码:void DFS(int start,char name,int path20,bool visited) /*深度遍历*/visitedstart=true;cout<<namestart&
3、lt;<"-"for(int i = 0;i<20 && start!=1;i+)if(pathstarti!=0 && pathstarti!=1000 && visitedi=false )/寻找与当前结点相连的未访问的结点DFS(i,name,path,visited); 1.3运行结果: 1.4算法分析:DFS不是完备的(除非查找空间是有限的),同时,它也不能找到最优解。深度优先的时间复杂度:;空间复杂度:(b为分支因子,m为深度,仅有一枝需要存储)。2.迭代加深的深度搜索算法 2.1算法思想: 迭代加深搜
4、索是以DFS为基础的,它限制DFS递归的层数(即栈的容量,即所说的“深度”)。迭代加深搜索的基本步骤是:1、设置一个固定的深度deep,通常是depth = 1,即只搜索初始状态2、DFS进行搜索,限制层数为deep,如果找到答案,则结束,如果没有找到答案则继续下一步3、如果DFS途中遇到过更深的层,则+deep,并重复2;如果没有遇到,说明搜索已经结束,没有答案。 2.2算法核心代码:bool DDFS(int start,char name,int path20,bool visited,int deep) /*深度遍历*/if(deep = 0) cout<<"n&
5、quot;return false;else deep = deep-1;/深度减一visitedstart=true;cout<<namestart;for(int i = 0;i<20 && start!=1;i+)if(pathstarti!=0 && pathstarti!=1000 && visitedi=false )/寻找与当前结点相连的未访问的结点DDFS(i,name,path,visited,deep);/*main函数中的调用*/cout<<"路径为第一行"<<e
6、ndl;for(int deep = 1;deep<8;deep+)for(int m = 0;m<20;m+)visitedm=false;cout<<"第"<<deep<<""<<endl;DDFS(0,name,path,visited,deep); 2.3运行结果: 2.4算法分析:DDFS同样不是完备的(除非查找空间是有限的),同时,它也不能找到最优解。迭代加深深度优先的时间复杂度:O(bd);空间复杂度:O(bd)(b为分支因子,d为深度界限,仅有一枝需要存储)。3.一致代价搜索算法
7、 3.1算法思想: 当所有路径耗散相等的时候,广度优先搜索是最优的,因为它总是先扩展深度最浅的结点。更一般地,如果路径耗散是结点深度的非递减函数,广度优先搜索也是最优的。而代价一致(UniformCost)搜索扩展的是路径消耗最低的结点。而如果搜有单独耗散都相等的话,这种算法就和广度优先搜索算法是一样的。代价一致搜索对一条路径的步数并不关心,而关心所经历步骤总的消耗。因此,在扩展到一个具有能返回同一状态的零耗散行动的结点时就会陷入无限循环。在实现上,广度优先搜索只需要使用先进先出队列,而代价一致搜索则需要使用优先级队列。 3.2算法核心代码:public void UC_search(int
8、start, int goal, int a, int dist, boolean isVisited, int pre)List<Integer> list = new LinkedList<Integer>();list.add(start);while(!list.isEmpty()moveMinToTop(list, dist);int temp = list.remove(0);isVisitedtemp = true;if(temp = goal)System.out.println("搜索成功了!");return; for(int j
9、 = 0; j < atemp.length; j+) if(atempj < 10000 && !isVisitedj) if(isInList(j, list) = -1) / 结点j不在队列里 list.add(j); prej = temp; distj = disttemp + atempj; if(disttemp + atempj) < distj)prej = temp;distj = disttemp + atempj; if(list.isEmpty() System.out.println("搜索不成功!"); 3.3
10、运行结果: 3.4算法分析:UCS同样不是完备的(除非查找空间是有限的),同时,它也不能找到最优解。时间复杂度:O(bd),空间复杂度:O(bd)。4.A*搜索算法 4.1算法思想: A*算法用公式表示为: f(n)=g(n)+h(n), 其中f(n) 是从初始点经由结点n到目标点的估价函数;g(n) 是在状态空间中从初始节点到n节点的实际代价, h(n)是从n到目标节点最佳路径的估计代价。 A*能找到最优解的条件,关键在于估价函数h(n)的选取;若估价值<实际值, 则能保证得到最优解。 4.2算法核心代码:public void AStart_search(int start, int
11、 goal, int c, boolean isVisited, int directLen, int cost, int dist, int prev)List<Integer> list = new ArrayList<Integer>();list.add(start);while(!list.isEmpty()moveMinToTop(list, cost);int current = list.remove(0);isVisitedcurrent = true;if(current = goal)System.out.println("搜索成功&qu
12、ot;);break;elsefor(int i = 0; i < c0.length; i+)if(ccurrenti < 10000 && !isVisitedi)if(isInList(i, list) = -1) / 结点i不在队列里list.add(i);previ = current;disti = distcurrent + ccurrenti;/* * 启发式函数为: * 起始结点到中间结点的实际距离 + * 中间结点到Bucharest的直线距离 + * 目标结点到Bucharest的直线距离 */costi = disti + directLeni + directLengoal; if(distcurrent + ccurrenti < disti)disti = distcurrent + ccurrenti; / 刷新结点的实际距离previ = current;/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津市蓟州区第三联合区2026年初三下学期一轮模拟语文试题试卷含解析
- 2026年安徽省滁州来安县初三下学期(二模)英语试题含解析
- 四川省成都市锦江区七中学育才校2026年初三考前演练卷(三)语文试题含解析
- 湖北省鄂州市梁子湖区2025-2026学年初三9月教学质量检测试题英语试题理试题含解析
- 2026届四川省绵阳市部分校初三二模语文试题试卷解析含解析
- 2026年采购条款修订函7篇范文
- 专利保护实施承诺书4篇范文
- 技术研发项目管理时间线工具
- 企业会议管理标准手册
- 标准化员工培训计划制定与执行指南
- TSG Z6002-2026 特种设备焊接操作人员考核细则
- 大公国际 -两会解读:北斗规模应用全面拓展的时代意义 202602310
- (2026年)婴幼儿辅食添加营养指南课件
- 2026届江西省上进联考2025-高三11月一轮复习阶段检测英语试卷(解析版)
- 2025年第一批广西广投临港工业有限公司社会招聘35人笔试参考题库附带答案详解
- 2026及未来5年中国羽毛(绒)加工及制品行业市场行情监测及投资前景研判报告
- 二甲医院评价指标任务分解详解
- DG65 Z 012-2023 《分流式整地机》
- 2026年河南应用技术职业学院单招职业适应性测试题库含答案解析
- 2026年六安职业技术学院单招职业适应性考试题库带答案详解(巩固)
- 2026年及未来5年中国天然植物纤维编织工艺品行业市场发展数据监测及投资前景展望报告
评论
0/150
提交评论