[发明专利]线性时间后缀数组构造方法有效
申请号: | 201110393622.1 | 申请日: | 2011-12-01 |
公开(公告)号: | CN102521213A | 公开(公告)日: | 2012-06-27 |
发明(设计)人: | 农革 | 申请(专利权)人: | 农革 |
主分类号: | G06F17/22 | 分类号: | G06F17/22 |
代理公司: | 广州凯东知识产权代理有限公司 44259 | 代理人: | 宋冬涛 |
地址: | 510630 广东省广州市大*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 线性 时间 后缀 数组 构造 方法 | ||
技术领域
本发明涉及一种字符串后缀数组构造方法,具体来说,涉及一种通过计算机在最优的时空复杂度内自动完成字符串后缀数组构造的线性时间后缀数组构造方法。
背景技术
字符串后缀数组是为了克服后缀树占用空间过大而提出的一个替代数据结构【1,2】,可以在更小的空间内实现等同后缀树的算法,在数据索引和模式匹配等应用中有广泛用途。本发明的算法对常数字符集上定义的任何长度为n个字符的字符串S,可在线性时间O(n)、工作空间O(1)内构造S的后缀数组,其中的工作空间是总空间除去S及其后缀数组所用空间后的剩余部分,具有此时空复杂度的算法是该问题在理论上可达到的最优解。
本文的陈述采用以下术语:
字符集 一个字符集∑是一个建立了全序关系的集合,即∑中任意两个不同的元素α和β都可以比较大小,要么α<β,要么α>β。字符集∑中的元素称为字符,其中最小的字符为‘$’。本文所涉及的字符集大小为常数O(1),即常数字符集。
字符串 一个长度为n的字符串S是将n个属于字符集∑中的字符从左到右依次排列形成的数组S[0,n-1],其中S的结束符固定为‘$’,并且‘$’不在S中的其它位置出现。
子串 字符串S的子串S[i,j],i≤j,表示S串中从位置i到位置j的一段字符串,也就是由字符S[i],S[i+1],...,S[j]组成的字符串。
后缀 字符串S的一个后缀是指从某个位置i开始到结束符$的一个子串。从字符S[i]开始的后缀表示为suf(S,i),即suf(S,i)=S[i,n-1]。
字符和后缀类型S中的字符和后缀分为L和S两种类型:
1)‘$’为S类型;
2)S[i],i∈[0,n-2]为S类型,当且仅当suf(S,i)<suf(S,i+1),即S[i]<S[i+1]或者S[i]=S[i+1]且S[i+1]为S型。
3)S[i],i∈[0,n 2]为L类型,当且仅当suf(S,i)>suf(S,i+1),即S[i]>S[i+1]或者S[i]=S[i+1]且S[i+1]为L型;
4)后缀suf(S,i)是S类型当且仅当字符S[i]为S类型;后缀suf(S,i)是L类型当且仅当字符S[i]为L类型。
LMS(leftmost S-type,最左S类型)字符和后缀
1)‘$’为LMS字符;
2)S[i]为LMS字符,i∈[1,n-1],当且仅当S[i]为S型且S[i-1]为L型;
3)后缀suf(S,i)是LMS后缀当且仅当字符S[i]为LMS字符。
LMS子串
1)‘$’为LMS子串;
2)S[i,j]为LMS子串,当且仅当1≤i<j<n,S[i]和S[j]同为LMS字符,且S[i]和S[j]之间不存在其他LMS字符。
指针数组 指针数组P1记录字符串S中所有LMS子串的首字母所在的位置,即P1[i]记录字符串S中(从左到右)第i个LMS子串的首字母在S中的位置,0≤i。
字符串大小比较两个字符串的大小比较,是指通常所说的“字典顺序”比较,亦即对于两个字符串u和v,令i从0开始顺次比较u[i]和v[i]。如果u[i]=v[i]则令i加1再继续比较下一个u[i]和v[i],否则若u[i]<v[i]则认为u<v,或者u[i]>v[i]则认为u>v。
后缀数组S的后缀数组是一个包含n个整数的一维数组SA[0,n-1],其中每个元素指向S中的一个后缀,并且对于i∈[0,n-2]满足suf(S,SA[i])<suf(S,SA[i+1])。
利用以上术语,我们给出一个构造字符串后缀数组的例子如下。
字符串S=baac$,其长度n=5,suf(S,0)=baac$,suf(S,1)=aac$,suf(S,2)=ac$,suf(S,3)=c$,suf(S,4)=$。根据字符串大小比较的定义容易知道suf(S,4)<suf(S,1)<suf(S,2)<suf(S,0)<suf(S,3)。再根据后缀数组的定义,容易得出SA[0]=4,SA[1]=1,SA[2]=2,SA[3]=0,SA[4]=3,即SA=[4,1,2,0,3]。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于农革,未经农革许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110393622.1/2.html,转载请声明来源钻瓜专利网。