matlab在复杂网络上的应用
2017-04-22 17:39
1526 查看
仿真AB模型
function b = addedge(a,m,alpha)
b=a; n=length(a);
for i=1:m
deg=sum(b);
LP=(deg+alpha)/sum(deg+alpha);
pp=cumsum(LP);
rnum=randperm(n);
flag=1;
while flag<=n && deg(rnum(flag))==n-1
flag=flag+1;
end
if flag==n+1,continue,end
ind=find(pp>=rand);
if rnum(flag)~=ind(1)&&b(ind(1))==0;
b(rnum(flag),ind(1))=1;b(ind(1),rnum(flag))=1;
end
end
function b=deleteadd(a,m,alpha)
b=a;n=length(a);
for i=1:m
deg=sum(b);
LP=(deg+alpha)/sum(deg+alpha);
pp=cumsum(LP);
rnum=randperm(n);
flag=1;
while flag<n && deg(rnum(flag))==0
flag=flag+1;
end
if flag==n && deg(rnum(flag))==0
continue
end
ind1=find(b(:,rnum(flag)));
rnum2=randpem(length(ind1));
cnode=ind1(rnum2(1));
ind2=find(pp>=rand);
if rnum(flag~=ind2(1))&& b(rnum(flag),ind2(1))==0
b(rnum(flag),cnode)=0;b(cnode,rnum(flag))=0;
b(rnum(flag),ind2(1))=1;b(ind2(1),rnum(flag))=1;
end
end
function b=addnode(a,m,alpha)
b=a; n=length(a);
if m>n
return
end
for i=1:m
LP=(sum(b)+alpha)/sum(sum(b)+alpha);
pp=cumsum(LP);
ind=find(pp>=rand);
b(n+1,ind(1))=1;b(ind(1),n+1)=1;
end
求网络的度
function dp=mydegree(a)
N=length(a);
deg=sum(a);
degrange=minmax(deg);
pinshu=hist(deg,(degrange(1):degrange(2)));
ind= pinshu==0;
dp=[(degrange(1):degrange(2));pinshu];
dp(:,ind)=[];
df=dp(2,:)/N;
figure,bar(dp(1,:),df,'r')
title('网络图的度分布');
xlabel('$k$','Interpreter','Latex'),ylabel('$p$','Interpreter','Latex')
参考《复杂网络算法与应用》
function b = addedge(a,m,alpha)
b=a; n=length(a);
for i=1:m
deg=sum(b);
LP=(deg+alpha)/sum(deg+alpha);
pp=cumsum(LP);
rnum=randperm(n);
flag=1;
while flag<=n && deg(rnum(flag))==n-1
flag=flag+1;
end
if flag==n+1,continue,end
ind=find(pp>=rand);
if rnum(flag)~=ind(1)&&b(ind(1))==0;
b(rnum(flag),ind(1))=1;b(ind(1),rnum(flag))=1;
end
end
function b=deleteadd(a,m,alpha)
b=a;n=length(a);
for i=1:m
deg=sum(b);
LP=(deg+alpha)/sum(deg+alpha);
pp=cumsum(LP);
rnum=randperm(n);
flag=1;
while flag<n && deg(rnum(flag))==0
flag=flag+1;
end
if flag==n && deg(rnum(flag))==0
continue
end
ind1=find(b(:,rnum(flag)));
rnum2=randpem(length(ind1));
cnode=ind1(rnum2(1));
ind2=find(pp>=rand);
if rnum(flag~=ind2(1))&& b(rnum(flag),ind2(1))==0
b(rnum(flag),cnode)=0;b(cnode,rnum(flag))=0;
b(rnum(flag),ind2(1))=1;b(ind2(1),rnum(flag))=1;
end
end
function b=addnode(a,m,alpha)
b=a; n=length(a);
if m>n
return
end
for i=1:m
LP=(sum(b)+alpha)/sum(sum(b)+alpha);
pp=cumsum(LP);
ind=find(pp>=rand);
b(n+1,ind(1))=1;b(ind(1),n+1)=1;
end
求网络的度
function dp=mydegree(a)
N=length(a);
deg=sum(a);
degrange=minmax(deg);
pinshu=hist(deg,(degrange(1):degrange(2)));
ind= pinshu==0;
dp=[(degrange(1):degrange(2));pinshu];
dp(:,ind)=[];
df=dp(2,:)/N;
figure,bar(dp(1,:),df,'r')
title('网络图的度分布');
xlabel('$k$','Interpreter','Latex'),ylabel('$p$','Interpreter','Latex')
参考《复杂网络算法与应用》
相关文章推荐
- matlab实现复杂网络中节点重要度评估的节点收缩方法
- 神经网络学习算法matlab应用分析
- 复杂网络MATLAB工具箱
- 【复杂网络系列】社团发现算法研究和在SNS网络中的应用
- 一个简单的matlab项目实现三层神经网络的简单应用
- 香港城市大学 传播学研究方法-复杂网络在传播中的应用
- 复杂网络建模 社交网络图的一些计算代码(不全欢迎补充)MATLAB
- 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
- 复杂网络MATLAB工具箱
- 【复杂网络】用户画像不应脱离社会关系,谈复杂网络的关键技术和应用实践
- 学习记录 MATLAB复杂网络工具箱使用手册
- 贝叶斯神经网络工具包FullBNT,在Matlab中的导入及应用实例
- 笔记:复杂网络的关键技术及应用
- 学习记录 复杂网络MATLAB工具箱
- 复杂网络MATLAB工具箱
- 复杂网络上的社会激励: 从应用到理论
- MATLAB复杂网络工具箱——matgraph基本操作总结
- 学习记录 复杂网络模型的matlab实现
- 动态大系统方法导论(四)-结构可控性及其在复杂网络中的应用
- 012 MATLAB复杂网络处理入门