私の無知を示す危険を冒して、i と M はどのように定義されますか? M はサイズに等しいと推測し、i は挿入数のカウンターであると推測しましたが、それは出力に加算されません。ただし、私の実装は 26 ではなく 42 で衝突します。つまり、衝突する前にキースペースの半分以上を使用しました。
しかし、i like を指定すると、位置が挿入順序に依存することに気付きました。
その時点で私はすでに回答していましたが、パニックになって削除しました。インターネット上で愚かに見えることはありません。インターネットは決して忘れません。しかし、ハッシュについて間違った考えを持っていたのではないかと考え始めました。数値は個別の単位ではなく、全体としてハッシュされたものの一部であり、順序の依存関係は正しいのかもしれません。
誰かが私のワイルドな当て推量を改善できますか?
では、これを展開しましょう。
hash(x) = x % M
hash2(x) = 13 - (x % 7)
f(i) = i * hash2(x)
hi(x) = (hash(x) + f(i)) % M
for: i=0、M=10、x=27
hash(x) = 27 % 10 -> 7
hash2(x) = 13 - (27 mod 7) -> 7
f(i) = 0 * 7 - > 0
hi(x) = (7 + 0) % 10 -> 7
for: i=1、M=10、x=22
hash(x) = 22 % 10 -> 2
hash2(x) = 13 - (22 mod 7) -> 12
f(i) = 1 * 12 - > 12
hi(x) = (12 + 12) % 10 -> 4
for: i=2、M=10、x=16
hash(x) = 16 % 10 -> 6
hash2(x) = 13 - (16 mod 7) -> 11
f(i) = 2 * 11 - > 22
hi(x) = (6 + 22) % 10 -> 8
ご覧のとおり、それはあなたが持っていたものから非常に急速に発散します