文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.200096
中文引用格式: 熊仁都,楊嘉佳,朱廣宇,等. PARA-AC:一種基于AC自動機的高性能匹配算法[J].電子技術應用,2020,46(11):87-90,95.
英文引用格式: Xiong Rendu,Yang Jiajia,Zhu Guangyu,et al. PARA-AC:a high performance matching algorithm based on Aho-Corasick automaton[J]. Application of Electronic Technique,2020,46(11):87-90,95.
0 引言
模式串匹配的作用是給定一組特定的字符串集合 S={s1,s2,…,sm},對于任意一個字符串T=t1t2…tn,找出S中所有字符串在T中出現(xiàn)的位置[1]。基于Aho-Corasick(AC)自動機的模式串匹配算法在當前的串匹配算法中占據(jù)著重要地位,它以Trie樹為基礎,通過fail指針來實現(xiàn)狀態(tài)匹配失效的過程跳轉,保持了較為穩(wěn)定的匹配性能。因此,基于AC自動機的串匹配算法在字符串搜索、生物特征識別、網(wǎng)絡安全等領域有著廣泛的應用。
截至目前,已經提出了各式各樣的AC自動機優(yōu)化算法,包括基于前綴識別的自動機算法AC[2]、基于狀態(tài)轉移表加速的算法[3]、利用字符跳躍的加速匹配算法[4]。但是,這些算法的處理過程本質上為串行匹配,因而匹配性能較低,無法滿足大數(shù)據(jù)環(huán)境下的高性能數(shù)據(jù)實時處理要求。此外,直接對AC自動機進行簡單并行化易出現(xiàn)假陰性錯誤。
因此,針對原始AC自動機匹配速度較慢的問題,本文提出了一種基于多線程并行化的多模式串加速匹配算法。通過將文本分割成若干文本段進行多線程加速匹配,同時為保證算法功能的正確性,提取出切割點附近的邊界字符形成切割點邊界字符集進行處理。理論分析與實驗結果表明,此算法與原始AC自動機的性能加速比達到8.38,性能提高接近1個數(shù)量級,非常適合于大規(guī)模數(shù)據(jù)的實時處理。
本文詳細內容請下載:http://theprogrammingfactory.com/resource/share/2000003063
作者信息:
熊仁都1,楊嘉佳1,朱廣宇1,唐 球1,隋 然2
(1.華北計算機系統(tǒng)工程研究所,北京100083;2.中央軍委后勤保障部 信息中心,北京100842)