📜  哈希中的折叠方法

📅  最后修改于: 2021-10-28 01:30:41             🧑  作者: Mango

散列中的折叠方法它将键值分解为精确的段,这些段相加形成散列值,另一种技术是在添加之前分别对每个段应用乘法散列函数。一些折叠方法更进一步,在添加之前每隔一块翻转一次。这种折叠方法与分布无关

算法:

  • 折叠方法用于创建散列函数,从将项目分成相等大小的部分开始,即最后一个部分可能不相等。
  • 将这些位加在一起的结果是哈希值, H(x) = (a + b + c) mod M ,其中 a、b 和 c 表示分解为三个部分的预处理键, M是表大小, mod代表模数。
  • 换句话说,预处理键的三个部分的总和除以表大小。余数是散列键。

解释:

示例 1:任务是将键123456789折叠成一个 10 个空格(0 到 9)的哈希表。

  • 假设密钥,比如X是 123456789 和表大小(即, M = 10)。
  • 因为它可以按任意顺序将X分成三个部分。让我们把它平均分。
  • 因此,a = 123,b = 456,c = 789。
  • 现在, H(x) = (a + b + c) mod M即, H(123456789) =(123 + 456 + 789) mod 10 = 1368 mod 10 = 8
  • 因此, 123456789 被插入到地址8的表中。

示例 2:任务是将键452378912折叠成一个 10 个空格(0 到 9)的哈希表。

  • 假设密钥,比如说X452378912和表大小(即, M = 10)。
  • 因为它可以按任意顺序将X分成三个部分。让我们把它平均分。
  • 因此,a = 452,b = 378,c = 912。
  • 现在, H(x) = (a + b + c) mod M即,H(452378912) =(452 + 378 + 912) mod 10 = 1742 mod 10 = 2
  • 因此, 452378912 被插入到地址2的表中。  

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程