根據我的理解,網路最大跨距應該指的是時間上的跨距,即乙太網通信雙方端到端的傳播延時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(鏈路狀態)演算法。