2

我尝试为 matlab 搜索一个函数,它给出了图的平均相邻度

在network-X包中的python中有一个相同的功能。所以我想知道matlab中是否有类似的功能。

***********编辑****************

我无法将其转换为邻接矩阵。这实际上会占用太多空间。

我所拥有的是以下边列表(实际上这只是一个测试矩阵..实际的矩阵非常大),因为节点 2 到节点 1 之间有一条边,依此类推.. 是的,这是一个无向图

2 1
3 1
4 1
5 1
1 2
3 2
4 2
1 3
2 3
5 3
1 4
2 4
5 4
1 5
3 5
4 5

现在,我需要一个函数来计算该图的平均相邻度(平均相邻度)。

4

1 回答 1

3

即使对于大型边缘列表,您也可以使用 Matlab 创建一个使用矩阵适合内存的邻接sparse矩阵:

el = [2 1; 3 1; ... ]; %// edge list, I put only a tiny sample here...
n = max( el(:) ); %// number of nodes in the graph
A = sparse( el(:,1), el(:,2), 1, n, n ); % //sparse adjacency matrix

每个节点的邻居度是邻居的数量

nd = sum( A, 2 ); %// degree of each node

为了计算平均相邻度,可以构造另一个稀疏矩阵,其中相邻度存储在每个条目中

ndM = sparse( el(:,1), el(:,2), nd( el(:,2) ), n, n ); 

现在可以从新矩阵计算平均相邻度数

av = full( sum( ndM, 2 ) ./ nd );
于 2014-09-07T06:16:22.383 回答