- 8
- 0
- 约3.49千字
- 约 5页
- 2015-09-26 发布于重庆
- 举报
实验八LinkStatesAlgorithm的实现
实验八、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对应的的其余点的权重
s[i] = 0;
您可能关注的文档
最近下载
- 中华人民共和国职业分类大典(2015新版)解读.docx VIP
- XX生物质热电项目安全设施设计专篇.doc VIP
- 广东省珠海市香洲区2024-2025学年三年级上册期末考试数学试卷(含答案).docx VIP
- 云南省红河州、文山州2024-2025学年高一上学期月期末考试历史试题(含答案).pdf VIP
- 生锈之8D报告(案例).xls VIP
- (2025年)统战部遴选公务员面试真题和专业题3问及答案.docx VIP
- 口腔市场专员培训.pptx VIP
- 如何制作西红柿炖牛腩,比饭店那酸酸的好吃太多啦!.pdf VIP
- 部编版二年级上册语文第11课《葡萄沟》教学课件.ppt VIP
- 部编版二年级上册语文《葡萄沟》PPT教学课件.pptx VIP
原创力文档

文档评论(0)