- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈希的应用
基本概念
很简单,哈希就是标记数组。我们把需要保存的状态(例如一列数、一个字符串等)用一个数代替,再存到一个数组中,这个数组就称为哈希数组。
为此,我们须要设计一个将状态对应到数的函数,称为哈希函数。
哈希函数
设计方法有很多,例如对于字符串S:
hash(s)=((s[0]*256+s[1])*256+s2)*256+s[3]……
或
hash(s)=s[0]*s[1]*s[2]*…
不过,这样哈希值可能会变得很大,以致于无法存到一个数组中。
所以在此基础上我们还要把哈希值模一个大质数,但这样有可能出现哈希冲突。
解决冲突
方法一般有二:
闭散列:当出现冲突时,一直往后寻找没有被占有的哈希值,找到后再插入;
开散列:开一个二维哈希数组hash,设当前要插入的哈希值为h,若hash[h][0]未被占则插入hash[h][0],否则查询hash[h][1]是否被占,未被占则插入hash[h][1]……
应用:RK算法
这是一个基于哈希的字符串匹配算法。效率略低于kmp。
具体方法曾经讲过,这里再提一下:
设母串为a,子串为b,子串长度为lenb,则我们可以求出a[0]~a[lenb-1],a[1]~a[lenb]……这些字符串的哈希,再与b的哈希值比较,若相等则“极有可能”匹配。此时再一个一个比对就可以确认是否的确匹配。
RK算法
现在问题是如何很快算出a[i]~a[i+lenb-1]的哈希。
定义哈希函数hash(s)=((s[0]*256+s[1])*256+s2)*256+s[3]……
则已知a[i-1]~a[i+lenb-2]的哈希值则可以很快推出a[i]~a[i+lenb-1]的哈希值。
应用:小藩的LCS(最长公共子串)问题。
LCP问题
给你一个字符串S及很多询问q(i,j),问s[i]~s[len-1]与s[j]~s[len-1]的最长公共前缀长度是多少。要求O(nlogn)的时间复杂度。
例:S=“bcbaabcbaabbac”
q(1,6)=5 (即“cbaab”)
方法很多,如后缀数组、后缀树等等。
不过这些方法特点明显:常数大、代码繁重。
LCP哈希算法
定义f[i][j]为s[i]~s[i+2j-1]的哈希值。在计算f[i][j]时,可以从f[i][j-1]与f[i+2j-1-1][j-1]的值(也就是这个子串的左半部分与右半部分的哈希值推出。)
例如,我们定义哈希函数为把所有字符乘起来,则f[i][j]=f[i][j-1]* f[i+2j-1-1][j-1]再模一个大质数,其余函数自己推就可以了。
LCP哈希算法
既然是哈希,那么两个哈希值相等则两个字符串很可能相等。实在对RP不放心可以多用几个哈希函数,再逐一比较。
当询问q(i,j)时,(设i=j)
先令k=log2(len-j+1),比较f[i][k]与f[j][k]。
若f[i][k]==f[j][k],说明s[i]~s[i+2k-1]与s[j]~s[j+2k-1]相等,那么i=i+2k ,j=j+2k ,k--,答案累加k。
否则说明k过大,则k--。
由于运用了倍增思想,时间复杂度O(nlogn)。
您可能关注的文档
最近下载
- 2023-2024学年北京市北京师范大学附属实验中学高二上学期12月月考物理试卷含详解.docx VIP
- 新教科版小学科学四年级上册2.1《感受我们的呼吸》教学设计.docx
- 2021年秋新苏教版五年级上册科学全册教学课件.pptx
- 2024全国青少年“学宪法讲宪法”知识竞赛试题(附含答案).pdf
- 2024年养老护理职业技能大赛:为外伤出血老年人包扎止血实操流程讲解.docx
- 部编版《道德与法治》四年级下册第12课《家乡的喜与忧》教学课件(第1课时).pptx
- 学前教育学第七讲学前教育课程郑玉莲博士副教授贵州师范学院教育科学学院学习目标.ppt
- 外研版初二英语上册知识点总结 .doc VIP
- 《手术室植入物管理规范》(TCAME 65-2024).pdf VIP
- 《运动损伤与康复》课程教学大纲.docx VIP
文档评论(0)