- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 教师面试自我介绍.doc
- 教师远程培训日志合集.doc
- 教案第一章第一节1.doc
- 教案 生活垃圾的分类处理.doc
- 教案 高中化学必修1 第二章化学物质及其分类 第二节离子反应.doc
- 教案-信息科学基础.doc
- 教案书写格式.doc
- 教科版 三上科学 第二单元动物.doc
- 教科版三年级科学第一二单元习题1.doc
- 教科版五年级上册科学期末试卷(附答案).doc
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)