首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成复杂网络的方法

生成复杂网络的方法
EN

Stack Overflow用户
提问于 2020-09-30 13:01:54
回答 1查看 167关注 0票数 1

我有一个小的图网络,我一直在寻找可以利用小网络的结构属性来生成复杂网络的方法。我想使用一种保留属性的方法,如度分布、聚类等。

幸运的是,我偶然看到了这篇article,它讨论了在网络扩展之后如何生成原始网络的副本。

例如,我生成了一个边权重的Networkx图,如下所示:(为了说明,创建了一个随机图),

代码语言:javascript
复制
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图的选项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-01 14:36:48

您可以使用NetworKit中的nxadapter模块将图形从networkx转换为NetworKit,反之亦然。在您的代码中,这将按如下方式工作:

代码语言:javascript
复制
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,您可以找到一些示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64131201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档