复杂网络分析库NetworkX学习笔记 下载本文

内容发布更新时间 : 2024/11/6 8:16:46星期一 下面是文章的全部内容请认真阅读。

要自己动手编制一些程序来完成。

本文引用地址: http://www.sciencenet.cn/m/user_content.aspx?id=337511

* 本文仅代表博主个人观点,与科学网无关。

本文标签: 复杂网络 NetworkX

相关文章:

[转载]复杂网络常见的数据和程序代码网站

[转载]复杂网络资源

会议视频分享:Multi-disciplinary approach of complexity,...

节点度相关性对无标度网络上随机游走的影响 [转载]幂率分布研究的实验数据——圣达菲研究所 [转载]第六届全国复杂网络学术会议[大会日程安排] 一类复杂网络的新家族:广义Farey树网络及其三维金字塔

[转载]复杂网络的新应用(结构力学) 揭示复杂性:从经典分形到复杂网络

人群密集经济是―万堵之源‖!

当前推荐数:1 推荐人: ljxue

推荐到博客首页评论顺排 [3] 标题:

发表评论人:[游客]jamie_luo [2010-9-29 16:44:45] ip:59.78.91.*

请问对局域世界的BA模型有相关networkx的函数吗,如何对原BA模型改进呢?谢谢指点!

博主回复:好像没有直接提供,但可以自己改写原来的函数(在原文件中复制一份后改下函数名)。局域世界的BA应该是随机从已存在的节点中选一部分出来吧,这块改动一下就可以了应该。

[2] 标题:

发表评论人:[游客]蝶梦中 [2010-7-1 10:47:14] ip:219.239.227.*

不好意思=。=在您后面的文件中看到了,麻烦啦~~ 博主回复:别客气,祝你做出好成果!

[1] 标题:

发表评论人:[游客]蝶梦中 [2010-7-1 10:45:18] ip:219.239.227.*

闫老师,您好,我现在做的东西有一部分是对BA模型进行的改良,不能直接使用networkx的函数。我想看一下它实现BA模型的源代码,请问您知道在哪个文件里吗?我没有找到哎。

复杂网络分析库NetworkX学习笔记(3):网络演化模型

NetworkX提供了4种常见网络的建模方法,分别是:规则图,ER随机图,WS小世界网络和BA无标度网络。本文首先介绍在NetworkX生成这些网络模型的方法,然后以BA无标度网络的建模为例,分析利用NetworkX进行复杂网络演化模型设计的基本思路,以便将来开发出我们自己的模型。同时这篇文章里还涉及到一点复杂网络可视化的方法(后边有时间会另文介绍网络可视化的方法)。

一、规则图

规则图差不多是最没有复杂性的一类图了,在NetworkX中,用random_graphs.random_regular_graph(d, n)方法可以生成一个含有n个节点,每个节点有d个邻居节点的规则图。下面是一段示例代码,生成了包含20个节点、每个节点有3个邻居的规则图:

import networkx as nx

import matplotlib.pyplot as plt

RG = nx.random_graphs.random_regular_graph(3,20) #生成包含20个节点、每个节点有3个邻居的规则图RG

pos = nx.spectral_layout(RG) #定义一个布局,此处采用了spectral布局方式,后变还会介绍其它布局方式,注意图形上的区别

nx.draw(RG,pos,with_labels=False,node_size = 30) #绘制规则图的图形,with_labels决定节点是非带标签(编号),node_size是节点的直径 plt.show() #显示图形

运行结果如下:

图1 NetworkX生成的规则图

二、ER随机图

ER随机图是早期研究得比较多的一类―复杂‖网络,这个模型的基本思想是以概率p连接N个节点中的每一对节点。在NetworkX中,可以用random_graphs.erdos_renyi_graph(n,p)方法生成一个含有n个节点、以概率p连接的ER随机图:

import networkx as nx

import matplotlib.pyplot as plt

ER = nx.random_graphs.erdos_renyi_graph(20,0.2) #生成包含20个节点、以概率0.2连接的随机图

pos = nx.shell_layout(ER) #定义一个布局,此处采用了shell布局方式 nx.draw(ER,pos,with_labels=False,node_size = 30) plt.show()

运行结果如下:

图2 NetworkX生成的随机图

三、WS小世界网络

在NetworkX中,可以用random_graphs.watts_strogatz_graph(n, k, p)方法生成一个含有n个节点、每个节点有k个邻居、以概率p随机化重连边的WS小世界网络,下面是一个例子:

import networkx as nx

import matplotlib.pyplot as plt

WS = nx.random_graphs.watts_strogatz_graph(20,4,0.3) #生成包含20个节点、每个节点4个近邻、随机化重连概率为0.3的小世界网络 pos = nx.circular_layout(WS) #定义一个布局,此处采用了circular布局方式

nx.draw(WS,pos,with_labels=False,node_size = 30) #绘制图形 plt.show()

运行结果如下:

图3 NetworkX生成的WS小世界网络

四、BA无标度网络

在NetworkX中,可以用random_graphs.barabasi_albert_graph(n, m)方法生成一个含有n个节点、每次加入m条边的BA无标度网络,下面是一个例子:

import networkx as nx

import matplotlib.pyplot as plt

BA= nx.random_graphs.barabasi_albert_graph(20,1) #生成n=20、m=1的BA无标度网络

pos = nx.spring_layout(BA) #定义一个布局,此处采用了spring布局方式 nx.draw(BA,pos,with_labels=False,node_size = 30) #绘制图形 plt.show()

运行结果如下: