『壹』 什麼是鏈路狀態路由演算法,和DV演算法
鏈路狀態演算法(也稱最短路徑演算法)發送路由信息到互聯網上所有的結點,然而對於每個路由器,僅發送它的路由表中描述了其自身鏈路狀態的那一部分。距離向量演算法(也稱為Bellman-Ford演算法)則要求每個路由器發送其路由表全部或部分信息,但僅發送到鄰近結點上。從本質上來說,鏈路狀態演算法將少量更新信息發送至網路各處,而距離向量演算法發送大量更新信息至鄰接路由器。 ——由於鏈路狀態演算法收斂更快,因此它在一定程度上比距離向量演算法更不易產生路由循環。但另一方面,鏈路狀態演算法要求比距離向量演算法有更強的CPU能力和更多的內存空間,因此鏈路狀態演算法將會在實現時顯得更昂貴一些。除了這些區別,兩種演算法在大多數環境下都能很好地運行。
『貳』 ls與dv選路演算法的比較 和 ipv4與ipv6的比較
在DV演算法中,每個節點僅與它的直接鄰居交談,但它為它的鄰居提供了從其自己到網路中(它所知道的)所有其他節點的最低費用估計。
在LS演算法中,每個節點(經廣播)與所有其他節點交談,但它僅告訴他們與它直接相連鏈路的費用。
a 報文復雜性,LS演算法大於DV演算法
b 收斂速度,LS快於DV演算法,DV演算法在收斂時會遇到選路環路,還會遇到計數到無窮的問題。
c 健壯性,LS好於DV
『叄』 dvhop 演算法中,定位誤差跟信標節點的個數與通信距離關系 我模擬出來的結果不太正確 哪位大俠指點下
你運行下這個程序,應該是正確的。
%~~~~~~~~~~ DV-Hop演算法 ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~
% BorderLength-----正方形區域的邊長,單位:m
% NodeAmount-------網路節點的個數
% BeaconAmount---信標節點數
% Sxy--------------用於存儲節點的序號,橫坐標,縱坐標的矩陣
%Beacon----------信標節點坐標矩陣;BeaconAmount*BeaconAmount
%UN-------------未知節點坐標矩陣;2*UNAmount
% Distance------未知節點到信標節點距離矩陣;2*BeaconAmount
%h---------------節點間初始跳數矩陣
%X---------------節點估計坐標初始矩陣,X=[x,y]'
% R------------------節點的通信距離,一般為10-100m
clear,close all;
BorderLength=100;
NodeAmount=100;
BeaconAmount=8;
UNAmount=NodeAmount-BeaconAmount;
R=50;
% D=zeros(NodeAmount,NodeAmount);%未知節電到信標節點距離初始矩陣;BeaconAmount行NodeAmount列
h=zeros(NodeAmount,NodeAmount);%初始跳數為0;BeaconAmount行NodeAmount列
X=zeros(2,UNAmount);%節點估計坐標初始矩陣
%~~~~~~~~~在正方形區域內產生均勻分布的隨機拓撲~~~~~~~~~~~~~~~~~~~~
C=BorderLength.*rand(2,NodeAmount);
%帶邏輯號的節點坐標
Sxy=[[1:NodeAmount];C];
Beacon=[Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount)];%信標節點坐標
UN=[Sxy(2,(BeaconAmount+1):NodeAmount);Sxy(3,(BeaconAmount+1):NodeAmount)];%未知節點坐標
%畫出節點分布圖
plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),'r*',Sxy(2,(BeaconAmount+1):NodeAmount),Sxy(3,(BeaconAmount+1):NodeAmount),'k.')
xlim([0,BorderLength]);
ylim([0,BorderLength]);
title('* 紅色信標節點 . 黑色未知節點')
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~初始化節點間距離、跳數矩陣~~~~~~~~~~~~~~~~~~~~~~
for i=1:NodeAmount
for j=1:NodeAmount
Dall(i,j)=((Sxy(2,i)-Sxy(2,j))^2+(Sxy(3,i)-Sxy(3,j))^2)^0.5;%所有節點間相互距離
if (Dall(i,j)<=R)&(Dall(i,j)>0)
h(i,j)=1;%初始跳數矩陣
elseif i==j
h(i,j)=0;
else h(i,j)=inf;
end
end
end
%~~~~~~~~~~~最短路經演算法計算節點間跳數~~~~~~~~~~~~~~~~~~~~
for k=1:NodeAmount
for i=1:NodeAmount
for j=1:NodeAmount
if h(i,k)+h(k,j)<h(i,j)%min(h(i,j),h(i,k)+h(k,j))
h(i,j)=h(i,k)+h(k,j);
end
end
end
end
h
%~~~~~~~~~~~~~求每個信標節點的校正值~~~~~~~~~~~~~~~~~~~~~~~~~~
h1=h(1:BeaconAmount,1:BeaconAmount);
D1=Dall(1:BeaconAmount,1:BeaconAmount);
for i=1:BeaconAmount
dhop(i,1)=sum(D1(i,:))/sum(h1(i,:));%每個信標節點的平均每跳距離
end
D2=Dall(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%BeaconAmount行UNAmount列
for i=1:BeaconAmount
for j=1:UNAmount
if min(D2(:,j))==D2(i,j)
Dhop(1,j)=D2(i,j);%未知節點從最近的信標獲得校正值
end
end
end
Dhop
%~~~~~~~~~~~~~~~~用跳數估計距離~~~~~~~~~~~~~~~~~~~
hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)%未知節點到信標跳數,BeaconAmount行UNAmount列
for i=1:UNAmount
hop=Dhop(1,i);%hop為從最近信標獲得的校正值
Distance(:,i)=hop*hop1(:,i);%%Beacon行UN列;
end
% %~~~~~~~~~~~~~~~~~最小二乘法求未知點坐標~~~~~~~~~~~~~~~~~~~~~~~~
d=Distance;
for i=1:2
for j=1:(BeaconAmount-1)
a(i,j)=Beacon(i,j)-Beacon(i,BeaconAmount);
end
end
A=-2*(a');
% d=d1';
for m=1:UNAmount
for i=1:(BeaconAmount-1)
B(i,1)=d(i,m)^2-d(BeaconAmount,m)^2-Beacon(1,i)^2+Beacon(1,BeaconAmount)^2-Beacon(2,i)^2+Beacon(2,BeaconAmount)^2;
end
X1=inv(A'*A)*A'*B;
X(1,m)=X1(1,1);
X(2,m)=X1(2,1);
end
UN
X
for i=1:UNAmount
error(1,i)=(((X(1,i)-UN(1,i))^2+(X(2,i)-UN(2,i))^2)^0.5);
end
figure;plot(error,'-o')
title('每個未知節點的誤差')
error=sum(error)/UNAmount
Accuracy=error/R
『肆』 路由選擇演算法分為兩大類
路由選擇演算法分為兩大類如下:
靜態路由選擇演算法和動態路由選擇演算法兩大類。
因為路由器位於網路的連接點,當它們失效時會產生重大的問題。族銀磨最好的路由演算法通常是那些經過了時間考驗,證實在各種網路條件下都很穩定的演算法。
此外路由算兆鬥法必須能快速聚合,聚合是所有路由器對最佳路徑達成一致的過程。當某網路事件使路徑斷掉或不可用時,路由器通過網路分發路由更新信息,促使最佳路徑的重新計算,最終使所有路由器達成一致。聚合很慢的路由演算法可能會產生路由環或網路中斷。
總體式路由演算法和分散式路由演算法。採用分散式路由演算法時,每個路由器只有與它直接相連的路由器的信息——而沒有網路中的每個路由器的信息。這些演算法也被稱為DV(距離向量)演算法。採用總體式路由演算法時,每個路由器都擁有網路中所有其他路由器的全部信息以及網路的流量狀態。這些演算法也被稱為LS(鏈路狀態)演算法。