我正在寻找一个配对函数f:ZXZ - > Z,具有以下特点:射配对功能
- 它并不需要是可逆的。我只需要它注射(不同的对映射到不同的整数),我从不需要计算回来。
- 据环Z定义(带符号的整数)
- 它是高效计算
此刻,我使用的F(X,Y)= X +(MAX(X)-min( X)+1)* Y
它的工作原理,我只是想知道是否有可能是更有效地使用结果空间,考虑到另一个功能:
- x,y是符号整数最多64位
- F(X,y)是一个整数,至多64个比特
- LEN(F(X,Y))< = 64位是易于计算
我知道这意味着我不能映射所有x,y组合都不会溢出。 我很高兴能够确定转换是否适合64位。 因此,理想的映射函数将尽可能高效地使用可用的64位。
任何提示?
哈罗德,正如我所说,我知道它不可能存在所有的价值。但这取决于值,而不是数据类型。例如。 f(4,5)仍然可以完成,即使当4和5存储为64位整数时也是如此。根据所使用的函数来检查溢出是很容易的(在这种情况下,我不会使用映射)。我只是想知道是否放松的可逆性可以带来空间使用方面的任何好处 – cornuz 2012-03-04 20:36:37
你知道有'(2 ^(2^128))^ 64'不同的功能满足您的要求吗?附:没有组成一个大数字 - 这是从128位到64位的功能数量。 – amit 2012-03-04 20:52:51
然后,只要它不溢出,那么'((x + y)*(x + y)+ x - y)/ 2'怎么样。 – harold 2012-03-04 21:10:33