- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章符号串29
* 计算机算法设计与分析 * 函数dist(c)的计算 Void Computer_Distance(char *P){ int i, j, m; m = P[0]; for(i = 0; i 256; i++) dist[i] = m; for(j = m –1; j =1; j – –) if(dist[P[j]] = = m) dist[P[j]] = m – j; } 先令每一个符号的dist(i) = m 对模式P中符号的dist进行修改 * 计算机算法设计与分析 * BM算法评估 Computer_Distance函数的时间复杂度为Θ(m), 在最坏的情形下BM算法的每次内循环次数为m,所以BM算法最坏时间复杂度为Θ(mn)。 * 计算机算法设计与分析 * KARP-RABIN串匹配随机算法 1987年KARP和RABIN教授发表了一种简单快速的串匹配随机算法(简称KR算法)。 先回顾一下原始的简单匹配算法: match(char *T, char *P){? for (j=1; j= T[0]-P[0]; j++ )??? {str=substr(T,j,P[0] ) ; //在T中逐个取长度为P[0]的子串 ??????if ( strcmp(str,P)==0) //将子串与模式串进行比较? return j; ?? }? return -1;} 在上述简单算法中,相对于KMP算法,多余的时间主要消耗在substr和strcmp上面,其中substr很容易改进(只要移动指针就行),关键是如何改进strcmp。 * 计算机算法设计与分析 * KARP-RABIN串匹配随机算法 KR算法的基本思路是,如果strcmp不是比较两个字符串,而是两个数值,自然速度就要快得多,所以有必要将一个字符串通过某个函数映射成一个数值——这也是HASH法的一种,但这个HASH函数还有一些特殊的要求: 1、速度要快。 2、冲突概率小。 3、相邻两个字符串的HASH值必须有相关性。 例如T[1..m]和T[2..m+1]的HASH值必须有关联,在计算出HASH(T[1..m])后不必重新计算HASH(T[2..m+1])(否则就太慢了),而只要计算出HASH(T[m+1])把它加进来,然后减掉HASH(T[1])就可以了。 KARP和RABIN将这种函数称为指印函数。 * 计算机算法设计与分析 * “指印” 函数的定义 设模式P为 p1p2…pm,正文T为t1t2……tn,正文和模式中出现的字符集合为?,且| ? | = d。 对?上的长度m的符号串? = t1t2…tm ,令整数 x = asc(t1)dm–1+ asc(t2)dm–2+…+ asc(tm), 则符号串?的指印函数K(?)为 K(?) = x mod q 这里asc(c)为字符c的ASCII值,q是[1, n2m]中随机选取的适当大的素数。 * 计算机算法设计与分析 * KARP-RABIN算法的基本思路 首先计算模式,以及正文中所有长度为m的子串的指印函数。 然后匹配与模式串指印函数值相等的正文中的子串,找到匹配串。 由于也可能存在冲突,所以当两个指印函数的值相同时,还必须再次匹配原字符串,才能得到结果。只要p和d适当的大,这种情况很少会发生,所以匹配速度很快。 * 计算机算法设计与分析 * 指印函数的递归计算 令titi+1……ti+m–1的对应的整数为, yi = asc(ti)dm–1+ asc(ti+1)dm–2+…+ asc(ti+m–1), 则ti+1ti+2……ti+m的对应的整数为 yi+1 = asc(ti+1)dm–1 +… +asc(ti+m–1)d+asc(ti+m) (yi – asc(ti)dm–1)d + asc(ti+m) 因此, K(yi+1) = ((yi – asc(ti)dm–1)d+asc(ti+m)) mod q (K(yi) – asc(ti)z)d + asc(ti+m) mod q 其中,z = dm–1 mod q。 yid= asc(ti)dm+ asc(ti+1)dm–1+…+ asc(ti+m–1)d, * 计算机算法设计与分析 * KARP-RABIN串模式匹配算法 int K-RMatch(char *t,int n,char *p,int m){ 数据说明; 计算指印函数计算中的z; 计算模式p和正文第一个子串的指印; 依据指印逐个匹配正文的子串;} int i, j, k, z = 1, x = 0, y = 0; for(i = 1; i m; i
您可能关注的文档
最近下载
- 22G101-1混凝土结构施工图平面整体表示方法制图规则和构造详图(现浇混凝土框架、剪力墙、梁、板)(OCR).pdf VIP
- 污水处理厂工程施工组织设计.pdf VIP
- 不同龄期家蚕营养需求比较论文.docx VIP
- 2025-2025国家开放大学电大本科《工程地质》期末试题及答案.docx VIP
- 第9课《古代科技 耀我中华》 第3课时(说课稿)-部编版道德与法治五年级上册.docx
- 2022一消继续教育《人员密集场所消防安全管理》题目及答案.docx VIP
- 2026四川银行校园招聘考试参考试题及答案解析.docx VIP
- 第9课《古代科技耀我中华》第3课时独领风骚的古代技术创造 课件道德与法治五年级上册.pptx
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件(共22张PPT内嵌视频).pptx VIP
- 多联机空调运维、维保技术服务方案-105.docx VIP
原创力文档


文档评论(0)