我有一个小的图网络,我一直在寻找可以利用小网络的结构属性来生成复杂网络的方法。我想使用一种保留属性的方法,如度分布、聚类等。
幸运的是,我偶然看到了这篇article,它讨论了在网络扩展之后如何生成原始网络的副本。
例如,我生成了一个边权重的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图的选项?
发布于 2020-10-01 14:36:48
您可以使用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://stackoverflow.com/questions/64131201
复制相似问题