- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第二题路由算法题实验报告
第1步:路由算法编程(8分)
一、实验目的
在由给定的输入文件input.txt文件定义的拓扑中,计算出同时满足带宽资源
约束和路径需求的最优路线。
输入文件input.txt格式如下:
leftnodeID,rightnodeID,bandwidth
1,3,100
1,4,100
2,3,100
2,4,100
3,4,100
3,5,100
3,6,100
4,5,100
4,6,100
5,6,100
5,7,100
5,8,100
6,7,100
6,8,100
;
srcNodeID,dstNodeID,bandwidth
1,7,90
1,8,90
其中leftnodeID为左节点(字段名固定),rightnodeID为右节点(字段名固定),
bandwidth为带宽。srcNodeID为源节点(字段名固定),dstNodeID为目的节点(字
段名固定)。
算法计算后得到的输出文件output.txt格式如下:
1,3,6,7
2,4,5,8
在原input.txt的基础上,本实验进行了扩展,加入了cost和priority两个字
段,新的input.txt格式如下所示:
1/12
leftnodeID,rightnodeID,bandwidth,cost
1,3,100,5
1,4,100,8
2,3,100,8
2,4,100,5
3,4,100,5
3,5,100,5
3,6,100,8
4,5,100,8
4,6,100,5
5,6,100,5
5,7,100,5
5,8,100,8
6,7,100,8
6,8,100,5
;
srcNodeID,dstNodeID,bandwidth,priority
1,7,90,5
1,8,90,10
其中cost为开销,priority为权值。cost用来衡量左节点到达右节点的代价,在
现实中可以是与带宽成反比的一个度量值,也可以是实时的时延。priority反映
目标的权值,权值越大,在最终选择匹配路径组合中向该目标倾斜的程序就越大。
二、算法简介
本实验采用的算法首先读入Input.txt文件初始化各参数,包括带宽矩阵和开
销矩阵。然后根据input.txt中的第一个目标的带宽资源约束和路径需求计算得到
满足条件的路径集合并储存起来。在这个路径集合的基础上,更新带宽矩阵,根
据下一个目标的带宽资源约束和路径需求计算得到满足条件的路径集合并储存
起来,以此类推,直到得到最后一个目标的路径集合。最后根据这些路径集合,
计算得出加权开销和最小的一组满足各目标的路径,输出到output.txt中。
在本实验中,并没有采用Dijkstra的最短路径算法,Dijkstra算法用于计算
一个节点到其他节点的最短路径,主要特点是以起始点为中心向外层层扩展,直
到扩展到终点为止。但是本实验首先要满足的要求是目标集合的带宽约束和路径
需求,若是存在多个目标,目标间的路径选取是会相互影响的。采用Dijkstra算
法只能得到单个目标的最短链路,但要得到多个目标的组合最优路径,则没法做
到。本实验所采用的算法思想也是扩展,从源节点开始向外扩展,并会保存满足
目标的路径集合,这样做的出发点是为了保证找到满足实验目的中的带宽约束和
路径需求的路径组合。在此基础上,再选出加权开销和最小的一组路径。
2/12
三、算法数据结构
下面介绍一下本算法中所采用的一些基本数据结构:
Path结构体
Path结构体用于储存一条路径,如“1-3-5-7”,成员cost表示这条路径的
总开销,由各段路径的开销值相加所得;成员depth表示路径所包含的节点
数;成员pathPoint是一个int型数组,按顺序储存路径的各节点号。
node:List链表的基本组成单位
List链表
List链表是一个类,用于储存一个路径集合,私有成员为head,用于指向链
表的头部。成员函数包括基本的构造函数和析构函数,用于在屏幕上输出信
文档评论(0)