生成复杂网络的方法
Methods for generating complex network
我有一个小型图网络,我一直在寻找可以使
利用小型网络的结构特性生成复杂的
网络。
我想使用一种保留度数等属性的方法
分布、聚类等
幸运的是,我遇到了这篇[文章]
(https://link.springer.com/article/10.1007/s41109-017-0054-z) 那
讨论了原始网络副本的生成,然后是
网络扩展。
例如,
我生成了如下所示的边加权 Networkx 图:(
创建随机图用于说明),
import random
import networkx as nx
import matplotlib.pyplot as plt
G = nx.gnm_random_graph(20, 30, seed=1)
for (u, v) in G.edges():
G.edges[u, v]['weight'] = random.randint(0, 10)
nx.draw(G, with_labels=True)
plt.show()
print(G.edges(data=True))
此图有 20 个节点。我想知道如何通过
比例因子 x 从 5 到 10 不等。示例将非常有用。
此外,在文档中
(https://github.com/networkit/networkit/blob/Dev/notebooks/User-Guide.ipynb)
提到支持的图形数据格式是 METIS 邻接格式。
我想知道是否必须将 networkx 图转换为 metis 图。
Networkit中是否有直接使用Networkx图的选项?
您可以使用 NetworKit 中的 nxadapter 模块将图形从 networkx 转换为 NetworKit,反之亦然。
在您的代码中,这将按如下方式工作:
import networkit as nk
import random
import networkx as nx
import matplotlib.pyplot as plt
G = nx.gnm_random_graph(20, 30, seed=1)
for (u, v) in G.edges():
G.edges[u, v]['weight'] = random.randint(0, 10)
nx.draw(G, with_labels=True)
plt.show()
print(G.edges(data=True))
# Networkx graph to NetworKit graph
G_nk = nk.nxadapter.nx2nk(G, weightAttr='weight')
要生成复杂的网络,您还可以考虑使用图形生成器,here您可以找到一些示例。
我有一个小型图网络,我一直在寻找可以使 利用小型网络的结构特性生成复杂的 网络。 我想使用一种保留度数等属性的方法 分布、聚类等
幸运的是,我遇到了这篇[文章] (https://link.springer.com/article/10.1007/s41109-017-0054-z) 那 讨论了原始网络副本的生成,然后是 网络扩展。
例如, 我生成了如下所示的边加权 Networkx 图:( 创建随机图用于说明),
import random
import networkx as nx
import matplotlib.pyplot as plt
G = nx.gnm_random_graph(20, 30, seed=1)
for (u, v) in G.edges():
G.edges[u, v]['weight'] = random.randint(0, 10)
nx.draw(G, with_labels=True)
plt.show()
print(G.edges(data=True))
此图有 20 个节点。我想知道如何通过 比例因子 x 从 5 到 10 不等。示例将非常有用。
此外,在文档中 (https://github.com/networkit/networkit/blob/Dev/notebooks/User-Guide.ipynb) 提到支持的图形数据格式是 METIS 邻接格式。 我想知道是否必须将 networkx 图转换为 metis 图。 Networkit中是否有直接使用Networkx图的选项?
您可以使用 NetworKit 中的 nxadapter 模块将图形从 networkx 转换为 NetworKit,反之亦然。 在您的代码中,这将按如下方式工作:
import networkit as nk
import random
import networkx as nx
import matplotlib.pyplot as plt
G = nx.gnm_random_graph(20, 30, seed=1)
for (u, v) in G.edges():
G.edges[u, v]['weight'] = random.randint(0, 10)
nx.draw(G, with_labels=True)
plt.show()
print(G.edges(data=True))
# Networkx graph to NetworKit graph
G_nk = nk.nxadapter.nx2nk(G, weightAttr='weight')
要生成复杂的网络,您还可以考虑使用图形生成器,here您可以找到一些示例。