素朴なシャッフルはどの程度漸近的に悪いのでしょうか?


33

各アイテムをランダムに選択された別のアイテムと交換して配列をシャッフルするこの「ナイーブ」アルゴリズムが正しく機能しないことはよく知られています。

for (i=0..n-1)
  swap(A[i], A[random(n)]);

具体的には、n回の反復のそれぞれで、n n選択肢の1つが(一様な確率で)行われるため、計算にはnn可能な「パス」があります。可能な順列のn!は、パスの数に均等に分割されないnnため、このアルゴリズムがそれぞれを生成することは不可能ですn!等しい確率の順列。(代わりに、いわゆるFischer-Yatesシャッフルを使用する必要があります。これは基本的に[0..nから乱数を選択する呼び出しを変更する]と[i..n)から乱数を選択する呼び出しです。それは私の質問には意味がありません。)

私が疑問に思っているのは、素朴なシャッフルはどの程度「悪い」のでしょうか?より具体的には、せるP(n)すべての順列及び組ことC(ρ)得られた順列生成ナイーブアルゴリズムを通じてパスの数であるρP(n)、関数の漸近挙動が何を

M(n)=n!nnmaxρP(n)C(ρ)

そして

m(n)=n!nnminρP(n)C(ρ)

主な要因は、これらの値を「正規化」することです。ナイーブシャッフルが「漸近的に良好」であれば、

limnM(n)=limnm(n)=1

私は(私が見たいくつかのコンピューターシミュレーションに基づいて)実際の値は1から離れていると疑っていますが、が有限であるか、が0?これらの量の振る舞いについて何がわかっていますか?lim m n limM(n)limm(n)


8
いい質問です。この質問に最適な場所はどこかわかりません。別のフォーラムの方が良いことが明らかでない限り、ここに1週間ほど置いておくべきだと思います。満足のいく答えが得られない場合は、他のフォーラムの1つで質問してください(両方の質問にリンクを付けてください) )。
ピーターショー

4
@vzn「既知の欠陥のあるアルゴリズムを厳密に分析するのはなぜですか?」数学興味深いものであり、他のアプリケーションがどこで発生するかわからないためです-たとえば、KnuthのBubble Sortの分析を参照してください。アトウッドのチャートは不均一性の大まかな定性分析を提供しますが、それは数学的な定量分析とはかけ離れています。(そして、フィッシャー・イェーツのシャッフルにはいくつかの異なる同等の定式化があります-私が言及したものはうまく動作します。)
スティーブン・スタドニッキ

4
レコードの場合、OEISシーケンスA192053は最大あり、閉じたフォームをリストしません。また、そのエントリのノートは、minがである可能性があることを示唆してい。これは、を意味し。C ρ 2 n 1 m n 0C(ρ)C(ρ)2n1m(n)0
mhum

2
@vzn未解決の質問の何が問題になっていますか?
ユヴァルフィルム

1
@vznあなたの最後の文に同意しない、「不完全な」シャッフルの多くの分析があります。たとえば、ランダムな転置を行う場合、ランダム性のしきい値はおおよそであることがわかってい。現在の質問は難しいかもしれませんが、「非常に難しい」かどうかを先験的に言うのは難しいです。mhum'sのような答えはすでに非常に満足のいくものであり、この質問はフォーラムにとって適切であり、乗り越えられない障壁(公式な証拠はさておき)を提示しなかったことを示しています。(1/2)nlogn
ユヴァルフィルム

回答:


13

順列が例であることを帰納的に示します。これが最悪の場合、最初の数(OEISシーケンスA192053の注を参照)の場合、ます。したがって、正規化された最大値と同様に、正規化された最小値は「指数関数的に悪い」です。C ρ N= 2 N - 1 N M N 2 / E Nρn=(2,3,4,,n,1)C(ρn)=2n1nm(n)(2/e)n

ベースケースは簡単です。誘導ステップには、補題が必要です。

補題:からへのパスでは、最初の移動で位置とが入れ替わるか、最後の移動で位置が入れ替わりますと。1 2 3 ... N 1 N 1 N(2,3,4,,n,1)(1,2,3,,n)1n1n

証明スケッチ:しないでください。番目の位置を含む最初の動きを考えます。番目の動き、およびと仮定します。この移動では、アイテムを番目の場所に配置する必要があります。次に、アイテム触れる次の動きを考えます。この動きが番目の動きであると仮定します。この移動では、と交換して、アイテムを番目の場所に移動する必要があります(。同様の議論は、アイテムはその後にしか右に移動できないことを示しています。しかし、アイテムI I 1 I N 1 iは1 、J 、I 、J 1 、J 、I < J 1 1 nii1in1i1jij1ji<j11そもそも矛盾に終わる必要があります。

さて、最初の動きが位置と交換する場合、残りの動きはから。残りの動きが最初の位置に触れない場合、これは位置の置換であり、パス。補題の証明に似た議論は、最初の位置に触れる経路は存在しないと言っています。なぜなら、アイテムは間違った位置に到達しなければならないからです。N 1 3 4 5 ... N 2 1 2 3 4 ... N ρ N - 1 2 ... N C ρ N - 1= 2 N - 2 11n(1,3,4,5,,n,2)(1,2,3,4,,n)ρn12nC(ρn1)=2n21

最後の動きが位置と交換する場合、最初の動きは順列順列を取る必要があります。繰り返しますが、これらの動きが最後の位置に触れない場合、これは置換であり、帰納法によりパスがありますそれをします。繰り返しますが、ここで最初のが最後の位置に触れた場合、アイテムが正しい場所に到達することはありません。N N - 1 2 3 4 ... nは1 nは2 3 4 ... N - 1 1 ρ N - 1 C ρ N - 1= 2 N - 2 n 1 11nn1(2,3,4,,n,1)(n,2,3,4,,n1,1)ρn1C(ρn1)=2n2n11

したがって、。C(ρn)=2C(ρn1)=2n1


完璧-補題の背後にある議論は、私がインボリューションがアイデンティティ置換を得る唯一の方法であるものによく似ていますが、明示的なスワップの再帰構造を見逃していました。ありがとうございました!
スティーブンスタドニッキー

10

mhumのOEISへのポインターのおかげで少し掘り下げた後、私は最終的に優れた分析と素敵な(比較的)基本的な議論を見つけました(私が知る限り、GoldsteinとMoews [1]による)超指数関数的に高速に成長します。nM(n)n

任意退縮のアルゴリズムはスワップするので、その結果として、同一の順列を生成する「ナイーブ」シャッフルアルゴリズムの実行に対応する有する、その後交換と、両方の不変を残します。これは、恒等置換をもたらすアルゴリズムの実行数が少なくともインボリューション数であることを意味します(実際、対応が1-1であることが少し考えられているため、正確に) 、したがって、最大値はによって下から制限されます。{ 1 ... N } K ι K ι K k個のQ N Q N M N Q N ι{1n}kι(k)ι(k)kQ(n)Q(n)M(n)Q(n)

Q N C NQ(n)明らかに電話番号を含む多くの名前で行きますhttp : //oeis.org/A000085およびhttp://en.wikipedia.org/wiki/Telephone_number_%28mathematics%29を参照してください。漸近はよく知られており、 ; 再帰関係から、比はを満たし、そこから基本的な分析は漸近の主要な項を取得しますが、他の用語には、より慎重な努力が必要です。「スケール係数」以来 Qn=Qn1+n1Qn2Rn=QnQ(n)C(ne)n/2enQ(n)=Q(n1)+(n1)Q(n2)R(n)=Q(n)Q(n1) n n / 2 n n<R(n)<n+1nn/2 MNCn!nn定義のはのみに関するもので、主要な項が(漸近的に)支配し、降伏します。。M(n) QNMNCNN + 1 / 2 E - 3 N / 2 + CnenQ(n)M(n)Cn(n+1)/2e3n/2+n

実際、GoldsteinとMoewsは[1]で、が大きいに恒等置換が最も可能性が高いことを示しているため、は実際にはあり、動作は完全に安定しています。これにより、動作の問題が未解決のままになります。それが彼らの論文の分析にも屈したとしても、私はあまり驚かないだろうが、基本的な結果を理解するのに十分なだけで、彼らの方法を本当に理解するのに十分に詳しく読む機会がなかった。M N 、M N nM(n)m(n)

[1] Goldstein、D.およびMoews、D .:「アイデンティティは、大きなnの交換シャッフルの可能性が最も高い」、http://arxiv.org/abs/math/0010066


1
順列が例であることを示すのはそれほど難しくありません。これは最悪の場合であれば、それは最初の数のためであるとして、、その後、。C ρ = 2 N - 1 N M N 2 / E N(2,3,4,,n,1)C(ρ)=2n1nm(n)(2/e)n
ピーターショー

@PeterShor基本的な議論はできますか?動作するインボリューション引数のいくつかの単純なバージョンが不足しているように感じますが、私はまったく理解していません。たとえそれが非常に最小限でなくても、それで十分だと思います。最小カウントはの部分指数関数ではないようであり、正規化された最大値と最小値が両方とも「指数関数的に悪い」ことを知っているだけで、かなり満足のいく答えになります。n
スティーブンスタドニッキー

引数付きの回答を追加しました...コメントするには長すぎます。
ピーターショー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.