给定两个整数,我需要找到一个唯一的整数。也就是说,给定两个整数 x 和 y..我想找到一个函数 f...它将这些整数唯一地映射到另一个整数 z。那是, z=f(x,y)
这里 x=64 位整数,y=64 位整数。我想将这些数字映射到 z,这样它又是一个 64 位整数。
我尝试了 Cantors 配对函数,但 Cantors 配对函数返回给我一个 128 位的“z”,因为 Cantors 配对函数涉及乘法。我不希望 z 映射到 128 位,因为现代计算机的处理限制只有 64 位。
有什么办法吗?一点点碰撞对我来说是可以接受的。
最佳答案
如果您想对整个 64 位整数范围执行此操作,那么这是不可能的。
您的函数有 2^64 * 2^64 = 2^128
个可能的输入,但您只有 2^64
个不同的输出,这意味着必须至少有 2^64
个数字映射到同一个整数,这远远超过 一点点冲突
关于c++ - 如何将两个正整数映射到一个唯一的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206912/