我正在尋找一個配對函數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