[发明专利]基于原语状态机的高速字符串特征匹配方法、装置及设备有效
申请号: | 202110801808.X | 申请日: | 2021-07-15 |
公开(公告)号: | CN113505585B | 公开(公告)日: | 2023-03-21 |
发明(设计)人: | 刘铮铮;周蓉蓉;姜武忠;莫晨宇;王瑞旋;陈妍红 | 申请(专利权)人: | 中南大学湘雅医院 |
主分类号: | G06F40/253 | 分类号: | G06F40/253;G06F40/284 |
代理公司: | 长沙轩荣专利代理有限公司 43235 | 代理人: | 李喆 |
地址: | 410008*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 状态机 高速 字符串 特征 匹配 方法 装置 设备 | ||
本发明涉及基因测序和网络报文深度内容匹配技术领域,尤其涉及一种基于原语状态机的高速字符串特征匹配方法、装置和设备。方法包括:用户输入关键字特征集合,并对每个关键字特征以特征序号和字符串序列方式存储;基于预先定义的基本操作原语,对关键字特征集合按照预设编译方法进行编译,获得关键字特征集合对应的原语状态机;获取待匹配目标字符串,基于原语状态机执行字符串匹配过程,获得命中关键字,并输出命中关键字的特征序号和当前匹配字符的结束位置。该匹配方法大幅降低状态节点的数量和匹配过需要涉及的状态节点迁移次数,有助于充分加大现代高性能CPU的多级Cache命中率,从而提高匹配算法的性能和匹配灵活性。
技术领域
本发明涉及基因测序和网络报文深度内容匹配技术领域,尤其涉及一种基于原语状态机的高速字符串特征匹配方法、装置和设备。
背景技术
如何在输入的字符序列中快速匹配指定的关键字特征集合是否出现以及出现的位置,是计算机科学领域的一个长期难点问题,在互联网高速报文分类、互联网应用协议识别、基因组比对定位等领域有广泛用途。
现有的典型匹配算法包括AC算法、DFA和NFA算法等。其中AC算法是Alfred V.Aho和Margaret J.Corasick发明的字符串搜索算法,用于在输入的一串字符串中匹配有限个字符串特征中的子串,存在效率低下的问题。而DFA和NFA算法通常是由正则表达式编译生成的,DFA算法不提供匹配回溯功能,NFA比DFA算法慢,但提供了匹配回溯功能。DFA和NFA算法在正则表达式数量较多时,存在着严重的状态组合爆炸问题,且匹配性能低于AC算法。同时,上述算法基本匹配过程均为:在输入字符序列中读取一个字符,根据当前算法状态机的位置和输入字符,将状态机推进到下一个位置。每次状态机位置的推进至少涉及一次或以上的内存访问操作,存在低效性问题。同时,算法性能受内存访问主频和时延的影响,很难进行性能提升。因此,设计新的字符特征匹配算法,充分利用CPU强大的计算性能,避免内存的性能约束,是提升算法匹配性能的一个重要途径。
发明内容
基于此,本发明要解决的技术问题是突破现有字符特征匹配算法的性能瓶颈,提出一种基于原语状态机的高速字符特征匹配方法及装置,通过将传统匹配算法状态机的简单状态节点替换为具有固定处理功能的操作原语,获得了一种匹配性能高且具有更好灵活性的字符串特征匹配方法。
在本发明实施例中,本发明提出了一种基于原语状态机的高速字符串特征匹配方法,具体包括:
用户输入关键字特征集合,并对每个关键字特征以特征序号和用于存储关键字的字符串序列方式存储所述关键字特征;
基于预先定义的基本操作原语,对所述关键字特征集合,按照预设的关键字特征集合编译方法进行编译,获得关键字特征集合对应的原语状态机;
获取待匹配目标字符串,基于所述原语状态机执行字符串匹配过程,获得命中关键字,并输出命中关键字的特征序号和当前匹配字符的结束位置。
进一步的,所述预先定义的基本操作原语包括:
跳过字符原语:在当前输入字符读取位置,向前或向后跳过N个字符;
在当前位置匹配多个字符串原语:在当前输入字符位置开始匹配多个字符串特征;
搜索匹配多个字符串原语:从当前输入字符位置开始搜索匹配多个字符串特征;
跳转到指定匹配位置原语:将当前读取位置指向输入字符串的指定位置;
成功命中原语:匹配过程结束,返回匹配命中的关键字特征序号和命中的结束位置;
失败原语:匹配过程结束,返回失败信息。
进一步的,所述预设的关键字特征集合编译方法具体包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中南大学湘雅医院,未经中南大学湘雅医院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110801808.X/2.html,转载请声明来源钻瓜专利网。