連続する整数値のセットと、それに対応する非連続値のセットがあります。次に例を示します。
0 -> 22
1 -> 712
2 -> 53
3 -> 12323
...
等々。
項目の量が非常に多い (約 10^9...10^10) ため、単純な配列だけを使用することはできません。
中程度のメモリ要件で最初の値から別の値に高速にマッピングできるデータ構造はありますか? 例えば:
ret = map(0); // returns 22
ret = map(3); // returns 12323
編集: このセットの値は実際には疑似乱数ジェネレーターを使用して生成されるため、特定の分布を示唆することはできません。質問は - メモリ要件を下げることは可能ですか (検索速度が犠牲になる可能性があります)? 「完全なハッシュ」のようなものを使用することを意味します-そのような「完全なハッシュ」を生成するのに必要な時間は問題ではありません。