graphscope.nx.generators.degree_seq.预期度数图¶
- graphscope.nx.generators.degree_seq.expected_degree_graph(w, seed=None, selfloops=True)[源代码]¶
返回一个具有给定期望度数的随机图。
给定一个长度为$n$的预期度数序列$W=(w_0,w_1,ldots,w_{n-1})$,该算法以如下概率在节点$u$和节点$v$之间分配一条边
\[p_{uv} = \frac{w_u w_v}{\sum_k w_k} .\]- Parameters:
w (列表) – 预期度数的列表。
selfloops (bool (default=True)) – 设置为False可移除自环边的可能性。
seed (integer, random_state, or None (default)) - 随机数生成状态的指示器。 参见随机性。
- Return type:
示例
>>> z = [10 for i in range(100)] >>> G = nx.expected_degree_graph(z)
备注
节点具有整数标签,对应预期度数的输入序列索引。
该算法的复杂度为$mathcal{O}(n+m)$,其中$n$表示节点数量,$m$表示预期的边数。
在[1]中的模型包含了自循环边的可能性。设置selfloops=False可以生成一个不含自循环的图。
对于有限图,该模型无法精确生成给定的预期度序列。相反,预期度数如下所示。
对于没有自环的情况(selfloops=False),
\[E[deg(u)] = \sum_{v \ne u} p_{uv} = w_u \left( 1 - \frac{w_u}{\sum_k w_k} \right) .\]NetworkX遵循的标准约定是,自环边在节点度数中计为2,因此当存在自环时(selfloops=True),
\[E[deg(u)] = \sum_{v \ne u} p_{uv} + 2 p_{uu} = w_u \left( 1 + \frac{w_u}{\sum_k w_k} \right) .\]参考文献