我有 3 个非负整数和一个数 n 使得
0 <= a <= n, 0 <= b <= n, and 0 <= c <= n.
我需要一个单向哈希函数,将这 3 个整数映射到一个整数(可以是任何整数,正数或负数)。有没有办法做到这一点,如果是这样,怎么做?有没有办法让这个函数可以表示为一个简单的数学表达式,其中唯一的参数是 a、b、c 和 n?
注意:我需要这个函数,因为我使用 3 个整数的元组作为 python 字典中的键,并且 10^10
键,空间是一个真正的问题。
最佳答案
Cantor 配对函数 (https://en.wikipedia.org/wiki/Pairing_function#Cantor_pairing_function) 怎么样?
让 H(a,b) := .5*(a + b)*(a + b + 1) + b
然后
H(a,b,c) := .5*(H(a,b) + c)*(H(a,b) + c + 1) + c
您提到您需要单向哈希,但根据您对内存限制的详细描述,可逆哈希似乎也足够了。
这不使用 a、b 和 c 上下有界的假设。
关于3 个整数的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38965931/