[发明专利]无重叠的带弱通配符的序列模式匹配方法在审
申请号: | 202010544301.6 | 申请日: | 2020-06-15 |
公开(公告)号: | CN111680195A | 公开(公告)日: | 2020-09-18 |
发明(设计)人: | 李艳;罗岚方;武优西;刘靖宇;朱希康;李萧言;李浩鹏 | 申请(专利权)人: | 河北工业大学 |
主分类号: | G06F16/903 | 分类号: | G06F16/903 |
代理公司: | 天津翰林知识产权代理事务所(普通合伙) 12210 | 代理人: | 胡安朋 |
地址: | 300130 天津市红桥区*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 重叠 通配符 序列 模式 匹配 方法 | ||
1.无重叠的带弱通配符的序列模式匹配方法,其特征在于:在队列结构中利用深度优先和回溯策略来解决无重叠的带弱通配符的序列模式匹配问题,具体步骤如下:
第一步,确定给定序列模式的队列个数:
读入给定序列S,确定其长度为n,该序列S中的每个字符分别记作字符s1、字符s2、…、字符sn,读入给定序列模式P,确定其长度为m,该序列模式P的各个子模式分别记作子模式p1、子模式p2、…、子模式pm,这里0m≤n;根据给定序列模式P中的子模式数确定其队列的个数,则创建m个队列,分别记作队列1、队列2、…、队列m;
第二步,计算队列1末尾的结点范围:
给定强字符集Γ、弱字符集Ω、最小间隙min和最大间隙max,通过上述第一步中给定的序列模式P的长度m和序列S的长度n,以及本步给出的最小间隙min,通过如下公式(1)计算队列1末尾的最大结点Maxroot,即队列1末尾的结点不能超过Maxroot,
Maxroot=n-m-min*(m-1)+1 (1);
第三步,采用深度优先和回溯策略创建队列末尾的结点:
采用深度优先和回溯策略创建队列末尾的结点,具体处理方法如下:
根据上述第一步中的序列S和上述第一步中的序列模式P创建队列末尾的结点,在队列j末尾,标签为i的结点记为
第(3.1)步,判断是否需要创建队列j末尾的结点
当字符si=子模式pj时,通过下面的方法判断是否建立队列j末尾的结点
①当字符si=子模式pj时,结点在队列j中不存在,在队列j的末尾创建结点同时通过如下公式(2)和公式(3)分别计算结点的最小边界和最大边界
公式(2)和(3)中,i表示结点在序列S中的字符si的位置;
②当字符si=子模式pj,并且结点在队列j中已经存在时,继续寻找满足弱间隙要求且与子模式pj相等的字符;
第(3.2)步,当队列j末尾的结点被创建之后,通过如下步骤创建队列j+1末尾的结点:
1)判断结点在序列S中的字符si与最小边界在序列S中的字符si+min+1之间的字符sk是否属于弱字符,其中iki+min+1:
①当存在字符sk不属于弱字符时,说明通过结点不可能存在一个出现,需要采用回溯策略,回溯到队列j-1末尾的结点,从队列j末尾的结点在序列S中的字符si之后继续寻找满足弱间隙要求且与子模式pj相等的字符;
②当任意字符sk均属于弱字符,执行下面的步骤2);
2)依次判断从结点的最小边界在序列S中的字符si+min+1到最大边界在序列S中的字符si+max+1之间的字符sx是否与子模式pj+1相等,其中i+min+1≤x≤i+max+1:
①当字符sx与子模式pj+1不相等时,先判断字符sx是否属于弱字符:当字符sx属于弱字符,再判断字符sx的下一个字符是否与子模式pj+1相等;当字符sx不属于弱字符时,说明通过结点不存在一个出现,需要采用回溯策略,与上述步骤1)中①的回溯相同;
②当字符sx与子模式pj+1相等时,结点在队列j+1中不存在,直接在队列j+1末尾创建结点
③当字符sx与子模式pj+1相等时,结点在队列j+1中已经存在,继续寻找满足弱间隙要求且与子模式pj+1相等的字符;
第(3.3)步,当队列m中的结点被创建时,执行以下第四步,即找到一个出现,当找到一个出现之后,从队列1末尾的结点在序列S中的字符sl1的下一个字符sl1+1开始继续创建队列1末尾的结点,迭代上述过程继续创建队列2、队列3、…、队列m末尾的结点;至此完成无重叠的带弱通配符的序列模式匹配。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河北工业大学,未经河北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010544301.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种汽车拉杆后悬置结构
- 下一篇:一种新型后悬减振器支柱结构