11
从概率成对交换产生随机排列的最有效方法是什么?
我感兴趣的问题与生成随机排列有关。以概率成对交换交换门为基本构建块,产生nnn元素的均匀随机排列的最有效方法是什么?在这里,我将“概率成对交换门”作为操作以某种概率p在选定元素iii和之间实现交换门jjjppp并且可以为每个门自由选择,否则可以选择同一性。 我意识到这通常不是生成随机排列的方式,通常人们可能会使用Fisher-Yates混编之类的方法,但是,由于允许的操作不同,因此这对于我想到的应用程序将不起作用。 显然可以做到这一点,问题是效率如何。为了达到这个目标,最少需要多少个概率交换? 更新: Anthony Leverrier提供了以下方法,该方法的确使用O(n2)O(n2)O(n^2)门产生了正确的分布,而Ito Tsuyoshi Ito提供了另一种在注释中具有相同缩放比例的方法。不过,我迄今见过的最好的下界⌈log2(n!)⌉⌈log2(n!)⌉\lceil \log_2(n!) \rceil,它可以扩展为O(nlogn)O(nlogn)O(n\log n)。因此,问题仍然悬而未决:是否是O(n2)O(n2)O(n^2)可以完成的最佳选择(即下界是否更好)?或者,是否有更有效的电路系列? 更新: 一些答案和评论提出了完全由概率互换组成的电路,其中概率固定为1212\frac{1}{2}。由于以下原因(从注释中删除),这种电路无法解决此问题: 想象一个使用mmm这种门的电路。然后有2m2m2^m概率的计算路径,因此对于某个整数k ,任何排列都必须以概率k2−mk2−mk 2^{−m}进行。但是,对于均匀分布,我们要求k2−m=1n!k2−m=1n!k 2^{−m}=\frac{1}{n!}kn!=2mkn!=2mk n! = 2^mkkkn≥3n≥3n\geq33|n!3|n!3|n!n≥3n≥3n\geq 33∤2m3∤2m3\nmid 2^m 更新(来自提供赏金的mjqxxxx): 提供的赏金用于(1)需要门的证明,或(2)对于使用少于门的任何个工作电路。n n (n − 1 )/ 2ω(nlogn)ω(nlogn)\omega(n \log n)nnnn(n−1)/2n(n−1)/2n(n-1)/2