文档介绍:距离向量路由算法实验报告
距离向量路由算法实验报告
1
距离向量路由算法实验报告
信息安全_专业1002_班2012年12月20日
姓名吴文珊
学号_0909102525
一.实验题目
模拟距离向量路由算法的路=0;//极点到自己距离为 0
距离向量路由算法实验报告
距离向量路由算法实验报告
7
距离向量路由算法实验报告
Display(g);//输出有向网g
ShortestPath_Floyd(g,p,d);//求每对极点的最短路径
return1;
}
voidCreateDN(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",,,&w);
存入图中;
}
}
voidDisplay(MGraphG)
{
for(i=0;i<;i++)
visit(GetVex(G,i));
for(i=0;i<;i++)
printf("%-8s",[i].name);
for(j=0;j<;j++)
{printf("%20s",[j].name);
for(k=0;k<;k++)
printf(" %-5d",[j][k].adj);
printf("\n");
}
}
voidShortestPath_Floyd()
{
//用Floyd算法随机更新两极点间最短路径、极点路由表,若P[v][w][u]为true,则u是从v到w目前求得最短路径上的极点
for(v=0;v<;v++)
for(w=0;w<;w++)
{
D[v][w]=[v][w].adj;//极点v到w的直接距离for(u=0;u<;u++)P[v][w][u]=FALSE;
if(D[v][w]<INFINITY)// 从V到W有直接路径
{
strcpy([v].routers[w],[v].name);P[v][w][v]=P[v][w][w]=TRUE;//由v到w的路径经过v和w两点
}
else
距离向量路由算法实验报告
距离向量路由算法实验报告
8
距离向量路由算法实验报告
strcpy([v].routers[w],"-");
}
srand((unsigned)time(NULL));//产生随机数种子,防备伪随机数while(change==1)
{
for(;bad<20;)//连续20次随机互换无更新,为坏的互换,则停止随机互换
{
v=rand()%;
w=rand()%;
if(D[v][w]<INFINITY&&v!=w)
{
change=0;
for(u=0;u<;u++)
{
距离向量路由算法实验报告
距离向量路由算法实验报告
9
距离向量路由算法实验报告
if(D[w][u]<INFINITY&&D[v][w]+D[w][u]<D[v][u])//
从v经
u到w的一条路
距离向量路由算法实验报告
距离向量路由算法实验报告
12
距离向量路由算法实验报告
径更短
{
D[v][u]=D[v][w]+D[w][u];// 更新最短距离
change=1;
bad=0; //一有更新,则不是坏的互换
if(w!=u)
strcpy([v].routers[u],[w].name);//记录上一跳节点名称
for(i=0;i<;i++)
距离向量路由算法实验报告
距离向量路由算法实验报告
12
距离向量路由算法实验报告
P[v][w][i]=P[v][u][i]||P[u][w][i];//
从v到
w的路径经过从
v到
u和从
u到
w
距离向量路由算法实验报告
距离向量路由算法实验报告
12
距离向量路由算法实验报告
的全部路径
}//if
}//foru
if(change==1)
{
sta