国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多模式匹配方法、裝置和設(shè)備的制作方法

      文檔序號(hào):6359544閱讀:180來源:國(guó)知局
      專利名稱:多模式匹配方法、裝置和設(shè)備的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及模式匹配技木,尤其涉及一種多模式匹配方法、裝置和設(shè)備。
      背景技術(shù)
      多模式匹配問題是計(jì)算機(jī)科學(xué)的基本問題之一,多模式匹配問題可以簡(jiǎn)單描述為一個(gè)搜尋文本和ー個(gè)搜尋模式集合,判斷此搜尋文本包含搜尋模式集合中的多少個(gè)搜尋·模式。比如搜尋·文本A為abcdefgl23456,搜尋■模式集合C為{abc、ef、tian、123、67、890}。那么,進(jìn)行多模式匹配后,輸出的結(jié)果就是搜尋文本A中包含搜尋模式abc、ef和123。多模式匹配只要掃描一遍搜尋文本,就能夠找出該搜尋文本匹配的所有搜尋模 式,具有很高的匹配效率,廣泛用于入侵檢測(cè)、病毒檢測(cè)、搜索引擎和數(shù)據(jù)挖掘等領(lǐng)域。AC (Aho-Corasick)算法是ー種經(jīng)典的多模式匹配算法,能夠在任意的搜尋文本中定位任一個(gè)搜尋模式的所有位置。該算法利用有限自動(dòng)機(jī)巧妙地將字符比較轉(zhuǎn)化為狀態(tài)轉(zhuǎn)移。其原理是首先根據(jù)搜尋模式集合定義ー個(gè)有限狀態(tài)模式匹配機(jī),然后把搜尋文本作為模式匹配狀態(tài)機(jī)的輸入,只要匹配到搜尋模式,就會(huì)通報(bào)此搜尋模式成功。在標(biāo)準(zhǔn)的AC算法中,搜尋文本的每次輸入是ー個(gè)字節(jié)。以搜尋■模式集合{he、she、his、hers}為例,由此搜尋■模式集合構(gòu)建的AC狀態(tài)機(jī)如圖I所示,圖Ia 圖Ic為現(xiàn)有技術(shù)AC狀態(tài)機(jī)的示意圖。圖Ia中,姆ー個(gè)圓圈表示ー個(gè)狀態(tài)節(jié)點(diǎn),每個(gè)狀態(tài)節(jié)點(diǎn)都包含三個(gè)重要數(shù)據(jù)轉(zhuǎn)移(goto)函數(shù)(圖la)、失效(failure)函數(shù)(圖Ib)、輸出(output)函數(shù)(圖Ic)。其中,goto函數(shù)用于把ー個(gè)由狀態(tài)和輸入字符組成的ニ元組映射成另ー個(gè)狀態(tài)或是失?。籪ailure函數(shù)用于把ー個(gè)狀態(tài)映射到另ー個(gè)狀態(tài)。當(dāng)goto函數(shù)報(bào)告失效時(shí),failure函數(shù)就會(huì)被詢問;output函數(shù),用于表示某個(gè)搜尋模式已經(jīng)被匹配。在基本AC狀態(tài)機(jī)的狀態(tài)遷移中,在當(dāng)前狀態(tài)S和輸入字符c下,下ー個(gè)狀態(tài)為操作I :如果goto (S,c)存在,那么下ー個(gè)狀態(tài)為goto (S,C),算法結(jié)束;否則,執(zhí)行操作2 ;操作2 :將failure (S)賦值給S,執(zhí)行操作I。由于在基本AC狀態(tài)機(jī)中,如果goto函數(shù)的結(jié)果不存在,就會(huì)導(dǎo)致一次或是多次的訪問failure函數(shù),為了提高AC狀態(tài)機(jī)的效率,現(xiàn)有技術(shù)提出ー種去failure的AC狀態(tài)機(jī)。在去failure的AC狀態(tài)機(jī)中,姆ー個(gè)狀態(tài)節(jié)點(diǎn)沒有failure函數(shù),而是把goto函數(shù)和failure函數(shù)統(tǒng)一為下一個(gè)狀態(tài)(nextstate)函數(shù)。去failure的AC狀態(tài)機(jī)的示意圖和標(biāo)準(zhǔn)AC狀態(tài)機(jī)的示意圖是ー樣的,只是每個(gè)狀態(tài)節(jié)點(diǎn)下,不再有g(shù)oto函數(shù)和failure函數(shù),而是用nextstate函數(shù)替代。nextstate函數(shù),用于把ー個(gè)由狀態(tài)和輸入字符組成的ニ元組映射成另ー個(gè)狀態(tài)。即通過nextstate函數(shù),可獲知ー個(gè)確定的下ー個(gè)狀態(tài)。有了 nextstate函數(shù)后,AC狀態(tài)機(jī)的遷移就簡(jiǎn)單多了,在當(dāng)前狀態(tài)S和當(dāng)前輸入字符c下,那么下ー個(gè)狀態(tài)就是nextstate (S, c)。為了方便獲取nextstate函數(shù),每ー個(gè)狀態(tài)節(jié)點(diǎn)需保存下一個(gè)狀態(tài)表,每ー個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表記錄在當(dāng)前狀態(tài)下,在不同的輸入字符時(shí)的下ー個(gè)狀態(tài)值,即在當(dāng)前狀態(tài)下,輸入某個(gè)字符,那么將遷移到哪ー個(gè)狀態(tài)。由于字符是ー個(gè)字節(jié),能夠表示美國(guó)信息互換標(biāo)準(zhǔn)代石馬(American S tandard Code for Information Interchange ;以下簡(jiǎn)稱ASCII)碼中的0 255。其中,ASCII碼表記錄的是用戶所看到的字符與計(jì)算機(jī)內(nèi)部的真正數(shù)值之間的映射,由于ー個(gè)字節(jié)的取值范圍是O 255,因而ASCII碼表有256個(gè)單元。比如用戶看到的字母a,計(jì)算機(jī)內(nèi)部的保存數(shù)值是97 ;用戶看到的數(shù)字1,計(jì)算機(jī)內(nèi)部的保存數(shù)值是31,等等。因而下ー個(gè)狀態(tài)表是ー個(gè)具有256個(gè)成員的數(shù)組。以圖Ia中的狀態(tài)節(jié)點(diǎn)I為例,狀態(tài)節(jié)點(diǎn)I在256個(gè)不同ASCII碼值輸入時(shí)的下一個(gè)狀態(tài)表,可以如表I所示。表I
      權(quán)利要求
      1.一種多模式匹配方法,其特征在于,包括 查詢映射表,獲得搜尋文本中的字符的映射值; 將所述字符的映射值輸入精簡(jiǎn)的AC狀態(tài)機(jī),以確定所述搜尋文本包含的搜尋模式;所述精簡(jiǎn)的AC狀態(tài)機(jī)根據(jù)所述映射表構(gòu)建,所述精簡(jiǎn)的AC狀態(tài)機(jī)中每個(gè)狀態(tài)節(jié)點(diǎn)的下ー個(gè)狀態(tài)表的輸入字符的范圍包括通配字符和有效輸入字符,所述通配字符用于表示無效輸入字符;所述有效輸入字符包括搜尋模式集合中的字符,所述無效輸入字符包括美國(guó)信息互換標(biāo)準(zhǔn)代碼ASCII碼表中除所述有效輸入字符之外的其他字符;所述映射表包括所述有效輸入字符和所述有效輸入字符的映射值,以及所述無效輸入字符和所述無效輸入字符的映射值。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述查詢映射表,獲得搜尋文本中的字符的映射值之前,還包括 對(duì)所述搜尋模式集合進(jìn)行掃描,將所述搜尋模式集合中包含的字符劃分為有效輸入字符,將ASCII碼表中除所述有效輸入字符之外的其他字符劃分為無效輸入字符; 將所述有效輸入字符映射為所述有效輸入字符在由所述搜尋模式集合包含的字符組成的有效輸入字符集合中的序號(hào),并將所述無效輸入字符映射為由所述搜尋模式集合包含的字符組成的有效輸入字符集合的集合大小,以構(gòu)建所述映射表; 根據(jù)所述映射表構(gòu)建精簡(jiǎn)的AC狀態(tài)機(jī)。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述映射表構(gòu)建精簡(jiǎn)的AC狀態(tài)機(jī)包括 根據(jù)所述搜尋模式集合,構(gòu)建標(biāo)準(zhǔn)的AC狀態(tài)機(jī); 將所述標(biāo)準(zhǔn)的AC狀態(tài)機(jī)每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述無效輸入字符對(duì)應(yīng)的表項(xiàng)壓縮為所述通配字符對(duì)應(yīng)的表項(xiàng),按照所述映射表中所述有效輸入字符和所述通配字符的映射值的順序,調(diào)整所述每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述有效輸入字符和所述通配字符的順序,使得所述每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述有效輸入字符和所述通配字符的順序與所述映射表中所述有效輸入字符和所述通配字符的映射值的順序一致。
      4.根據(jù)權(quán)利要求1-3任意一項(xiàng)所述的方法,其特征在于,所述精簡(jiǎn)的AC狀態(tài)機(jī)中每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述通配字符對(duì)應(yīng)表項(xiàng)的下一個(gè)狀態(tài)為初始狀態(tài)。
      5.一種多模式匹配裝置,其特征在于,包括 查詢模塊,用于查詢映射表,獲得搜尋文本中的字符的映射值; 輸入模塊,用于將所述查詢模塊獲得的所述字符的映射值輸入精簡(jiǎn)的AC狀態(tài)機(jī),以確定所述搜尋文本包含的搜尋模式;所述精簡(jiǎn)的AC狀態(tài)機(jī)根據(jù)所述映射表構(gòu)建,所述精簡(jiǎn)的AC狀態(tài)機(jī)中每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表的輸入字符的范圍包括通配字符和有效輸入字符,所述通配字符用于表示無效輸入字符;所述有效輸入字符包括搜尋模式集合中的字符,所述無效輸入字符包括美國(guó)信息互換標(biāo)準(zhǔn)代碼ASCII碼表中除所述有效輸入字符之外的其他字符;所述映射表包括所述有效輸入字符和所述有效輸入字符的映射值,以及所述無效輸入字符和所述無效輸入字符的映射值。
      6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括 掃描模塊,用于對(duì)搜尋模式集合進(jìn)行掃描,將所述搜尋模式集合中包含的字符劃分為有效輸入字符,將ASCII碼表中除所述有效輸入字符之外的其他字符劃分為無效輸入字符; 構(gòu)建模塊,用于將所述有效輸入字符映射為所述有效輸入字符在由所述搜尋模式集合包含的字符組成的有效輸入字符集合中的序號(hào),并將所述無效輸入字符映射為由所述搜尋模式集合包含的字符組成的有效輸入字符集合的集合大小,以構(gòu)建所述映射表,并根據(jù)所述映射表構(gòu)建精簡(jiǎn)的AC狀態(tài)機(jī)。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在干, 所述構(gòu)建模塊,具體用于根據(jù)所述搜尋模式集合,構(gòu)建標(biāo)準(zhǔn)的AC狀態(tài)機(jī),將所述標(biāo)準(zhǔn)的AC狀態(tài)機(jī)每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述無效輸入字符對(duì)應(yīng)的表項(xiàng)壓縮為所述通配字符對(duì)應(yīng)的表項(xiàng),按照所述映射表中所述有效輸入字符和所述通配字符的映射值的順序,調(diào)整所述每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述有效輸入字符和所述通配字符的順序,使得所述每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述有效輸入字符和所述通配字符的順序與所述映射表中所述有效輸入字符和所述通配字符的映射值的順序一致。
      8.根據(jù)權(quán)利要求5-7任意一項(xiàng)所述的裝置,其特征在于,所述精簡(jiǎn)的AC狀態(tài)機(jī)中每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表中所述通配字符對(duì)應(yīng)表項(xiàng)的下一個(gè)狀態(tài)為初始狀態(tài)。
      9.一種設(shè)備,其特征在于,包括如權(quán)利要求5-8任意一項(xiàng)所述的多模式匹配裝置。
      全文摘要
      本發(fā)明提供一種多模式匹配方法、裝置和設(shè)備,上述多模式匹配方法包括查詢映射表,獲得搜尋文本中的字符的映射值;將該字符的映射值輸入精簡(jiǎn)的AC狀態(tài)機(jī),以確定搜尋文本包含的搜尋模式;精簡(jiǎn)的AC狀態(tài)機(jī)中每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表的輸入字符的范圍包括通配字符和有效輸入字符,通配字符用于表示無效輸入字符;有效輸入字符包括搜尋模式集合中的字符,無效輸入字符包括ASCII碼表中除有效輸入字符之外的其他字符。本發(fā)明中精簡(jiǎn)的AC狀態(tài)機(jī)將所有無效輸入字符壓縮為一個(gè)通配字符,從而可以實(shí)現(xiàn)減小AC狀態(tài)機(jī)中每個(gè)狀態(tài)節(jié)點(diǎn)的下一個(gè)狀態(tài)表的內(nèi)存消耗,進(jìn)而可以縮小AC狀態(tài)機(jī)的內(nèi)存消耗,提高AC狀態(tài)機(jī)的效率。
      文檔編號(hào)G06F17/30GK102646123SQ201210044759
      公開日2012年8月22日 申請(qǐng)日期2012年2月23日 優(yōu)先權(quán)日2012年2月23日
      發(fā)明者陳國(guó)鵬 申請(qǐng)人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1