directed_configuration_model#
- directed_configuration_model(in_degree_sequence, out_degree_sequence, create_using=None, seed=None)[source]#
返回具有给定度序列的有向随机图。
配置模型通过随机分配边来匹配给定的度序列,从而生成一个随机有向伪图(具有平行边和自环的图)。
- 参数:
- in_degree_sequence非负整数列表
列表中的每个条目对应于一个节点的入度。
- out_degree_sequence非负整数列表
列表中的每个条目对应于一个节点的出度。
- create_usingNetworkX 图构造器,可选 (默认 MultiDiGraph)
要创建的图类型。如果给定的是图实例,则在填充前会清空该图。
- seed整数、random_state 或 None (默认)
随机数生成状态的指示器。参见 随机性。
- 返回:
- GMultiDiGraph
具有指定度序列的图。节点的标签从 0 开始,索引对应于 deg_sequence 中的位置。
- 抛出:
- NetworkXError
如果度序列的总和不同。
另请参见
说明
算法如 Newman 所述 [1]。
允许非图示性度序列(无法由某些简单图实现),因为此函数返回带有自环和平行边的图。如果度序列的总和不同,则会抛出异常。
这种配置模型构建过程可能导致重复的边和自环。您可以删除自环和平行边(参见下文),但这可能会导致所得图不具有精确指定的度序列。这种“有限尺寸效应”会随着图大小的增加而减小。
参考文献
[1]Newman, M. E. J. and Strogatz, S. H. and Watts, D. J. Random graphs with arbitrary degree distributions and their applications Phys. Rev. E, 64, 026118 (2001)
示例
可以修改现有有向图的入度和出度序列,以创建新的有向图。例如,此处我们修改有向路径图
>>> D = nx.DiGraph([(0, 1), (1, 2), (2, 3)]) >>> din = list(d for n, d in D.in_degree()) >>> dout = list(d for n, d in D.out_degree()) >>> din.append(1) >>> dout[0] = 2 >>> # We now expect an edge from node 0 to a new node, node 3. ... D = nx.directed_configuration_model(din, dout)
返回的图是一个有向多重图,可能包含平行边。要移除返回图中的所有平行边
>>> D = nx.DiGraph(D)
类似地,要移除自环
>>> D.remove_edges_from(nx.selfloop_edges(D))