我有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在上下限制的假设。