在用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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。