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.Graph
或networkx.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