基于完全后缀数的滑动窗口字符串匹配搜索算法答案.doc

基于完全后缀数的滑动窗口字符串匹配搜索算法答案.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于完全后缀数的滑动窗口字符串匹配搜索算法 摘要:字符串匹配是数据压缩、搜索引擎和信息检索等领域的一项关键技术,滑动窗口中的字符串匹配搜索是基于字典(LZ系列?)压缩算法的核心。后缀数组因其结构简单且空间占用低而被用在字符串匹配中以提高匹配效率,为克服现有基于后缀数组的滑动窗口字符串匹配算法在字典窗口滑动时需要重复构建后缀数组的缺点,本文提出完全后缀数组的概念,并根据滑动窗口的特点,利用后缀数组重构的有序性,进而提出一种新的滑动窗口字符串匹配搜索算法AAA,使得在窗口滑动时无需重复构建后缀数组,进而提高了字符串匹配的效率,理论分析和实验结果验证了AAA算法的有效性。 关键字:字符串匹配 后缀数组 滑动窗口 完全后缀数组 1 Introduction 字符串匹配介绍,应用领域[][][],主要作用…(扩展成一段)。 滑动窗口中的字符串匹配搜索是基于字典的压缩算法的核心,最初的来源是LZ77算法[],基本思想是采用两个窗口加滑动的模式。一个窗口包含的是已输入数据流,并以此作为压缩字典DCT (Dictionary),即搜索缓冲存储器,另一个窗口包含的是待压缩编码的字符串,称为前向缓冲存储器LAB(Look Ahead Buffer)。(此处增加简单描述这两个窗口的工作原理,一两句话既可) 为了更好的压缩字符串,编码匹配时选择最长匹配字符串,在查找过程若发现存在多个最长匹配的字符串时,为简化编码一般选择最后一个匹配的字符串。虽然理论上经典的字典压缩算法通过滑动窗口模式可以在线性时间内进行处理[],但在实践中这些算法需要大量内存并且执行速率较慢[]。 经典的字典压缩算法的时间主要消耗在查找最长的匹配串上,每次前向缓冲存储器在字典中查找到最长匹配字符串时,首先进行编码,然后窗口滑动,接着在新的字典上进行新一轮查找。也就是说,一次查找的效率决定了算法的效率。 为解决经典字典压缩算法中查找匹配机制效率低下并需要大量内存的缺点,学者们开始寻找新的查找匹配机制。后缀树ST(Suffix Tree)和后缀数组(Suffix Arry)(这里简要介绍优点,并说明后缀数组比后缀树更优),所以,后缀数组开始作为字典压缩算法的基础数据结构来进行查询优化。 Artur J. Ferreira等在经典字典压缩算法与后缀数组结合方面做出突出贡献。文献[10][11][12]对ST和SA两种结构进行了比较分析,研究结果表明,在处理字符串查找问题时,ST所需的内存消耗比SA大;且随字典大小线性增长,而SA却与文本输入无关;对于小字典来说,两者间几乎没有差异,而对于大字典来说,SA的压缩速度较ST快,而SA的压缩率却稍逊于ST。文献[13] 提出一种紧凑的方式来描述在一个“词袋”标签中的文本,以及一种在静态字典中,允许快速找到所有起始字为给定字符的快速索引机制,利用该机制可以提高字符串查找效率。文献[14]采用滑动窗口不断更新的特点,并结合SA和一个包含256个ASCII码的辅助数组,来进行查找匹配。通过对DCT和LAB两个窗口字符的后缀进行排序,在窗口滑动时,LAB中的窗口字符将会滑入字典窗口中,而LAB的新内容将会从输入中继续读取, 通过不断更新两者的内容,来提高压缩效果。 尽管采用后缀数组后,经典字典压缩算法在滑动窗口中进行字符串匹配查找的效率有了很大提高,但现有的算法还存在以下不足之处:(1)在滑动窗口中每次查找到最长匹配子串时,移动窗口后将得到新的窗口字符串,此时需要重构后缀数组,造成查找效率不理想。(2) 在对重复查找结果筛选时,结合算法还是根据经典字典压缩算法的查找机制,即当出现相同的匹配字符串时,算法选择最后一个匹配字符串,虽然这种机制在压缩效率上提高了,但是没有考虑到时间复杂度。 (3)查找时采用二分查找,但由于待查的字符串一般集中在后缀数组的某个特定子区间内,因而没有使查找效率达到最优。 针对上述前两个不足,本文通过分析滑动窗口和后缀数组结合后的特点,提出完全后缀数组的概念,进而提出一种新的滑动窗口字符串匹配算法AAA。论文的后续部分组织如下:第二章给出了相关术语定义,并给出了完全后缀数组的概念。第三章描述了基于完全后缀数组的滑动窗口下字符串匹配算法AAA的基本思想和算法的伪码,分析了提出的算法的时间复杂度和空间复杂度,并与现有算法进行了对比。为了更进一步论证提出的算法的优越性,第四章通过实验对算法的查找效率进行了比较和分析。第五章对全文进行了总结。 2 Preliminaries 2.1 Definition of the Problem 约定对任意一个字符串s,其第i个字符用s[i]来表示,而第i个到第j个字符所组成的字符串用s[i..j]表示。 给定一个长度为n的字符串T和一个长度为m的模式P,如果存在一个长度为d的字符串s,使得sT

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档