


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号: 姓名:上机06分支限界法一、问题21、问题描述二、单源最短路径问题给定一个带权图V中的一个顶点,成为源。现在要计算从源到其他所有顶点的最短路径长度(边的权重之和。请使用优先队列式分支限界法,求解该问题。2、算法设计思想分支限界法算法从图G的源顶点s和空优先队列开始。结点s被扩展后,它的儿子结点被依次插入i到顶点j有边可达,且从源出发,途经ij入到活结点优先队列中。这个结点的扩展过程一直继续到活结点优先队列为空时为止。解向量:X[x1,x2…xn]x1=[1,2…n]表示顶点到第1个…第n个的距离解空间:剪去没有通路的节点后的排列树剪枝函数:在拓展节点的过程中,如果发现加入这个节点产生的距离的下界大于当前找到的最短路径,则减去以这个节点为根节点的子树3、算法过程描述以课本的图为例2,3,42作为第一个拓展节点,将5,4,9排序并放入队列,按照队列的先进先出,把第二行的3并剪去不符合剪枝函数的子树,队列为空时就得到了问题的解4、算法实现及运行结果packagedemoo;importjava.util.Collections;importjava.util.LinkedList;importjava.util.Scanner;publicclassBBShortest{publicstaticclassHeapnodeimplementsComparable{intid;//顶点编号floatlength;//当前路长publicHeapnode(intii,floatll){id=ii;length=ll;}@OverridepublicintcompareTo(Objectx){floatxl=((Heapnode)x).length;if(length<xl)return-1;if(length==xl)return0;return1;}}publicstaticvoidshortest(float[][]a,intv,float[]dist,int[]p){//dist[j]保存从源到顶点j的距离;p[j]记录从源到顶点j的路径上的上一顶点intn=p.length-1;LinkedList<Heapnode>nodes=newLinkedList存储最小堆Heapnodeenode=newHeapnode(v,0);for(intj=1;j<=n;j++){dist[j]=Float.MAX_VALUE;}while(true){//搜索问题解空间for(intj=1;j<=n;j++){if(a[enode.id][j]!=-1&&enode.length+a[enode.id][j]<dist[j]){//ijdist[j]dist[j]=enode.length+a[enode.id][j];p[j]=enode.id;Heapnodee=newHeapnode(j,dist[j]);nodes.add(e);Collections.sort(nodes);}}//取下一个扩展结点if(nodes.isEmpty())break;else{enode=(Heapnode)nodes.poll();}}for(inti=2;i<=n;i++){System.out.println(i+"节点的最短距离是:"+dist[i]+";上一个点是:"+p[i]);}}publicstaticvoidmain(String[]args){System.out.println("请输入图顶点的个数:");Scannersc=newScanner(System.in);Stringline=sc.nextLine();intn=Integer.parseInt(line);System.out.println("请输入图的路径长度:");float[][]a=newfloat[n+1][n+1];//下标从1开始,以下都是float[]dist=newfloat[n+1];int[]prev=newint[n+1];for(inti=0;i<n;i++){line= sc.nextLine();String[]ds=line.split(",");for(intj=0;j<ds.length;j++){a[i+1][j+1]=Float.parseFloat(ds[j]);}}intv=1;//顶点从1开始s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45216-2025危险货物自反应物质和有机过氧化物包装件爆燃试验方法
- 共用墙合同范本
- 兼职防疫保安合同范本
- 出售吊车合同范例
- 加装电梯托管合同范本
- 光伏销售质保合同范本
- 单位二手房交易合同范本
- 劳动合同范例 河南
- 买卖交易正规合同范本
- 个人买卖住房合同范本
- 2025年海域使用权租赁合同
- 四年级希望杯历年数学竞赛试题与答案1-13届+奥数分类专项练习集等
- 《走近世界民间美术》 课件 2024-2025学年人美版(2024)初中美术七年级下册
- (2025春)人教版三年级数学下册全册教案
- 2025年江苏省高职单招《职测》高频必练考试题库400题(含答案)
- 2025云南红河州个旧市大红屯粮食购销限公司招聘及人员高频重点模拟试卷提升(共500题附带答案详解)
- X证书失智老年人照护讲解
- 工厂安全事故预防知识
- 2024-2025学年人教版数学八年级下册期中检测卷(含答案)
- 2024年江西应用工程职业学院高职单招职业适应性测试历年参考题库含答案解析
- 2024年山东服装职业学院高职单招语文历年参考题库含答案解析
评论
0/150
提交评论