why i am getting the recursive error can any one help me out please? the program is given below ccan any one help me out

4 views (last 30 days)
function [path, totalCost, farthestPreviousHop, farthestNextHop] = dijkstra(n, netCostMatrix, s, d, farthestPreviousHop, farthestNextHop) % path: the list of nodes in the path from source to destination; % totalCost: the total cost of the path; % farthestNode: the farthest node to reach for each node after performing % the routing; % n: the number of nodes in the network; % s: source node index; % d: destination node index;
clear;
noOfNodes = 50;
rand('state', 0);
figure(1);
clf;
hold on;
L = 1000;
R = 200; % maximum range;
netXloc = rand(1,noOfNodes)*L;
netYloc = rand(1,noOfNodes)*L;
for i = 1:noOfNodes
plot(netXloc(i), netYloc(i), '.');
text(netXloc(i), netYloc(i), num2str(i));
for j = 1:noOfNodes
distance = sqrt((netXloc(i) - netXloc(j))^2 + (netYloc(i) - netYloc(j))^2);
if distance <= R
matrix(i, j) = 1; % there is a link;
line([netXloc(i) netXloc(j)], [netYloc(i) netYloc(j)], 'LineStyle', ':');
else
matrix(i, j) = inf;
end;
end;
end;
%
%
activeNodes = [];
for i = 1:noOfNodes,
% initialize the farthest node to be itself;
farthestPreviousHop(i) = i; % used to compute the RTS/CTS range;
farthestNextHop(i) = i;
end;
[path, totalCost, farthestPreviousHop, farthestNextHop] = dijkstra(noOfNodes, matrix, 46, 15, farthestPreviousHop, farthestNextHop); % if length(path) ~= 0 for i = 1:(length(path)-1) line([netXloc(path(i)) netXloc(path(i+1))], [netYloc(path(i)) netYloc(path(i+1))], 'Color','r','LineWidth', 0.50, 'LineStyle', '-.'); end; end; hold off;
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % all the nodes are un-visited; visited(1:n) = 0;
distance(1:n) = inf; % it stores the shortest distance between each node and the source node; parent(1:n) = 0;
distance(s) = 0; for i = 1:(n-1), temp = []; for h = 1:n, if visited(h) == 0 % in the tree; temp=[temp distance(h)]; else temp=[temp inf]; end end; [t, u] = min(temp); % it starts from node with the shortest distance to the source; visited(u) = 1; % mark it as visited; for v = 1:n, % for each neighbors of node u; if ( ( netCostMatrix(u, v) + distance(u)) < distance(v) ) distance(v) = distance(u) + netCostMatrix(u, v); % update the shortest distance when a shorter path is found parent(v) = u; % update its parent; end; end; end;
path = []; if parent(d) ~= 0 % if there is a path! t = d; path = [d]; while t ~= s p = parent(t); path = [p path];
if netCostMatrix(t, farthestPreviousHop(t)) < netCostMatrix(t, p)
farthestPreviousHop(t) = p;
end;
if netCostMatrix(p, farthestNextHop(p)) < netCostMatrix(p, t)
farthestNextHop(p) = t;
end;
t = p;
end;
end;
totalCost = distance(d);
return;

Answers (0)

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!