random_unlabeled_rooted_forest#

random_unlabeled_rooted_forest(n, *, q=None, number_of_forests=None, seed=None)[源码]#

返回随机选择的一个或多个森林。

返回一个或多个(取决于 number_of_forests 参数)具有 n 个节点且每棵树不超过 q 个节点的无标签有根森林,它们是均匀随机抽取的。“roots”图属性标识了森林的根节点。

参数:
nint

节点数量

qint 或 None (默认)

每棵树的最大节点数量。

number_of_forestsint 或 None (默认)

如果不是 None,则生成并返回指定数量的森林。

seedinteger, random_state, 或 None (默认)

随机数生成状态的指示器。参见 随机性

返回:
networkx.Graphnetworkx.Graph 的列表

一个 networkx.Graph 对象(如果指定了 number_of_forests 则返回列表),其节点集合为 {0, …, n - 1}。“roots”图属性是一个集合,包含森林中各棵树的根节点。

引发:
ValueError

如果 n 非零但 q 为零。

说明

此函数实现了 [1] 中“Forest”算法。该算法需要计算一些相对昂贵的计数函数:如果需要多个森林,建议使用可选参数 number_of_forests 以复用计数函数。

参考文献

[1]

Wilf, Herbert S. “自由树的均匀选择。” Journal of Algorithms 2.2 (1981): 204-207. https://doi.org/10.1016/0196-6774(81)90021-3