一尘不染

预期的反演次数-从Cormen的引言到算法

algorithm

令A [1 .. n]为n个distinct数字的数组。如果i A
[j],则对(i,j)被称为A的倒置。(有关倒置的更多信息,请参阅问题2-4。)假设选择了A的每个元素从1到n范围内随机,独立且均匀地分布。使用指标随机变量来计算预期的反转次数。


问题来自Cormen的 算法简介中的 练习5.2-5 。这是我的递归解决方案:

假定x(i)是在一个倒[1..i]和E(i)的数目为x(i)的预期值,则E(i + 1的)可以计算如下:
图像我们有i+1放置所有数字的位置,如果我们将 i + 1 放在第一个位置,则x(i + 1)= i + x(i); 如果我们将 i +
1
放在第二个位置上,则x(i + 1)= i-1 + x(i),…,因此E(i + 1)= 1 /(i + 1) sum( k)+
E(i),其中k = [0,i]。最后,我们得到E(i + 1)= i / 2 + E(i)。
因为我们知道E(2)= 0.5,所以递归得到:E(n)=(n-1 + n-2 + … + 2)/ 2 + 0.5 = n
(n-1)/ 4 。


尽管上面的推论似乎是正确的,但是我仍然不太确定。所以我在这里分享。

如果有什么问题,请纠正我。


阅读 297

收藏
2020-07-28

共1个答案

一尘不染

我认为是正确的,但是我认为证明它的正确方法是使用条件期望:

对于所有X和Y,我们都有:E [X] = E [E [X | Y]]

那么在你的情况下:

E(i + 1)= E [x(i + 1)] = E [E [x(i + 1)| x(i)]] = E [SUM(k)/(1 + i)+ x(i)] = i
/ 2 + E [x(i)] = i / 2 + E(i)

关于第二个陈述:

如果:

E(n)= n *(n-1)/ 4。

那么E(n + 1)=(n + 1) n / 4 =(n-1) n / 4 + 2 * n / 4 =(n-1)* n / 4 + n / 2 = E(
n)+ n / 2

所以n *(n-1)/ 4。验证所有n> = 2的递归关系,并验证n = 2的递归关系

所以E(n)= n *(n-1)/ 4

希望我了解您的问题,对您有帮助

2020-07-28