給定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