旅行售货员问题的报告.docVIP

  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文档。上传文档
查看更多
旅行售货员问题的报告

实验题目 旅行售货员问题 由于实验室安排的时间有冲突,现定于本周(11周)四上午上实验课,实验内容如下: 四、旅行售货员问题 [基本要求] 可用一个带权有向图表示某一区域的公交线路网(可自行设定公交网),图中顶点表示区域内的销售点,有向边表示已有的公交路线,边上的权值表示票价。要求: 1、自行设计存储结构,并说明为什么采用该存储结构。 2、某一源点到其他各顶点的最少票价,该源点由用户指点并从键盘输入。(参考迪杰斯特拉算法) 3、计算每一对顶点之间的最少票价及路径,并输出。(参考佛罗伊德算法) 可采用菜单方式实现以上操作的选择。 此次实验为综合性实验,希望同学们能认真完成实验报告(模板我会在近期内发给大家)。 实验报告 实验目的与要求 1、掌握图的抽象数据类型及存储表示方式; 2、掌握求源点到其余各顶点最短路径的算法; 3、掌握求每一对顶点最短路径的算法; 实验方案 通常我们坐车最关心的是从原点到终点的所消耗的花费,并不关心所经站点的信息。借助于邻接矩阵容易判定任意两个顶点之间是否有边相连,并容易知道连接2个顶点的弧的代价。所以采取邻接矩阵的存储结构。 迪杰斯特拉 (Dijkstra) 提出了一个按路径长度递增的顺序产生最短路径的方法。此方法的基本思想是:把图中所有的顶点分成两组,第一组包括已确定最短路径的顶点,第二组包括尚未确定最短路径的顶点,按最短路径长度递增的顺序逐个把第二组的顶点加到第一组中去,直至从 v 1 出发可以到达的所有顶点都包括在第一组中。在这个过程中,总保持从 v 1 到第一组各顶点的最短路程长度,都不大于从 v 1 到第二组的任何顶点的最短路径长度。另外,每一个顶点对应一个距离值,第一组的顶点对应的距离值就是从 v 1 到此顶点的只包括第一组的顶点为中间顶点的最短路径长度。而我将采用此算法求解源点到其余各顶点的最短路径。 弗洛伊德(floyd)算法的基本思想:设求顶点vi到vj间的最短路径,若vi到vj有弧,则弧上的权值是一条路径,但未必是最短路径,要经过n-1次测试。首先将顶点v1加入,即看(vi,v1),(v1,vj)是否有路径,且比(vi,vj)低,如是,则用后两段路径代替,并称这是vi到vj中间顶点序号不大于1的最短路径。再将顶点v2加入,得到vi到vj中间顶点序号不大于2的最短路径。如此下去,直到vn加入,得到vi到vj中间顶点序号不大于n的最短路径,算法结束。而我将采用此算法求解每一对顶点的最短路径。 #include string.h #include stdio.h #define M 1000 #define N 6 typedef struct ArcCell{ int adj; /*相邻接的地方序号*/ }ArcCell; /*定义边的类型*/ typedef struct VertexType{ int number; /*地方序号*/ char *place; /*地方名称*/ }VertexType; /*定义顶点的类型*/ typedef struct{ VertexType vex[N]; /*图中的顶点,即为地方*/ ArcCell arcs[N][N]; /*图中的边,即为地方间的距离*/ int vexnum,arcnum; /*顶点数,边数*/ }MGraph; /*定义图的类型*/ MGraph G; /*把图定义为全局变量*/ int P[N][N]; long int D[N]; void CreateDN(v,a) /*造图函数*/ int v,a; { int i,j; G.vexnum=v; G.arcnum=a; for(i=0;iG.vexnum;++i) G.vex[i].number=i; /*下边是地方名*/ G.vex[0].place=A; G.vex[1].place=B; G.vex[2].place=C; G.vex[3].place=D; G.vex[4].place=E; G.vex[5].place=F; /*这里把所有的边假定为M,含义是地方间不可到达*/ for(i=0;iG.vexnum;++i) for(j=0;jG.vexnum;++j) G.arcs[i][j].adj=M; /*下边是可直接到达的地方间的距离*/ G.arcs[0][1].adj=6; G.arcs[0][3].adj=7; G.arcs[1][2].adj=1;

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档