在matlab上,我有一个邻接矩阵并使用函数,我想找出如何绘制直方图,显示2个给定节点(最多10个)之间的分离度。 截至目前,我只有一个找到节点邻居的函数。基本上它与6度分离的概念类似,除了10。
谢谢!
function n=neighbour(A,v)
global n;
for i=1:length(v)
a=find(A(:,v(i))+A(v(i),:)');
n=setdiff(a(:)',v(i));
end
end
答案 0 :(得分:3)
通常,这是使用Floyd–Warshall algorithm解决的,{{3}}计算图表中所有节点对之间的最短路径。
由于您正在使用Matlab,并且因为任何两个连接节点之间的距离始终相同(“1步”),您可以使用涉及矩阵乘法的技巧:如果您有邻接矩阵A
然后将A
提升为N
幂,为您提供一个新矩阵,告诉您每对节点之间存在多少条长度N
的路径。因此,在一个循环中,将A升高到第一个幂,第二个幂等,并注意每个元素变为非零的力。最大路径长度等于节点数,因此您可以停在那里。
答案 1 :(得分:2)
无标度网络可视化,包括分离度的直方图,可在此link中找到,可能会有所帮助......