[发明专利]一种BWT实现方法中对后缀进行排序的方法及系统有效
申请号: | 201310033687.4 | 申请日: | 2013-01-29 |
公开(公告)号: | CN103117748A | 公开(公告)日: | 2013-05-22 |
发明(设计)人: | 俞健康;侯锐;张继璠;龙冰洁;李冰 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | H03M7/30 | 分类号: | H03M7/30;G06F9/38 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 bwt 实现 方法 后缀 进行 排序 系统 | ||
1.一种BWT实现方法中对后缀进行排序的方法,其特征在于,包括:
步骤1,从BWT的待变换序列中取出需要排序的后缀;
步骤2,判断以所述后缀的开头元素的,作为断首元素的段在后缀链表中是否出现过,所述后缀的开头元素的ASC Ⅱ值为i,如果寄存器appear[i]=1,则出现过,执行步骤3;如果寄存器appear[i]=1,则未出现过,执行步骤4,其中appear[i]代表以ASC Ⅱ表中数字i代表的元素为段首元素的段是否已经出现过的标识;
步骤3,在段内进行双向搜索,获得所述后缀在所述后缀链表中的位置,然后执行步骤5;
步骤4,在所述后缀表中进行双向搜索,搜索到离所述后缀最近的在所述后缀链表中存在的段,根据所述段获得所述后缀在所述后缀链表中的位置,其中所述段是以相同元素开头的后缀按从小到大顺序组成的序列,然后执行步骤5;
步骤5,将所述后缀插入后缀链表:将所述后缀的段的高地址上所有后缀右移一位,将所述高地址所在的位置空出,然后在所述高地址后缀所在的位置上插入所述后缀,然后执行步骤6;
步骤6,更新所述后缀链表以及段的信息,其中所述后缀链表由后缀段组成,并按照段首元素从小到大顺序排列的,所述段首元素是每个段里面后缀的开头元素。
2.如权利要求1所述的对后缀进行排序的方法,其特征在于,所述步骤3包括:
步骤31,找到段头、段尾位置对应的两个后缀;
步骤32,分别将段头和段尾对应的后缀记为Sm、Sn,并与所述后缀Si进行大小比较,如果Si<Sn或者Si>Sm,则执行步骤34;如果Sn<Si<Sm,则执行步骤33;
步骤33,找到Sm、Sn指向段内方向的相邻的两个后缀,将Sm、Sn替换为这两个后缀,再与Si进行大小比较,如果Si<Sn或者Si>Sm,则执行步骤34;如果Sn<Si<Sm,则执行步骤32;
步骤34,结束双向搜索,记录Si位置,如果Si<Sn,则Si的位置在Sn邻近的低地址,Si>Sm,则Si的位置在Sm邻近的高地址,其中所述段头段尾分别是段里面的最小后缀和最大后缀。
3.如权利要求1所述的对后缀进行排序的方法,其特征在于,所述步骤4包括:
步骤41,令控制参数k自增1,第一次执行步骤41的时候初始化k为0,然后查看appear[i+k]和apprear[i-k],如果appear[i+k]=1或者appear[i-k]=1,结束双向查找,然后执行步骤42;如果appear[i+k]=0并且appear[i-k]=0,则重复步骤41,其中appear[i+k]和apprear[i-k]分别代表以ASCⅡ表中数字i+k和i-k代表的元素为段首元素的段是否已经出现过的标识;
步骤42,如果appear[i+k]=1,则Si的位置在以元素i+k为段首元素的段的段尾邻近的低地址;如果appear[i-k]=1,则Si的位置在以元素i-k为段首元素的段的段头邻近的高地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310033687.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:防尘置物柜
- 下一篇:一种齿轮传动无间隙的钓鱼用纺车式渔线轮