基于JAVA的最短路径算法分析与实现

来源 :知识窗·教师版 | 被引量 : 0次 | 上传用户:dlfly2011
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
   摘要:最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。本文采用JAVA语言来实现路径算法中的Johnson算法。
   关键词:最短路径 Java Johnson算法 算法实现
  
   最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。算法具体的形式包括:确定起点的最短路径问题。即已知起始结点,求最短路径的问题;确定终点的最短路径问题。与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题;确定起点终点的最短路径问题。即已知起点和终点,求两结点之间的最短路径;全局最短路径问题——求图中所有的最短路径。
   一、最短路径算法的实现策略
   用于解决最短路径问题的算法被称作“最短路径算法”,有时被简称作“路径算法”。最常用的路径算法有:Dijkstra算法、A*算法、SPFA算法、Bellman-Ford算法、Floyd-Warshall算法、Johnson算法。
   所谓单源最短路径问题是指:已知图G=(V,E),我们希望找出从某给定的源结点S∈V到V中的每个结点的最短路径。
   首先,我们可以发现有这样一个事实:如果P是G中从vs到vj的最短路,vi是P中的一个点,那么,从vs沿P到vi的路是从vs到vi的最短路。
   笔者以3Dijkstra算法为例,Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它计算的节点很多,所以效率低下。Dijkstra算法的输入包含了一个有权重的有向图G,以及G中的一个来源顶点S。我们以V表示G中所有顶点的集合,以E表示G中所有边的集合。(u,v)表示从顶点u到v有路径相连,而边的权重则由权重函数w:E→[0,∞]定义。因此,w(u,v)就是从顶点u到顶点v的非负花费值(cost),边的花费可以想象成两个顶点之间的距离。任两点间路径的花费值,就是该路径上所有边的花费值总和。已知有V中有顶点s及t,Dijkstra算法可以找到s到t的最低花费路径(例如最短路径)。这个算法也可以在一个图中,找到从一个顶点s到任何其他顶点的最短路径。
   二、代码实现
   importjava.util.Scanner;
   publicclassMain{
   privatestaticintn;//G图中的顶点个数
   privatestaticint[]distent=null;//最短路径长度
   privatestaticint[]previous=null;//前驱顶点集合
   publicstaticvoiddijkstra(intv,int[][]a,int[]dist,int[]prev){
   //单源最短路径问题的Dijkstra算法
   intn=dist.length-1;//问题的规模,0号元素未使用
   if(v<1||v>n)return;//源不在图中,则返回
   boolean[]s=newboolean[n 1];//判断点是否在集合S中
   //初始化
   for(inti=1;i<=n;i ){
   dist[i]=a[v][i];//源到点i的最短特殊路径长度
   s[i]=false;//点i现在不在集合s中
   if(dist[i]==-1)
   prev[i]=0;//若最短路径长度恒为-1表示无通路,则让点i的前驱点为0
   else
   prev[i]=v;//有通路则让点i的前驱指向源
   }
   dist[v]=0;
   s[v]=true;//源放入集合s中
   for(inti=1;i   inttemp=Integer.MAX_VALUE;
   intu=v;
   //在剩下的点中除了没有通路的点中找到最容易到达的,并把最容易到达的放入u中
   for(intj=1;j<=n;j ){
   if((!s[j])
其他文献
一、加强领导,提升对内部审计工作的认识  内部审计作为高层次的经济监督,理所当然不能削弱,只能增强。人们常说:审计难、处理更难。其中一个重要原因就是人们对审计缺乏认识,认为审计就是查账、找茬、触摸别人的伤疤,而始终没有把审计与高层次监督联系起来。  解决认识不足的问题要靠宣传《审计法》及内部审计工作来解决。加强内部审计是企事业内部组织自主性增强的需求,更是完善单位内部管理体制的需要,也是适应内部审
摘要:使用多媒体技术来辅助英语教学,可以为学生创造生动的语言学习环境,提高学生听、说和读的能力,使英语课堂变得“活”起来。同时,运用多媒体技术在英语教学中所体现出来的优势,充分利用网络资源,调用网络中的资料库,充分发挥现代教育技术在教学中的“适度作用”,可以提高学生对英语学习的兴趣,也有助于提高素质教育和教学的质量。  关键词:多媒体技术 兴趣 英语教学 素质教育    现在,我国正面临着新一轮的
王必闩,江苏省南京市江宁区教学研究室副主任兼历史教研员,江苏省教育学会考试专业委员会理事,南京市教育学会历史专业委员会副理事长。曾荣获江苏省教研先进个人、南京市学科带头人、南京市优秀班主任、南京市优秀教研组长、江宁区优秀教育工作者、江宁区“新长征突击手”、江宁区学科带头人等称号。主持或作为核心成员参与市级以上多项课题研究;主编或参与编写数十种教育教学类书籍;专著《课堂教学无法回避的五个问题——一位
[摘 要]将STEAM教育理念融入劳动与技术课程,将对学生学习理念的转变、学习方式的创新、学习效率的提高等方面产生积极影响。文章结合实例,从情境引入、问题讨论、经验学习、问题解决、体验反思、拓展延伸六个方面探究了基于STEAM教育理念的劳动与技术课程,并归纳了设计与实施课程的要点。  [关键词]STEAM教育;劳动与技术;跨学科  STEAM教育的重要目标是解决实际问题,因此STEAM教育意在推进
摘要:作为横跨现当代两个时期的作家,孙犁以他明丽流畅的笔调和秀雅隽永的风格创造了富有诗意的小说品质,成为文学史上的一个独特存在,本文试对其小说散文化风格进行分析。  关键词:孙犁 小说 散文化    “散文化小说”是19世纪在法国象征主义运动中产生的小说模式。孙犁以他明丽流畅的笔调和秀雅隽永的风格,多方勾勒了时代和地域的历史风俗,文学史多称其作品为“诗体小说”。孙犁在小说中着力追求清新、隽永、淡雅
2002年3月,国家正式颁布施行《全日制普通高级中学语文教学大纲(实验修订版)》,当中明确指出:对学生的评估,要“有利于促进不同学生语文能力的发展,有利于学生发挥创造能力,有利于提高学生的人文修养”。现笔者只针对第三个“有利于”来谈谈人文素养的提高。  语文是人文学科,对于提高学生的人文素养非常重要,而对学生人文素养的培养和提高,主要依赖两个方面:一方面是民族优秀的传统文化,另一方面就是当今人类的
在我国的中小学中,普遍实行的是校长负责制。校长负责制调动了校长办学的积极性、创造性,理顺了职、权、责的关系,有利于提高学校的管理效率。为了促进校长负责制的“可持续发展”,实现“以人为本”的管理理念,切实贯彻“科学发展观”,笔者认为,新时期的校长负责制应加大实现以下“四化建设”的力度:    目标化建设     在校长负责制中,要回答校长负什么责的问题,这就要求给校长制定和确立一个明确的任期办学责任
对于解暑,大学生们各有奇招。“脱光衣服睡觉、勤洗澡都太基本了,我从师兄那里学到了几招绝的。”说这话的是正在四川大学读大三,人称“肥哥”的赵同学。赵同学身材偏胖,1.7米的个头,体重却达到了160多斤,这令他在闷热的天气里比别人更加辛苦。  宿舍里他最常见的形象,就是撂起T恤亮出肚皮,还把双脚泡在水桶里,一边上网一边享受着清水带来的丝丝凉意。几年来,为了寻找夜晚睡觉时最佳的解暑妙招,赵同学没少费工夫
[摘要]美国的基础教育注重问题引领,激发学生好奇心;强调思维过程,提升学生思想力;提供方法指导,助推学生自主探究,以此来培养学生“软能力”,十二年的坚守最终使得美国学生后劲十足,厚积薄发。  [关键词]“软能力”培养;问题引领;思维过程;方法指导  一、美国教育教学  美国教育,特别是其基础教育,一直伴随着赞誉声与批评声。然而,美国作为世界上最发达的国家之一,其教育又不得不堪称“世界典范”,颇具观
[摘 要]立德树人,强调学校教育要德育为先,通过教育活动提升学生道德水平,培养学生道德品质,促进学生德智体美劳全面发展。在聋校的数学教学中,应挖掘其中立德树人的内涵和价值,通过在数学活动中养成“真”的品质、在数学资源中养成“善”的品质、在数学方法中养成“美”的品质,落实立德树人促进聋校学生全面发展。  [关键词]立德树人;品质养成;聋校;数学  教育部印发的《全面深化课程改革 落实立德树人根本任务