【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)涉及一種字符串后綴數(shù)組構(gòu)造方法,尤其涉及一種通過計(jì)算機(jī)在線性時(shí)間內(nèi)利用基數(shù)排序自動(dòng)完成字符串后綴數(shù)組構(gòu)造的方法。
技術(shù)介紹
字符串后綴數(shù)組是后綴樹的一個(gè)節(jié)省空間的替代型數(shù)據(jù)結(jié)構(gòu),最先由Manber和Myers在文獻(xiàn)【1,2】中提出,可以在更小的空間內(nèi)實(shí)現(xiàn)等同后綴樹的算法。后綴數(shù)組在數(shù)據(jù)索引和模式匹配等應(yīng)用中有廣泛用途。本文專利技術(shù)了一個(gè)新的后綴數(shù)組構(gòu)造算法,利用基數(shù)排序和“切分-合并”方法在線性時(shí)間內(nèi)為任意給定的字符串構(gòu)造其后綴數(shù)組。在本文的陳述中用到以下術(shù)語:字符集一個(gè)字符集∑是一個(gè)建立了全序關(guān)系的集合,即∑中任意兩個(gè)不同的元素α和β都可以比較大小,要么α<β,要么α>β。字符集∑中的元素稱為字符,其中最小的字符為‘$’。本文所涉及的字符集大小假設(shè)為一個(gè)常數(shù)O(1)。字符串一個(gè)長度為n的字符串S是將n個(gè)屬于字符集∑中的字符按其位置依次排列形成的數(shù)組S[0..n-1],S的結(jié)束符固定為‘$’,并且‘$’不在S中的其它位置出現(xiàn)。子串字符串S的子串S[i..j],i≤j,表示S串中從位置i到位置j的一段字符串,也就是由字符S[i],S[i+1],...,S[j]組成的字符串。后綴字符串S的一個(gè)后綴是指從某個(gè)位置i開始到結(jié)束符$的一個(gè)子串。從第i個(gè)字符開始的后綴表示為suf(S,i),也就是suf(S,i)=S[i..n-1]。字符和后綴類型S中的字符分為L和S兩種類型:1)‘$’為S類型;2)S[i],i∈[1,n-1]為S類型,當(dāng)且僅當(dāng)suf(S,i)<suf(S,i+1),即S[i]<S[i+1]或者S[i]=S[i+1]且S[i+1]為S型。 ...
【技術(shù)保護(hù)點(diǎn)】
一種基于基數(shù)排序的字符串后綴數(shù)組構(gòu)造方法,其特征在于,它包括:1)標(biāo)記字符串中每個(gè)字符和后綴的類型,從右向左掃描一遍字符串S,按照后綴類型的定義比較當(dāng)前掃描的兩個(gè)相鄰字符S[i]和S[i+1], 得出每一個(gè)字符和后綴的類型,用數(shù)組t來記錄;2)從左向右掃描一遍數(shù)組t,找出所有d-字符出現(xiàn)的位置,從而獲取所有d-子串的首字母指針,用P1來記錄每一個(gè)d-子串的指針;3)通過d-子串指針數(shù)組P1、數(shù)組?。潞停樱羴韺?duì)S中所有的d-加權(quán)子串進(jìn)行基數(shù)排序;4)根據(jù)3)排序的結(jié)果重新命名字符串S中的各個(gè)d-加權(quán)子串,形成一個(gè)縮短了的新串S1;5)如果S1的每個(gè)字符都是唯一的,則直接排序S1的各后綴來計(jì)算S1的后綴數(shù)組SA1,否則以S1和SA1作為輸入?yún)?shù)遞歸調(diào)用SA-IS算法,即SA-DS(S1,?。樱粒保?;6)根據(jù)5)中獲得的S1的后綴數(shù)組?。樱粒睔w納計(jì)算S的后綴數(shù)組SA;7)返回。
【技術(shù)特征摘要】
1.一種基于基數(shù)排序的字符串后綴數(shù)組構(gòu)造方法,其特征在于,它包括:1)標(biāo)記字符串中每個(gè)字符和后綴的類型,從右向左掃描一遍字符串S,按照后綴類型的定義比較當(dāng)前掃描的兩個(gè)相鄰字符S[i]和S[i+1],?得出每一個(gè)字符和后綴的類型,用數(shù)組t來記錄;2)從左向右掃描一遍數(shù)組t,找出所有d-字符出現(xiàn)的位置,從而獲取所有d-子串的首字母指針,用P1來記錄每一個(gè)d-子串的指針;3)通過d-子串指針數(shù)組P1、數(shù)組?B和SA來對(duì)S中所有的d-加權(quán)子串進(jìn)行基數(shù)排序;4)根據(jù)3)排序的結(jié)果重新命名字符串S中的各個(gè)d-加權(quán)子串,形成一個(gè)縮短了的新串S1;5)如果S1的每個(gè)字符都是唯一的,則直接排序S1的各后綴來計(jì)算S1的后綴數(shù)組SA1,否則以S1和SA1作為輸入?yún)?shù)遞歸調(diào)用SA-IS算法,即SA-DS(S1,?SA1);6)根據(jù)5)中獲得的S1的后綴數(shù)組?SA1歸納計(jì)算S的后綴數(shù)組SA;7)返回。2.根據(jù)權(quán)利要求1所述的基于基數(shù)排序的字符串后綴數(shù)組構(gòu)造方法,其特征在于,所述步驟?3)中對(duì)S中所有d-加權(quán)子串進(jìn)行基數(shù)排序的過程包括:31)對(duì)所有d-加權(quán)子串的最后一個(gè)字符進(jìn)行兩輪基數(shù)排序:先根據(jù)每個(gè)字符的類型進(jìn)行基數(shù)排序,然后再根據(jù)每個(gè)字符的大小進(jìn)行基數(shù)排序;32)在步驟31)的排序結(jié)果上,繼續(xù)對(duì)所有d-加權(quán)子串根據(jù)它們的前d+1個(gè)字符進(jìn)行基數(shù)排序:從每個(gè)d-加權(quán)子串的倒數(shù)第二個(gè)字符開始到第一個(gè)字符結(jié)束,每輪根據(jù)一個(gè)字符排序,總共排d+1輪。3.根據(jù)權(quán)利要求2所述的基于基數(shù)排序的字符串后綴數(shù)組構(gòu)造方法,其特征在于,所述步驟?4)中計(jì)算新字符串S1的步驟包括:41)從左向右掃描SA數(shù)組中已排序的所有d-加...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:農(nóng)革,
申請(qǐng)(專利權(quán))人:農(nóng)革,
類型:發(fā)明
國別省市:81
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。