configuration_model#
- configuration_model(deg_sequence, create_using=None, seed=None)[source]#
返回一个具有给定度序列的随机图。
配置模型通过随机分配边以匹配给定的度序列,生成一个随机伪图(包含平行边和自环的图)。
- Parameters:
- deg_sequencelist of nonnegative integers
每个列表项对应一个节点的度。
- create_usingNetworkX图构造函数, 可选 (默认 MultiGraph)
要创建的图类型。如果是图实例,则在填充前清空。
- seedinteger, random_state, or None (默认)
随机数生成状态的指示器。 参见 Randomness 。
- Returns:
- GMultiGraph
具有指定度序列的图。 节点从0开始标记,索引对应于deg_sequence中的位置。
- Raises:
- NetworkXError
如果度序列的和不是偶数。
See also
is_graphical
Notes
如Newman [1] 所述。
允许非图形度序列(不能由某些简单图实现),因为此函数返回带有自环和平行边的图。如果度序列的和不 是偶数,则会引发异常。
这种配置模型构建过程可能导致重复边和环。您可以删除自环和平行边(见下文),这可能会导致图不具有 指定的确切度序列。
自环和平行边的密度往往会随着节点数量的增加而降低。然而,通常自环的数量会趋向于具有非零均值的泊 松分布,平行边的数量也是如此。考虑一个具有 k 个端点的节点。连接到同一节点的另一个端点的概率 基本上是 (k - 1) / N,其中 k 是度,N 是节点数。因此,自环的概率尺度为 c / N, 其中 c 是某个常数。随着 N 的增长,这意味着我们期望 c 个自环。平行边也是如此。
References
[1]M.E.J. Newman, “The structure and function of complex networks”, SIAM REVIEW 45-2, pp 167-256, 2003.
Examples
您可以使用
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))