我尝试搜索matlab的函数,该函数给出了图的平均邻居度。
在network-X包中的python中有相同的功能。所以我想知道matlab中是否有类似的功能。
***********编辑****************
我无法将其转换为邻接矩阵。实际上这将占用太多空间。
我所拥有的是以下边缘列表(实际上这只是一个测试矩阵......实际的一个非常大),因为在节点2到节点1之间有一个边缘,依此类推......是的,这是一个un - 指向图
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
现在,我需要的是一个能够计算该图的平均邻居度(平均邻居度)的函数。
答案 0 :(得分: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 );