数据结构 无向图中求两点间所有简单路径 实验6报告.doc

数据结构 无向图中求两点间所有简单路径 实验6报告.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HUNAN UNIVERSITY 实验六最终报告 题 目: 无向图中求两点间的所有简单路径 学生姓名 学生学号 专业班级 指导老师 完 成 日 期 2014年5月22日 需求分析 输入形式: 用户通过键盘输入城市数量、结点城市编号(4位长的数字)和城市之间是否有公路相连的关系的参数。 不对非法输入做处理,假定输入的数据都合法。 输出形式: 如果能在查找的两城市之间存在路径,则输出所有连通两城市的所有简单路径。 如果查找的两城市之间不存在路径,则输出错误信息,结束程序。 程序功能:根据用户输入的城市编号,以及两相邻城市之间路径关系,程序能判断查找的两城市之间是否存在路径,并且当存在路径时,程序输出所有简单路径,不存在时会输出错误信息。 测试数据 输入: 输入城市数量:4 每个城市的编号(四位):0001 每个城市的编号(四位):0002 每个城市的编号(四位):0003 每个城市的编号(四位):0004 输入不同两个城市的边的关系,区号用空格隔开:(输入0 0结束) 0001 0002 0002 0003 0001 0004 0003 0004 0 0 输入要查找路径的两个城市区号: 0001 0003 输出: (查找成功,有路径) 这两个城市间一条的简单路径为:0001-0002-0003 这两个城市间一条的简单路径为:0001-0004-0003 (查找成功,无路径)查找的两城市间没有简单路径! 二、概要设计 抽象数据类型定义 因为所有顶点的特征一致,并且顶点和其他的多个顶点间可能存在联系,由此顶点之间存在一个网状结构,顶点间的联系与方向无关,所以用一个无向图表示高速公路网,其中顶点表示城市,边表示城市之间的高速公路,数据的对象是图中的每一个顶点和无向边。由此为本问题确定一个图的数据关系。 图的ADT 数据对象:V,R(代表某门课程的顶点组成的一个顶点集?V?和代表课程先修关系的无向弧边组成的一个弧集?R组成) 数据关系:VR={v,w| v,w∈V 且 P(v,w)} v,w表示从 v 到 w 的一条弧,并称 v 为弧头,w 为弧尾。 基本操作: int n(); //返回图中的顶点数 int e(); int first(int); //返回顶点的第一条邻边 int next(int); //顶点的另一条邻边 void setEdge(int,int,int); //为有向边设置权值 int getMark(int); //获得顶点的标志 void setMark(int); //为顶点设置标志值 算法的基本思想 首先将图中每个顶点的访问标志初始化为0,每访问一个点,则访问标记改为1。 从图中给定的顶点V 出发,访问此顶点,然后依次从V的各个未被访问的邻接点出发深度优先搜索遍历图,每访问一个顶点,访问标记为1,把该点存入数组中,直至在图中遍历到和V有路径相通的目标顶点V0,输出该条简单路径。如果此次路径访问的顶点已经被访问,将上一个顶点访问标志设为0,继续访问其余邻接点,如果没有邻接点,则返回上一个顶点,将访问标志设为0,继续用DFS查找简单路径。如果算法结束,没有简单路径输出,那么输出没有简单路径。 程序的流程 初始化模块:输入城市数量,再输入相应城市编号及相邻城市间的通路路径,构建一个邻接矩阵来初始化一个无向图。 DFS模块:对无向图进行深度优先搜索,查找的两顶点之间若存在通路时的所有简单路径。 输出模块:若两城市(顶点)间存在通路,那么输出所有的简单路径。否则,输出没有简单路径,结束程序。 各层次模块之间的调用关系 三、详细设计 物理数据类型 当输入城市数量较多,相应的边的关系变得复杂时,相邻矩阵有更好的空间效率,且容易实现,所以用相邻矩阵来存储无向图的信息,根据输入的顶点个数n,创建一个n*n的矩阵。矩阵的每个行列对应的值来表示顶点之间是否有边相连,值为0时表示否,值为1是表示顶点间有边相连。初始化时,将矩阵所有行列对应的值初始化为0。因为城市编号可用四位数字来表示,所以可用一个整型变量来存储它。 无向图的基本操作 (邻接矩阵) 初始化一个有向图 Gra

文档评论(0)

zhanghc + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档