Arrays 如何将数字的有序数组散列为唯一整数?

Arrays 如何将数字的有序数组散列为唯一整数?,arrays,hash,Arrays,Hash,我有许多数组,每个数组包含从0到n-1的数字(其中n是一个相对较小的数字,不大于1024) 例如,当n=3时,我有: [0,1,2],[0,2,1],[1,2,0],[2,1,0],[2,0,1],[1,0,2] 我想写一个函数,它接受这些数组中的一个,并将其映射到一个唯一的整数。对于上述情况,我可以分配第一个数组0,然后分配1,依此类推。这将是一个可接受的解决办法 然而,随着n变大,我无法列举所有可能的排序。我需要一个hash函数,它接受一个数组,并且能够根据它的顺序单独计算它的唯一hash

我有许多数组,每个数组包含从0到n-1的数字(其中n是一个相对较小的数字,不大于1024)

例如,当n=3时,我有:

[0,1,2],[0,2,1],[1,2,0],[2,1,0],[2,0,1],[1,0,2]

我想写一个函数,它接受这些数组中的一个,并将其映射到一个唯一的整数。对于上述情况,我可以分配第一个数组0,然后分配1,依此类推。这将是一个可接受的解决办法

然而,随着n变大,我无法列举所有可能的排序。我需要一个hash函数,它接受一个数组,并且能够根据它的顺序单独计算它的唯一hash


这可能吗?有没有好的(相对简单的)解决方案?

唯一的整数
散列有很小的冲突机会,但它不是唯一的。如果您想要唯一,那么只需获取数字本身并构造一个数字,就像
arr[0]这是术语的冲突。例如,“完美散列函数”在键提前已知时映射到唯一的整数。当然,然后您知道
不大于1024
-因此,假设每个数字都是以1024为基数的数字,并且您有一个唯一的整数。例如,将每个数字乘以1024及其在数组中的位置。您所描述的听起来不像是散列函数。@PresidentJamesK.Polk您和前面的评论者似乎认为散列函数是非唯一的。事实并非如此: