算法哈希表PPT格式课件下载.ppt
- 文档编号:15040552
- 上传时间:2022-10-27
- 格式:PPT
- 页数:43
- 大小:780.50KB
算法哈希表PPT格式课件下载.ppt
《算法哈希表PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《算法哈希表PPT格式课件下载.ppt(43页珍藏版)》请在冰豆网上搜索。
构造哈希函数:
H(key)=keyH
(1)=1,H
(2)=2哈希函数:
在记录的关键字与记录的存储地哈希函数:
在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数址之间建立的一种对应关系叫哈希函数。
哈希函数是一种映象,是从关键字空间到存储哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象地址空间的一种映象。
可写成:
H(kH(kii)=addr(a)=addr(aii),其中其中ii是表中一个元素,是表中一个元素,addr(aaddr(aii)是是aaii的地址,的地址,kkii是是aaii的关键字的关键字。
哈希表:
应用哈希函数,由记录的关键哈希表:
应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫放入此地址,这样构成的表叫哈希表哈希表。
哈希查找哈希查找(又叫散列查找又叫散列查找):
利用:
利用哈希函数进行查找的过程叫哈希函数进行查找的过程叫哈希查找哈希查找。
冲突:
对于不同的关键字对于不同的关键字kkii、kkjj,若若kkiikkjj,但,但H(kH(kii)=H)=H(k(kjj)的现象叫冲突的现象叫冲突(collision)(collision)。
同义词:
具有相同函数值的两个不同的关键字,具有相同函数值的两个不同的关键字,称为该哈希函数的称为该哈希函数的同义词同义词。
当冲突发生时,应该有处理冲突的方法。
设计一当冲突发生时,应该有处理冲突的方法。
设计一个散列表应包括:
个散列表应包括:
散列表的空间范围,即确定散列函数的值域;
构造合适的散列函数,使得对于所有可能的元素构造合适的散列函数,使得对于所有可能的元素(记录的关键字记录的关键字),函数值均在散列表的地址空间范围,函数值均在散列表的地址空间范围内,且出现冲突的可能尽量小;
内,且出现冲突的可能尽量小;
处理冲突的方法。
即当冲突出现时如何解决。
哈希查找的基本思想:
以查找表中的每个元素的关键字以查找表中的每个元素的关键字key为自变量,为自变量,通过函数通过函数H(key)计算出函数值,把这个值解释为存计算出函数值,把这个值解释为存储空间的储空间的单元地址单元地址,并将该元素存储到这个地址单,并将该元素存储到这个地址单元中。
这种函数元中。
这种函数H(key)就称为就称为哈希函数哈希函数。
在哈希表上进行查找时,首先根据给定值的关键在哈希表上进行查找时,首先根据给定值的关键字字key,用哈希函数,用哈希函数H(key)计算出存储地址,然后按计算出存储地址,然后按此地址取出对应的元素。
此地址取出对应的元素。
Zhao,Qian,Sun,Li,Wu,Chen,Han,Ye,Deng例如:
对于如下9个关键字设设哈希函数哈希函数f(key)=Ord(关键字的第一个字母的序号关键字的第一个字母的序号)/2ChenZhaoQianSunLiWuHanYeDeng问题问题:
若添加关键字Zhou,冲突,冲突,能否找到能否找到另一个哈希函数?
1234567891011121314151617181920212223242526ABCDEFGHIJKLMNOPQRSTUVWXYZ1)哈希函数是一个映象映象,即:
将关键字的集合映射到某个地址集合上,将关键字的集合映射到某个地址集合上,条件是这个映射的映射的地址集地址集合的大小不超出不超出某个允许的范围某个允许的范围;
2)由于哈希函数是一个压缩映象压缩映象,因此,在一般情况下,很容易产生“冲突冲突”现象,即:
key1key2,而f(key1)=f(key2)。
具有不同关键字而具有相同哈希地址的元具有不同关键字而具有相同哈希地址的元素称为素称为同义词同义词。
3)很难很难找到一个不产生冲突的哈希函数。
一般情况下,只能选择恰当的哈希函数,使冲突尽可能少地产生。
在构造这种特殊的“查找表”时,除了需要选择一个“好”(尽可能少产生冲突)的哈希函数之外,还需要找到一种“处理冲突”的方法。
哈希表的定义哈希表的定义:
根据设定的哈希函数哈希函数H(key)和所选中的处理冲突的方法处理冲突的方法,将一组关键字映象映象到到一个有限的、地址连续的地址空间(区间)上,并以关键字在地址空间中的“象”作为相应记录在表中的存储位置存储位置,如此构造所得的查找表称之为“哈希表哈希表”。
ADTHashTableisDataHashTable;
Operationsinitiate()初始化Hash表hash(key)Hash函数search(key)查找keyinsert(key)插入keydelete(key)删除keyreCreate(size)重建Hash表,新表空间大于旧表,旧表中的元素按新表的Hash函数插入新表中EnsADTHashTable哈希函数是一种映象,其设定很灵哈希函数是一种映象,其设定很灵活,只要使任何关键字的哈希函数值都落在活,只要使任何关键字的哈希函数值都落在表长允许的范围之内即可。
哈希函数表长允许的范围之内即可。
哈希函数“好好坏坏”的主要评价因素有:
的主要评价因素有:
11)散列函数的构造简单;
散列函数的构造简单;
22)能能“均匀均匀”地将散列表中的关键字映射地将散列表中的关键字映射到地址空间。
所谓到地址空间。
所谓“均匀均匀”(uniform)(uniform)是是指发生冲突的可能性尽可能最少。
指发生冲突的可能性尽可能最少。
8.3.2、哈希函数的构造方法哈希函数的构造方法法法11直接定址法直接定址法取关键字或关键字的某个线性函数作哈希地址,取关键字或关键字的某个线性函数作哈希地址,即即H(key)=keyH(key)=key或或H(key)=aH(key)=akey+b(a,bkey+b(a,b为常数为常数)特点特点:
直接定址法所得地址集合与关键字集合大小:
直接定址法所得地址集合与关键字集合大小相等,不会发生冲突,但实际中很少使用相等,不会发生冲突,但实际中很少使用。
地址地址01020322年份年份1949195019511972人数人数1200015000H(key)=key+(-1948)22数字分析法数字分析法对关键字进行分析,取关键字的若干位或组合作为哈对关键字进行分析,取关键字的若干位或组合作为哈希地址。
希地址。
适用于关键字位数比哈希地址位数大,且可能出现的适用于关键字位数比哈希地址位数大,且可能出现的关键字事先知道的情况关键字事先知道的情况。
例:
哈希表哈希表长长100,取关,取关键字中的键字中的2位位数字作为地数字作为地址。
址。
8134654281372632813809178137248781446537813137078143287554639148537087存储地址存储地址33平方取中法平方取中法将关键字平方后取中间几位作为哈希地址。
一个数平方后中间几位将关键字平方后取中间几位作为哈希地址。
一个数平方后中间几位和数的每一位都有关,则由随机分布的关键字得到的散列地址也是随和数的每一位都有关,则由随机分布的关键字得到的散列地址也是随机的。
散列函数所取的位数由散列表的长度决定。
这种方法适于不知机的。
这种方法适于不知道全部关键字情况,是一种较为常用的方法道全部关键字情况,是一种较为常用的方法。
记录记录关键字关键字(数字数字)(关键字)(关键字)22哈希表地址哈希表地址A01000010000010I11001210000210J12001440000440I011601370400370P120614310542314Q121614734741734Q221624745651745此方法适合于此方法适合于:
关键字中的每一位都有某些数字重复出现频度很高的现象关键字中的每一位都有某些数字重复出现频度很高的现象。
将关键字分割成若干部分,然后取它们的叠加之和为哈希地址。
有两种叠加处理的方法:
移位叠加移位叠加和间界叠加间界叠加。
4.4.折叠法折叠法此方法适合于此方法适合于:
关键字的数字位数特别多,所需地址位数较少。
国际图书号编码国际图书号编码044220586458644220+)0410088H(key)=008858640224+)046092H(key)=60920442205864移位叠加间界叠加55除留余数法除留余数法取关键字被某个不大于哈希表表长取关键字被某个不大于哈希表表长mm的数的数pp除后除后所得余数作哈希地址,即所得余数作哈希地址,即H(key)=keyMODp(pH(key)=keyMODp(pm)m)是一种简单、常用的哈希函数构造方法。
是一种简单、常用的哈希函数构造方法。
利用这种方法的关键是利用这种方法的关键是pp的选取,的选取,pp选的不好,容易选的不好,容易产生同义词。
产生同义词。
pp的选取的分析:
的选取的分析:
11)选取选取p=2p=2ii(p(pm)m):
运算便于用移位来实现,但:
运算便于用移位来实现,但等于将关键字的高位忽略而仅留下低位二进制等于将关键字的高位忽略而仅留下低位二进制数。
高位不同而低位相同的关键字是同义词。
数。
22)选取选取p=qp=qf(qf(q、ff都是质因数,都是质因数,ppm)m):
则所有:
则所有含有含有qq或或ff因子的关键字的散列地址均是因子的关键字的散列地址均是qq或或ff的的倍数。
倍数。
33)选取选取pp为素数或为素数或p=qp=qf(qf(q、ff是质数且均大于是质数且均大于2020,ppm)m):
常用的选取方法,能减少冲突出现的:
常用的选取方法,能减少冲突出现的可能性。
可能性。
设定哈希函数为设定哈希函数为:
H(key)=keyMODp其中其中,pm(表长表长)例如:
取例如:
取m=11,则关键字则关键字集合集合19,01,23,14,55,68,11,82,36被映射为:
811302053如何取如何取p?
例如:
已知关键字例如:
已知关键字集合集合12,48,27,24,33,30145208p应为不大于应为不大于m的素数的素数或是不含或是不含20以下的质因子以下的质因子因为,p=9中含质因子3,故所有含质因子故所有含质因子3的关键字均映射到的关键字均映射到“3的倍数的倍数”的地址上的地址上,从而增加了“冲突”的可能。
如果取
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 哈希表