📄 routing_distance.m
字号:
function [pair_dist, pair_hops]=routing_distance(neighbor_dist, ... routing_nexthop, test_pairs)%neighbor_dist(i,j): distance between i & j if they are neighbor,%or infinity%routing_nexthop(i,j): the next hop from i when routing from i to j%pair_dist(i,j): distance using the routing_nexthop%pair_hops(i,j): how many hops it takes to route from i to jN = length(neighbor_dist);if nargin<3 p = 0; % test all pairs pair_hops = zeros(N,N); pair_dist = zeros(N,N); fromloop = 1:N;else [p, tmp] = size(test_pairs); pair_hops = zeros(p,1); pair_dist = zeros(p,1); fromloop = test_pairs(:,1)';endcount = 0;for from=fromloop if p==0 toloop = 1:N; else toloop = test_pairs(count+1,2); end for to=toloop %current_nodes = []; count = count +1; n_hops = 0; next = from; tmp = 0; seen_nodes = zeros(N,1); while next~=to previous = next; next = routing_nexthop(next, to); %if sum(ismember(current_nodes, next))>0 if next<0 %fprintf('DEAD loop\n'); %print_route(routing_nexthop, from, to); tmp = Inf; n_hops=Inf; break end if seen_nodes(next) %fprintf('DEAD loop\n'); %print_route(routing_nexthop, from, to); tmp = Inf; n_hops=Inf; break end n_hops = n_hops + 1; %current_nodes(n_hops) = next; seen_nodes(next) = 1; tmp = tmp + neighbor_dist(previous, next); end pair_dist(count)=tmp; pair_hops(count)=n_hops; endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -