- 2
- 0
- 约7.08千字
- 约 12页
- 2017-02-12 发布于北京
- 举报
算法合集之《Hash在信息学竞赛中的一类应用》
Hash在信息学竞赛中的一类应用
【】
那么,模式串Y的Hash值就可以轻松地求出。记待匹配串X从第i个字符开始的长度为M的子串为Si,则不难发现f(Si+1)和f(Si)的关系:
换个角度,如果不考虑mod q,这个函数就是把字符串看作一个p进制数求出的值,这样,Xi+1就是Xi “左移”一位,然后去掉最前面一位,再加上右面新进来的一位得到的。因此上面的递推公式也是显然的。
有了这个递推公式,不难在线性时间内求出X的所有长度为M的子串的Hash值。
现在把问题扩展到高维的情况。不难发现要计算的Hash值的个数仍然不超过N个,可见,只要有合适的递推方法,仍然可以在线性时间内求出所有子矩阵的Hash值。事实上,一个M1行,M2列的子矩阵可以被看作是M2个“竖条”组成的一个串。我们可以先把每个长度为M1的“竖条”计算出一个Hash值,然后再计算二维情况的Hash值。
需要注意的一点是,在计算一维的Hash值(“竖条”的Hash值)和计算二维的Hash值时使用的b值不能一样,不然不难想到下面反例:
它们并不相同,但是Hash的结果肯定一样。这就违背了使用Hash的初衷。因此,在第一维的计算和第二维的计算中要使用不同的p值。
二维情况时,求出所有长度为M1的“竖条”所需要花费的时间是O(N)的,然后把这些竖条的Hash值看作“字母”计算横向的Hash值(即各个子矩阵的Hash值)
您可能关注的文档
最近下载
- AutoCAD2022实用教程全套完整教学课件.pptx
- Soundcraft声艺Signature 22MTK Outline Dimensions file)说明书用户手册.pdf
- 教案课件-典五典范英语5a l6教学参考.pdf VIP
- 商业银行数字化转型:文献综述与研究展望_刘敏楼.pdf VIP
- 施工现场临时用电配电箱标准化图集.pdf VIP
- 施工现场临时用电配电箱(柜)图集.docx VIP
- Electric海菲克功率单元PU00 PU01操作手册.pdf
- 肩周炎诊断及治疗指南.docx VIP
- 电气控制与PLC应用——基于S7-1200_PLC(陈建明)课后习题答案解析.docx VIP
- 腰椎间盘突出症诊疗指南.docx VIP
原创力文档

文档评论(0)