一种外存后缀数组结构算法工程实现及特性评估.docVIP

一种外存后缀数组结构算法工程实现及特性评估.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种外存后缀数组结构算法工程实现及特性评估.doc

  一种外存后缀数组结构算法工程实现及特性评估 第一章 绪论 1.1研究背景与意义 随着对后缀数组研究的不断深入,后缀数组在处理文本数据时所具备的优势日益凸显,被广泛的应用于生物信息学、网络检索、频繁字符串挖掘以及顺序分析和聚类分析等领域。在生物信息学中,DNA 序列可以看作是一个在{A、C、G、T}字符集上的文本数据。这样,对 DNA 的处理也就相当于对一个文本数据进行处理。例如,我们要判断一个小的 DNA 片段属于哪一个完整的 DNA 序列时,我们需要将小的 DNA 片段与每一个完整的 DNA 序列进行配对,如果将 DNA 如上面所说看成是一个由 A、C、G、T 四个字母组成的文本数据,那么这个 DNA匹配问题就可以转化为如何在一个文本数据集(DNA 库)中找出某个特定字符串(DNA 片段)所在位置的问题。在网络检索中,搜索引擎的主要工作就是从海量的网络数据资源中快速、准确地检索出用户所查找的信息,而这实际上也是在一个文本数据集(网络资源)中找出某个特定字符串(用户输入的关键字)的问题。为了解决这类问题,后缀树和后缀数组作为两种文本数据索引结构被提了出来。后缀树与后缀数组是文本数据处理中两个强有力的工具。后缀树的概念最早由 anber 和 Myers[1]提出了一种用来替代后缀树的数据结构,即后缀数组。他们将一个字符串的后缀数组定义为该字符串所有后缀按字典序排列的次序。 1.2后缀数组构造算法的研究现状 在后缀数组被提出以前,后缀树在文本数据处理的相关领域被广泛应用。但后缀树的建立与存储需要占用大量的空间,并且各领域需要处理的文本数据日益增长,后缀树空间效率低的劣势越发凸显,导致了后缀树构造算法内存瓶颈[5]问题的产生,极大的限制了后缀树的应用范围。为解决这一问题,人们开始寻找一种结构精简的、具有很高空间效率、并且具有后缀树所具备功能的数据结构来替代后缀树。后缀数组提出后,凭借其结构精简、编程实现简单以及空间效率高等特性,使其成为后缀树一种很好的替代[6]。自后缀数组的概念被提出以后,大量的后缀数组构造算法被提了出来,这些后缀数组构造算法的主题思想大体上分为三类[7]:倍增算法、归纳拷贝算法、分治递归算法。倍增算法是在后缀数组概念提出之初被提出的,其大致构造思想是:对字符串所有长度为 2k(k=0)的子串进行排序,再利用基数排序或多关键字快速排序等方法,在 O(n)时间内计算出其所有长度为 2(k+1)的子串的排名情况,进而可以递推出字符串所有长度为 2(k+2)的子串的排名情况,经过 log2n 步,一直到 2(k+m)≧n,就可以得到字符串所有后缀的排名。因为倍增算法总共需要进行 log2n 步,每一步的时间复杂度为 O(n),所以算法的总体时间复杂度为 O(nlog2n)。但是倍增算法是对字符串所有长度为 2k的子串进行排序,在算法执行过程中需要利用大量额外的空间对这些子串进行存储,所以倍增算法的空间复杂度一般较大。典型的倍增算法有:U. Manber 与 G. Myers 提出的 MM 算法[1]、R. M. Karp,R. E. Miller与 A. L 提出的 KMR 算法[8]、J. N. Larsson与 K. Sadakane 提出的 LS 算法[9]等。 .. 第二章 几种主流后缀数组构造算法介绍 2.1 相关名词及符号介绍 哨兵[20]:为了便于处理,需要在字符串 s 的末尾添加一个特殊字符,该字符不属于 s 所属字符集,并且小于 s 中任意一个字符,我们把这一字符称之为哨兵。(在后缀数组构造算法中,哨兵已经被广泛采用[7])。前继字符:在字符串 s 中,位于字符 s(i)或者后缀 suf(s,i)前面的字符,我们把该字符称为 s(i)或者 suf(s,i)的前继字符,表示为 prec(s,i)。显然,prec(s,i)=s(i-1),并且 s(0)没有前继字符。L 型字符与 S 型字符[20]:如果字符 s(i)满足 i=n-1 或者满足 s(i)lt;s(i+1),则该字符为 S 型字符;如果 s(i)gt;s(i+1),该字符为 L 型字符;如果 s(i)=s(i+1),则 s(i)与 s(i+1)的类型相同。LMS 字符[20]:如果字符 s(i)是 S 型,并且字符 s(i-1)为 L 型,则字符 s(i)为LMS 字符。L 型后缀、S 型后缀和 LMS 型后缀[20]:每个后缀与该后缀的首字符具有相同的类型,例如,如果 s(i)为 L 型,则字符 suf(s,i)也为 L 型。LMS 子串[20]:如果一个子串 s[i...j]中,s[i]和 s[j]都是 LMS 型字符,并且在s[i]与 s[j]之间没有其他的 LMS 字符,则子串 s[i...j]为 LMS 子串。特殊的,哨兵也是一个

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档