版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Dijkstra算法求一点到所有点的最短路径原文地址:Dijkstra算法求一点到所有点的最短路径作者:沐早的笔记本/迪杰斯特拉求一点到所有点的最短路径-迪杰斯特拉求一点到所有点的最短路径(Dijkstra)算法描述1、选定起点放入E集合中。2、把未选点放入R集合中,写出E集合中所有点到R集合中所有点的路径放入Path集合(以"E中的点-R中的点=权值"为形式)。3、在Path中选择权值最小的路径,在Path中标*号(不参与下一次在Path中选择权值最小的路径),再放入S中。然后把这个路径中的从R中选出的点(路径中的终点)加入E,从R中移除。4、返回2到3进行循环,直到R为
2、空,就到5 5、S集合中就是起点到其他点的最短路径。-表格演示:E(已选点)R(未选点)Path(路径)S(选中路径)01,2,3,4*0-1=1 0-2=3 0-3=0-4=0-1=1 0,12,3,40-1-2=0-1-3=1+4=5 0-1-4=*0-2=3 0-3=0-4=0-2=3 0,1,23,40-2-3=3+2=5 0-2-4=3+2=5 0-1-2=*0-1-3=1+4=5 0-1-4=0-3=0-4=0-1-3=1+4=5 0,1,2,340-1-3-4=1+4+1=6*0-2-4=3+2=5 0-2-3=3+2=5 0-1-2=0-1-4=0-3=0-4=0-2-4=3+
3、2=5-/代码实现程序结构:-最终生成的树结构转化为以下的表结构:(在代码中对应的是Tree数组)id 0123344 root 0001223 right 99135556 flag 011111 id:到达的点。root:是id中对应的根。right:是id所对应的权值加上其root的权值。注,其表生成时是从左往右的,故权值是可以累加的。flag:在算法描述中的*号标记。-res数组实现算法描述中的E R集合(最终生成的在代码中对应的res数组表)res id 01 23 4flag 21 11 1注:起点flag标记为2-/结果使用递归打印/4-2-0/3-2-0/3-1-0/2-0/1
4、-0-/Java代码/class Treeint id=0;int root=0;int right=0;int flag=0;public void setAll(int id,int ro,int ri,int fl)this.flag=fl;this.id=id;this.right=ri;this.root=ro;public void setFlag(int flag)this.flag=flag;public void setId(int id)this.id=id;public void setRight(int right)this.right=right;public voi
5、d setRoot(int root)this.root=root;public void get_r(Tree t)this.flag=t.flag;this.id=t.id;this.right=t.right;this.root=t.root;public boolean equals(Tree t)if(this.flag=t.flag)&&(this.id=t.id)&&(this.right=t.right)&&(this.root=t.root)return true;elsereturn false;public boolean
6、isZero()if(this.flag=0)&&(this.id=0)&&(this.right=0)&&(this.root=0)return true;elsereturn false;class RESetint id=0;int flag=0;public void setId(int id)this.id=id;public void setFlag(int flag)this.flag=flag;public class DijkstraFindRoadstatic int node=/0,1,2,3,499,1,3,99,99,1
7、,99,99,4,99,3,99,99,2,2,99,4,2,99,1,99,99,2,1,99;public DijkstraFindRoad()public static int printRoad(Tree t,int i)/打印路径System.out.print("-"+tgetRtNum_r(t,ti).id);if(ti.right=99)return 0;elseprintRoad(t,getRtNum_r(t,tgetRtNum_r(t,ti);return 1;public static void removeSameValue(Tree tq)/去除重
8、复int flag=0,j=0;for(int i=0;i tq.length;i+)for(j=0;j tq.length;j+)if(tqi.equals(tqj)&&(!tqi.isZero()flag=i;tqflag.setAll(0,0,0,0);public static int getRtNum_r(Tree tq,Tree t)/取得t的根的物理地址int rti=0;for(int i=0;i tq.length;i+)if(t.root=tqi.id)rti=i;break;return rti;public static boolean isRoadFu
9、ll(Tree t,RESet rs)/是否所有路径都已选择int counter=0;for(int i=1;i t.length;i+)if(ti.flag=1)counter+;if(rs.length=counter)return true;return false;public static void main(String args)Tree t=new Tree20;Tree temp=new Tree();/做交换用RESet res=new RESet5;int start=0;/指定起点,从0点开始/初始化for(int i=0;i res.length;i+)resi=n
10、ew RESet();resi.setId(i);for(int i=0;i t.length;i+)ti=new Tree();resstart.setFlag(2);t0.setId(start);t0.setRoot(0);t0.setRight(99);t0.setFlag(0);/int ti=1;int j=0;int xi=0,yj=0,counter=0;ti=1;while(true)/yj=0;for(int i=0;i res.length;i+)if(resi.flag=0)yj+;xi=res.length-yj;/System.out.println("x
11、i:"+xi+""+"yj:"+yj+"|ti:"+ti);/选取点操作int ii=xi-1,nbeg=ti,nend=0;for(j=xi-1;j res.length;j+)/1 if(nodeiij!=99)/if tti.setId(j);tti.setRoot(ii);tti.setRight(nodeiij);ti+;/if/1 nend=ti;/加权操作/System.out.println("ROOT:"+getRtNum_r(t,t4);for(int i=nbeg;i nend;i+
12、)if(ti.root!=0)ti.setRight(tgetRtNum_r(t,ti).right+ti.right);/选最小权值int min=99;int f=0;for(int i=0;i t.length;i+)if(ti.right!=0)&&(ti.flag!=1)&&(ti.right min)min=ti.right;f=i;/选最小权值,做标记tf.setFlag(1);restf.id.flag=1;/System.out.println("11111:"+tf.id+":"+tf.root+":"+tf.right+":"+tf.flag);/if(isRoadFull(t,res)break;/removeSameValue(t);/for(int si=0;si res.length;si+)/System.out.println(ressi.id+":"+ressi.flag);/for(int si=0;si t.length;si+)/System.out.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度数据中心运营维护承包人工合同模板4篇
- 2025年度互联网数据中心搭建服务合同协议3篇
- 2025年度化工原料采购与储存协议3篇
- 2025年度环保型绿色打印设备承包合同范本3篇
- 2025年度汽车4S店集团购车优惠及售后服务协议3篇
- 2024衣柜墙板吊顶装修工程施工安全与环境保护合同
- 创新集成电路设计与制造技术项目可行性研究报告范文模板
- 《融资租赁行业培训》课件
- 2025年度房产中介服务佣金结算标准合同4篇
- 2025年度别墅装修工程承包与监理协议4篇
- 2025-2030年中国MPV汽车市场全景调研及投资策略分析报告
- 2024-2025学年初中七年级上学期数学期末综合卷(人教版)含答案
- 中国高血压防治指南(2024年修订版)解读(总)
- 重视心血管-肾脏-代谢综合征(CKM)
- 新媒体研究方法教学ppt课件(完整版)
- 2020新版个人征信报告模板
- 工业纯铁生产工艺流程【详情】
- 工艺管道仪表流程图(共68页).ppt
- 关于蒸汽管道应急预案
- 技术服务及售后服务的承诺及保证措施
- 五项管理行动日志excel表格
评论
0/150
提交评论