セット S の 2 つの要素に対して関数を計算する必要がある Cuda アプリケーションを作成していますが、ペアの順序は何の違いもありませんf(a,b)
。f(b,a)
そのため、セット間で要素のペアを複製することなく、最大サイズ K の S のすべてのサブセットを生成したいと考えています。
言い換えれば、任意の 2 つのサブセットが与えられた場合、それらの共通部分が 1 つの要素よりも大きくなりたくないということです。(このようにして、これらの 2 つの要素の関数を複数回計算することを避けることができます)
例:
と が与えられるS={1,2,3,4,5,6,7,8,9}
とK=3
、出力は次のようになります。
{ {1,2,3}, {1,4,5}, {1,6,7}, {1,8,9}, {2,4,6}, {2,5,7}, {2,8}, {2,7,9}, {3,4,7},
{3,5,8}, {3,6,9}, {4,5,9} }
ただし、出力は次のようにはなりません。
{ {1,2,3}, {1,4,5}, {1,6,7}, {1,8,9}, {2,4,6}, {2,5,7}, {2,6,8}, {2,7,9}, {3,4,7},
{3,5,8}, {3,6,9}, {4,5,9} }
{2,4,6}
との交点{2,6,8}
は です{2,6}
。