动态规划设计最短路路径.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析实验报告 院系: 信息管理学院 班级: 软件工程*班 姓名: *** 学号: 20170******** 动态规划实现最短路径 一、实验数据 data[][] = { { -1, 1, 2, -1, -1, -1 }, { -1, -1, 1, 3, -1, 7 }, { -1, -1, -1, 1, 2, -1 }, { -1, -1, -1, -1, -1, 3 }, { -1, -1, -1, -1, -1, 6 }, { -1, -1, -1, -1, -1, -1 } }; 二、算法思路说明 本实验要求输出最短路径值以及最短路径使用动态规划思想编写程序解决最短路径问题。 我的想法如下: 1)确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。 2) 确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。 3)确定起点终点的最短路径问题 - 即已知起点和终点,求两结点之间的最短路径。 4)全局最短路径问题 - 求图中所有的最短路径。 设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径,?就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。 三、调试过程及经验教训 调试的过程就是从现象追溯会源头的过程。关于现象的观察,可以使用强大的debug工具,也可以使用最原始的方法——打印出错信息。很多事情,我都是使用后一种。关于现象的观察,粒度有粗有细。编程时,尽量不出现完全雷同的代码,可以将要实现的功能性代码封装在一个函数里,这不仅可以缩短代码的长度,提升代码的美感,增加易读性,更重要的是便于对程序进行扩展。 四、运行结果 五、实验总结 在问题转换为算法实现的过程中,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。可得最后结论。在这个过程中,可认为也是一个社会,每个一同的社会成员都有不同的想法。这体现了你在社会中解决问题的能力的高低,所以不同的人编程的结果是不同的。在这个社会中,经验与想法最为重要。 六、附录源码 package chaper01; /** * * 使用动态规划的方法求取每对节点之间的最短路径 * @author 朱梅 * version jdk1.8 * 函数:public class lu 求最短路径 * */ public class Lu { // 求取最短路径的函数 public static String[][] getShortestPath(int data[][]) { int length = data.length; //data数组的长度赋值给length String pathShow[][] = new String[length][length];//创建对象为二维数组pathShow(路径展示) for (int i = 0; i data.length; i++) //通过for循环遍历data数组 for (int j = 0; j data[i].length; j++) { if (data[i][j] 0) //data[i][j] 0说明从i+1到j+1这条路是通的 pathShow[i][j] = (i + 1) + -- + (j + 1); //将路径存储到二维数组pathShow中 else

文档评论(0)

jyr0221 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档