交通运输学院课程的设计.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
交通运输学院课程的设计

目 录 第1章 引 言 2 1.1目的: 2 1.2 内容: 2 1.3主要任务: 2 第2章 设计过程 3 2.1设计思路 3 2.1.1Floyd算法 3 2.1.2邻接矩阵 3 2.1.3图形用户界面 4 2.2设计内容及分析 4 2.2.1 算法部分 4 2.2.2图形界面处理部分: 9 第3章 总 结 13 附 录 14 参考文献 17 第1章 引 言 1.1目的: 发现课程学习中的不足和薄弱环节,予以补充和加强。综合运用在课程学习过程中所学知识,同时为了实现课程设计的规定成果进行更深入的理论学习和实践拓展。培养独立思考和解决问题的能力,探索和创新的能力。具体如下: ⑴复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握; ⑵课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力; ⑶通过课程设计实践,训练并提高学生在查阅设计资料、运用标准与规范和应用计算机等方面的能力。 1.2 内容: 求解最短路问题(Floyd算法); 功能要求:实现Floyd算法,求解最短路问题,用GUI界面实现。 1.3主要任务: 在java开发环境下,运用GUI用户界面技术,通过Floyd算法,实验对最短路问题的求解。要求通过对Floyd算法的学习,掌握其原理,运用Java语言来实现该算法流程,取得最短路方案。通过GUI界面显示该最短路问题的网络图,并标记显示出最短路的路径。 第2章 设计过程 2.1设计思路 2.1.1Floyd算法 首先:对最短路问题中的Floyd算法有个较为深入的了解。其基本思想可简归纳如下:floyd算法是一个经典的动态规划算法。首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,floyd算法为这个目标重新做一个诠释Ak(i,j)表示从i到j中途不经过索引比k大的点的最短路径。它将最短路径的概念做了限制,使得该限制有机会满足迭代关系,这个迭代关系就在于研究:假设Ak(i,j)已知,是否可以借此推导出Ak-1(i,j)。?Ak(i,j) = min(?Ak-1(i,j),?Ak-1(i,k) +?Ak-1(k,j) ),这是由Java实现Floyd算法的基本依据。简单说,依次扫描每一点(k),并以该点作为中介点,计算出通过k点的其他任意两点(i,j)的最短距离,这就是floyd算法的精髓。 具体做法:利用一个三重循环产生一个存储每个结点最短距离的矩阵.弗洛伊德算法仍然使用图的邻接矩阵arcs[n+1][n+1]来存储带权有向图。算法的基本思想是:设置一个n x n的矩阵A(k),其中除对角线的元素都等于0外,其它元素a(k)[i][j]表示顶点i到顶点j的路径长度,K表示运算步骤。开始时,以任意两个顶点之间的有向边的权值作为路径长度,没有有向边时,路径长度为∞,当K=0时, A (0)[i][j]=arcs[i][j],以后逐步尝试在原路径中加入其它顶点作为中间顶点,如果增加中间顶点后,得到的路径比原来的路径长度减少了,则以此新路径代替原路径,修改矩阵元素。为:?? 第一步,让所有边上加入中间顶点1,取A[i][j]与A[i][1]+A[1][j]中较小的值作A[i][j]的值,完成后得到A(1),第二步,让所有边上加入中间顶点2,取A[i][j]与A[i][2]+A[2][j]中较小的值,完成后得到A(2)…,如此进行下去,当第n步完成后,得到A(n),A(n)即为我们所求结果,A(n)[i][j]表示顶点i到顶点j的最短距离。在图的邻接矩阵表示法中:   ① 用邻接矩阵表示顶点间的相邻关系   ② 用一个顺序表来存储顶点信息若G是网络,则邻接矩阵可定义为: ??   其中:   w ij 表示边上的权值;   ∞表示一个计算机允许的、大于所有边上权值的数。【例】下面带权图的两种邻接矩阵分别为A 3 和A 4 。 ??public class Floyd { int[][] length ;// 任意两点之间路径长度 int[][][] path ;// 任意两点之间的路径public Floyd(int[][] G) { int MAX = 100; int row = G.length;// 图G的行数 int[][] spot = new int[row][row];// 定义任意两点之间经过的点 int[] onePath = new int[row];// 记录一条路径 length = new int[row][row]; path = new int[row][row][]; for

文档评论(0)

189****7685 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档