gpt4 book ai didi

performance - 是否有最有效的方法来编写平均聚类系数的程序

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:32 24 4
gpt4 key购买 nike

计算图的平均聚类系数我得到了正确的结果,但是当图形维度增加需要一些替代方法以减少执行时间时,它会花费大量时间。有什么办法可以简化代码吗??

    %// A is adjacency matrix N X N, 
%// d is degree ,

N=100;
d=10;
rand('state',0)
A = zeros(N,N);
kv=d*(d-1)/2;

%% Creating A matrix %%%

for i = 1:(d*N/2)
j = floor(N*rand)+1;
k = floor(N*rand)+1;
while (j==k)||(A(j,k)==1)
j = floor(N*rand)+1;
k = floor(N*rand)+1;
end
A(j,k)=1;
A(k,j)=1;
end

%% Calculation of clustering Coeff %%

for i=1:N
J=find(A(i,:));
et=0;
for ii=1:(size(J,2))-1
for jj=ii+1:size(J,2)
et=et+A(J(ii),J(jj));
end
end
Cv(i)=et/kv;
end
Avg_clustering_coeff=sum(Cv)/n;

我得到的输出。

Avg_clustering_coeff = 0.1107

最佳答案

聚类系数的计算 部分可以使用 nchoosek 进行矢量化删除最里面的两个嵌套循环,就像这样 -

CvOut = zeros(1,N);
for k=1:N
J=find(A(k,:));
if numel(J)>1
idx = nchoosek(J,2);
CvOut(k) = sum(A(sub2ind([N N],idx(:,1),idx(:,2))));
end
end
CvOut=CvOut/kv;

希望这会大大提高性能!

关于performance - 是否有最有效的方法来编写平均聚类系数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com