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))