clc;
clear all;
n=input('enter the number of nodes');
conn=input('enter the connected nodes');
delarr=ones(n);
delarr=10000*delarr;
len=length(conn);
delay2=1;
for i=1:2:len;
delarr(conn(i),conn(i+1))=delay2;
delarr(conn(i+1),conn(i))=delay2;
end
for i=1:n
delarr(i,i)=0;
end
disp('....Delay time.....');
disp(delarr);
gr=delarr;
v=[1:n];
p=perms(v);
start=input('enter the source node');
dest=input('enter the destination node');
%finding all possible paths and thier delays
paths=zeros(factorial(n-1),n);
index=0;
for i=1:factorial(n);
if p(i,1)~=start;
continue;
end
de=0;
temp=p(i,1);
index=index+1;
paths(index,1)=temp;
for j=2:n;
if(gr(temp,p(i,j))>0 && gr(temp,p(i,j))<1000);
flag=1;
de=de+gr(temp,p(i,j));
temp=p(i,j);
paths(index,j)=temp;
if temp == dest
delay(index)=de;
break;
end
else
flag=0;
index=index-1;
break;
end;
end;
end;
%removing the repeated paths
j=1;
delay1(j)= delay(1);
paths1(j,:) = paths(1,:);
for i=2:length(delay);
if delay(i-1)~=delay(i);
j=j+1;
delay1(j)=delay(i);
paths1(j,:)=paths(i,:);
shortind=j;
end;
end;
%displaying all paths and also the delay
for i=1:length(delay1);
for j=1:n;
if paths1(1,j)~=0;
fprintf('%d->',paths1(i,j));
else
break;
end;
end;
fprintf('\b\b:delay=%d\n',delay1(i));
end;
%shortest path and its delay
disp('');
disp('the shortest path is');
for j=1:n;
if paths1(shortind,j)~=0;
fprintf('%d->',paths1(shortind,j));
else
break;
end;
end;
fprintf('\b\b\t\t delay=%d\n',delay1(shortind));
No comments:
Post a Comment