Hash 散列函数混淆
有人知道如何解决这个问题吗?我的意思是,我理解散列的作用,但我不知道这个问题在说什么 你有什么想法吗 鉴于:Hash 散列函数混淆,hash,Hash,有人知道如何解决这个问题吗?我的意思是,我理解散列的作用,但我不知道这个问题在说什么 你有什么想法吗 鉴于: 散列函数:h(x)=2x+5 | mod M 容量为N的桶阵列 带有键的一组对象:12、44、13、88、23、94、11、39、20、16、5(从左到右输入) 4.a*[5 pts]****编写哈希表,其中M=N=11,使用单独的链接处理冲突 4.b*[5 pts]****编写哈希表,其中M=N=11,使用线性探测处理冲突 4.c*[5 pts]****如果M=11,您能否找到一个
- 散列函数:h(x)=2x+5 | mod M
- 容量为N的桶阵列
- 带有键的一组对象:12、44、13、88、23、94、11、39、20、16、5(从左到右输入)
4.c*[5 pts]****如果M=11,您能否找到一个N值,该值在散列这些键时不会产生冲突?首先计算每个键的散列。使用方程h(x)来查找每个键的散列值。这是数组中存储值的位置。因为,这显然是家庭作业,所以我不会解释线性探测或单独链接或4c M是将值放入的数组的大小 N是正在散列的对象数。
- 您有一个函数,给定一个数字(x)确定该数字在表中的位置
- 表格有一个给定的大小,N。对于问题a和b部分,N是11
- 对于问题a、b和c,M是11。M只是一个插入到给定公式中的值
h(x)=(2x+5)mod M
- 因此,给定数字12,
=>7。因此,第一个结果进入第7桶h(12)=(2*12+5)mod 11
- 然后依次计算其余的数字,计算出每个数字的h(x)
- 但是,当您遇到碰撞时(即,该数字应该进入的存储桶已经被先前的数字填充的情况),您需要为其选择不同的存储桶。你选择哪一种方法取决于你的溢出策略
- 在问题A中,您的溢出策略是单独链接
- 在问题B中,您的溢出策略是线性探测
- 如果您不熟悉这些方法,请注意以下几点:
- 单独链接:
- 线性探测:
- 如果C被读取,我认为这意味着从列表的开头开始,直到你遇到第一次碰撞;无论您的存储桶中已有多少个数字,都是N的值
- 然而,我认为问题C是一个印刷错误。我认为它希望您为M找到一个值,该值允许将给定的数字列表全部分配给唯一的bucket(即无冲突/无溢出策略)李>
xmod 5
并将数字0,1,2,3,4,5,6,7传递给它,你会得到0,1,2,3,4,0,1,2。