哈希函数混淆

时间:2012-12-07 23:29:35

标签: hash

enter image description here

任何人都知道如何解决这个问题?我的意思是,我理解哈希的作用,但我不知道这个问题是在讨论什么。

关于如何解决这个问题的任何想法?

假设:

  • 哈希函数:h(x)= | 2x + 5 | mod M
  • 容量N
  • 的桶阵列
  • 一组带键的对象:12,44,13,88,23,94,11,39,20,16,5(从左到右输入)

4.a * [5分] *****编写哈希表,其中M = N = 11,并使用单独的链接处理冲突。

4.b * [5分] *****编写哈希表,其中M = N = 11,并使用线性探测处理冲突。

4.c * [5分] *****如果M = 11,你能找到一个N值,它会产生没有碰撞这些键的冲突吗?

3 个答案:

答案 0 :(得分:1)

使用等式h(x)查找每个键的哈希值。这是存储值的数组中的位置。因为,这显然是家庭作业,我不会解释线性探测或单独链接或4c。

M是您将值放入的数组的大小。

N是您要散列的对象数。

答案 1 :(得分:1)

  • 你有一个函数,给定一个数字(x)确定应该在表中的位置。
  • 该表格具有给定的大小N.在该问题的部分a和b的情况下,N是11.
  • 对于问题a,b和c,M为11。 M只是插入给定公式h(x) = (2x + 5) mod M
  • 的值
  • 所以给定数字12,h(12) = (2 * 12 + 5) mod 11 =>因此,第一个结果进入了第7桶。
  • 然后依次研究其余数字,找出每个数字的h(x)。
  • 但是,当您发生碰撞时(即数字应该进入的铲斗已经填充了前一个号码的情况),您需要为其选择不同的铲斗。你选择哪个决定取决于你的溢出策略。
  • 问题A您的溢出策略是单独链接
  • 问题B你的溢出策略是线性探测
  • 如果您不熟悉这些方法,请观看以下内容:
  • 如果C被视为读取,我认为这意味着从列表的开头取数字直到你遇到第一次碰撞;但是,您在存储桶中已有的许多数字是N的值。
  • 但是,我认为问题C我认为是错误印刷。我想它希望你找到M的值,它允许将给定的数字列表全部分配给一个唯一的桶(即没有冲突/没有溢出策略)。

答案 2 :(得分:0)

首先计算每个密钥的哈希值。