- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题库-第4章串匹配.doc
0400102 50 80 50
简单串匹配算法的思想。
先将正文T和模式W的第1个字符对齐,自左至右检查T和W的对应字符是否完全相同,若是,则说明找到了模式W在正文T中的首次出现,输出模式出现的位置结束;否则,将W向右滑动1个字符位置,重新进行上述的检查,直至到达T的末尾。
0400202 50 80 50
简单串匹配算法的效率为什么比较低?
04002
在简单串匹配算法中,每当匹配不成功时,只是简单地将模式右滑一位,从模式的第一个字符起重新进行匹配检查,这种方法没有利用前面已经得到的匹配成果,有多余的正文字符返回重复比较,因此导致一个正文字符可能需要同模式中的字符进行多次(最多达m次)比较。
0400302 50 80 50
假定正文T的长度n远大于模式W的长度m,说明简单串匹配算法的最好情况输入、所做的比较次数并举例。
04003
最好输入:当W出现在T的开始时。
算法至少做m次比较运算。
如:T=ABCD…, W=ABCD
0400402 50 80 50
假定正文T的长度n远大于模式W的长度m,说明简单串匹配算法的最坏情况输入、所做的比较次数并举例。
04004
最坏输入:在T的每一个起始点上,w1w2…wm-1均与对应正文匹配,而wm不匹配(最后一个起点时wm可能匹配)。
算法至多做(n-m+1)m次比较运算。
如:T=AA…A, W=AA…B
T=AA…AB, W=AA…B
0400502 50 80 50
设T=000010001010001,W=0001,说明简单串匹配算法做了多少次字符比较?
04005
8
0400602 50 60 50
KMP串匹配算法的思想。
04006
将正文T和模式W自左至右对齐检查,若当前正在检查ti(1≤i≤n)和wj(1≤j≤m),
若ti=wj,则继续向右检查ti+1和wj+1是否匹配。
(2) 若ti≠wj,分两种情况:
(i) j=1,将模式右移一位,执行ti+1与w1的检查;
(ii) 1j≤m,选择模式的某个适当下标next(j),右移模式执行ti与wnext(j)的检查
(3) 重复上述过程直到jm或in为止。
0400702 50 60 50
KMP串匹配算法是采取什么样的技巧来提高串匹配的效率的?
04007
KMP算法通过对模式进行预处理,计算出模式每个字符Wj的失败指示next(Wj),当正文当前字符与模式字符Wj匹配失败时,将模式向右滑动尽可能大的距离,让当前正文字符与模式字符Wnext(Wj)对齐继续比较,从而避免了正文字符返回重复比较的问题,并且使得模式向右滑动的位数可能大于1,从而提高了匹配效率。
0400802 50 60 50
KMP串匹配算法中next(j)的含义和取值规律是什么?
04008
next(j)的含义:指出在模式W和正文T的匹配过程中,若ti和wj匹配失败,则应用模式的哪个字符继续与正文匹配检查。当next(j) = 0时,去执行ti+1和w1的匹配检查,即把模式右移一位再从头进行匹配检查;当next(j) 0时,将模式右移,继续ti和wnext(j)对齐的检查。
next(j)的取值规律:next(1)=0,对于j1,next(j)取模式中自第j-1个字符开始向前到第2个字符与自第1个字符开始向后的最长匹配子段的长度加1。
0400902 50 50 50
如果模式W的各字符互不相同,此时模式的next数组的值是怎样的,这种情况下KMP算法的效率在相当一部分情况下是否还会好于简单串匹配算法?为什么?
04009
除next(1)=0外,next(j)=1,1j≤m。
是的。因为KMP算法在最坏情况下的时间复杂度为Θ(n+m)。KMP算法永远不会发生正文字符返回重新比较的情况,即使发生不匹配,也是将模式右滑,继续开始模式的第1个字符与正文当前字符的比较。正文与模式前部匹配的部分越长,模式右滑的距离j-1越大。
0401002 50 70 50
BM算法的基本思想。
04010
假设在执行正文中自位置i起“返前”的一段与模式的自右向左的匹配检查(ti与wm对齐)中,一旦发现不匹配(不管在什么位置),则将模式右滑d(ti)的距离,去执行由wm与ti+d(ti)起始的自右向左的匹配检查。直到出现匹配或模式滑出正文为止。
0401102 50 50 50
12、简述BM串匹配算法中d函数的取值方法,为什么如此取值?
04011
文档评论(0)