directed_configuration_model#

directed_configuration_model(in_degree_sequence, out_degree_sequence, create_using=None, seed=None)[源代码]#

返回具有给定度数序列的有向随机图。

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

参数
in_degree_sequence非负整数列表

每个列表条目对应于节点的入度。

out_degree_sequence非负整数列表

每个列表条目对应于节点的出度。

create_using网络X图形构造函数,可选(默认多重有向图)

要创建的图表类型。如果是图表实例,则在填充之前清除。

seed整数、随机状态或无(默认)

随机数生成状态的指示器。见 Randomness .

返回
GMultiDiGraph

具有指定度序列的图。节点从0开始使用与deg_equence中的位置相对应的索引进行标记。

加薪
NetworkXError

如果度序列的和不相同。

笔记

纽曼所描述的算法 [1].

由于此函数返回具有自循环和平行边的图,因此允许使用非图形度序列(某些简单图无法实现)。如果度序列不具有相同的和,则会引发异常。

这种配置模型构造过程会导致重复的边和环。您可以删除自循环和平行边(见下文),这可能导致图形没有指定确切的度数序列。这种“有限尺寸效应”随着图形尺寸的增大而减小。

工具书类

1

Newman,M.E.J.和Strogatz,S.H.和Watts,D.J.任意度分布的随机图及其应用物理。牧师。E,64026118(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))