2017-04-17 40 views
-2

我有这样多:如何在一个单一的路径合并多来创建一个图形

[4876,12282,19222] 
[4876,12282,19240] 
[4876,12282,19254] 
[4876,12282,19681] 
[4876,12282,20222] 
[4876,12282,20347] 
[4876,12282,2401,159] 
[4876,12282,2401,14174] 
[4876,12282,2401,18407] 
[4876,12282,14691,7865] 
[4876,12282,7318,10314] 
[4876,12282,17452,12152] 
[4876,12282,14917,794] 
[4876,12282,2401,9463] 
[4876,12282,2401,18576] 
[4876,12282,14691,7865,9496] 
[4876,12282,14691,3722] 
[4876,12282,14691,4216] 

我想与保持边缘事件以创建一个图形将它们合并在一个单一的路径。在图形和网络算法领域,我是一个相当新的人物。任何帮助将不胜感激

回答

0

我用sparse创建邻接矩阵:

mp{1} = [4876,12282,19222]; 
mp{2} = [4876,12282,19240]; 
mp{3} = [4876,12282,19254]; 
mp{4} = [4876,12282,19681]; 
mp{5} = [4876,12282,20222]; 
mp{6} = [4876,12282,20347]; 
mp{7} = [4876,12282,2401,159]; 
mp{8} = [4876,12282,2401,14174]; 
mp{9} = [4876,12282,2401,18407]; 
mp{10} = [4876,12282,14691,7865]; 
mp{11} = [4876,12282,7318,10314]; 
mp{12} = [4876,12282,17452,12152]; 
mp{13} = [4876,12282,14917,794]; 
mp{14} = [4876,12282,2401,9463]; 
mp{15} = [4876,12282,2401,18576]; 
mp{16} = [4876,12282,14691,7865,9496]; 
mp{17} = [4876,12282,14691,3722]; 
mp{18} = [4876,12282,14691,4216]; 
% get all connections 
idx1 = cell2mat(cellfun(@(x) x(1:end-1),mp,'UniformOutput',0)); 
idx2 = cell2mat(cellfun(@(x) x(2:end),mp,'UniformOutput',0)); 
% remove duplicates 
idxs = unique([idx1(:),idx2(:)],'rows'); 
% get max element index 
maxIdx = max(idxs(:)); 
% create adjacency matrix and undirected graph 
A = sparse(idxs(:,1),idxs(:,2),ones(size(idxs,1),1),maxIdx,maxIdx); 
G = graph(A | A'); 
+0

谢谢@ user2999345我用你的答案的第一部分,我设法如何创建图形非常感谢您的合作 – James

相关问题