cdlib.benchmark.SBM

cdlib.benchmark.SBM(sizes: list, p: list, nodelist: list | None = None, seed: object = 42, directed: bool = False, selfloops: bool = False, sparse: bool = True) [<class 'object'>, <class 'object'>]

返回一个随机块模型图。

该模型将节点划分为任意大小的块,并在节点对之间独立地放置边,其概率取决于这些块。

Parameters:
  • sizes – 块的大小(整数列表)

  • p – 元素 (r,s) 表示从组 r 的节点到组 s 的节点的边的密度。p 必须与组的数量匹配(len(sizes) == len(p)),并且如果图是无向的,它必须是对称的。(浮点数列表)

  • nodelist – 块标签根据nodelist中的节点标识符进行分配。如果nodelist为None,则顺序为范围[0,sum(sizes)-1]。可选,默认为None。

  • seed – 随机数生成状态的指示器。

  • directed – 是否创建有向图。布尔值,默认为False。

  • selfloops – 是否包含自循环。可选,默认为 False。

  • sparse – 使用稀疏启发式方法来加速生成器。可选,默认为True。

Returns:

一个networkx合成图,社区集合(NodeClustering对象)

Example:

>>> from cdlib.benchmark import SBM
>>> sizes = [75, 75, 300]
>>> probs = [[0.25, 0.05, 0.02], [0.05, 0.35, 0.07], [0.02, 0.07, 0.40]]
>>> G, coms = SBM(sizes, probs, seed=0)
References:

Holland, P. W., Laskey, K. B., & Leinhardt, S., “随机块模型:初步探索”, 社交网络, 5(2), 109-137, 1983.