复杂网络是一个非常庞大的研究领域,有众多研究方法与研究对象,社交网络、科学家网络、生物网络、交通网络、生物网络等等。在进行仿真时候,有的网络过于庞大无法用实际的数据进行仿真,例如社交网络。而有一些网络规模较小,就需要用实际的数据进行仿真了,例如交通网络。
那么无论网络规模大小,对这些网络进行研究的时候,第一步往往是建模,只有模型建好了后续的研究、仿真才好进行下去。建模后,可以对网络指标进行分析,可以分析网络的抗毁性等等。总之,建模总是第一步的。
下面我就分享一下,自己对于复杂网络中实体网络建模的一些经验,以地铁网络为例:
建模方法,一般有Space L、Space P、Space B、Space C法,比较常用的建模规则是Space L法。
地铁网络,一般都有三四百个节点,线路十几条左右,看地铁图的是一个眼花缭乱。若是人工统计出来数据也是一项大工程。看着就想放弃,但其实掌握一定的方法并没有那么的费劲。
- 按线路进行节点的统计,先编号,然后去除掉重合的节点
- 统计连接关系时有一定的规则:比如从左往右统计、从上往下统计,这样可以避免重复统计
- 不要直接列出邻接矩阵,先统计出连接关系生成邻接表,然后再转成邻接矩阵
- 关于邻接表,最好再检查一遍
- 以上工作最好分成数天进行,否则负荷工作效率低且出错率较高
下面给出 邻接表 转成 邻接矩阵 的Matlab函数代码:
function b = ainc2adj( x )
%AINC2ADJ x为邻接表(可在工作区中新建数据),输出的b为邻接矩阵
% 此函数是通过邻接表生成临接矩阵的
if min(x(:))==0;
x=x+1;
end
d=length(x);
a=max(max(x));
b=zeros(a,a);
for i=1:d
if x(i,1)==x(i,2);
b(x(i,1),x(i,2))=0;
else
b(x(i,1),x(i,2))=1;
b(x(i,2),x(i,1))=1;
end
end
一般来讲生成邻接矩阵,我们就得到了实体网络的节点连接情况。但我们都知道,人工统计的难免会有一些错漏,而这个时候需要用Gephi软件帮助我们进行进一步的检验。关于Gephi如何导入数据,可以参考这一篇文章。导入之后,你会得到一张拓扑图,如下图所示:
但是这样的图,我们没有办法看出网络可能存有什么问题,需要进一步的操作。
点击布局中的,选择一个布局。选择Force Atlas,选择运行,图会发生变化:
我们会发现红圈部分的点与整体网络没有任何联系,而交通网络是一个整体,那就说明这几个节点的连接关系一定都有问题。那么如何查看这几个点是哪几个点呢?点击预览,然后打开显示标签,最后点下方的刷新,就显示出来了节点标号。
然后可以用鼠标滚轮放大,调节左侧的节点编号显示的颜色,就可以大概看出来是那些节点出现问题了。然后回去对着连接图和节点编号去找就可以了
这个软件生成的图也是非常漂亮的,大家可以试一试,节点颜色、大小,边的颜色、大小,都可以自己调节,还有很多计算网络指标的功能。那么这次的分享就到这里,感谢大家的时间。
欢迎大家与我交流。
来源:CSDN
作者:尤利乌斯.X
链接:https://blog.csdn.net/weixin_43877139/article/details/104760326