给定n:顶点的数量,我想随机生成一个有n个顶点的树。 目前,我正在使用random_shuffle()生成n个顶点的随机序列,以仅生成线性树。但是,我怎样才能使它足够随机地包含其他树型以及C++?如何在C++中随机生成n个顶点的树?
-2
A
回答
2
假设你的目标是产生一个伪随机树下面通过一组有n个顶点扎根标记树的均匀概率分布,解决的办法就是产生所谓的Prüfer代码,这是一个均匀地产生随机(n-2) - [1,n]中的数字。
Wiki的文章有准备使用的伪代码:
https://en.wikipedia.org/wiki/Pr%C3%BCfer_sequence
但我怎么能做到足够的随机
有没有这样的事情“随机足够的”; you需要指定树分布应该具有哪些属性(并且可能存在多个此类分布)。在有限集合的特殊情况下(例如所有具有n个顶点的树的集合),您始终可以唯一地定义一个均匀分布,但这绝不是“更加随机”,也不是“更自然”,也不是任何事......这取决于你(和你的最终目标)来决定这是否是正确的分配。
+0
这也是由python的[networkx](https://networkx.github.io/documentation/stable/reference/generated/networkx.generators.tree.random_tree.html#networkx.generators.tree.random_tree)实现''' 'generators.tree.random_tree'''(支持它的实际重要性)。 – sascha
相关问题
- 1. 如何在c/C++中的unsigned char数组中生成n个随机1?
- 2. 在Python中生成n维随机数
- 3. 生成随机树分支
- 4. 生成一个N位随机数
- 5. 如何在C中生成一个真正的随机数?
- 6. 如何生成总和为预定值的N个随机值?
- 7. 如何生成n个k位数的随机整数
- 8. Python - 生成围绕中心(x,y)位置的随机顶点
- 9. 在MySql中生成一个随机和唯一的varchar(n)?
- 10. 我如何使用随机类在C#中生成一个随机数(XNA)
- 11. 如何生成随机斑点?
- 12. 如何在objective-c中生成一个随机日期?
- 13. 如何在C#中生成一个随机数?
- 14. 如何从SHA-256哈希生成N个随机数
- 15. 如何生成n个随机数没有for循环
- 16. 二分图的随机生成树
- 17. 在圆柱体中生成随机点
- 18. 在Python中上下生成随机点
- 19. 随机浮点生成器在matlab中?
- 20. 在n维圆环表面生成随机点
- 21. c# - 如何生成随机ITIN
- 22. 如何在Matlab中生成n个独立的正态随机变量
- 23. 如何使用BigInteger类在Java中生成一个随机的n位整数?
- 24. 如何在0到无限的Python 3中生成N个随机数
- 25. ECC随机点生成FPGA
- 26. C++:如何从一个数组中生成一个随机数
- 27. 在C++中生成随机文件名
- 28. 在C++中生成随机双数
- 29. C++在函数中生成随机数
- 30. 如何从java中的m个数字列表生成n个随机数?
有没有这样一个“纯粹随机”的树;你的意思是,如何在具有n个顶点的树集合上产生一个统一的*概率分布的伪随机树? –
@MassimilianoJanes是的。 – user3243499