素朴なシャッフルはどの程度漸近的に悪いのでしょうか?
各アイテムをランダムに選択された別のアイテムと交換して配列をシャッフルするこの「ナイーブ」アルゴリズムが正しく機能しないことはよく知られています。 for (i=0..n-1) swap(A[i], A[random(n)]); 具体的には、nnn回の反復のそれぞれで、n nnn選択肢の1つが(一様な確率で)行われるため、計算にはnnnnn^n可能な「パス」があります。可能な順列のn!n!n!は、パスの数に均等に分割されないnnnnn^nため、このアルゴリズムがそれぞれを生成することは不可能です!n!n!n!等しい確率の順列。(代わりに、いわゆるFischer-Yatesシャッフルを使用する必要があります。これは基本的に[0..nから乱数を選択する呼び出しを変更する]と[i..n)から乱数を選択する呼び出しです。それは私の質問には意味がありません。) 私が疑問に思っているのは、素朴なシャッフルはどの程度「悪い」のでしょうか?より具体的には、せるP(n)P(n)P(n)すべての順列及び組ことC(ρ)C(ρ)C(\rho)得られた順列生成ナイーブアルゴリズムを通じてパスの数であるρ∈P(n)ρ∈P(n)\rho\in P(n)、関数の漸近挙動が何を M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)\qquad \displaystyle M(n) = \frac{n!}{n^n}\max_{\rho\in P(n)} C(\rho) そして m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ)\qquad \displaystyle m(n) = \frac{n!}{n^n}\min_{\rho\in P(n)} C(\rho)? 主な要因は、これらの値を「正規化」することです。ナイーブシャッフルが「漸近的に良好」であれば、 limn→∞M(n)=limn→∞m(n)=1limn→∞M(n)=limn→∞m(n)=1\qquad \displaystyle \lim_{n\to\infty}M(n) = \lim_{n\to\infty}m(n) = 1。 私は(私が見たいくつかのコンピューターシミュレーションに基づいて)実際の値は1から離れていると疑っていますが、が有限であるか、が0?これらの量の振る舞いについて何がわかっていますか?lim m (n )limM(n)limM(n)\lim M(n)limm(n)limm(n)\lim m(n)