configuration_model#

configuration_model(deg_sequence, create_using=None, seed=None)[源代码]#

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

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

参数
deg_sequence非负整数列表

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

create_usingNetworkX图形构造函数,可选(默认多图形)

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

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

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

返回
GMultiGraph

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

加薪
NetworkXError

如果度序列没有偶数和。

参见

is_graphical

笔记

正如纽曼所描述的那样 [1].

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

这种配置模型构造过程会导致重复的边和环。您可以删除自循环和平行边(见下文),这可能导致图形没有指定确切的度数序列。

自循环和平行边的密度随着节点数的增加而减小。然而,通常情况下,自循环的数量将接近平均值为非零的泊松分布,类似于平行边的数量。考虑节点 k 短截线。被连接到同一节点的另一个存根的概率基本上是( k - 1 / N 在哪里 k 是学位和 N 是节点数。所以一个自循环的概率是 c / N 对于某个常数 c . AS N 成长,这意味着我们期待 c 自循环。类似于平行边。

工具书类

1

M.E.J.Newman,“复杂网络的结构和功能”,《暹罗评论》45-2,第167-256页,2003年。

实例

通过使用中的分布函数之一,可以在特定分布之后创建学位序列。 random_sequence (或者你自己的一个)。例如,要在100个节点上创建一个无向多重图,并从幂律分布中选择度序列:

>>> sequence = nx.random_powerlaw_tree_sequence(100, tries=5000)
>>> G = nx.configuration_model(sequence)
>>> len(G)
100
>>> actual_degrees = [d for v, d in G.degree()]
>>> actual_degrees == sequence
True

返回的图是多图,可能有平行边。要从返回的图形中删除任何平行边,请执行以下操作:

>>> G = nx.Graph(G)

同样,要删除自循环:

>>> G.remove_edges_from(nx.selfloop_edges(G))