0

N 個のデータ要素 (たとえば、1:N) があり、2 つの異なるグループに分散したいと考えています。最適な分布がわからないので、考えられるすべての組み合わせをテストしたいのですが、対称的な結果は無視します。

そのような結果を持つ関数が必要です:

>> pairings(1:2)
{
  [1], [2]
}

>> pairings(1:3)
{
  [1], [2,3]
  [2], [1,3]
  [3], [1,2]
}

>> pairings(1:4)
{
  [1], [2,3,4]
  [2], [1,3,4]
  [3], [1,2,4]
  [4], [1,2,3]
  [1,2], [3,4]
  [1,3], [2,4]
  [1,4], [2,3]
}

もちろん、多くのループを使用するアルゴリズムは簡単に記述できますが、より matlab に似たソリューションがあると思います。

4

1 に答える 1

1

これは基本的に、べき乗列挙の問題です。要素が 2 つのセットの最初にあると仮定し1ます。要素のベキ集合を列挙します2 .. N。これは、 からの 2 進数をループすることで実行できます1 .. 2^(N-1)1要素をペアの最初のセットとして結果セットに追加します。結果セットの補数を他のセットとして取得します。問題に関連しない場合は、空のセットをサブセットとして破棄します。

于 2012-11-10T05:45:11.020 に答える