2011-10-19 7 views
2

だから、均一な点分布の問題はいくつかのよく知られたアルゴリズム(Hammersley、Monte Carloなど)によって解決されます。しかし、私の状況はちょっと違っています。の値が(2、8、1、5、4、7、3、6)になっているとしましょう。これらの値はインデックス(2で始まる)によって順次アクセスされます。それらはX軸上にマッピングされている場合(アクセスパターン、すなわちによって0 1に、2である8れている。)、私はそれらの対応するy値を見つける必要があり、その結果:正方形のランダムな一点分布(キャッチ付き)

  • 全体のポイントセット(両方考えられるx及びy座標)は、ではなく、であり、低矛盾シーケンスである。
  • xの値のペア(入力セット)は、それらの間の最大距離を持つ対応するy値を持たなければなりません。

結果は、別の混合整数[1..8]まず、したがって、すべてのタプルとして(AI、BI)上記2つのルールを以下でBに設定されています。

要約すると、連続したポイントがアクセスされたときに互いに離れているが全体的に均一であるように(あるに関わらず)1つの軸に分布し、分布を見つける必要がある正方形全体に分布する。

例ケース4つの要素(3,1,4,2)、良好な結果セットが(xyはマージ)されるセット入力が与えられると

:((3,1)、(1、あなたがあなたにアクセスするたびに、に大きな飛躍を起こすので、それは良いです。 axes(2)、(4,2)、(2,3)これは、全体的に均等な配分を伴う目標である。同じ入力セットの結果が悪い場合は、y値を連続してアクセスするので((x値はOK))((3,1)、(1,2)、(4,3)、(2,4) 。

これは、サンプリングに使用される事前計算テーブルを満たすために必要なので、最終的なアルゴリズムの速度は重要ではありません(もちろん、2年かかるわけではありません)。どんな助けもありがたい。

おかげ

+1

2番目の状態は分かりません。投稿された例に1つの良い、1つの悪い解決策を書いて、それらが良い/悪い理由を説明してください。 – Dialecticus

+0

@Dialecticus Ok、例を追加しました。今はっきりしていることを願っています。 –

+0

実際には、正方形のランダムな点ではなく、[1..n]のランダムな範囲内のランダムな順列*を求めていますか? 'n 'が小さければ、すべての' n!'順列の適性を計算し、一様に「十分に良い」ものを選択します。 – AakashM

答えて

0

あなたはおそらくこれを達成するために分割統治戦略を使用することができます。基本的に、1:nの順列が必要な場合は、1:n/2と(n/2 + 1):nの順列を作成し、それらをランダムに散在させます。ここで

は、あなたがランダムにまき散らすことができる方法です。

function permute(x,y): 
    L1 = permute(x, (x+y)/2) 
    L2 = permute((x+y)/2+1, y) 
    spin = randomlyselectfrom(-1,1) 
    L = [] 
    while L1 and L2 are not empty: 
     if spin<0: 
      L.enqueue(L1.dequeue) 
     else: 
      L.enqueue(L2.dequeue) 
     if random()<0.9: 
      spin = -spin 
    return L 

私はあなたがその部分の世話をする方法がわからない場合は私にお気軽に、境界条件などをチェックして残っています。

上記の方法で2つのランダムなシーケンスが得られたら、それらの1つを逆にしてペアにすると、必要なペアシーケンスが得られます。

関連する問題