からの一連の数字があるとし[0, ....., 499]
ます。現在、組み合わせは C++ を使用して順次生成されていますstd::next_permutation
。参考までに、私が引き出している各タプルのサイズは 3 なので、 のような順次結果を返してい[0,1,2], [0,1,3], [0,1,4], ... [497,498,499]
ます。
ここで、これが含まれているコードを並列化したいので、これらの組み合わせの順次生成は機能しなくなります。ith
500 個の数字から 3 個の組み合わせを計算する既存のアルゴリズムはありますか?
取得するループの反復に関係なく、各スレッドが、反復する に基づいてスタンドアロンの組み合わせを計算できるようにしたいと考えていますi
。したがってi=38
、スレッド 1 での組み合わせが必要な場合は、スレッド 2 で を計算[1,2,5]
しながら同時にを計算できます。i=0
[0,1,2]
編集以下のステートメントは無関係です、私は自分自身を混同しました
階乗を利用して個々の要素を左から右に絞り込むアルゴリズムを見てきましたが、これらを500として使用することはできません! 確かにメモリに収まりません。助言がありますか?