1

在 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
4

2 回答 2

3

通常,这是使用Floyd-Warshall 算法解决的,该算法计算图中所有节点对之间的最短路径。

由于您使用的是 Matlab 并且因为任何两个连接节点之间的距离始终相同(“1 步”),您可以使用涉及矩阵乘法的技巧:如果您有一个邻接矩阵A,则提高ANth 次幂给出你是一个新矩阵,它告诉你每对节点之间存在多少条长度路径。N因此,在一个循环中,将 A 提高到 1 次方、2 次方等,并注意每个元素在哪个次方变为非零。最大路径长度等于节点数,因此您可以停在那里。

于 2012-10-19T17:59:02.523 回答
2

无标度网络可视化,包括分离度的直方图可以在这个链接中找到,可能会有所帮助......

于 2012-10-19T17:29:08.233 回答