我有一個帶有用戶定義的節點數'n'的加權圖。我想要一個代碼,給定圖中的兩個獨特節點,它將顯示連接兩個節點的所有路徑節點。 Graph Example從起始節點到結束節點的所有可能路徑
wt=zeros(n,n);
while(1)
i=input('enter the starting node:(0 to quit):');
if (i==0)
break;
end
j=input('enter the destination node:');
wt(i,j)=input('Enter the cost: ');
end
disp('Adjacency Matrix');
for i=1:n
fprintf(' %d',i);
end
for i=1:n
fprintf('\n%d ',i);
for j=1:n
fprintf('%d ',wt(i,j));
end
end
Adjacency Matrix
1 2 3 4 5
1 0 1 1 0 0
2 0 0 0 0 0
3 1 0 0 1 0
4 0 0 1 0 0
5 0 0 0 0 0
基質重量表示任意兩個給定的節點之間的連接。這意味着節點(1,2)(1,3)(3,4)(4,3)被連接。
fprintf('\nEnter the source');
s=input(':');
fprintf('\nEnter the destination');
de=input(':');
for i=1:n
m=s;
if(m~=i)
for j=i:n
if(m~=j)
if(M(m,j)>0)
p(i,j)=j;
m=j;
end
end
if(p(i,j)==de)
d(i)=1;
break;
end
end
if(d(i)~=1)
for k=1:j
p(i,k)=0;
end
m=s;
for k=n : -1 : i
if(M(m,k)>0)
p(i,n-k+2)=k;
m=k;
end
if(p(i,n-k+2)==de)
d(i)=1;
break;
end
end
end
end
end
for i=1:n
j=1;
if(d(i)==1)
for j=1:n
if (j==1)
fprintf('\n path: %d',s);
kk=s;
elseif (p(i,j)>0)
fprintf('->%d',p(i,j));
plot([nodes(kk, 2) nodes(p(i,j), 2)], [nodes(kk, 3) nodes(p(i,j), 3)], 'k.--')
kk=p(i,j);
end
end
end
fprintf('\t\t hopcount of path %d: %d',i,count);
count=0;
end
這是我寫的代碼,用於查找從源到目標的可能路徑。 'p'矩陣保存從源到目的地的最終路徑。 OUTPUT:
enter the starting node:(0 to quit):1
enter the destination node:2
Enter the cost: 1
enter the starting node:(0 to quit):1
enter the destination node:3
Enter the cost: 1
enter the starting node:(0 to quit):2
enter the destination node:3
Enter the cost: 1
enter the starting node:(0 to quit):0
Enter the source:1
Enter the destination:3
hopcount of path 1: 0
path 2: 1->2->3 hopcount of path 2: 2
path 3: 1->3 hopcount of path 3: 1???
Attempt to reference field of non-structure array.
如果我給我的輸入源爲3和目的地1中的代碼無法正常工作。
要求之前,請務必進行搜索。這並不罕見。 http://www.mathworks.co.uk/matlabcentral/fileexchange/27438-find-all-the-possible-paths-between-a-start-and-an-end-node-of-a-graph和http: //www.mathworks.co.uk/matlabcentral/newsreader/view_thread/313699 – Griffin 2013-03-20 13:50:19
**專家提示:**更熟悉MATLAB。其武庫中有很多命令可以一次應用於整個矩陣,循環通常不是正確的方法。 – 2013-03-20 14:41:06
@EitanT:我是matlab新手。有沒有其他辦法可以實現這一點?輸入由用戶動態輸入。 – 2013-03-20 14:47:54