作业帮 > 数学 > 作业

用开放定址法求造哈希表并求成功时的平均查找长度(求解释详细谢谢)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/04/29 11:48:03
用开放定址法求造哈希表并求成功时的平均查找长度(求解释详细谢谢)
选取哈希函数H(k)=(3k)mod11用开放定址法处理冲突di=i((7k)mod10+1)(i=1,2,3.)是在0~10的散列地址空间对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功时的平均查找长度.答案是17/8 怎么算都对不上很郁闷
用线性探测法:发生冲突后,从该地址开始顺序向下一个地址探测,直到找到一个空的单元
H(22)=(22*3)mode 11=0
H(41)=(41*3)mode 11=2
H(53)=(53*3)mode 11=5
H(46)=(46*3)mode 11=6
H(30)=(30*3)mode 11=2,和 H(41)冲突,则探测下个地址:H1=(H(41)+1)mode 11=3;
H(13)=(13*3)mode 11=6,和H(46)冲突,则探测下个地址:H1=(H(13)+1)mode 11=7;
H(01)=3; 和H(30)冲突,则探测下个地址:H1=(H(01)+1)mode 11=4
H(67)=(67*3)mode 11=3,和H(01)冲突,则探测下个地址:H1=(H(67)+1)mode 11=4,和冲突,
则探测下个地址:H2=(H(01)+2)mode 11=5; 和H(53)冲突,继续探测:H3=6,和H(46)冲突,继续探测:H4=7,又冲突:H5=8;
则平均查找长度=(4*1+3*2+1*6)/8=2 答案应该是 2;我算几次了,不可能17/8,要不题目错了 方法是对
再问: 处理冲突不应该用di=i((7k)mod10+1)(i=1,2,3....)解决吗??你怎么用H(k)=(3k)mod11呀,,这样不对
再答: 好吧 我看错了 不过想法是一样的: 冲突则探测下个单元是否为空!
再问: di=i((7k)mod10+1)(i=1,2,3....)但是我不明白这个i是什么意思,,求解释拜托了
再答: 是 增量
再问: 不太明白,,我找到答案但是看不懂i的取值,,求解释,,,

再答: H(30)=2,H1=(H(30)+di)mode11,其中di=i((7k)mode10+1),(i=1,2,.....10); 则di=1*((7*30)mode10+1)=1那么,H1=(H(30)+1)mode11=3; H(13)=6;H1=(H(13)+di)mode11,其中di=1*((7*13)mode10+1)=2;则H1=8 下面的数冲突的话方法如上,试试看吧 同意的话记得采纳哈 谢谢