19 algorithm hashtable collision
我刚发现杂音哈希,似乎是最快的已知和相当抗冲突.我试图在完整的源代码中挖掘更多关于算法或实现的内容,但我很难理解它.有人可以在这里解释所使用的算法,或者在完整的源代码中实现它,最好是在C中.我从作者网站上读到了C源代码但是不知道,比如:什么是seed,h,k,m?这是什么意思 :
k *= m;
k ^= k >> r;
k *= m;
h *= m;
h ^= k;
data += 4;
len -= 4;
Run Code Online (Sandbox Code Playgroud)
???
参考:http://murmurhash.googlepages.com/
抱歉我的英语和我的愚蠢.干杯
Murmur 算法的最佳解释是在Murmur Hash Wikipedia页面上:
Murmur3_32(key, len, seed)
//Note: In this version, all integer arithmetic is performed
//with unsigned 32 bit integers. In the case of overflow,
//the result is constrained by the application
//of modulo 232 arithmetic.
c1 ? 0xcc9e2d51
c2 ? 0x1b873593
r1 ? 15
r2 ? 13
m ? 5
n ? 0xe6546b64
hash ? seed
for each fourByteChunk of key
k ? fourByteChunk
k ? k × c1
k ? (k ROL r1)
k ? k × c2
hash ? hash XOR k
hash ? (hash ROL r2)
hash ? hash × m + n
with any remainingBytesInKey
remainingBytes ? SwapEndianOrderOf(remainingBytesInKey)
// Note: Endian swapping is only necessary on big-endian machines.
remainingBytes ? remainingBytes × c1
remainingBytes ? (remainingBytes ROL r1)
remainingBytes ? remainingBytes × c2
hash ? hash XOR remainingBytes
hash ? hash XOR len
hash ? hash XOR (hash SHR 16)
hash ? hash × 0x85ebca6b
hash ? hash XOR (hash SRH 13)
hash ? hash × 0xc2b2ae35
hash ? hash XOR (hash SHR 16)
而我自己的:
| 归档时间: |
|
| 查看次数: |
15699 次 |
| 最近记录: |