海量特征串集合的匹配方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種海量特征串集合的匹配方法及系統(tǒng),其中的方法包括預處理階段和特征串匹配階段,其中,在預處理階段通過對特征串進行統(tǒng)計并分組,建立位向量掩碼表,使過濾算法在同等空間和規(guī)則數(shù)量下的通過率更低,進而能夠容納更多的特征串;在特征串匹配階段,采用位并行方式進行后綴和前綴匹配,支持不等長特征串的匹配并且在匹配數(shù)據(jù)中能夠以跳躍的方式大范圍快速查找特征串;通過區(qū)分普通匹配窗口和長匹配窗口,來保證跳躍的安全和減少過濾通過率。通過本發(fā)明能夠使匹配過程在相同資源條件下,能夠容納數(shù)量更多的特征串,并且具有性能穩(wěn)定的特點,能夠在極端情況下保持模式匹配的高效率。
【專利說明】海量特征串集合的匹配方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及信息識別【技術領域】,更為具體地,涉及一種海量特征串集合的匹配方法及系統(tǒng)。
【背景技術】
[0002]模式匹配是信息識別中的重要核心技術之一,用于從目標串中發(fā)現(xiàn)特征串。隨著信息技術的高速發(fā)展,模式匹配被越來越廣泛地應用于網(wǎng)絡信息搜索、數(shù)據(jù)流挖掘、網(wǎng)絡入侵檢測以及計算生物學等領域。
[0003]模式匹配是指在文本T=I^t2...1^中找出某個給定的特征串集合P= {p1;p2,...,pr}的所有出現(xiàn)位置,其中T和Pi(KiSr)是在有限字符表Σ上的字符序列。隨著網(wǎng)絡和生物學的發(fā)展,在匹配更多的特征串條目的同時,需要保持有較高的處理速度,這就對多模式匹配的處理能力提出了更高的要求。然而在很多現(xiàn)有的多模式匹配算法中,當特征串規(guī)模超過I萬時,由于其處理能力的下降,已經(jīng)無法滿足需求,因而基于位并行與q-gram技術的多模式匹配方法應運而生。此種方法在數(shù)量10萬以下規(guī)模的特征串匹配過程中能夠取得較好的效果。
[0004]基于位并行技術的多模式匹配算法,例如Shift-And/Or算法、BNDM算法,其基本思想是:將特征串集合與文本串的匹配狀態(tài)用位向量存儲,匹配過程就是用位操作更新位向量的過程。由于Shift-And和Shift-Or算法的原理基本相同,以下著重介紹Shift-And算法和BNDM算法的原理。
[0005](I)Shift-And算法維護一個字符串的集合,集合中的每個字符串既是特征串p的前綴,同時也是已讀入文本的后綴。每讀入一個新的文本字符,該算法采用位并行的方法更新該集合。該集合用一個位掩碼D=dm...(I1來表示。D的第j位被置為I,當且僅當P1...P」是tp..tj的后綴。
[0006]Shift-And算法首先構造一個表B,記錄字母表中每個字符的位掩碼bm...t^。如果Pfc,掩碼B[c]的第j位被置為1,否則為O。首先置D=0m,對于每個新讀入的文本字符ti+1,用如下公式對D進行更新:
[0007]Di+1 一 ((Di?l) 0m+1l)&B[ti+1]
[0008]上面Oni表示有連續(xù)m個O,例如,用O3I來表示0001。在匹配時,逐個掃描文本字符并更新向量D,測試是否匹配成功的掩碼為IOm'即當幸Om時,在文本位置i處匹配成功。
[0009](2)BNDM (Backward Nondeterministic Dawg Matching,向后非確定性匹配)算法的搜索與BDM算法相同,但它使用位并行來識別特征串。在當前搜索窗口內(nèi),設已讀入的字符串為u, BNDM算法維護一個集合,記錄u在P中所有出現(xiàn)位置。同Shift-And算法一樣,該集合可以用一個位向量D來表示。如果特征串P1...Pj+iu1-1等于u,那么D的第m-j+1位是I,表示P的位置j是一個活動狀態(tài)。
[0010]同Shift-And算法一樣,BNDM算法預先計算一張表B,表B用一個位掩碼記錄了該字符在P中出現(xiàn)的位置。對于每個新讀入的文本字符ti,利用如下公式,可以從D更新到0’,其中,0’ 一 Φ〈〈1)&Β[\],初始化D=lm,且需要用額外變量last保存特征串前綴的最左位置。
[0011]為了能容納更大的規(guī)則數(shù),使用q-gram技術以擴大表的規(guī)模。該技術將q個字符轉(zhuǎn)化為一個字符來處理。其中,將q個字符轉(zhuǎn)化為一個q-gram字符有兩種方式,即重疊q-gram和連續(xù)q-gram。當使用重疊q-gram時,依次從原字符串的每一個字符開始取q個字符進行轉(zhuǎn)化,使用連續(xù)q-gram時,依次從原字符串的每q個字符開始去q個字符進行轉(zhuǎn)化。例如,在轉(zhuǎn)化字符串“pony”時,使用重疊q-gram轉(zhuǎn)化為“po-on_ny”,而使用連續(xù)q-gram轉(zhuǎn)化為“po-ny”。本文中使用q-gram技術時,使用的都是重疊q-gram。
[0012]為了實現(xiàn)快速的匹配,采用SOG算法或者BG算法來保證多模式匹配的執(zhí)行效率。
[0013]SOG算法是使用q-gram將Shift-Or算法擴展成基于過濾技術的多模式匹配算法。該算法是以犧牲精確匹配為前提,將“確認能匹配”改成“確認不能匹配”,以一次相對快速的匹配過程,過濾掉大量不能成功匹配的數(shù)據(jù),以保證算法的執(zhí)行效率。對于少量過濾通過的情況,配合其他算法,再針對數(shù)據(jù)中的特定的位置進行精確匹配的校驗。對于大多數(shù)匹配過程,最終不會產(chǎn)生命中,如果也沒有誤報產(chǎn)生,那么過濾算法的性能就等同于整個模式匹配過程的性能。
[0014]具體的方法是,首先在算法的預處理階段,以每個特征串為基礎,構建Shift-Or算法的掩碼表B,然后將多個掩碼表B,以每個字符位掩碼為單位進行或運算,進而合并成為一張掩碼表,后續(xù)的匹配過程不變。不同在于,當D[i]MOnri Φ Om時,在文本位置i處不再表示匹配成功,而是有可能會發(fā)生匹配,需要使用其他能夠逐個字符比較的方法進行再次確認。
[0015]SOG算法需要將多個位向量進行或運算,位向量的位長就必須都是相等的,所以要求所有的特征串都是等長的。如果出現(xiàn)不等長的情況,就以最短串的長度為基準,將所有長串提取等長子串,讓子串參與匹配。如果提取的等長子串長度Imin小于機器字長,lmin*r仍然不超過一個機器字長,還可以將一個機器字長劃分成r個等長分組,將r個位向量包裝進一個機器字內(nèi),從而節(jié)省空間。ShiftAnd/Or類的無跳躍的算法,還可支持不等長分組,使長字符串可以保留更長的子串。
[0016]作為實現(xiàn)快速模式匹配的另一種算法,BG是使用q-gram將BNDM算法擴展成為基于過濾技術的多模匹配算法,其擴展方法同Shift-And/Or算法類似。這里不再詳述。
[0017]多模式匹配過濾類算法主要被應用于一次完整模式匹配的前端過濾,評價一個過濾算法的性能,主要體現(xiàn)在兩個方面:過濾效率和過濾通過率。過濾效率,表示純粹過濾過程的處理速度。過濾效率比較容易評價:匹配同等的數(shù)據(jù)量,執(zhí)行時間越短,效率越高。過濾通過率也可以理解為“誤報率”,每一次誤報,還需要進行一次額外的精確匹配的確認過程,所以過濾通過率會影響整體匹配效率。一般來說同等特征串數(shù)目,通過率越低越好。
[0018]雖然SOG、BG算法與傳統(tǒng)的多模匹配相比,在支持較大規(guī)模特征串的情況下,具有較好的處理速度。從實測數(shù)據(jù)看來,SOG算法與BG算法在特征串規(guī)模達到10000時,仍然保持了較好的處理速度,在這種規(guī)模下,傳統(tǒng)的多模式匹配算法已經(jīng)不再適用。然而,SOG算法與BG算法還存在一些不足,導致在特征串規(guī)模更大的情況下,其處理速度仍不能滿足要求。其中,SOG算法與BG算法主要存在以下不足:[0019]I)在利用q-gram技術時,q取2或3,對應SOG與BG算法的字母表取216或224,當字母表取216時,有較高的沖突概率,在一定的通過率下,算法能容納的規(guī)則數(shù)相對較少,當字母表取224時,算法能容納的規(guī)則數(shù)很大,但是掩碼表所占用的空間也很大,無法充分利用處理器的cache,算法訪存需消耗大量時間,降低了算法的性能。
[0020]2)S0G與BG算法在構造掩碼表時,都沒有對特征串進行分組。因此只能對所有特征串都截取等長的前綴。當將較長字符串截取為較短的前綴時,會丟失大量特征信息,也會造成掩碼表空間浪費,直接導致過濾算法的過濾效果變差。雖然S0G、BG算法也可以進行分組,但其只是簡單的將特征串分為2組或4組,并沒有提出有效的自動分組的算法,因此,分組帶來的效果并不理想。而BG算法,從算法的基本原理看,不能進行不等長分組,這樣當實際特征串集合中含有較短特征串時,BNDM算法的跳躍優(yōu)勢就會大大削弱。
[0021]3)當特征串數(shù)量達到一定規(guī)模時,會導致BG算法失去跳躍能力,此時,BG會因為過度的校驗計算,使整體效率變的很低。
[0022]4)雖然SOG具有穩(wěn)定性能,不會因為特征串的數(shù)量增大而導致過度校驗計算,但也因為它沒有跳躍的能力,當特征串規(guī)模減少時,其匹配速度也不會提升。
【發(fā)明內(nèi)容】
[0023]鑒于上述問題,本發(fā)明的目的是提供一種海量特征串集合的匹配方法及系統(tǒng),以實現(xiàn)在同等空間、同等規(guī)則數(shù)量下,使過濾算法具備容納更多特征串的能力。
[0024]根據(jù)本發(fā)明的一個方面,提供一種海量特征串集合的匹配方法,包括預處理階段和特征串匹配階段,其中,預處理階段包括:
[0025]確定位向量掩碼表的空間容量;
[0026]根據(jù)對輸入的特征串集合所包含的算法字符個數(shù)及特征串的數(shù)量的統(tǒng)計,對特征串進行分組,建立分組位向量掩碼表;
[0027]根據(jù)算法字符的位長確定散列函數(shù);
[0028]特征串匹配階段包括:
[0029]根據(jù)輸入的特征串所包含的算法字符的個數(shù)確定普通匹配窗口長度和長匹配窗口長度,并為當前待匹配數(shù)據(jù)設置一個偏移值作為起始偏移值,其中,通過機器字符與散列函數(shù)的轉(zhuǎn)換獲得算法字符;
[0030]根據(jù)起始偏移值為起點對當前待匹配數(shù)據(jù)進行偏移并定位,獲取當前普通匹配窗口的數(shù)據(jù);
[0031]從當前普通匹配窗口的末端獲取一個算法字符,用直接尋址的方式從位向量掩碼表中獲取位向量;其中,
[0032]如果位向量中的所有有效位都不全為0,則以位向量為初始向量,以當前讀入的算法字符作為新的長匹配窗口的起點,在新的長匹配窗口的長度范圍內(nèi),采用位并行方式對位向量進行即時更新,并對即時更新的位向量進行非零判斷;其中,在位向量進行更新的過程中,
[0033]如果位向量的有效位全為0,將當前讀入的算法字符的位置作為新的起始偏移值,并結束更新;
[0034]如果位向量的有效位不全為O且位向量的某一個分組的最高位為1,則匹配當前分組特征串的后綴,保留初始向量中相應的有效位;其中,
[0035]在特征串的分組為不等長分組時,如果已經(jīng)匹配后綴的特征串所屬分組的長度小于等于后綴命中時在長匹配窗口中讀入的算法字符的個數(shù),則直接記錄一次命中的可能,可能會發(fā)生命中的特征串的末尾即是當前讀入的算法字符;
[0036]當位向量的更新過程結束時,如果特征串發(fā)生過后綴匹配,則僅保留初始向量中所有發(fā)生過后綴命中的活動位,其余全部清0,作為特征串前綴匹配的初始向量,在當前的起始偏移值所指向的普通匹配窗口中進行特征串匹配命中的確認;
[0037]如果在匹配特征串的后綴過程中,如果偏移值沒有改變,則對偏移值進行重新定位,獲取新的起始偏移值,并在偏移值重新定位的過程中,以位并行的方式同步進行特征串匹配。
[0038]其中,在對特征串進行分組的過程中,根據(jù)特征串的分組數(shù)、每組位長、每組所容納的特征串的數(shù)量以及位掩碼表的參數(shù),獲取每組的過濾通過率;通過每組的過濾通過率獲得每組分組方式的過濾通過率,將所有分組方式中過濾通過率最低的分組方式作為最終的分組方式對特征串進行分組。
[0039]其中,在當前的起始偏移值所指向的普通匹配窗口中進行匹配命中的確認的過程中,依次從普通匹配窗口末端反向逐個獲取算法字符,更新位向量;如果更新后的位向量的某一個分組的最低位是I,則記錄一次特征串匹配命中的可能,其中,可能會發(fā)生命中的特征串的起點即是當前讀入的算法字符。
[0040]另一方面,本發(fā)明還提供一種海量特征串集合的匹配系統(tǒng),包括特征串分組單元和特征串匹配單元:
[0041]其中,特征串分組單元包括:
[0042]空間容量確定單兀,用于確定位向量掩碼表的空間容量;
[0043]位向量掩碼表建立單元,用于根據(jù)對輸入的特征串集合所包含的算法字符個數(shù)及特征串的數(shù)量的統(tǒng)計,對特征串進行分組建立分組位向量掩碼表;
[0044]散列函數(shù)確定單元,用于根據(jù)算法字符的位長確定散列函數(shù);
[0045]特征串匹配單元包括:
[0046]初始單元,用于根據(jù)輸入的特征串所包含的算法字符的個數(shù)確定普通匹配窗口長度和長匹配窗口長度,并為當前匹配數(shù)據(jù)設置一個偏移值作為起始偏移值,其中,通過機器字符與散列函數(shù)的轉(zhuǎn)換獲得算法字符;
[0047]數(shù)據(jù)獲取單元,用于根據(jù)起始偏移值為起點對當前待匹配數(shù)據(jù)進行偏移并定位,獲取當前普通匹配窗口的數(shù)據(jù);
[0048]位向量獲取單元,用于從當前普通匹配窗口的末端獲取一個算法字符,用直接尋址的方式從掩碼表中獲取位向量;
[0049]匹配單元,用于當位向量中的所有有效位不全為O時,以位向量為初始向量,以當前讀入的算法字符作為新的長匹配窗口的起點,在新的長匹配窗口的長度范圍內(nèi),采用位并行方式對位向量進行即時更新,并對即時更新的位向量進行非零判斷;其中,在位向量進行更新的過程中,
[0050]如果位向量的有效位全為0,將當前讀入的算法字符的位置作為新的起始偏移值,并結束更新;[0051]如果位向量的有效位不全為O且位向量的某一個分組的最高位為1,則已經(jīng)匹配了當如分組特征串的后綴,保留初始向量中相應的有效位;其中,
[0052]在特征串的分組為不等長分組時,如果已經(jīng)匹配后綴的特征串所屬分組的長度小于等于后綴命中時在長匹配窗口中讀入的算法字符的個數(shù),則直接記錄一次命中的可能,可能會發(fā)生命中的特征串的末尾即是當前讀入的算法字符;
[0053]當位向量的更新過程結束時,如果特征串發(fā)生過后綴匹配,則僅保留初始向量中所有發(fā)生過后綴命中的活動位,其余全部清0,作為特征串前綴匹配的初始向量,在當前的起始偏移值所指向的普通匹配窗口中進行特征串匹配命中的確認;
[0054]匹配命中單元,用于當匹配單元中發(fā)生過特征串后綴命中時,在當前的起始偏移值所指向的普通匹配窗口中進行特征串命中的確認;
[0055]偏移值獲取單元,用于在匹配特征串的后綴過程中,當偏移值沒有改變時,對偏移值進行重新定位,獲取新的起始偏移值,并在偏移值重新定位的過程中,以位并行的方式同步進行特征串匹配。
[0056]利用上述根據(jù)本發(fā)明的海量特征串集合的匹配方法及系統(tǒng),能夠在同等空間和同等規(guī)則數(shù)量下,使過濾算法的通過率更低,實現(xiàn)容納更多特征串的能力,并達到合理利用資源的目的。
[0057]為了實現(xiàn)上述以及相關目的,本發(fā)明的一個或多個方面包括后面將詳細說明并在權利要求中特別指出的特征。下面的說明以及附圖詳細說明了本發(fā)明的某些示例性方面。然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。
【專利附圖】
【附圖說明】
[0058]通過參考以下結合附圖的說明及權利要求書的內(nèi)容,并且隨著對本發(fā)明的更全面理解,本發(fā)明的其它目的及結果將更加明白及易于理解。在附圖中:
[0059]圖1為根據(jù)本發(fā)明實施例的海量特征串集合的匹配方法流程示意圖;
[0060]圖2為根據(jù)本發(fā)明實施例的散列函數(shù)由機器字符轉(zhuǎn)換為算法字符的轉(zhuǎn)換關系示意圖;
[0061]圖3為根據(jù)本發(fā)明實施例的海量特征串集合的匹配系統(tǒng)的方框示意圖。
[0062]在所有附圖中相同的標號指示相似或相應的特征或功能。
【具體實施方式】
[0063]以下將結合附圖對本發(fā)明的具體實施例進行詳細描述。
[0064]針對前述現(xiàn)有的過濾類多模式匹配方法存在空間利用率低算法訪存消耗的時間多、跳躍性的匹配特征串不支持特征串不等長分組、過濾通過率高導致整體匹配效率不高的問題,本發(fā)明以位并行和q-grams作為技術基礎,在預處理階段通過對特征串的分組優(yōu)化,使過濾算法在同等空間和規(guī)則數(shù)量下的通過率更低,進而能夠容納更多的特征串;在特征串匹配階段,支持不等長特征串的匹配并且在匹配數(shù)據(jù)中能夠以跳躍的方式大范圍快速查找特征串,保證了特征串的匹配執(zhí)行效率。
[0065]為了說明本發(fā)明提供的海量特征串集合的匹配方法,圖1示出了根據(jù)本發(fā)明實施例的海量特征串集合的匹配方法流程示意圖。
[0066]如圖1所示,本發(fā)明提供的海量特征串集合的匹配方法包括:預處理階段和匹配階段:
[0067]其中,預處理階段的工作流程包括:
[0068]Slll:根據(jù)實際運行的硬件環(huán)境確定位向量掩碼表的空間容量。
[0069]S112:根據(jù)對輸入的特征串集合所包含的算法字符個數(shù)及特征串的數(shù)量的統(tǒng)計,對特征串進行分組建立分組位向量掩碼表。
[0070]其中,在對特征串進行分組的過程中,根據(jù)特征串的分組數(shù)、每組位長、每組所容納的特征串的數(shù)量以及位向量掩碼表的參數(shù),獲取每組的過濾通過率;通過每組的過濾通過率獲得每組分組方式的過濾通過率,將所有分組方式中過濾通過率最低的分組方式作為最終的分組方式對特征串進行分組。
[0071]其中,在獲取每組的過濾通過率的過程中,將過濾通過率定義為:
[0072]
【權利要求】
1.一種海量特征串集合的匹配方法,包括預處理階段和特征串匹配階段,其中,所述預處理階段包括: 確定位向量掩碼表的空間容量; 根據(jù)對輸入的特征串集合所包含的算法字符個數(shù)及特征串的數(shù)量的統(tǒng)計,對所述特征串進行分組,建立分組位向量掩碼表; 根據(jù)所述算法字符的位長確定散列函數(shù); 所述特征串匹配階段包括: 根據(jù)輸入的特征串所包含的算法字符的個數(shù)確定普通匹配窗口長度和長匹配窗口長度,并為當前待匹配數(shù)據(jù)設置一個偏移值作為起始偏移值,其中,通過機器字符與所述散列函數(shù)的轉(zhuǎn)換獲得所述算法字符; 根據(jù)所述起始偏移值為起點對當前待匹配數(shù)據(jù)進行偏移并定位,獲取當前普通匹配窗口的數(shù)據(jù); 從所述當前普通匹配窗口的末端獲取一個算法字符,用直接尋址的方式從所述位向量掩碼表中獲取位向量;其中, 如果所述位向量中的所有有效位不全為O,則以所述位向量為初始向量,以當前讀入的算法字符作為新的長匹配窗口的起點,在所述新的長匹配窗口的長度范圍內(nèi),采用位并行方式對所述位向量進行即時更新,并對即時更新的位向量進行非零判斷;其中,在所述位向量進行更新的過程中, 如果所述位向量的有效位全為O,將當前讀入的算法字符的位置作為新的起始偏移值,并結束更新; 如果所述位向量的有效位不全為O且所述位向量的某一個分組的最高位為1,則匹配當iu分組特征串的后綴,保留初始向量中相應的有效位;其中, 在所述特征串的分組為不等長分組時,如果已經(jīng)匹配后綴的特征串所屬分組的長度小于等于后綴命中時在長匹配窗口中讀入的算法字符的個數(shù),則直接記錄一次命中的可能,可能會發(fā)生命中的特征串的末尾即是當前讀入的算法字符; 當所述位向量的更新過程結束時,如果所述特征串發(fā)生過后綴匹配,則僅保留初始向量中所有發(fā)生過后綴命中的活動位,其余全部清O,作為所述特征串前綴匹配的初始向量,在當前的起始偏移值所指向的普通匹配窗口中進行所述特征串匹配命中的確認; 如果在匹配所述特征串的后綴過程中,所述偏移值沒有改變,則對所述偏移值進行重新定位,獲取新的起始偏移值,并在所述偏移值重新定位的過程中,以位并行的方式同步進行特征串匹配。
2.如權利要求1所述的海量特征串集合的匹配方法,其中,在對所述特征串進行分組的過程中, 根據(jù)所述特征串的分組數(shù)、每組位長、每組所容納的特征串的數(shù)量以及所述位向量掩碼表的參數(shù),獲取每組的過濾通過率; 通過每組的過濾通過率獲得每組分組方式的過濾通過率,將所有分組方式中過濾通過率最低的分組方式作為最終的分組方式對所述特征串進行分組。
3.如權利要求2所述的海量特征串集合的匹配方法,其中,通過下述等式獲取每組分組方式的過濾通過率:
4.如權利要求1所述的海量特征串集合的匹配方法,其中,在當前的起始偏移值所指向的普通匹配窗口中進行匹配命中的確認的過程中, 依次從所述普通匹配窗口末端反向逐個獲取算法字符,更新所述位向量; 如果更新后的所述位向量的某一個分組的最低位是1,則記錄一次特征串匹配命中的可能,其中,可能會發(fā)生命中的特征串的起點即是當前讀入的算法字符。
5.一種海量特征串集合的匹配系統(tǒng),包括特征串分組單元和特征串匹配單元: 其中,所述特征串分組單元包括: 空間容量確定單兀,用于確定位向量掩碼表的空間容量; 位向量掩碼表建立單元,用于根據(jù)對輸入的特征串集合所包含的算法字符個數(shù)及特征串的數(shù)量的統(tǒng)計,對所述特征串進行分組,建立分組位向量掩碼表; 散列函數(shù)確定單元,用于根據(jù)所述算法字符的位長確定散列函數(shù); 所述特征串匹配單元包括: 初始單元,用于根據(jù)輸入的特征串所包含的算法字符的個數(shù)確定普通匹配窗口長度和長匹配窗口長度,并為當前待匹配數(shù)據(jù)設置一個偏移值作為起始偏移值,其中,通過機器字符與所述散列函數(shù)的轉(zhuǎn)換獲得所述算法字符; 數(shù)據(jù)獲取單元,用于根據(jù)所述起始偏移值為起點對當前待匹配數(shù)據(jù)進行偏移并定位,獲取當前普通匹配窗口的數(shù)據(jù); 位向量獲取單元,用于從所述當前普通匹配窗口的末端獲取一個算法字符,用直接尋址的方式從所述掩碼表中獲取位向量; 匹配單元,用于當所述位向量中的所有有效位不全為O時,以所述位向量為初始向量,以當前讀入的算法字符作為新的長匹配窗口的起點,在所述新的長匹配窗口的長度范圍內(nèi),采用位并行方式對所述位向量進行即時更新,并對即時更新的位向量進行非零判斷;其中,在所述位向量進行更新的過程中, 如果所述位向量的有效位全為O,將當前讀入的算法字符的位置作為新的起始偏移值,并結束更新; 如果所述位向量的有效位不全為O且位向量的某一個分組的最高位為1,則已經(jīng)匹配了當如分組特征串的后綴,保留初始向量中相應的有效位;其中, 在所述特征串的分組為不等長分組時,如果已經(jīng)匹配后綴的特征串所屬分組的長度小于等于后綴命中時在長匹配窗口中讀入的算法字符的個數(shù),則直接記錄一次命中的可能,可能會發(fā)生命中的特征串的末尾即是當前讀入的算法字符; 當所述位向量的更新過程結束時,如果所述特征串發(fā)生過后綴匹配,則僅保留初始向量中所有發(fā)生過后綴命中的活動位,其余全部清O,作為所述特征串前綴匹配的初始向量;匹配命中單元,用于在匹配單元發(fā)生過后綴命中時,在當前的起始偏移值所指向的普通匹配窗口中進行所述特征串命中的確認; 偏移值獲取單元,用于在匹配所述特征串的后綴過程中,當所述偏移值沒有改變時,對所述偏移值進行重新定位,獲取新的起始偏移值,并在偏移值重新定位的過程中,以位并行的方式同步進行特征 串匹配 。
【文檔編號】G06F17/30GK103544208SQ201310363274
【公開日】2014年1月29日 申請日期:2013年8月16日 優(yōu)先權日:2013年8月16日
【發(fā)明者】侯智瀚, 尹延偉 申請人:東軟集團股份有限公司