1 / 12
文档名称:

距离向量路由算法实验报告.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

距离向量路由算法实验报告.doc

上传人:luyinyzhi 2016/7/12 文件大小:0 KB

下载得到文件列表

距离向量路由算法实验报告.doc

文档介绍

文档介绍:信息安全_ 专业 1002_ 班 2012 年12月 20日姓名吴文珊学号_0909102525 一. 实验题目模拟距离向量路由算法的路由表交换过程, 演示每轮交换后路由表的变化, 动态生成网络拓扑图, 从初始路由表开始, 进行交换路由表, 演示每轮交换后的路由表的变化。观察和讨论多少轮交换后路由表稳定。二. 需求分析本程序用 C 编写,完成距离向量路由算法的模拟。(1) 输入的形式与输出值的范围:输入时要求输入节点个数、初始网络拓扑图中边的条数(即:邻居节点的对数) ,节点名称、每条边的弧头、弧尾节点、边权值。名字定义为字符串形式,节点个数、边条数、边权值为整形变量; (2) 输出的形式:输入信息后,程序输出每轮交换之后新的的路由表(3) 程序所能达到的功能:完成节点信息的输入、随机选取节点交换向量, 并更新路由表, 显示经过多少轮交换路由表稳定, 并停止交换。(4) 测试数据: 节点个数: 4 边条数:4 节点名称: abcd 弧头弧尾权值 ab3bd6ca2da6 最终距离向量矩阵如下: abcda0326b3056c2508d6680 三. 概要设计(1) 为了实现上述功能,须定义结构体的抽象数据类型(2) 本程序包含了个函数: void visit(VertexType ver)// 访问顶点的函数 void input(VertexType &ver) // 输入顶点信息的函数 int LocateVex(MGraph G,VertexType u)// 查找顶点 u, 并返回 void CreateDN(MGraph &G)// 构造有向网 G GetVex(MGraph G, int v)// 得到图中顶点 V void Display(MGraph G)// 显示路由表 void ShortestPath_Floyd() 各函数间关系如下: CreateDN() LocateVex() visit() Main() Display() GetVex() ShortestPath_Floyd() 四. 详细设计实现概要设计中定义的所有的数据类型, 对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。(1) 节点类型 struct VertexType// 最简单的顶点信息类型(只有顶点名称) { char name[MAX_NAME];// 顶点名称 char routers[MAX_VERTEX_NUM][MAX_NAME];// 定义最短路径中到目的节点的上一跳}; struct MGraph// 图的结构{ VertexType vexs[MAX_VERTEX_NUM];// 顶点向量 AdjMatrix arcs;// 邻接矩阵(二维数组) int vexnum,um;// 图的当前顶点数和弧数 GraphKind kind; //图的种类标志}; typedef struct //边(弧)信息结构{ VRType adj;// 顶点关系类型,对带权图,表示权值} struct VertexType// 最简单的顶点信息类型(只有顶点名称) { char name[MAX_NAME];// 顶点名称 char routers[MAX_VERTEX_NUM][MAX_NAME];// 定义最短路径中到目的节点的上一跳}; struct MGraph// 图的结构{ VertexType vexs[MAX_VERTEX_NUM];// 顶点向量 AdjMatrix arcs;// 邻接矩阵(二维数组) int vexnum,um;// 图的当前顶点数和弧数 GraphKind kind; //图的种类标志}; (2) 各功能函数伪码算法 main() { CreateDN(g);// 构造有向网 g for(i=0;i<;i++) [i][i].adj=0;// 顶点到自身距离为 0 Display(g);// 输出有向网 g ShortestPath_Floyd(g,p,d);// 求每对顶点的最短路径 return 1; } void CreateDN(MGraph &G)// 构造有向网 G { scanf("%d %d",&,&); for(i=0;i<;i++)// 构造顶点向量 input([i]); //输入节点名称 for(i=0;i<;i++)// 初始化二维邻接矩阵 for(j=0;j<;j++) { [i][j].adj=INFINITY; } for(k=0;k<;k++) { scanf("%s %s %d",,