




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 42基于有序二叉樹的快速多模式字符串匹配算法周 燕 1,侯整風 1,何 玲 2(1. 合肥工業(yè)大學計算機與信息學院,合肥 230009; 2. 深圳金山信息安全技術(shù)有限公司,深圳 518057摘 要:將有序二叉樹和 QS 算法相結(jié)合,提出一種快速多模式字符串匹配算法,實現(xiàn)在多模式匹配過程中不匹配字符的連續(xù)跳躍。為提 高匹配速度,利用已匹配的字符串信息進行跳躍式的比較,避免文本掃描指針的回溯。實驗結(jié)果表明,與 SMA 算法相比,該算法在預處 理階段構(gòu)造速度和匹配速度更快,在模式串較長的情況下,性能更優(yōu)越。 關(guān)鍵詞:有序二叉樹;多模式匹配; QS 算法Fast Multi-pattern Str
2、ing Matching AlgorithmBased on Sequential Binary TreeZHOU Yan1, HOU Zheng-feng1, HE Ling2(1. School of Computer and Information, Hefei University of Technology, Hefei 230009; 2. Shenzhen Kingsoft Information Security Technology Co., Ltd., Shenzhen 518057【 Abstract 】 This paper combines sequential bi
3、nary tree with Quick Search(QS algorithm to propose a fast multi-pattern string matching algorithm, which achieves better performance by shifting unmatched characters continuously in the process of multi-pattern matching. It uses jump comparison with unmatched strings to enhance the speed and decrea
4、se character matching operations. Experimental results demonstrate that the algorithm constructs more quickly in preprocessing process and its search speed is higher than SMA algorithm. It achieves better performance in the cases of longer string patterns.【 Key words】 sequential binary tree; multi-p
5、attern matching; Quick Search(QS algorithm計 算 機 工 程 Computer Engineering第 36卷 第 17期Vol.36 No.17 2010年 9月September 2010·軟件技術(shù)與數(shù)據(jù)庫· 文章編號:1000 3428(201017 0042 03文獻標識碼:A中圖分類號:TP3931 概述模式匹配是指在文本序列 Text=t0t1t2 tn-1中檢索子串 Pattern=p0p1p2 pm-1的問題。 模式匹配廣泛應(yīng) 用于入侵檢測系統(tǒng)、內(nèi)容過濾防火墻、計算機病毒特征碼匹 配以及 DNA 序列匹配等領(lǐng)域,研
6、究高效的模式匹配算法具 有非常重要的理論和現(xiàn)實意義。模式匹配可分為單模式匹配 和多模式匹配。單模式匹配算法一次只能對模式串進行一個 模 式 匹 配 , 主 要 有 KMP(Knuth-Morris-Patt算 法 1、 BM (Boyer-Moore算法 2、 QS(Quick Search算法 3等。多模式匹 配算法一次可對模式串同時進行多個模式匹配,包括 AC (Aho-Corasick算法 4、 WM(Wu-Manber算法 5、 AC-BM 算 法 6等。 AC 算法是一種基于自動機的算法, 首先根據(jù)模式集 構(gòu)建一棵搜索樹,然后對待搜索文本從左至右進行掃描。由 于搜索樹的大小與字符集的
7、大小有關(guān),因此 AC 算法一般需 要較大的內(nèi)存資源。 WM 算法主要特點是采用了 BM 算法的 不良字符轉(zhuǎn)移機制, 利用塊字符擴展了不良字符轉(zhuǎn)移的效果, 同時使用散列表篩選匹配階段應(yīng)進行匹配的模式串,減少了 匹配計算量,因此,應(yīng)用性能較好。 AC-BM 算法基于 BM 算 法,將不同的規(guī)則放在一棵樹上進行同時搜索匹配,能對目 標串進行跳躍式搜索。文獻 7提出的 SMA 算法采用有序二 叉樹結(jié)構(gòu)來組織有限狀態(tài)自動機,解決了 AC 算法中有限狀 態(tài)自動機構(gòu)造速度慢、占用內(nèi)存大的問題,但是該算法在查 找過程中必須檢查每一個字符,降低了算法的查找效率。本 文在 SMA 算法的基礎(chǔ)上,吸收 QS 算法的
8、思想,利用匹配過 程中匹配失敗的信息,達到最大跳躍距離,實現(xiàn)了快速的多 模式匹配,提高了算法的性能。2 本文的快速多模式字符串匹配算法本文算法分為 2個階段:模式集的預處理階段和文本的匹配階段。在預處理階段,借鑒 SMA 算法的思想,對所有待匹配 的模式進行分析和處理,構(gòu)造一個關(guān)于這些模式的有序二叉 樹,并計算失配后文本指針的跳躍和新狀態(tài)。在模式匹配階段,利用建立好的有序二叉樹對文本進行 一次性的搜索,同時結(jié)合 QS 算法思想,以獲得足夠多的跳 躍信息和盡量少的比較次數(shù),從而提高匹配效率。對于待匹配模式集,預處理過程只需進行一次,就可以 經(jīng)過一次掃描從文本串中查找出所有與給定模式串集合中任 何
9、模式串相同的子字符串。2.1 預處理階段讀取模式串集合 (各模式一般不是按字典序排列的 中的基金項目:安徽省自然科學基金資助項目 (090412051;廣東省教育 部產(chǎn)學研結(jié)合基金資助項目 (2008B090500240 43所有模式,利用 SMA 算法中建立有序二叉樹的子算法構(gòu)造 一棵有序二叉樹,將樹的節(jié)點作為自動機的狀態(tài),樹的分支 作為自動機的狀態(tài)轉(zhuǎn)移函數(shù), 得到狀態(tài)轉(zhuǎn)移函數(shù) GOTO(state, character 。例如,若給定模式串集合 adds, mini, admin, sad, hads,其對應(yīng)的有序二叉樹如圖 1所示。 圖 1 有限自動機的有序二叉樹結(jié)構(gòu)計算失配后文本指針的
10、跳躍和新狀態(tài),結(jié)果用一個表 move 保存, movesc=(skip, newstate,表示在狀態(tài) s 失配 且向前看的文本字符為 c 時,文本掃描指針向前跳躍 skip 個 位置,并從狀態(tài) newstate 開始繼續(xù)比較。計算失配后的文本 指針跳躍和新狀態(tài)算法描述見算法 1,其中, skip 的計算方 法如下:minlen -k +1 if cPatternskip =minlen lastck+1 if c Pattern 其中, k 為狀態(tài) s 的深度; minlen 為最短模式的長度; lastc為 c 在 p i 中最末出現(xiàn)的位置。算法 1 計算失配后文本指針跳躍和新狀態(tài) 輸入
11、根節(jié)點為 root 的有序二叉樹輸出 保存失配后文本指針的跳躍和新狀態(tài)的 move 表 (1minlen最短模式的長度。(2對每個 c , lastc初始化為 0。 (3建立隊列 queue ,并置空。(4對每個滿足 GOTO(root,c fail 的字符 c(即位于有序 二叉樹的深度為 1的字符 ,進行以下操作:1lastc 1;2s GOTO(root,c; 3s.failstate root ; 4s 進入隊列 queue 。 (5當隊列 queue 不為空, 進行以下循環(huán) (計算每個狀態(tài)的 failstate 和每個字符的 lastc:1s 隊列 queue 的隊頭元素出隊。2 對每
12、個滿足 GOTO(s,c fail 的字符進行以下操作: s1 GOTO(s,c; fail_s s.failstate ;若 GOTO(fail_s, c=fail ,則 s1.failstate=root;否則, s1.failstate GOTO(fail_s,c; s1進入隊列 queue ;若 s1在有序二叉樹中的深度小于等于 minlen ,則 lastc s1在有序二叉樹中的深度;否則, lastc 0;(6對自動機中的每個狀態(tài) s 和每個 c 進行以下操作 (計算 movesc:1k 狀態(tài) s 在有序二叉樹中的深度;2 若 c ,則 movesc.skip minlen-las
13、tc-k+1; 3 若 movesc.skip 0,則 movesc.newstate root ; 否則, movesc.newstate s.failstate , movesc.skip 0。例如,對于圖 1所示的例子,用算法 1建立的 move表如表 1所示,其中,表格的第 1列表示狀態(tài);第 1行表示 向前看的字符;二元組表示 (skip, newstate。表 1 move表狀態(tài)h a d,m else0 (3,0 (2,0 (1,0 (4,0 1 (2,0 (1,0 (0,0 (3,0 2 (1,0 (0,0 (0,0 (2,0 3 (0,0 (0,0 (0,0 (1,0 4 (0
14、,16 (0,16 (0,16 (0,0 5 (0,12 (0,12 (0,12 (1,0 6 (0,13 (0,13 (0,13 (0,0 2.2 模式匹配階段在匹配過程中,利用預處理階段構(gòu)造的有序二叉樹和失 配轉(zhuǎn)移表 move 對文本串進行一次性的搜索,查找文本是否 包含模式集中的模式。例如,根據(jù)圖 1的有序二叉樹對文本 進行搜索,從狀態(tài) 0開始,根據(jù)當前的狀態(tài)和從文本中讀入 的字符決定下一個狀態(tài)。若進入終止狀態(tài),表示已找到一個 匹配的模式。若根據(jù)當前狀態(tài)和讀入的字符找不到下一個狀 態(tài),表示出現(xiàn)失配情況。出現(xiàn)失配后,本算法利用已匹配的信息,通過向右看文 本的一個字符實現(xiàn)跳躍式比較的方法,避
15、免了文本掃描指針 的回溯,減少了比較的次數(shù)。失配后,有序二叉樹至少要向 前移動一個位置,若要匹配成功,前方的字符必須在成功匹 配的模式中出現(xiàn),因此,以最短模式為標準向右看文本的一 個字符,并計算該字符在所有模式中最后出現(xiàn)的位置,然后 把整個有序二叉樹移動若干位,使該字符與其在模式中最后 出現(xiàn)的位置對齊,從而跳過一些不必要的比較。算法 2 模式匹配算法輸入 文本串 T1:n,根為 root 的有序二叉樹, move 表 輸出 匹配成功的模式串在文本中出現(xiàn)的位置(1minlen最短模式的長度,初始化文本掃描指針 i 1, 初始化當前狀態(tài) s 0。(2當 i n ,進行以下循環(huán): 1c Ti。2 若
16、 GOTO(s,c fail ,則: s GOTO(s,c;若 s.output 為 true ,則輸出 i ; i i+1。3 若 GOTO(s,c=fail(即出現(xiàn)失配情況 ,則:計算向前看的字符的位置 k minlen-s 所處的層次 +1; 向前看的字符為 ch Ti+k; 44 若 ch , 則 文 本 指 針 跳 躍 到 新 位 置 i i+ movesch.skip,新狀態(tài)為 s movesch.newstate;否則, 文本指針跳躍到新位置 i i+minlen-s所處的層次 +1,新狀態(tài) 為 s root 。2.3 示例選取含有 5個模式串的模式串集合 P=adds, min
17、i, admin, sad, hads,若文本串為 T=addsxyzxmini,用算法 2在文本串 T 中查找模式串 P 中的任一模式串。模式串集合轉(zhuǎn)換成的有 序二叉樹如圖 1所示,最短模式長度 minlen=3,匹配過程如 圖 2所示。字符比較 狀態(tài) s(skip,state輸出 addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini addsxyzxmini 圖 2 模式串匹配過程3 算法分析設(shè)模式串集合的模式個
18、數(shù)為 k , 長度分別為 l 1, l 2, , l k , 所 有模式串的長度之和為 1ki i l =,其中,模式串的最短長度為minlen ;字符集的大小為 ;待搜索文本串的長度為 n 。算法分析分預處理和匹配 2個階段進行。在預處理階段,構(gòu)造有序二叉樹的時間復雜度為 O (k , 算法 1中,計算 failstate 的時間復雜度主要由內(nèi)層循環(huán)決定, 為 O (1ki i l = ,計算 move 表的時間復雜度為 O (1ki i l = ,因此,算法 1的時間復雜度為 O (1k i i l =+1ki i l = 。 綜上所述, 預處理階段的時間復雜度為 O (k +1k i i
19、 l =+1ki i l = 。在匹配階段,算法 2中文本掃描指針 i 是無回溯且進行 跳躍式比較的, 最壞情況下的比較次數(shù)不超過 2n 次, 設(shè)每次 比較后指針的平均跳躍距離為 len , 則匹配過程的時間復雜度 為 O (n /len ,最好情況下 len 可以達到 minlen+1,因此,匹配 階段最好時間復雜度可達到 O (n /(minlen+1,最壞情況下為 O (n 。 SMA 算法必須檢查文本中每個字符,而且文本掃描指 針不能跳躍,其匹配階段時間復雜度為 O (nh /27。4 實驗結(jié)果及分析為測試本文算法的性能,并與 SMA 算法做比較,實驗 中待匹配文本為從互聯(lián)網(wǎng)上下載的
20、17 Mb英語新聞,模式串集合由英文新聞常用人名、地址名以及一些計算機常用術(shù)語組成。實驗在 Pentium4 2.4 GHz、 1 GB內(nèi)存、 Windows XP下進行,測試在不同模式集和模式長度下算法的性能。實驗 結(jié)果如表 2、表 3所示。從表 2可看出,本文算法與 SMA 算 法預處理的時間都隨著模式串數(shù)目的增加而增加,本文算法 預處理時間略多。由表 3可看出,本文算法的匹配時間明顯低于 SMA 算 法,因為本文算法在匹配時采用了加速處理,當文本中模式 串出現(xiàn)的頻率較小時,模式比較之前跳過的字符較多,最大 可以達到 minlen+1。特別是在最小模式串較長、模式串數(shù)目 較多時,本文算法的
21、優(yōu)勢更加突出。表 2 預處理時間比較 ms模式數(shù)目SMA本文算法100 0 0 200 16 31 400 110 125 600 312 344表 3 不同 minlen 下匹配時間比較 msminlen =3 minlen=6 minlen =9 模式數(shù)目SMA本文算法SMA本文算法SMA本文算法100 531 422 578 281 766 329 200 750 516 813 312 1 078765 400 984 625 1 047 391 1 109813 6001 1887501 1724071 2488655 結(jié)束語模式串匹配是計算機研究領(lǐng)域的一個熱點問題。本文結(jié) 合 QS 算法思想,提出一種基于有序二叉樹的快速多模式字 符串匹配算法,利用已匹配信息,盡可能多地跳過待查文本 串字符,因此,在模式串較長和模式串數(shù)目較多時,本文算 法相比其他算法具有更好的性能。參考文獻1 Knuth D E, Morris J H, Pratt V R. Fast Pattern Matching inStringsJ. SIAM Journal on Computing, 1977, 6(2: 323-350
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國多媒體語音教學系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國塑料衣服架數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國商場配套掛鉤數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國內(nèi)外牙數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國休閑毯數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國主負極線圈數(shù)據(jù)監(jiān)測研究報告
- 2025年中國集裝箱平板半掛車市場調(diào)查研究報告
- 2025年中國電工手套市場調(diào)查研究報告
- 2025年中國煤氣烘爐市場調(diào)查研究報告
- 2025年中國汽車護杠市場調(diào)查研究報告
- 2025年益陽醫(yī)學高等專科學校高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 配套課件-前廳客房服務(wù)與管理
- 2025年度藥店營業(yè)員服務(wù)規(guī)范及合同約束協(xié)議3篇
- 工業(yè)和信息化部裝備工業(yè)發(fā)展中心2025年上半年應(yīng)屆畢業(yè)生招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 重慶市2024-2025學年高一上學期期末聯(lián)考生物試卷(含答案)
- 緊急疏散逃生方法
- 羊水栓塞護理應(yīng)急預案
- 2024年醫(yī)師定期考核臨床類考試題庫及答案(共500題)
- 2025安全生產(chǎn)工作目標及實施計劃
- 工程進度款支付臺賬-1-
- 《高原紅細胞增多癥血液稀釋療法護理操作規(guī)程》
評論
0/150
提交評論