对于Permute-By-Sorting算法,所有优先级都是唯一的概率是多少?

时间:2012-06-01 17:21:49

标签: algorithm probability

我希望有人能帮助我回答以下问题。谢谢!

以下是Permute-By-Sorting算法的伪代码:

Permute-By-Sorting (A)

    n = A.length

    let P[1..n] be a new array

    for i = 1 to n

        P[i] = Random (1,n^3)

    sort A, using P as sort keys

在上述算法中,数组P表示数组A中元素的优先级。第4行选择1到n ^ 3之间的随机数。

问题是P中所有优先级的唯一概率是多少?以及如何获得概率?

5 个答案:

答案 0 :(得分:1)

您正在从n中选择1...n^3个数字,并询问它们都是唯一的概率。

(n^3) P n = (n^3)!/(n^3-n)!种方式可以唯一地选择n个数字,(n^3)^n种方式可以选择n个数字。

因此,数字唯一的概率只是第一个等式除以第二个等式,得出

     n3!
--------------
 (n3-n)!  n3n

答案 1 :(得分:1)

调和已经给出的答案:对于选择i = 0,...,n - 1,假设尚未选择重复项,则有n ^ 3 - i非重复选择n ^ 3总计为第i个值。因此,概率是i = 0,...,n - 1(1-i / n ^ 3)的乘积。

sdcwc正在使用一个绑定来降低此概率的联合1 - O(1 / n)。这个估计基本上是正确的。证明草图是(1-i / n ^ 3)是exp(-i / n ^ 3 + O(i ^ 2 / n ^ 6)),因此乘积是exp(-O(n ^ 2)/ n ^ 3 + O(n ^ -3)),其大于或等于1-O(n ^ 2)/ n ^ 3 + O(n ^ -3)= 1-O(1 / n)。我确信数学上的优秀人员会很乐意做出这样的推导和#34;正确的#34;对你而言。

答案 2 :(得分:1)

其他人已经给你概率计算,但我想你可能会问错误的问题。

我假设您询问优先级唯一的可能性的原因,以及首先选择n ^ 3的原因,是因为您希望它们是唯一的,并选择大范围相对似乎是实现独特性的合理方式。

确保值是唯一的更容易。只需使用数字1 .. n填充优先级数组,然后使用the Fisher-Yates algorithm(也就是计算机编程艺术中的算法P,第2卷,数值算法,Donald Knuth)将它们随机填充。

然后使用已知的唯一优先级值执行排序。

(还有其他方法可以获得随机排列。有可能使用因子数(或因子数系统)生成序列的第n个词典排列,因此生成随机选择的排列值[1 .. n!]。)

答案 3 :(得分:0)

所以排序部分无关紧要

假设“随机”是真实随机的,概率只是

      n^3!
----------------
 (n^3-n)!n^(3n)

答案 4 :(得分:0)

设A ij 为事件:第i和第j个元素发生碰撞。显然P(A ij )= 1 / n 3

最多有n 2 对,因此至少有一次碰撞的概率最多为1 / n。

如果您对确切的事情感兴趣,请参阅BlueRaja的答案,但在随机算法中,通常足以给出这种类型的约束。