随机网络中的孤立点(片)处理
作者:互联网
在用ER随机图生成随机网络的时候,如果连接概率设置得小,很有可能会产生孤立的节点或者比较小的分散的连通片,这对分析网络的性能造成了一定的困扰。
有些情况下不想出现孤立点,否则在网络处理的时候会很不方便,采用最大连通片的模式来消除孤立点,连通片求解对于有向网络和无向网络是有区别的,为了方便,这里一律采用转化为无向网络的方式来进行处理。具体操作见下面代码:
%% Q为邻接矩阵
[a,b]=components(sparse(triu(Q)+triu(Q)'));
a1=find(a==1); % 找出最大连通片
for i=2:max(a) % 在其余的孤立连通片中进行循环
ind=find(a==i); % 找到当前孤立点(片)连通片
h=randperm(length(ind),1); % 在当前孤立连通片中任取一点
k=randperm(length(a1),1); % 在最大连通片中任取一点
Q(ind(h),a1(k))=1; % 进行连接
Q(a1(k),ind(h))=1;
end
处理后的网络结构变化如下图所示:
上图为存在孤立点的网络。
上图为处理后没有孤立点的网络。
标签:连通,孤立,网络,a1,随机,ind,片中 来源: https://blog.csdn.net/qq_30082785/article/details/123589279