




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验八、Link States Algorithm的实现序号: 姓名: 学号: 成绩 指导老师: 刘春花,刘宇 1实验目的:通过编程模拟实现LSA.2实验环境:VS.net软件开发平台,可以使用任何编程语言。3实验要求(1)求网络中任何两个结点之间的最短路径(网络中至少有4个节点)。(2)得到任何一个节点上的转发表。4实验分析,回答下列问题(1)给出LSA算法的主要思想。(1)邻居节点发现与测试:各节点主动测试所有与之相邻的节点的状态。方法是 周期性的向邻 居节点广播简短的查询报文,通过接收邻居节点的响应报文 来获取与邻居的状态信息。 (2)链路状态信息发布:根据收集到的状态信息,构造一个包含所有邻居列表在 内的分组LS,并通过洪泛法通告给算法作用区域内的所有节点。 (3)路由选择算法:收到LS分组的节点,采用Dijkstra算法,为每个节点选择 最短的路径。(2)通过图表算出任何两个节点之间的最短路径,并给出每个节点上的转发表。代码#define MAX 20 /图中顶点数的最大值#define MAXedg 30 /图中边数的最大值#include #include #include #include typedef int AdjMatrixMAXMAX;typedef structint vexsMAX; AdjMatrix arcs;MG;/图的矩阵表示法。 void Dijkstra(int n,int v,int *RW,int *R,int *MG) int i; int j; int maxint =00000;/定义一个最大的数值,作为不相连的两个节点的代价权值 int *s ; /定义具有最短路径的节点子集s s = (int *)malloc(sizeof(int) * n); /初始化最小路径代价和前一跳节点值 for (i = 1; i = n; i+) RWi = MGvi; /初始化V对应的的其余点的权重 si = 0; / 现在该点不属于节点子集 if (RWi = maxint) /初始化会回溯路径 Ri = 0; else Ri = v; RWv = 0; sv = 1; /源节点作为最初的s子集 for (i = 1; i n; i+) int temp = maxint; int u = v; /加入具有最小代价的邻居节点到s子集 for (j = 1; j = n; j+) if (!sj) & (RWj temp) u = j; temp = RWj; su = 1; /计算加入新的节点后,更新路径使得其产生代价最短 for (j = 1; j = n; j+) if (!sj) & (MGuj maxint) int newRW = RWu + MGuj; if (newRW = 1; j-) printf(%d - ,wayj); printf(%dn,u);void Dijkstra(int ,int ,int *,int *,int * );void ShowPath(int ,int ,int ,int *,int *);void main()/主函数char choice = x;while(1) system(cls);printf(ntt*nn);printf(ttt1. 查找两节点间最短路径:nn);printf(ttt2. 退出nn);printf(ntt*nn);printf(Please enter your choice(1/2):n );choice = getchar();switch(choice)case 1: int i,j,t; int n,v,u; int *MG; /矩阵 int *RW; /最短路径代价 int *R; /回溯节点 printf(请输入结点个数: ); scanf(%d,&n); printf(结点之间的链接代价为:n); MG=(int *)malloc(sizeof(int)*(n+1);/构建动态存储矩阵 for (i = 1; i = n; i+) MGi=(int *)malloc(sizeof(int)*(n+1); for (j = 1; j = n; j+) /输入代价矩阵 for (t = 1; t = n; t+) scanf(%d,&MGjt); RW = (int *)malloc(sizeof(int)*n);R= (int *)malloc(sizeof(int)*n);printf(2请输入起始节点:n);scanf(%d,&v);getchar();printf(2请输入目标结点:n);scanf(%d,&u);getchar(); Dijkstra(n, v, RW, R, MG); /调用dijkstra算法 for(i = 1; i = n ; i+) if(i!=v) printf(从%d 到%d 的路径距离是%dn,v,i,RWi); /printf(结点%d 的前一个结点是%d n,i,Routi); ShowPath(n,v,i, RW, R); doprintf(是否继续? Y/N);char ch;int flag=1;scanf(%c,&ch);getchar();if(ch = Y | ch = y) /继续flag = 1;i = 1;printf(2请输入起始节点:n);scanf(%d,&i);getchar();printf(2请输入目标结点:n);scanf(%d,&j);getchar();getchar();continue ;elseflag = 0; /不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年程序员进阶算法与数据结构考试要点
- 人教版除法竖式教学课件
- 【教案版】小学五班级上册 武术
- 2025年专业备考指南初级工程师面试题预测与解析工程技术类
- 2025年特岗教师招聘考试历史专业知识与面试技巧详解
- 2025年初级软件测试工程师模拟题及面试技巧
- 2025年数据分析师实战技能模拟测试题库及答案详解
- 2025年财务会计招聘面试技巧及预测题详解
- 2025年电子商务运营专家老年人电商市场趋势分析预测题集
- 2025年特岗教师招聘考试备考策略与规划
- 医院培训课件:《黄帝内针临床运用》
- 峥嵘岁月 课件-2024-2025学年高中音乐人音版(2019) 必修 音乐鉴赏
- 《医院医疗技术临床应用管理制度》
- 建筑装饰工程涂料施工技术考核试卷
- 数字媒体艺术史全册完整教学课件
- 2024年人社法律法规知识竞赛考试题库及答案
- 知识题库-人社劳动知识竞赛测试题及答案(十五)
- 《民宿管家》课件-民宿管家之预订接待
- 部编小学语文单元作业设计四年级上册第三单元 3
- 《信号完整性测试》课件2
- 火电厂检修培训课件
评论
0/150
提交评论