Python 3.x 复杂网络的生成方法

Python 3.x 复杂网络的生成方法,python-3.x,graph,networkx,networkit,Python 3.x,Graph,Networkx,Networkit,我有一个小型的图形网络,我一直在寻找可以 利用小网络的结构特性生成复杂网络 网络。 我想使用一种方法来保存属性,比如度 分布、群集等 幸运的是,我偶然发现了这篇[文章] ()那 讨论生成原始网络的复制副本,然后 网络扩展 比如说,, 我已经生成了一个边加权的Networkx图,如下所示: 创建随机图以进行说明) 此图有20个节点。我想知道如何通过一个更大的规模来扩展这样的网络 比例因子x在5到10之间变化。举例会很有帮助 另外,在文档中 () 提到支持的图形数据格式是METIS邻接格式。 我想知

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

幸运的是,我偶然发现了这篇[文章] ()那 讨论生成原始网络的复制副本,然后 网络扩展

比如说,, 我已经生成了一个边加权的Networkx图,如下所示: 创建随机图以进行说明)

此图有20个节点。我想知道如何通过一个更大的规模来扩展这样的网络 比例因子x在5到10之间变化。举例会很有帮助

另外,在文档中 () 提到支持的图形数据格式是METIS邻接格式。 我想知道networkx图是否必须转换为metis图。 是否有在Networkit中直接使用Networkx图形的选项?

您可以使用Networkit中的模块将图形从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')

为了生成复杂网络,你也可以考虑使用图形生成器,你可以找到一些例子。我看了一下图形生成器。据我所知,上述链接中列出的生成器可用于创建随机图。我不确定这些生成器是否可以用于缩放现有图形。你能详细说明一下吗?没错,你可以使用生成器生成复杂的网络,但不能缩放现有的图形。我的观点是,如果你想生成一个复杂的网络,你可以使用大量的生成器,否则我不熟悉网络扩展。谢谢。我已经打开了一个新线程@angriamn,正如上面共享的线程中所建议的那样,我尝试了networkit.generators.LFRGenerator.fit(G_nk,scale=2)。但是,这将返回一个对象,我不确定如何访问缩放图。你能帮忙吗?
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')