random_kernel_graph#
- random_kernel_graph(n, kernel_integral, kernel_root=None, seed=None)[source]#
返回一个基于指定核的随机图。
该算法以由核 \(\kappa(x,y)\) [1] 指定的概率选择 \([n(n-1)]/2\) 个可能的边中的每一个。核 \(\kappa(x,y)\) 必须是一个对称的(在 \(x,y\) 中)、非负的、有界函数。
- Parameters:
- nint
节点数量
- kernel_integralfunction
返回核 \(\kappa(x,y)\) 的定积分的函数,\(F(y,a,b) := \int_a^b \kappa(x,y)dx\)
- kernel_root: function (可选)
返回方程 \(F(y,a,b) = r\) 的根 \(b\) 的函数。 如果为 None,则使用
scipy.optimize.brentq()
查找根(这需要 SciPy)。- seedinteger, random_state, 或 None (默认)
随机数生成状态的指示器。 参见 Randomness 。
See also
gnp_random_graph
expected_degree_graph
Notes
核通过其定积分指定,该定积分必须作为参数之一提供。如果核积分的积分和根可以在 \(O(1)\) 时间内找到,则该算法在时间 \(O(n+m)\) 内运行,其中 m 是预期的边数 [2]。
节点设置为从 \(0\) 到 \(n-1\) 的整数。
References
[1]Bollobás, Béla, Janson, S. and Riordan, O. “The phase transition in inhomogeneous random graphs”, Random Structures Algorithms, 31, 3–122, 2007.
[2]Hagberg A, Lemons N (2015), “Fast Generation of Sparse Random Kernel Graphs”. PLoS ONE 10(9): e0135177, 2015. doi:10.1371/journal.pone.0135177
Examples
生成一个 Erdős–Rényi 随机图 \(G(n,c/n)\),其核为 \(\kappa(x,y)=c\),其中 \(c\) 是平均期望度。
>>> def integral(u, w, z): ... return c * (z - w) >>> def root(u, w, r): ... return r / c + w >>> c = 1 >>> graph = nx.random_kernel_graph(1000, integral, root)