Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 查找具有特定属性的哈希函数_Algorithm_Hash_Hash Function - Fatal编程技术网

Algorithm 查找具有特定属性的哈希函数

Algorithm 查找具有特定属性的哈希函数,algorithm,hash,hash-function,Algorithm,Hash,Hash Function,我的问题与这个话题有很大关系: 基本上,我有一组N个数字。N是固定的,通常相当大,例如1000。这些数字可以是整数或浮点。他们可以是平等的,部分或全部。没有数字可以是零 当K为1到N之间的任意值时,K个数的每一个组合都会导致散列的计算 让我们以3个数字为例,我将其称为A、B和C。我需要计算以下组合的哈希: A B C A+B B+C A+B+C A+C 事物是顺序无关的,C+A正好等于A+C.“+”可以是实加法或其他不同的东西,比如XOR,但它是固定的。同样,每个值都可能首先通过一个函数,例

我的问题与这个话题有很大关系:

基本上,我有一组N个数字。N是固定的,通常相当大,例如1000。这些数字可以是整数或浮点。他们可以是平等的,部分或全部。没有数字可以是零

当K为1到N之间的任意值时,K个数的每一个组合都会导致散列的计算

让我们以3个数字为例,我将其称为A、B和C。我需要计算以下组合的哈希:

A
B
C
A+B
B+C
A+B+C
A+C
事物是顺序无关的,C+A正好等于A+C.“+”可以是实加法或其他不同的东西,比如XOR,但它是固定的。同样,每个值都可能首先通过一个函数,例如

f(A)
f(B)
f(A)+f(B)+f(C)
...
现在,我需要避免碰撞,但仅以特定的方式。 每个组合都标记有一个数字,可以是0或1。 可能会发生碰撞,因此,如果可能,只有标记了相同编号(0或1)的碰撞才会发生。在这种情况下,许多冲突甚至是受欢迎的,特别是如果这使得哈希值紧凑的话。我的意思是,理想情况下,最好的散列只有1位长!(0或1)。 如果可能的话,使用不同数字(0和1)标记的组合之间的冲突应该很少发生-这就是重点

让我们举个例子。组合->标记->计算的哈希值:

Combination  Tag  Hash
A          -> 0 -> 0
B          -> 1 -> 1
C          -> 0 -> 2
A+B        -> 0 -> 0
B+C        -> 1 -> 1
A+B+C      -> 1 -> 3
A+C        -> 0 -> 2
这里,散列值是有效的,因为不同标记的组合之间没有冲突。例如,A与A+B碰撞,但它们都被标记为“0”

但是,哈希值总体上不是很好,因为我需要4位,这对于4个输入数字来说似乎很多

如何找到一个好的(足够好的)散列函数


感谢您的见解。

为每个标记值分别设置哈希表怎么样?1。为什么您的表是有效的,而A+C和C有相同的标记和散列,但它们本身是不同的?我认为这是一次碰撞。2.允许碰撞吗?什么意思:应该很少发生?未定义的问题应该关闭!3.数字能与函数结合吗?功能是什么,有多少。。。你应该大大编辑你的问题!为每个标记值单独设置一个哈希表可能确实很有意义。我考虑了一段时间,但这并不能简化我的问题。是吗?你的想法是什么?要找到函数(或者进行有根据的猜测),单个数字也是如此。这基本上就是问题所在。我使用了一个通用的数字求解器,但要找到一个解决方案需要几年的时间。请参考我提供的链接了解更多详细信息,特别是来自“Per”的第一个答案如果组合和有界标记不相关(标记不能通过组合结构预测),那么我怀疑您是否能从标记利用中获得任何利润。