当前位置:首页 » 网络连接 » 计算机网络距离算法
扩展阅读
公司宿舍网络连接路由器 2025-06-24 02:51:12
苹果xr显示网络异常 2025-06-24 02:50:01

计算机网络距离算法

发布时间: 2022-06-11 20:48:32

计算机网络原理 计算最大跨距 为什么要除以2

根据我的理解,网络最大跨距应该指的是时间上的跨距,即以太网通信双方端到端的传播延时t。

争用期为2t。
电磁波信号在电缆中的传播速率为v。
则最小帧长L=2t×v(争用期×传播延时)
故t=L/(2v)
就是你说的要除以2。

㈡ 计算机网络的最短路径算法有哪些对应哪些协议

用于解决最短路径问题的算法被称做“最短路径算法”,有时被简称作“路径算法”。最常用的路径算法有:
Dijkstra算法、A*算法、SPFA算法、Bellman-Ford算法和Floyd-Warshall算法,本文主要介绍其中的三种。

最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。
算法具体的形式包括:

确定起点的最短路径问题:即已知起始结点,求最短路径的问题。

确定终点的最短路径问题:与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。
确定起点终点的最短路径问题:即已知起点和终点,求两结点之间的最短路径。

全局最短路径问题:求图中所有的最短路径。
Floyd

求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。

Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。
Floyd-Warshall算法的时间复杂度为O(N^3),空间复杂度为O(N^2)。

Floyd-Warshall的原理是动态规划:

设Di,j,k为从i到j的只以(1..k)集合中的节点为中间节点的最短路径的长度。

若最短路径经过点k,则Di,j,k = Di,k,k-1 + Dk,j,k-1;

若最短路径不经过点k,则Di,j,k = Di,j,k-1。

因此,Di,j,k = min(Di,k,k-1 + Dk,j,k-1 , Di,j,k-1)。

在实际算法中,为了节约空间,可以直接在原来空间上进行迭代,这样空间可降至二维。

Floyd-Warshall算法的描述如下:

for k ← 1 to n do

for i ← 1 to n do

for j ← 1 to n do

if (Di,k + Dk,j < Di,j) then

Di,j ← Di,k + Dk,j;

其中Di,j表示由点i到点j的代价,当Di,j为 ∞ 表示两点之间没有任何连接。

Dijkstra

求单源、无负权的最短路。时效性较好,时间复杂度为O(V*V+E),可以用优先队列进行优化,优化后时间复杂度变为0(v*lgn)。
源点可达的话,O(V*lgV+E*lgV)=>O(E*lgV)。

当是稀疏图的情况时,此时E=V*V/lgV,所以算法的时间复杂度可为O(V^2) 。可以用优先队列进行优化,优化后时间复杂度变为0(v*lgn)。
Bellman-Ford

求单源最短路,可以判断有无负权回路(若有,则不存在最短路),时效性较好,时间复杂度O(VE)。

Bellman-Ford算法是求解单源最短路径问题的一种算法。

单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。

与Dijkstra算法不同的是,在Bellman-Ford算法中,边的权值可以为负数。设想从我们可以从图中找到一个环

路(即从v出发,经过若干个点之后又回到v)且这个环路中所有边的权值之和为负。那么通过这个环路,环路中任意两点的最短路径就可以无穷小下去。如果不处理这个负环路,程序就会永远运行下去。 而Bellman-Ford算法具有分辨这种负环路的能力。
SPFA

是Bellman-Ford的队列优化,时效性相对好,时间复杂度O(kE)。(k< 与Bellman-ford算法类似,SPFA算法采用一系列的松弛操作以得到从某一个节点出发到达图中其它所有节点的最短路径。所不同的是,SPFA算法通过维护一个队列,使得一个节点的当前最短路径被更新之后没有必要立刻去更新其他的节点,从而大大减少了重复的操作次数。
SPFA算法可以用于存在负数边权的图,这与dijkstra算法是不同的。

与Dijkstra算法与Bellman-ford算法都不同,SPFA的算法时间效率是不稳定的,即它对于不同的图所需要的时间有很大的差别。
在最好情形下,每一个节点都只入队一次,则算法实际上变为广度优先遍历,其时间复杂度仅为O(E)。另一方面,存在这样的例子,使得每一个节点都被入队(V-1)次,此时算法退化为Bellman-ford算法,其时间复杂度为O(VE)。
SPFA算法在负边权图上可以完全取代Bellman-ford算法,另外在稀疏图中也表现良好。但是在非负边权图中,为了避免最坏情况的出现,通常使用效率更加稳定的Dijkstra算法,以及它的使用堆优化的版本。通常的SPFA。

㈢ 简述计算机网络按距离的分类

1、从网络结点分布(即地理范围)来看,可分为局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)和城域网(Metropolitan Area Network,MAN)。

2、按交换方式可分为线路交换网络(Circurt Switching)、报文交换网络(Message Switching)和分组交换网络(Packet Switching)。

3、按网络拓扑结构可分为星型网络、树型网络、总线型网络、环型网络和网状网络。

(3)计算机网络距离算法扩展阅读

一、局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。

局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。

二、广域网(英语:Wide Area Network,缩写为 WAN),又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。

通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。

三、城域网(Metropolitan Area Network)是在一个城市范围内所建立的计算机通信网,简称MAN。属宽带局域网。由于采用具有有源交换元件的局域网技术,网中传输时延较小,它的传输媒介主要采用光缆,传输速率在100兆比特/秒以上。

㈣ 计算机网络中的路由器使用距离向量算法

1、假设路由器使用距离向量算法,下图给出了网络拓扑及路由器的初始路由表(只包含部分字段),假设A给B传了一次路由信息,B处理后又也给C传了一次路由信息,请在表中填写经过路由信息交换之后B和C的路由表(相邻路由器间距离计为1)。
2、B路由器增加2条:10.3.0.0 s0 1
10.4.0.0 s1 1
3、C路由器增加2条:10.3.0.0 s0 2
10.2.0.0 S0 1

㈤ 距离矢量路由算法 (计算机网络题

通过B到个点的距离为:(11,6,14,18,12,8),因为B到A的距离为5,C到B的距离为6所以C到A的距离更新为5+6=11,C到B的距离没变为6,C通过B到C的距离为6+8=14,C通过B到D的距离为6+12=18,C通过B到E距离6+6=12,C通过B到F距离为6+2=8。

通过D到个点的距离为:(19,15,9,3,12,13),通过D到A的距离为3+16=19,通过D到B的距离为3+12=15,通过D到C的距离为6+3=9,通过D到D的距离为3,通过D到E的距离为3+9=12,通过D到F的距离为3+10=13。

通过E到个点的距离为:(12,11,8,14,5,9),通过E到A的距离为5+7=12,通过E到B的距离为5+6=11,通过E到C的距离为5+3=8,通过E到D的距离为5+9=14,通过E到Eden距离为5,通过E到F的距离为9。

取到达每一目的地的最小值(C除外)得到: (11, 6,0,3, 5,8)就得出了新的路由表。输出的路线输出线路是: (B,,B, -,D,E, B)。

(5)计算机网络距离算法扩展阅读:

路由算法的度量标准:

路由算法使用了许多种不同的度量标准去决定最佳路径。复杂的路由算法可能采用多种度量来选择路由,通过一定的加权运算,将它们合并为单个的复合度量、再填入路由表中,作为寻径的标准。

通常所使用的度量有:路径长度、可靠性、时延、带宽、负载、通信成本等。

路径长度:

路径长度是最常用的路由。一些路由协议允许网管给每个网络连接人工赋以代价值,这种情况下,路由长度是所经过各个链接的代价总和。

可靠性:

可靠性,在路由算法中指网络连接的可依赖性(通常以位误率描述),有些网络连接可能比其它的失效更多,网路失效后,一些网络连接可能比其它的更易或更快修复。

路由延迟:

路由延迟指分组从源通过网络到达目的所花时间。很多因素影响到延迟,包括中间的网络连接的带宽、经过的每个路由器的端口队列、所有中间网络连接的拥塞程度以及物理距离。

带宽

带宽指连接可用的流通容量。在其它所有条件都相等时,10Mbps的以太网链接比64kbps的专线更可取。虽然带宽是链接可获得的最大吞吐量,但是通过具有较大带宽的链接做路由不一定比经过较慢链接路由更好。

负载:

负载指网络资源,如路由器的繁忙程度。负载可以用很多方面计算,包括CPU使用情况和每秒处理分组数。持续地监视这些参数本身也是很耗费资源的。

通信代价:

通信代价是另一种重要的metric,尤其是有一些公司可能关心运作费用甚于关心性能。即使线路延迟可能较长,他们也宁愿通过自己的线路发送数据而不采用昂贵的公用线路。

参考资料来源:网络-路由算法

㈥ 计算机网络的计算题求解

网络传播延迟 = 距离/传播速度 = 1km/(2C/3) = 3km/(2×3×10^5km/s) = 5μs
冲突窗口(往返的物理时间) = 2×网络传播延迟 = 10μs
最小帧长 = 数据传输速率×冲突窗口 = 10Mbps × 10μs = 100bit
好好学习天天向上

㈦ 跪求高手帮我看一下这段用C语言实现的计算机网络的距离向量算法,调试不出来,可能是指针引用不当引起。

/* 使用全局数组,避免指针,读写文件行数事先确定,可以运行,内容是否正确自己修改 */
# include<stdio.h>
# include<string.h>
# define MAX_NAME_LEN 80
typedef struct Router
{
char destination[MAX_NAME_LEN];
int distance;
char nexthop[MAX_NAME_LEN];
char name[MAX_NAME_LEN];
};//路由器结构定义
Router PRx[1000],PRy[1000];
int r=0,n=0;
int Dis_vector(char f1[],char f2[])
{
FILE * fp1;
FILE * fp2;
int i=0;
if ((fp1 = fopen(f1, "a")) == NULL||(fp2 = fopen(f2, "r+")) == NULL)
return 0;
while(i<n){
(PRy[i].distance)++;strcpy(PRy[i].nexthop,PRy[i].name);i++;}//路由器Y的路由更新
i=0;
while(i<r){
if(!strcmp(PRx[i].destination,PRy[i].destination)){
fscanf(fp1,"%s%d%s",PRy[i].destination,&(PRy[i].distance),PRy[i].nexthop);i++;return 1;}//比较目的地址
else if(!strcmp(PRx[i].nexthop,PRy[i].nexthop)){
PRx[i].distance=PRy[i].distance;i++;return 1;}//比较下一跳
else if(PRx[i].distance>PRy[i].distance){
PRx[i].distance=PRy[i].distance;strcpy(PRx[i].nexthop,PRy[i].nexthop);i++;return 1;}//比较距离
}

}//距离向量算法

int input_r(char f[])
{
FILE * fp;
int i=0;
if ((fp = fopen(f, "r")) == NULL)
return 0;
fscanf(fp,"%s",PRx[0].name);
while(!feof(fp))
{
fscanf(fp, "%4s%4d%4s", PRx[i].destination,&(PRx[i].distance),PRx[i].nexthop);
i++;
}
r=i;
if ( fclose(fp) )
return 0;
return 1;
}//读取路由器X的路由表

int input_n(char f[])
{
FILE * fp;
int i=0;
if ((fp = fopen(f, "r")) == NULL)
return 0;
fscanf(fp,"%s",PRy[0].name);
while(!feof(fp))
{
fscanf(fp, "%4s%4d%4s", PRy[i].destination,&(PRy[i].distance),PRy[i].nexthop);
i++;
}
n=i;
if ( fclose(fp) )
return 0;
return 1;
}//读取路由器Y的路由表
int output(char f[])
{
FILE * fp;
int i=0;
if ((fp = fopen(f, "w")) == NULL)
return 0;
fprintf(fp,"%s\n",PRx[0].name);
while (i<r)
{
fprintf(fp, "%4s%4d%4s\n", PRx[i].destination,PRx[i].distance,PRx[i].nexthop);
i++;

}
if ( fclose(fp) )
return 0;
return 1;
}//输出更新后的X路由器的路由表

int main()
{
if (input_r("e:\\input_r.txt") == 1)
{
if (input_n("e:\\input_n.txt") == 1)
{

if ( Dis_vector("e:\\input_r.txt","e:\\input_n.txt")== 1)
{
output("e:\\output_PRx.txt");
printf("Dis_vector successful!\n");
}

}

}
}

㈧ 计算机网络原理计算题(简单题

1、时间间隙:就是AB间通讯一次的时间,也就是通讯节拍,计算方法是AB间距离乘以2,然后除以通讯速率,加上双倍的通讯延迟;你的答案似乎有问题;

2、最小帧长度:就是说100Mbps的传输频率情况下,来得及传播的最小数据串长度;也就是说1000米长度上,分布100M个数据包,有多少个,然后换算为字节。你的答案是对的。

㈨ 计算机网络中的距离向量算法(RIP)的基本原理

RIP协议采用距离向量算法,在实际使用中已经较少适用。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP分组分为两种:请求分组和响应分组。

㈩ 计算机网络路由算法

关于路由器如何收集网络的结构信息以及对之进行分析来确定最佳路由,有两种主要的路由算法:
总体式路由算法和分散式路由算法。采用分散式路由算法时,每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为DV(距离向量)算法。采用总体式路由算法时,每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法。