ランダムにマルチセットの2つの拡散した混乱した順列を生成する効率的なアルゴリズム


13

バックグラウンド

nビー玉の同一のバッチが2つあるとします。各大理石はc色のいずれかです(cn。してみましょうni色のビー玉の数表すi各バッチでを。

ましょうSマルチセットである{1,,1n1,2,,2n2,,1c,,cnc}は1つのバッチを表します。で周波数表現Sまた、のように書くことができる(1n12n2cnc)

\ msSの異なる順列の数はS多項式によって与えられます:

|SS|=(nn1,n2,,nc)=n!n1!n2!nc!=n!i=1c1ni!.

質問

ランダムに\ msSの 2つの拡散した混乱した順列PおよびQを生成する効率的なアルゴリズムはありますか?(分布は均一でなければなりません。)QS

  • 順列Pある拡散すべての異なる要素の場合iPのインスタンスiで略均等に離間されているP

    たとえば、\ msS =(\ po ^ 4 \; \ pt ^ 4)= \ {\ po、\ po、\ po、\ po、\ pt、\ pt、\ pt、\ pt \}と仮定しますS=(1424)={1,1,1,1,2,2,2,2}

    • {1,1,1,2,2,2,2,1}は拡散していません
    • {1,2,1,2,1,2,1,2}は拡散

    より厳密に:

    • 場合、に「スペース」するインスタンスは1つだけなので、ます。、I P Δ I = 0ni=1iPΔ(i)=0
    • それ以外の場合、をのインスタンスとインスタンスの間の距離  とします  。それからインスタンス間の予想距離を引き、以下を定義します: がで等間隔の場合、はゼロ、または場合はゼロに非常に近くなります。j j + 1 i Pd(i,j)jj+1iPδ I J = D I J )、- Ni I
      δj=djnn=j=1n1δj2
      Δ I N INPnn

    次に、統計を定義して、すべてのが等間隔に配置されている量を測定します。がゼロに近い場合、またはおおよそ場合、 diffuse を呼び出します。(一つが閾値を選択することができに特定ように拡散している場合)。、I P P S P S P « N 2 K « 1 S P S P < K N 2sP==1cPPsPsPn2k1SPsP<kn2

    この制約は、マルチセット(したがって)および密度の風車問題と呼ばれるより厳密なリアルタイムスケジューリング問題を想起させます。。目的は、長さサブシーケンスが少なくとも1つのインスタンスを含むように、循環無限シーケンスをスケジュールすることです。言い換えれば、実行可能なスケジュールにはすべてのです。場合密である()、次いで及び。風車の問題はNP完全なようです。I = N / N I ρ = Σ C iは= 1、N I / N = 1 P A I I D I J A I A ρ = 1 、D I J = A i s P = 0A=n/Sa=n/nρ==1cn/n=1PadjaAρ=1dj=asP=0

  • 二つの順列とされている錯乱場合ある撹乱の ; つまり、すべてのインデックスに対してです。QPQPP IQ I I [ N ]QPQ[n]

    たとえば、と仮定します。S=(1222)={1,1,2,2}

    • {1212}およびは乱れません{1122}
    • {1212}およびは乱れています{2121}

探索的分析

私はとのマルチセットの家族に興味とのための。特に、。N I = 4 I 4 D = 1 4n=20n=44D=1424344352617181

  • 2つのランダム順列確率とのされている錯乱は約3%です。Q DPQD

    これは次のように計算できます。ここで、は番目のラゲール多項式です。説明については、こちらを 参照してください。 k | D D |Lkk

    |DD|=0dteti=1cLni(t)=0dtet(L4(t))3(L3(t))(L2(t))(L1(t))3=4.5×1011|SD|=n!i=1c1ni!=20!(4!)3(3!)(2!)(1!)3=1.5×1013p=|DD|/|SD|0.03
  • ランダム順列の確率のある拡散は略で任意の閾値設定、0.01%程度である。DPDs(P)<25

    以下は、 100,000サンプルの経験的確率プロットです。ここで、はランダム置換です。P Ds(P)PD

    培地サンプルサイズで、。s(P)Gamma(α8,β18)

    Ps(P)cdf(s(P)){1,8,2,3,4,1,5,2,3,6,1,4,2,3,7,1,5,2,4,3}1191<105{8,2,3,4,1,6,5,2,3,4,1,7,1,2,3,5,4,1,2,3}140916<104{3,6,5,1,3,4,2,1,2,7,8,5,2,4,1,3,3,2,1,4}650972<10.05{3,1,3,4,8,2,2,1,1,5,3,3,2,6,4,4,2,1,7,5}12239136<10.45{4,1,1,4,5,5,1,3,3,7,1,2,2,4,3,3,8,2,2,6}16979189<10.80

2つのランダムな順列が有効である確率(拡散と両方)は、 です。v(0.03)(0.0001)21010

非効率的なアルゴリズム

セットのランダムな混乱を生成する一般的な「高速」アルゴリズムは、拒否ベースです。

do
     P ←random_permutation(D)
is_derangement(DP)までPを 
返す

ほぼ混乱が生じる可能性があるため、約回の反復が必要です。ただし、拒否ベースのランダム化アルゴリズムは、回の反復の順序を取るため、この問題に対して効率的ではありません。en!/e1/v1010

Sageが使用するアルゴリズムでは、マルチセットのランダムな混乱は「可能なすべての混乱のリストからランダムに要素を選択することによって形成されます。」しかし、を列挙するには有効な順列であり、その上、とにかくそれを行うにはアルゴリズムが必要です。v|SD|21016

さらなる質問

この問題の複雑さは何ですか?ネットワークフロー、グラフの色付け、線形プログラミングなど、おなじみのパラダイムに縮小できますか?


「スペース」の定義に関しては、 for withは歩asとして?つまり、単一の要素が中央にあり、2つの要素が順列を3分の1に分割する、という具合です。d(i,j)n/(ni+1)0ijn+1P0=Pn+1=i
ラファエル

が悪の(小さいが十分に大きい)の場合、どうなりますか。私たちも、ない持っているよりも拡散順列を?私たちは確かに2つの混乱したものを見つけるために変化に耐えません!どの要素も回以上は発生しないようです。S={1nk,2k}kn/2
ラファエル

1
拡散順列のすべてのペアのうち、混乱した順列のすべてのペアの比率は何ですか?同様に、混乱した順列のすべてのペアのうち、いくつが2つの拡散順列で構成されていますか?(どちらかの比率が「高い」場合、プロセスの半分に努力を集中し、残りを拒否します。)
ラファエル

1
@Raphael(#3a) 100万のランダムな順列のうち、これら561個の拡散したものには。のペアがます。Ds(P)306118/(5612)=6118/1570803.9%
hftf

1
@Raphael(#3b)順列のランダムなペア1,000万個のうち、306893個のペアが乱れました。これらのペアのうち29のみが両方の順列を。これがヒストグラム)です。Ds(P)50
hftf

回答:


3

一つのアプローチ:あなたは次のような問題にこれを削減することができます:ブール式が与えられ、割り当てを選択するには、、すべての条件を満たす割り当ての中からランダムに一様。この問題はNP困難ですが、ほぼ均一に分布するを生成するための標準アルゴリズムがあり、#SATアルゴリズムからメソッドを借用しています。たとえば、1つの手法は、範囲が慎重に選択されたサイズ(満足できる割り当ての数とほぼ同じサイズ)を持つハッシュ関数を選択し、の範囲内からランダムに値一様に選択することですφ(x)xφ(x)xhφyh、そしてSATソルバーを使用して、式への満足のいく割り当てを見つけます。効率的にするために、を疎な線形マップとして選択できます。φ(x)(h(x)=y)h

これは大砲でノミを撃つかもしれませんが、実行可能な他のアプローチがない場合は、これを試すことができます。


これを見つけるのは難しい。はブール値であり、はバイナリ文字列(バイナリ変数のセット)ですか?最終的な方程式は...?φバツhバツ
vzn

0

この問題の拡張された議論/分析は、問題の複雑な要件の主観性を明らかにしましたが、完全なエラーや見落としを発見しなかったさらなる背景を持つcsチャットで始まりました。1

ここにいくつかのテスト/分析されたコードがあります。SATに基づく他のソリューションと比較すると、比較的「迅速かつ汚い」ですが、デバッグするのは簡単ではありません。その緩く概念的例えばと少し似て地元の擬似ランダム/貪欲最適化方式に基づいて、2-OPTをするためにTSP。基本的な考え方は、何らかの制約に適合するランダムなソリューションから始めて、それを局所的に摂動させて改善を探し、欲張りに改善を探してそれを反復し、すべての局所改善が使い果たされたら終了することです。設計基準は、アルゴリズムが可能な限り効率的である/拒否を回避することであるということでした。

たとえばSAGE [5]で使用されている混乱アルゴリズム[4]にはいくつかの研究がありますが、それらはマルチセットを中心としたものではありません。

単純な摂動は、タプル内の2つの位置の「スワップ」のみです。実装はルビーです。以下は、行番号を参照した概要/メモです。

qb2.rbgist -github)

ここでのアプローチは、2つの乱れたタプル(#106)から始めて、局所的/貪欲に分散を改善し(#107)、derangesperse混乱を保持する(#97)と呼ばれる概念に結合します。タプルペアの2つの同じ位置を交換すると、混乱を保持し、分散を改善できることに注意してください。これは分散メソッド/戦略の一部です。

derangeサブルーチンは、後にスワップが同じ要素(#10)ではない配列の要素を持つ配列(マルチセット)とスワップに左から右に働きます。最後の位置にさらにスワップがなくても、2つのタプルの配列がまだ乱れている場合(#16)、アルゴリズムは成功します。

初期タプルを整理するための3つの異なるアプローチがあります。2番目のタプルp2は常にシャッフルされます。タプル1(p1)から開始できます。a.「最高次数1次」(#128)、b.シャッフル次数(#127)、c.および「最低次数1次」(「最大次数最後」)(#126)で順序付けられます。

分散ルーチンdisperseはより複雑ですが、概念的にはそれほど難しくありません。再びスワップを使用します。一般的にすべての要素の分散を最適化しようとするのではなく、現在の最悪のケースを繰り返し軽減しようとします。アイデアは、左から右へ、最初の最小分散要素を見つけることです。摂動はx, y、最小分散ペアの左または右の要素(インデックス)を他の要素と交換しますが、ペア間では決して交換せず(常に分散を低下させます)、同じ要素と交換しようとすることをスキップします(select#71で) 。mペアの中点インデックスです(#65)。

ただし、分散は、各ペア(#25、#44)の「最小/左端」分散を使用して、ペア(#40)の両方のタプルで測定/最適化されます。

スワップ「遠い」の要素1にアルゴリズム試行STsort_by / reverse#71)。

true, false最小分散ペアの左または右の要素(#80)を交換するかどうかを決定するための2つの異なる戦略があります。左要素を右要素に、左要素を右要素に、または左端要素を右端に配置します。スワップ要素からの分散ペアで。

分散を改善できなくなった場合(#91)、アルゴリズムは終了します(最悪の分散ロケーションを右に移動するか、タプルペア全体で最大分散を増やします(#85))。

統計はc、3つのアプローチ(#116)とc= 1000のデレンジスパーゼ(#97)での= 1000の混乱を超える拒否の出力であり、拒否(#19、#106)からの混乱したペアの2つの分散アルゴリズムを調べます。後者は、(平均的な分散を保証した後)合計平均分散を追跡します。実行例は次のとおりです

c       0.661000
b       0.824000
a       0.927000
[2.484, 2, 4]
[2.668, 2, 4]

これは、a-trueアルゴリズムが〜92%の非拒否と〜2.6の平均最悪分散距離で最高の結果を提供し、1000回の試行で保証された最小2、つまり、すべての同じ要素ペア間に少なくとも1つの等しくない介在要素が得られることを示しています。3つの等しくない介在要素という高いソリューションが見つかりました。

混乱アルゴリズムは線形時間事前拒否であり、分散アルゴリズム(混乱した入力で実行)はおそらくです。Onログn

1問題は、いわゆる「feng shui」[1]または「nice」がやや主観的で、まだ「公式に」定量化されていない「nice」ランダム順序を満たすクイズボウルパケット配置を見つけることです。この問題の著者は、クイズボウルコミュニティと「風水の専門家」による研究に基づいて、分析し、それを混乱/分散基準に減らしました。[2] 「風水ルール」にはさまざまなアイデアがあります。一部の「公開された」研究はアルゴリズムについて行われていますが、初期段階にあります。[3]

[1] パケット風水 / QBWiki

[2] クイズボウルパケットと風水 / Lifshitz

[3] 質問の配置、HSQuizbowlリソースセンターフォーラム

[4] ランダムな混乱の生成 /マルチネス、パンホルツァー、プロディンガー

[5] セージ混乱アルゴリズム(python)/ McAndrew


さらに考えてみて、狂気のルーチンに不具合があり、それが常に狂わない。スワップ位置は、何もスワップせずに進む場合があります。成功を正しくテストするための簡単な修正があります。
vzn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.