私は現在、数理最適化問題のアルゴリズムに取り組んでおり、次の状況に対処する必要があります。
多くの状況で、アルゴリズムはこの状況でどのサブセットS⊂Nが最適であるかを決定する必要があります。
N = {0、1、2、...、126、127}
| S | ∈{0、1、2、3、4、5}(サブセットのサイズは0から5の間です)
これにより、可能なサブセットの総数は265.982.833になります。(binom(128、5)+ binom(128、4)+ ... + binom(128、0))
可能なすべてのサブセットを事前に計算して配列に格納すると、この配列には265.982.833エントリがあり、メモリフットプリントは約1.27 GBになります。最適化を行わず、サブセットをバイト配列として単純に格納する必要はありません。
この場合、アルゴリズムがインデックスiの特定のサブセットに含まれる要素を知る必要がある場合は、テーブルルックアップのみが必要です。ただし、膨大なメモリ要件は受け入れられません。
したがって、私の質問は基本的に、事前に計算された配列を必要とせずに、インデックスiに基づいてサブセット内の要素を効率的に計算するアルゴリズムを誰かが考えることができるかどうかです。
含まれているサンプルの編集:
lookupTable [0] = {}
lookupTable [1] = {0}
...
lookupTable [127] = {126}
lookupTable [128] = {127}
lookupTable [129] = {0、1}
lookupTable [ 130] = {0、2}
...
lookupTable [265982832] = {123、124、125、126、127}