猴子排序的期望復雜度推導(霧)


  眾所周知,猴子排序打破了排序算法$O(n\log{n})$的桎梏(霧),具體的話,顯然最好情況一次成功就是$O(n)$,最壞情況那就$O(+\infty)$了。期望是多少呢?讓我來推導一番(逃)。

  首先,設序列長度為$n$,每次打亂序列和檢測是否有序為$O(n)$,每次成功的概率為$\frac{1}{n!}$(全排列共$n!$種),失敗的概率為$1-\frac{1}{n!}$。我們令$X$為排序成功所需的打亂次數,則$P(X=k)=P_{成功}^{1}×P_{失敗}^{k-1}$(乘法原理)。那么猴子排序的期望復雜度就是$O(E(X)*n)$

  X分布列如下表所示——

$X$ $1$ $2$ $3$ $\cdots$ $k$ $\cdots$ $+\infty$
$P(X=k)$ $\frac{1}{n!}$ $\left(1-\frac{1}{n!}\right)^{2-1}×\frac{1}{n!}$ $\left(1-\frac{1}{n!}\right)^{3-1}×\frac{1}{n!}$ $\cdots$ $\left(1-\frac{1}{n!}\right)^{k-1}×\frac{1}{n!}$ $\cdots$ $+\infty$

  有了分布列就來求X的期望吧——

$$E(X)=1×\frac{1}{n!}+2×\left(1-\frac{1}{n!}\right)^{2-1}×\frac{1}{n!}+3×\left(1-\frac{1}{n!}\right)^{3-1}×\frac{1}{n!}+\cdots+k×\left(1-\frac{1}{n!}\right)^{k-1}×\frac{1}{n!}+\cdots$$

$$=\frac{1}{n!}×\left[1×\left(1-\frac{1}{n!}\right)^{0}+2×\left(1-\frac{1}{n!}\right)^{1}+3×\left(1-\frac{1}{n!}\right)^{2}+\cdots+k×\left(1-\frac{1}{n!}\right)^{k-1}+\cdots\right]$$

$$=\frac{1}{n!}×\sum_{i=1}^{\infty}\left[{i×\left(1-\frac{1}{n!}\right)^{i-1}}\right]$$

  嗯……這個級數怎么求和啊?

  寫個程序跑一下吧,求和求到二百萬應該夠了,再往上long double的精度也不資磁了……

#include<stdio.h>
#include<math.h>
int main()
{
    double fac=1;//n!
    for(int n=1;n<=10;n++)
    {
        long double E=0;
        fac*=n;
        for(int i=1;i<=2000000;i++)
        {
            E+=i*pow((fac-1.0)/fac,i-1);
        }
        E/=fac;
        printf("E(X)=%Lf    (n=%d)\n",E,n);        
    }
    return 0;
}

 

  運行結果——

 

  n大於8以后,long double都爆了……忽略它們!(觀眾:你……)

  於是我們猜想——$E(X)=n!$。

  上網一查,猴子排序復雜度果然是$O(n×n!)$,於是,猜想成立,推導完畢……(博主已被打死)

   

  留坑,等我會求那坨級數求和再來填坑吧(逃)大家別學我

2019年1月21日13:45:56更新

  填坑啦!填坑啦!(這學期高數應該不會掛了嘻嘻)

  那個$E(X)=\frac{1}{n!}×\sum_{i=1}^{\infty}\left[{i×\left(1-\frac{1}{n!}\right)^{i-1}}\right]$是一個以$n$為自變量的冪級數,對$E(X)$逐項積分可得$$\int {E(X)\,dn}=\frac{1}{n!}×\sum_{i=1}^{\infty}\left(1-\frac{1}{n!}\right)^i$$

  又

$$\sum_{i=1}^{\infty}k^i=\frac{1}{1-k}-1       (-1<k<1)$$

  令$k=1-\frac{1}{n!}$

  則$$\int {E(X)\,dn}=\frac{1}{n!}×(n!-1)=1-\frac{1}{n!}$$

  兩邊再求導可得……可得啥來着?稍等……再次留坑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM