复杂网络学习心得(一)
复杂网络相关指标计算
最近在做复杂网络相关的项目,但是此前并无任何基础,于是准备从头开始学习。准备使用的软件是matlab,但是大体的思路应该都是差不多的。在这里记录一下自己的学习过程和对于复杂网络的理解。会比较偏向于记录编程计算思路,而不是数学或物理意义。
图/网络
图或者网络(下文统称为网络)由节点和边组成。节点通常用矩阵V表示,其元素是节点编号,为了方便编程和理解,所有的编号均从1开始,1,2,3…这种。边则表示为(i,j)这种集合,通常用矩阵E=[e1,e2,…,em]表示,其中i和j都是节点编号。有向图的(i,j)表示起点是i,终点是j,无向图则有(i,j)=(j,i)。
为了编程方便,我在读取矩阵E时,通常第一列表示起点,第二列表示终点,第三列表示边的权重。特别地,在无向图中,E中不可以出现重复元素(避免去重过程,避免影响计算边的个数)。
邻接矩阵
邻接矩阵是为了之后复杂网络各种指标的计算。因此,邻接矩阵的得到是复杂网络计算的第一步,最基础的一步。邻接矩阵的构成可以直接由网络(可视化)得到,当网络比较简单的时候,我们可以直接根据简单的可视化的图写出邻接矩阵。但是当网络节点较多时,由G(V,E)得到较为方便。
matlab似乎有直接从G转变为A(邻接矩阵,下文用A表示)的函数