私は、特定の方法でセットのパーティションを生成したいと思います。これらのパーティションを生成する過程でサイズNではないすべてのパーティションをフィルタリングする必要があります。一般的な解決策は "Generate all “unique” subsets of a set (not a powerset)"です。特定のサイズのセットパーティションを生成するにはどうすればよいですか?
[a,b,c]
[a,b]
[c]
[d,e,f]
[d,f]
[e]
、以下「ユニーク」要素:以下の部分集合との組S
について
a, b, c, d, e, f
N = 2
あるべき引数で実行している関数/メソッドの結果:
[[a,b,c], [d,e,f]]
次のパーティションは基礎となるデータ構造は重要ではなく、アレイ、セットまたは何であってもよい
[[a,b,c], [d,f], [e]]
[[a,b], [c], [d,e,f]]
[[a,b], [c], [d,f], [e]]
:関数/メソッドによってフィルタリングされます。
理由:すべてのパーティションを生成する関数/メソッドではなく、計算集約的であるので、私は、私はすべてのパーティションの完全なセットを持って前にいくつかのパーティションをフィルタリングする必要があります。
"Generating the Partitions of a Set" によると、可能なパーティションの数が膨大なことができます:44152005855084346 23のための要素。私のデータは開始セットの50〜300個の要素なので、どこにでも保存する前に、サイズがN以外のパーティションをフィルタリングする必要があります。
あなたは 'Set'オブジェクト、または配列を使用していますか? –
なぜ 'N = 2'は3つの要素を持つセットを生成するのですか?ゼロベースのカウントを使用していますか?それとも、結果セット内のサブセットの数ですか? – Phrogz
@m_x、私は配列を使用します。 – skanatek