configuration_model#
- configuration_model(deg_sequence, create_using=None, seed=None)[源代码]#
返回具有给定度序列的随机图。
配置模型通过随机分配边来匹配给定的度序列,生成一个随机伪图(包含平行边和自环的图)。
- 参数:
- deg_sequence非负整数列表
列表中的每个条目对应于一个节点的度。
- create_usingNetworkX 图构造器,可选(默认为 MultiGraph)
要创建的图类型。如果提供了图实例,则在填充前会先清空。
- seed整数、random_state 对象或 None(默认)
随机数生成状态的指示器。参见 随机性。
- 返回:
- GMultiGraph
一个具有指定度序列的图。节点的标签从 0 开始,索引对应于 deg_sequence 中的位置。
- 抛出:
- NetworkXError
如果度序列的和不是偶数。
另请参阅
is_graphical
说明
如 Newman [1] 所述。
允许使用非图序列(某些简单图无法实现的序列),因为此函数返回的图包含自环和平行边。如果度序列的和不是偶数,则会抛出异常。
此配置模型的构造过程可能导致重复边和自环。您可以移除自环和平行边(见下文),这可能会导致生成的图不完全具有指定的度序列。
自环和平行边的密度随着节点数量的增加而趋于减小。然而,通常自环的数量会趋近于具有非零均值的泊松分布,平行边也类似。考虑一个有 k 个半边的节点。连接到同一节点的另一个半边的概率基本上是 (k - 1) / N,其中 k 是度,N 是节点数量。因此,自环的概率与 c / N 成正比,其中 c 为某个常数。随着 N 增长,这意味着我们期望有 c 个自环。平行边也类似。
参考文献
[1]M.E.J. Newman, “The structure and function of complex networks”, SIAM REVIEW 45-2, pp 167-256, 2003.
示例
您可以使用
random_sequence
中的分布函数(或您自己的函数)来创建遵循特定分布的度序列。例如,要创建一个具有从幂律分布中选择的度序列的、包含一百个节点的无向多重图>>> 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))