当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX configuration_model用法及代码示例


本文简要介绍 networkx.generators.degree_seq.configuration_model 的用法。

用法:

configuration_model(deg_sequence, create_using=None, seed=None)

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

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

参数

deg_sequence非负整数列表

每个列表条目对应一个节点的度数。

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

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

seed整数、random_state 或无(默认)

随机数生成状态的指示符。请参阅随机性。

返回

GMultiGraph

具有指定度数序列的图。节点从 0 开始标记,索引对应于 deg_sequence 中的位置。

抛出

NetworkXError

如果度数序列没有偶数和。

注意

正如纽曼[1]所说明的。

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

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

随着节点数量的增加,自环和平行边的密度趋于降低。然而,通常自环的数量将接近具有非零均值的泊松分布,平行边的数量也是如此。考虑一个带有k 存根的节点。加入同一节点的另一个存根的概率本质上是 (k - 1 ) /N ,其中 k 是度数,N 是节点数。因此,对于某个常数 c ,自循环的概率会像 c /N 一样缩放。随着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))

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.generators.degree_seq.configuration_model。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。