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=randint(1,(len/2),[10 50]);
k=1;
for i=1:2:len;
delarr(conn(i),conn(i+1))=delay2(k);
delarr(conn(i+1),conn(i))=delay2(k);
k=k+1;
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;
temp=min(delay1(1));
for i=1:length(delay1)
if delay1(i)==temp
break;
end
end
disp('');
for j=1:n
if paths1(i,j)~=0
fprintf('%d->',paths1(i,j));
end
end
fprintf('\b\b\t\t delay=%d\n',delay1(i));
1 comment:
can you please give the sample input and output for this coding
Post a Comment