3个整数的散列函数

问题描述 投票:0回答:1

我有3个非负整数和一个数字n

0 <= a <= n, 0 <= b <= n, and 0 <= c <= n. 

我需要一个单向散列函数,将这3个整数映射到一个整数(可以是任何整数,正数或负数)。有没有办法做到这一点,如果是这样,怎么样?有没有办法使这个函数可以表示为一个简单的数学表达式,其中唯一的参数是a,b,c和n?

注意:我需要这个函数,因为我使用3个整数的元组作为python上字典中的键,并且使用10^10键的向上,空间是一个真正的问题。

hash hashcode
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.