生成幂律度分布随机有向图

时间:2015-05-21 18:46:10

标签: python networkx

我搜索生成随机有向图$ G(V,E)$,其具有特定节点和边数,指定进出度分布,没有循环和完全连接。我在this link中的R中找到了一个函数。

我在networkx中搜索过,但只找到this function,图表通过优先附件增长,因此边数不可控。

Python中的R函数是否等效?

1 个答案:

答案 0 :(得分:1)

生成像这样的图形(固定数量的边,节点,度分布,连接)可能不那么容易.... 但定向配置模型可能会让你大部分时间。 http://networkx.github.io/documentation/latest/reference/generated/networkx.generators.degree_seq.directed_configuration_model.html#networkx.generators.degree_seq.directed_configuration_model

  

返回具有给定度数序列的directed_random图。

     

配置模型生成随机定向伪图(图形   通过随机分配边来实现平行边和自循环   匹配给定的度数序列。

该示例显示了如何删除自循环和平行边。

>>> D=nx.DiGraph([(0,1),(1,2),(2,3)]) # directed path graph
>>> din=list(D.in_degree().values())
>>> dout=list(D.out_degree().values())
>>> din.append(1)
>>> dout[0]=2
>>> D=nx.directed_configuration_model(din,dout)
To remove parallel edges:

>>> D=nx.DiGraph(D)
To remove self loops:

>>> D.remove_edges_from(D.selfloop_edges())

您需要生成指定长度的入度和出度度序列,并将其作为输入求和。如果删除自循环边和平行边,可能会减少原始规格的边数。

也无法保证您的图表将被连接。