[发明专利]一种基于FPGA的并行字符串匹配算法有效
申请号: | 201810307836.4 | 申请日: | 2018-04-08 |
公开(公告)号: | CN108628953B | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 黄以华;殷海元 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F16/9032 | 分类号: | G06F16/9032 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga 并行 字符串 匹配 算法 | ||
本发明涉及一种基于FPGA的并行字符串匹配算法,通过FPGA并行处理来实现在一个时钟周期找到模式字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值,通过前缀和后缀的最大公共元素值可直接得到并输出NEXT数组,利用NEXT数组可实现多个模式字符串的并行匹配。
技术领域
本发明涉及信息处理领域,更具体地,涉及一种基于FPGA的并行字符串匹配算法。
背景技术
随着计算机硬件的不断发展,服务器和终端中CPU加协处理器的并行处理数据已得到广泛应用,尤其是FPGA在计算数据密集型中的加速。FPGA具有可重构、并行化程度高等显著优点,已成为当下常用的加速设备,近年来,越来越多的基于数据中心部署FPGA并行处理架构,利用FPGA的硬件资源将复杂算法进行加速处理已成为一种优化性能的新途径。针对信息处理过程中的字符串匹配算法,目前,较为经典的有KMP算法、BM算法以及基于BM算法改进提出的一种QS算法。现在均已广泛用于各种字符串匹配的各种场合,尽管KMP算法很早就已提出,但是其算法具有良好扩展性和实用性,时至今日仍然是目前广为应用的算法。但是,随着数据流的不断增长和近年来硬件加速的普遍化,在硬件中实现KMP核心算法是非常有必要的,也是大势所趋。
KMP是一种模式匹配算法,此算法是在BF算法的基础上进行改进的一种高效率算法。BF算法是一种朴素的字符串匹配算法,其实现过程是通过遍历字符串的每一个位置,顺序匹配字符串的每一个字符。BF算法起始于文本字符串T的第一个字符和模式字符串P中的第一个字符开始比较,如果其匹配成功,然后比较后续字符,否则文本字符串的下一个字符起在重新和模式字符串的第一个字符进行比较。算法描述如下:
文本字符串:T=s1s2…sn
模式字符串:P=p1p2…pm
以上字符串的长度一般满足条件nm,那么朴素的BF算法完成匹配的执行步骤为:
(1)文本字符串T与模式字符串P左端对齐,使得开始于s1与p1;
(2)从左到右文本字符串T与模式串P的每一个字符,直到出现不匹配的情况,就执行步骤(3),若是模式串P已经被完全匹配,则匹配成功,结束匹配。
(3)将P向右移动一个字符的位置,再次从模式串的第一个字符开始匹配;
(4)不断重复上述(2)的过程,直到匹配成功,结束匹配。
在模式字符串右移一位后,朴素的BF算法已将丢失了之前已经匹配到的字符的所有信息。因此,它可能会重复比较文本字符串的字符与模式串中的字符。这导致其最坏的情况下的复杂度是O(mn)。KMP算法利是基于此缺点,利用了之前已经匹配到的信息,避免了重复匹配的情况。
因此,KMP算法的在搜索阶段的复杂度降到了O(n)。如图1所示的匹配过程示例,在第三趟匹配中,当i=7、j=5字符比较不等时,又从i=4、j=1重新开始比较,然而,在i=4和j=1,i=5和j=1以及i=6和j=1这三个比较都是不必进行的。仅仅需要模式字符串向右滑动3个字符的位置继续进行i=7,j=2时的字符串比较即可。同理,在第一趟匹配过程中出现不等时,仅需要模式字符串向右移动两个字符的位置继续进行i=3,j=1时的字符比较。由此,整个匹配过程中,i指针都没有回溯。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810307836.4/2.html,转载请声明来源钻瓜专利网。