更改

添加3,853字节 、 2020年8月13日 (四) 10:11
第38行: 第38行:  
#构建一个正则环点阵。该图有<math>N</math>个节点,每个节点和<math>K</math>个相邻的节点相连,其中每一侧有<math>K/2</math>个。即是,若每个节点用<math>n_{0},...,n_{N-1}</math>标示,当且仅当<math>0< \left | i-j \right |\mod(N-1-\frac{K}{2})\leq \frac{K}{2}</math>时,存在边<math>(n_{i},n_{j})</math>。
 
#构建一个正则环点阵。该图有<math>N</math>个节点,每个节点和<math>K</math>个相邻的节点相连,其中每一侧有<math>K/2</math>个。即是,若每个节点用<math>n_{0},...,n_{N-1}</math>标示,当且仅当<math>0< \left | i-j \right |\mod(N-1-\frac{K}{2})\leq \frac{K}{2}</math>时,存在边<math>(n_{i},n_{j})</math>。
 
#对于每个节点<math>n_{i}=n_{0},...,n_{N-1}</math>,选出其与最右侧第<math>K/2</math>相邻节点之间的边,即满足<math>n_{i} < n_{j} \leq n_{i} + K/2</math>的所有边 <math>(n_{i},n_{j}\mod N)</math> ,以概率<math>\beta</math>将其重新连接。重新连接的过程是把边 <math>(n_{i},n_{j}\mod N)</math> 替换为边 <math>(n_{i},n_{k})</math> ,其中<math>k</math>以一致的随机性从所有可能的节点选出,并且避免出现自回路<math>(k\neq i)</math>和重复连接(边 <math>(n_{i},n_{{k}'})</math> ,其中<math>{k}'=k</math>,在该算法中不会出现)的情况。
 
#对于每个节点<math>n_{i}=n_{0},...,n_{N-1}</math>,选出其与最右侧第<math>K/2</math>相邻节点之间的边,即满足<math>n_{i} < n_{j} \leq n_{i} + K/2</math>的所有边 <math>(n_{i},n_{j}\mod N)</math> ,以概率<math>\beta</math>将其重新连接。重新连接的过程是把边 <math>(n_{i},n_{j}\mod N)</math> 替换为边 <math>(n_{i},n_{k})</math> ,其中<math>k</math>以一致的随机性从所有可能的节点选出,并且避免出现自回路<math>(k\neq i)</math>和重复连接(边 <math>(n_{i},n_{{k}'})</math> ,其中<math>{k}'=k</math>,在该算法中不会出现)的情况。
 +
==构建小世界网络==
 +
 +
 +
构建小世界网络的主要机制是[https://en.wikipedia.org/wiki/Watts_and_Strogatz_Model Watts-Strogatz机制]。
 +
 +
小世界网络也可引入延时<ref name="a18">#X. S. Yang, Fractals in small-world networks with time-delay, Chaos, Solitons & Fractals, vol. 13, 215–219 (2002)
 +
</ref>,这不仅会产生分形,而且在特定条件下,还会形成混沌<ref name="a19">#X. S. Yang, Chaos in small-world networks, Phys. Rev. E 63, 046206 (2001)
 +
</ref>,或者在动态网络中转变为混沌<ref name="a20">#W. Yuan, X. S. Luo, P. Jiang, B. Wang, J. Fang, Transition to chaos in small-world dynamical network
 +
</ref>。
 +
 +
构造[https://en.wikipedia.org/wiki/Degree_diameter 度直径图](Degree–diameter graph)的方法是:网络中每个顶点的邻居数量是有界的,而网络中从任意给定顶点到其他顶点(网络[https://en.wikipedia.org/wiki/Distance_(graph_theory) 直径])是最小的。构建这样的小世界网络,其实是为寻找临近[https://en.wikipedia.org/wiki/Moore_graph 摩尔边界]的图的秩,而做出的一部分努力。
 +
 +
Barmpoutis等人给出的从零开始构建小世界网络的另外一种方法<ref name="a21">#[https://en.wikipedia.org/wiki/D.Barmpoutis_and_R.M._Murray D.Barmpoutis and R.M. Murray] (2010). "Networks with the Smallest Average Distance and the Largest Average Clustering". arXiv:1007.4031 Freely accessible [q-bio.MN].</ref>,构建了一种平均距离极小且平均集聚度极高的网络。他们提到了一种复杂度恒定的快速算法,以及不同生成图鲁棒性的度量。根据每个网络的应用,可以从一个这样的“超小世界”网络开始,然后重新连接一些边,或者使用几个这样的小网络作为子图,构筑一个更大的图。
 +
 +
通过[https://en.wikipedia.org/wiki/Dual-phase_evolution 双相演化](dual-phase evolution)过程,小世界属性可以在社交网络和其他现实世界系统中自然产生。在顶点之间的连接增长受到时间或空间的制约时,小世界网络尤其常见。该机制通常涉及相位之间的周期性变换,其中,在“全局”阶段——连接建立,而在“本地”阶段——连接被移除。
 +
 +
参考:[https://en.wikipedia.org/wiki/Diffusion-limited_aggregation 扩散限制凝聚],[https://en.wikipedia.org/wiki/Pattern_formation 模式构成]。
 +
==构建小世界网络代码实现==
 +
 +
=== 使用networkx生成小世界网络 ===
 +
<syntaxhighlight lang="python">
 +
 +
import networkx as nx
 +
import matplotlib.pyplot as plt
 +
 +
# WS network
 +
# 生成20个节点的小世界网络
 +
# 每个节点有四个邻居
 +
# 每条连边以0.3的概率随机重置链接
 +
WS = nx.random_graphs.watts_strogatz_graph(20, 4, 0.3)
 +
pos = nx.circular_layout(WS)
 +
nx.draw(WS, pos, with_labels = False, node_size = 30)
 +
plt.show()
 +
 +
</syntaxhighlight>
 +
 +
此时得到的图片是下图所示:<br />
 +
 +
[[File:Networksx包生成的小世界网络.png | 400px]]
 +
 +
=== 使用原生方法x生成小世界网络 ===
 +
<syntaxhighlight lang="python">
 +
G = nx.Graph()
 +
node_num = 20
 +
neighbour_num = 4
 +
probility = 0.3
 +
# 节点与邻居相连
 +
for i in range(node_num):
 +
    from_node = i
 +
    for j in range(neighbour_num):
 +
        to_node = (i+j) % node_num - neighbour_num / 2
 +
        if to_node >= 0:
 +
            to_node += 1
 +
        G.add_edge(from_node,to_node)
 +
# 连边随机重连
 +
edges = copy.deepcopy(G.edges())
 +
for edge in edges:
 +
    if random.random() <  probility:
 +
        G.remove_edge(edge[0],edge[1])
 +
        ran_edge = np.random.randint(node_num,size=2).tolist()
 +
        G.add_edge(ran_edge[0],ran_edge[1])
 +
# 绘图
 +
pos = nx.circular_layout(G)
 +
nx.draw(G, pos, with_labels = False, node_size = 30)
 +
plt.show()
 +
</syntaxhighlight>
 +
 +
此时得到的图片如下图所示:
 +
<br />
 +
[[File:原声方法生成的小世界网络.png |400px]]
    
==局限性==
 
==局限性==
330

个编辑