无标度网络是进入研究生,导师丢来的第一个作业,从本科的小小程序猿进入这种乍看一眼非常高大上的东西,还是有些恐惧和兴奋的。
由于没找到中文版的 Emergence of Scaling in Random Networks 就借助Google翻译,糙糙看了一下,粗略理解了无标度网络的提出和结构。
论文主要就是diss了随机网络,yo,yo,随机网络它太菜,现实生活不会有人爱,你的观点太直白,还想简单概括真实世界的舞台,要我看简直是胡来,skrskr。
其实随机网络之所以不能正确描述真实网络,主要是因为现实中的网络具有下面两种特性
1。网络是通过新增节点而不断扩展的。
2。新增的节点会优先连接在连通性更好的节点上。
而根据上面的两种特性根据论文中的描述实现无标度网络的算法步骤为:
1。先创建一个小型随机网络
2。新增节点,并且优先连接在度更大的节点上。
先看如何创建一个随机网络。首先需要一些初始的节点,先要有节点,才能连接边,有点有边才是一个齐齐整整的网络。 程序中设置的初始节点为 5。 有了5个节点,再为每一对节点随机的连接。
这里使用的方法是:
用一个邻接矩阵 作为无向图的存储,在这里就是用来存边的连接情况,1表示两个节点之间有边。 因为1表示有边,所以可以通过 随机出一个 0-1之间的小数,然后四舍五入得到非1即0的数字,而且0和1的概率一样。这样两个顶点之间是否有边就能随机生成了。
%随机连边 1表示有边
for i=1:m0
for j= (i+1):m0
A(i,j)= round(rand()); %非1即0
A(j,i) = A(i,j);
end
end %初始完成
完成随机网络后,接下来的工作就是往里面添加节点。新来的节点就好比是怡红院新来的小妹妹, 而老节点们自然是都想先‘连接‘一下新来的小妹妹,这里就要看哪一个老节点以前连接过的小妹妹多了,连接过的越多,活越好,小妹