实验八、Lin States Algorithm的实现.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验八、Link States Algorithm的实现 序号: 姓名: 学号: 成绩 指导教师 1.实验目的: 通过编程模拟实现LSA. 2.实验环境: VS.net软件开发平台,可以使用任何编程语言。 3.实验要求 (1)求网络中任何两个结点之间的最短路径(网络中至少有4个节点)。 (2)得到任何一个节点上的转发表。 4.实验分析,回答下列问题 (1)给出LSA算法的主要思想。 ①邻居节点发现与测试:各节点主动测试所有与之相邻的节点的状态。方法是 周期性的向邻 居节点广播简短的查询报文,通过接收邻居节点的响应报文 来获取与邻居的状态信息。? ②链路状态信息发布:根据收集到的状态信息,构造一个包含所有邻居列表在 内的分组LS,并通过洪泛法通告给算法作用区域内的所有节点。? ③路由选择算法:收到LS分组的节点,采用Dijkstra算法,为每个节点选择 最短的路径。 (2)通过图表算出任何两个节点之间的最短路径,并给出每个节点上的转发表。 代码: #includestdio.h #include malloc.h void D(int ,int ,int *,int *,int * []);//dijkstra算法 void p(int ,int ,int ,int *,int *);//输出结果 void main() { int i,j,t; int n,v,u; int **MGraph; //矩阵 int *RoutWeight; //最短路径代价 int *Rout; //回溯节点 while(1){ printf(结点的个数为: ); scanf(%d,n); printf(输入邻接矩阵:\n); MGraph=(int **)malloc(sizeof(int)*(n+1)); //构建动态存储矩阵 for (i = 1; i = n; i++) { MGraph[i]=(int *)malloc(sizeof(int)*(n+1)); } for (j = 1; j = n; j++) //输入代价矩阵 { for (t = 1; t = n; t++) { scanf(%d,MGraph[j][t]); } } RoutWeight = (int *)malloc(sizeof(int)*n); Rout = (int *)malloc(sizeof(int)*n); printf(你输入的源节点:); scanf(%d,v); D(n, v, RoutWeight, Rout, MGraph); //调用dijkstra算法 for(i = 1; i = n ; i++) { if(i!=v) { printf(从%d 到%d 的路径距离是%d\n,v,i,RoutWeight[i]); p(n,v,i, RoutWeight, Rout); } } } } void D(int n,int v,int *RoutWeight,int *Rout,int *MGraph[]) { int i; int j; int maxint =0;//定义一个最大的数值,作为不相连的两个节点的代价权值 int *s ; //定义具有最短路径的节点子集s s = (int *)malloc(sizeof(int) * n); //初始化最小路径代价和前一跳节点值 for (i = 1; i = n; i++) { RoutWeight[i] = MGraph[v][i]; //初始化V对应的的其余点的权重

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档