欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    链路状态路由算法实验.doc

    • 资源ID:28544405       资源大小:1.05MB        全文页数:41页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    链路状态路由算法实验.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date链路状态路由算法实验链路状态路由算法实验实验二 链路状态路由算法的实验一、实验目的:了解链路状态路由算法的原理以及具体过程。二、实验原理: 链路状态算法实现的基本步骤:1、发现他的邻接点,并知道其网络的地址。2、测量到各邻接点的延迟或开销。3、构造一个分组,分组中包含所有他刚刚收到的信息。4、将这个分组发送给其他的路由器。5、计算出到每一个其他路由器的最短路径三、链路状态路由的核心算法(迪加克拉算法):void dijkstra(int s, int t, int path) struct state /存放节点数据 int predecessor; /父节点 int length; /权值 bool lable; /访问状态 stateMAX_NODES; int i,j,k,min; struct state *p; for(p = &state0; p < &stateVnums; p +) /初始化节点数据 p->predecessor = -1; p->length = INFINITY; p->lable = false;statet.length = 0;statet.lable = true;k = t;do for(int i = 0; i < Vnums; i +) if( (distki != 0) && (statei.lable = false) if(statek.length + distki < statei.length) statei.predecessor = k; /记录节点 cout << k << "->" statei.length = statek.length + distki; /路径长度 k = 0;min = INFINITY; for(int i = 0; i < Vnums; i +) if(statei.lable = false) && (statei.length < min) min = statei.length; k = i; statek.lable = true; while(k!=s); cout << s; 四、流程图:核心算法(迪加克拉算法)流程图:访问起始路由K,目标s statei.lable = falsei+计算statek.lengthstatei.predecessor = kk=0; min = INFINITY;statei.lable = false) && (statei.length < min)k=i;i+statek.lable = true;k=s 结束五、 程序截图:1、 路由表信息: 2、不同两点间的最短路径: 六、 源代码#include <iostream>#include <fstream>#define routeTable "routeTable.txt"using namespace std;const int MAX_NODES = 1024; const int INFINITY = 100000;int distMAX_NODESMAX_NODES; /用于存放网络拓扑结构连接矩阵 int static Vnums; /总的节点数 void initDist() /初始化邻接矩阵 for(int i = 0; i < MAX_NODES; i +) for(int j = 0; j < MAX_NODES; j +) distij = 0; void creatRouteMap(int Vnums) /创建网络拓扑结构的邻接矩阵 for(int i = 0; i < Vnums; i +) cout << "输入第" << i << "个节点与第" ; for(int j = 0; j < Vnums; j +) cout << j << "个节点的权值:" << endl; cin >> distij; void saveRoute(ofstream& routeTables) /保存路由信息 routeTables << "路由邻接矩阵为:" routeTables << "n" routeTables << "*" routeTables << "n" for(int i = 0; i < Vnums; i +) for(int j = 0; j < Vnums; j +) routeTables<<distij<<"t" routeTables << "n" void dijkstra(int s, int t, int path) struct state /存放节点数据 int predecessor; /父节点 int length; /权值 bool lable; /访问状态 stateMAX_NODES; int i,j,k,min,print; struct state *p; for(p = &state0; p < &stateVnums; p +) /初始化节点数据 p->predecessor = -1; p->length = INFINITY; p->lable = false;statet.length = 0;statet.lable = true;k = t;cout << "最短路径为:" << endl;do for(int i = 0; i < Vnums; i +) if( (distki != 0) && (statei.lable = false) if(statek.length + distki < statei.length) statei.predecessor = k; /记录节点 cout << k << "->" statei.length = statek.length + distki; /路径长度总和 k = 0; min = INFINITY; for(int i = 0; i < Vnums; i +) if(statei.lable = false) && (statei.length < min) min = statei.length; k = i; statek.lable = true; while(k!=s); cout << s; void addRoute() /添加一个路由及结点信息 char ch; do cout << "添加一个路由:" << endl; Vnums = Vnums + 1; cout << "输入第" << Vnums - 1 << "个节点与第" ; for(int j = 0; j < Vnums; j +) cout << j << "个节点的权值:" << endl; cin >> distVnums - 1j; /对应行的信息 distjVnums - 1 = distVnums - 1j; /对应列的信息 cout << "继续添加(y 或者 n):" << endl; cin >> ch; if(ch = 'n') break; while(ch = 'y'); void deleteRoute() char ch; int delNum; do cout << "输入删除路由结点号:" << endl; cin >> delNum; for(int j = 0; j < Vnums; j +) distdelNum - 1j = 0; /对应行的信息 distjdelNum - 1 = distdelNum - 1j; /对应列的信息 cout << "继续删除(y 或者 n):" << endl; cin >> ch; if(ch = 'n') break; while(ch = 'y'); void changeRoute() int i,j; cout << "输入要修改的结点1:" <<endl; cin >> i; cout << "输入要修改的结点2:" <<endl; cin >> j; cout << "输入修改的权值:" <<endl; cin >> disti-1j-1; void displayRouteInfo() cout << "*" << endl; cout << "路由表信息:" << endl; for(int i = 0; i < Vnums; i +) for(int j = 0; j < Vnums; j +) cout << distij << "t" cout << "n" int main()int desNode,rouNode;int pathMAX_NODES;int change; char ch;ofstream routeTables;/初始化权值矩阵 initDist();cout << "输入路由总节点数:" << endl;cin >> Vnums;do/主菜单界面cout << "t" <<"=" << endl;cout << "t" <<"1.创建路由表" << endl;cout << "t" <<"2.增加路由" << endl;cout << "t" <<"3.删除路由" << endl;cout << "t" <<"4.修改路由" << endl;cout << "t" <<"5.找两个路由间的最短路径" << endl;cout << "t" <<"6.保存路由表到文件" << endl;cout << "t" <<"7.显示路由表信息" << endl;cout << "t" <<"8.退出" << endl;cout << "t" <<"=" << endl;/cout << "输入路由总节点数:" << endl;/cin >> Vnums;cout << "选择操作(1-8):" << endl;cin >> change;switch(change) case 1: creatRouteMap(Vnums); system("pause"); system("cls");break;case 2:addRoute(); system("pause"); system("cls"); break; case 3: deleteRoute(); system("pause"); system("cls"); break; case 4:changeRoute(); system("pause"); system("cls");break;case 5: cout << "输入目标节点和源节点:" << endl; cin >> desNode; cin >> rouNode; dijkstra(desNode,rouNode,path); /求最短路径 system("pause"); system("cls"); break; case 6:routeTables.open(routeTable); if(routeTables=NULL) cout << "打开文件夹错误:" << endl; getchar(); exit(0); /保存文件 saveRoute(routeTables); routeTables.close(); system("cls"); break; case 7: displayRouteInfo();system("pause");system("cls"); break; case 8: return 0; default: system("cls"); break; cout << "返回选择菜单(y 或者 n):" << endl; cin >> ch; if(ch = 'n') break; while(ch = 'y');system("pause");return 0;七、 心得体会:通过做练习编写链路状态路由算法的实验,我更进一步加深了对链路状态路由原理的理解,对网络过程中网络节点的信息传输与通信有了更进一步认识。同时,对迪加克拉求最短路径算法的设计与原理加深了理解。-

    注意事项

    本文(链路状态路由算法实验.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开