パワーセットでセットを見つけようとしていますn-th
。つまり、べき集合は次の順序で生成されます。n-th
最初はサイズで、次に辞書式順序で生成されます。したがって、のべき集合の集合のインデックスは次のようになります[a, b, c]
。
0 - []
1 - [a]
2 - [b]
3 - [c]
4 - [a, b]
5 - [a, c]
6 - [b, c]
7 - [a, b, c]
解決策を探しているときに見つけたのは、要素のリストのn番目の順列を返すアルゴリズムだけでした。たとえば、ここにあります。
コンテキスト:
要素のベクトルのべき集合全体を取得しようとしていますV
が、一度に1つのセットでこれを行う必要があります。
要件:
- 同時に維持できるのは2つのベクトルのみです。最初のベクトルはリスト内の元のアイテムを含み、2番目のベクトル
n-th
はのべき集合からのセットV
を持ちます。そのため、n-th set
ここで関数を使用します。 - これは、ソリューションの空間で線形時間ではなく実行する必要があります。つまり、すべてのセットをリストすることはできず、
n-th
1つを選択します。 - 私の最初のアイデアは、ビットを使用して位置を表し、必要なものの有効なマッピングを取得することです。これは、投稿した「不完全な」ソリューションです。