問題タブ [bijection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
256 参照

algorithm - トリプル CRC-32 は、安全でない均一分散ハッシュを生成するための悪い (またはそうでない) アイデアですか?

288 ビットの入力があります (4 × 32 ビットの恒等関数出力と 10 × 16 ビットの整数で構成されます)。衝突をできるだけ少なくして、これを 96 ビットにハッシュする必要があります。目標は、確率論的衝突によるキー圧縮と言えます。

CRC は全単射ハッシュであるため、100% 均等な分布が保証されることは承知しています (私が理解しているとおり)。私の見解では、入力を介して 3 つの並列 CRC パスを実行できるはずであり、その結果、最適な分散の 96 ビットの非可逆ハッシュ (明らかに全単射ではない) が得られます。

ただし、CRC がそのようなアプリケーションに使用されていないことも認識しています。通常、MetroHash などのアルゴリズムが使用されます。

このアプリケーションにとって CRC が悪い (またはそうでない) 考えである理由を誰か説明してもらえますか?

注: これは、安全なものを意図したものではありません。

0 投票する
0 に答える
17 参照

python - 1 対 1 の関係を表す

Python で 1 対 1 の関係を表現する必要が生じました。

最も簡単な方法は、タプルのリストを用意することです。[(thing_one, thing_two]. しかし、これにより、O(N) の翻訳/削除/挿入時間が得られます。理想的ではありません。

one_to_two次に、2 つの辞書、を使用できます two_to_one。これにより、O(1) の翻訳/挿入/削除が得られます。しかし、一方を他方なしで更新することを忘れがちで、この関係を表すために必要なメモリ量が 2 倍になります。これをクラスにラップして全単射を強制することはできますが、それでも情報の重複は解決されません。

このような関係を表す良い方法はありますか? できれば O(1) ops で、データの重複はありませんか? これを処理するPythonモジュールでしょうか?