次の特性を持つnビット数からnビット数までの関数があるかどうかを知りたい:
- は全単射で必要があります
- 両方の及び計算可能かなり高速であるべきです
- は、入力と有意な相関関係のない数値を返す必要があります。
その理由は次のとおりです。
データを操作するプログラムを書きたい。データの一部の情報は、検索キーがアルファベットの記号であるバイナリ検索ツリーに保存されます。時間とともに、アルファベットにさらに記号を追加します。新しいシンボルは、利用可能な次の無料番号を取得するだけです。したがって、ツリーは常に小さなキーに対して小さなバイアスを持ち、必要以上にリバランスが発生します。
私のアイデアは、シンボル番号を範囲全体に広く広がるようにマングルすることです。シンボル番号は、一度だけ発生する入出力中にのみ重要であるため、このような関数を適用することはそれほど高価ではありません。
Xorshift乱数ジェネレーターの1つの反復について考えましたが、理論的には可能であるはずですが、元に戻す方法は実際にはわかりません。
誰もがそのような機能を知っていますか?
これはいいアイデアですか?