欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種串匹配算法的加速方法及裝置與流程

文檔序號:12271278閱讀:243來源:國知局
一種串匹配算法的加速方法及裝置與流程

本發(fā)明涉及信息檢索、模式識別和計算機體系結(jié)構(gòu)領(lǐng)域,特別涉及一種串匹配算法的加速方法及裝置。



背景技術(shù):

串匹配算法廣泛應(yīng)用在生物信息學、入侵檢測、信息過濾、數(shù)據(jù)庫、中文分詞等眾多領(lǐng)域,高性能串匹配算法研究具有重要的理論意義和應(yīng)用價值。

在多模式串匹配算法中基于狀態(tài)機的模式匹配算法最具代表性,應(yīng)用也最為廣泛,基于狀態(tài)機的模式匹配算法具備性能穩(wěn)定的特點,該類算法以Aho-Corasick算法為代表,Aho-Corasick算法由貝爾實驗室的Aho和Corasick于1975年提出,它采用有限狀態(tài)自動機結(jié)構(gòu)一次接收所有模式串,通過構(gòu)造狀態(tài)機來掃描匹配文本,在狀態(tài)機結(jié)構(gòu)中,無論某個前綴同時屬于幾個模式,它都有唯一的狀態(tài)來表示,Aho-Corasick算法的時間復雜度為O(n),其中,n為輸入串的長度。

IBM蘇黎世研究院的Lunteren在2006年提出了帶優(yōu)先級的狀態(tài)機類算法,它通過對轉(zhuǎn)換規(guī)則進行優(yōu)先級劃分,從而進一步壓縮了Aho-Corasick算法所需存儲空間,盡管該算法具有很好的存儲效率,并可以針對正則表達式進行匹配,但并沒有進一步找到AC算法存儲空間很大的本質(zhì)原因。

Smith等人在2008年提出了將每個狀態(tài)結(jié)合一個擴展變量的擴展狀態(tài)機XFA,該方法可以通過定義變量進一步減少多模式產(chǎn)生的狀態(tài)機規(guī)模,給出了一種靈活壓縮狀態(tài)機的辦法,然而,該方法由于復雜的狀態(tài)操作,更適用于軟件實現(xiàn),硬件實現(xiàn)復雜性較高.盡管Smith也給出了相關(guān)的硬件設(shè)計,但由于關(guān)鍵路徑相關(guān)性很高,無法進行有效的流水線設(shè)計,延長了最短路徑時間,從而降低了頻率影響整體性能。

Yang等人提出了針對多正則表達式匹配的時空可切換半確定狀態(tài)機SFA,該狀態(tài)機是DFA(確定有窮自動機)和NFA(不確定有窮自動機)之間的一種結(jié)構(gòu),由確定數(shù)量并行DFA組成,但由該方法構(gòu)造的狀態(tài)機十分復雜,不適合大規(guī)模模式使用。

此外,GPU作為高速處理引擎,近年來也被引入多模式匹配領(lǐng)域,由于GPU具有高度并行性,且編程容易,已有方法都取得了較好效果,由于網(wǎng)絡(luò)處理具有較為固定的處理模式,不需要經(jīng)常改變,定制電路設(shè)計相比GPU,在芯片使用效率和成本上更有優(yōu)勢。

隨著對模式匹配性能需求的增加,基于狀態(tài)機類的模式匹配算法成為高性能模式匹配體系結(jié)構(gòu)設(shè)計的基礎(chǔ),但是,這類算法生成的DFA規(guī)模較大,尤其是對于大規(guī)模模式集(10萬以上規(guī)模的模式集),所生成狀態(tài)機規(guī)模對存儲空間需求很大,既不利于軟件算法快速實現(xiàn),也無法適合硬件實現(xiàn),為此,國際上相關(guān)研究主要圍繞如何降低狀態(tài)機類算法所需的規(guī)模和存儲空間展開,應(yīng)該說,簡潔且有效的算法是解決該領(lǐng)域問題的首選,過分追求存儲空間最優(yōu)但造成結(jié)構(gòu)復雜的方法生命力有限。



技術(shù)實現(xiàn)要素:

針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種串匹配算法的加速方法及裝置。

本發(fā)明提出一種串匹配算法的加速方法,包括

構(gòu)造基本轉(zhuǎn)換規(guī)則與交叉轉(zhuǎn)換規(guī)則,根據(jù)緩存策略函數(shù)確定狀態(tài)緩存寄存器中的狀態(tài)Sc1與Sc2,判斷當前狀態(tài)Si在基本轉(zhuǎn)換規(guī)則和n步交叉轉(zhuǎn)換規(guī)則中是否存在接收當前字符c的轉(zhuǎn)換規(guī)則,如果存在對應(yīng)的轉(zhuǎn)換規(guī)則,則應(yīng)用對應(yīng)的轉(zhuǎn)換規(guī)則,并跳到下一個狀態(tài)Sk,應(yīng)用基本轉(zhuǎn)換規(guī)則或n步交叉轉(zhuǎn)換規(guī)則,同時按緩存策略函數(shù)更新緩存寄存器中的狀態(tài)Sc1與Sc2;否則,將被緩存的狀態(tài)Sc2取出,并以狀態(tài)Sc2為當前狀態(tài),在基本轉(zhuǎn)換規(guī)則與n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則;如果尋找到對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,并應(yīng)用2步交叉轉(zhuǎn)換規(guī)則;否則,將被緩存的狀態(tài)Sc1取出,并以狀態(tài)Sc1為當前狀態(tài)在基本轉(zhuǎn)換規(guī)則與n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則;如果尋找到對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,并應(yīng)用1步交叉轉(zhuǎn)換規(guī)則;否則,判斷初始狀態(tài)S0是否接收字符c;如果接收字符c,則跳到相應(yīng)狀態(tài),應(yīng)用重啟轉(zhuǎn)換規(guī)則;否則,跳轉(zhuǎn)到初始狀態(tài)S0,用于失敗轉(zhuǎn)換規(guī)則。

通過狀態(tài)轉(zhuǎn)換函數(shù)R構(gòu)造所述交叉轉(zhuǎn)換規(guī)則,所述狀態(tài)轉(zhuǎn)換函數(shù)R的定義為:

其中,Si為當前狀態(tài),Sj為被緩存的狀態(tài)、Rbasic為基本轉(zhuǎn)換規(guī)則、Rn-cross為交叉轉(zhuǎn)換規(guī)則、字符c、狀態(tài)Sj、狀態(tài)Si、狀態(tài)Sk、狀態(tài)Sc1、狀態(tài)Sc2、初始狀態(tài)S0、priority為優(yōu)先級標識,4為最高優(yōu)先級,0為最低優(yōu)先級,如果高優(yōu)先級的結(jié)果有效,則與最高優(yōu)先級的結(jié)果被優(yōu)先采納。

所述重啟轉(zhuǎn)換規(guī)則為從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的后一個狀態(tài)的轉(zhuǎn)換規(guī)則。

所述失敗轉(zhuǎn)換規(guī)則為從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的轉(zhuǎn)換規(guī)則。

本發(fā)明還提出一種串匹配算法的加速裝置,包括

構(gòu)造基本轉(zhuǎn)換規(guī)則模塊,用于構(gòu)造基本轉(zhuǎn)換規(guī)則;

構(gòu)造交叉轉(zhuǎn)換規(guī)則模塊,用于構(gòu)造交叉轉(zhuǎn)換規(guī)則;

匹配模塊,用于根據(jù)緩存策略函數(shù)確定狀態(tài)緩存寄存器中的狀態(tài)Sc1與Sc2,判斷當前狀態(tài)Si在基本轉(zhuǎn)換規(guī)則和n步交叉轉(zhuǎn)換規(guī)則中是否存在接收當前字符c的轉(zhuǎn)換規(guī)則,如果存在對應(yīng)的轉(zhuǎn)換規(guī)則,則應(yīng)用對應(yīng)的轉(zhuǎn)換規(guī)則,并跳到下一個狀態(tài)Sk,應(yīng)用基本轉(zhuǎn)換規(guī)則或n步交叉轉(zhuǎn)換規(guī)則,同時按緩存策略函數(shù)更新緩存寄存器中的狀態(tài)Sc1與Sc2;否則,將被緩存的狀態(tài)Sc2取出,并以狀態(tài)Sc2為當前狀態(tài),在基本轉(zhuǎn)換規(guī)則與n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則;如果尋找到對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,并應(yīng)用2步交叉轉(zhuǎn)換規(guī)則;否則,將被緩存的狀態(tài)Sc1取出,并以狀態(tài)Sc1為當前狀態(tài)在基本轉(zhuǎn)換規(guī)則與n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則;如果尋找到對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,并應(yīng)用1步交叉轉(zhuǎn)換規(guī)則;否則,判斷初始狀態(tài)S0是否接收字符c;如果接收字符c,則跳到相應(yīng)狀態(tài),應(yīng)用重啟轉(zhuǎn)換規(guī)則;否則,跳轉(zhuǎn)到初始狀態(tài)S0,用于失敗轉(zhuǎn)換規(guī)則。

通過狀態(tài)轉(zhuǎn)換函數(shù)R構(gòu)造所述交叉轉(zhuǎn)換規(guī)則,所述狀態(tài)轉(zhuǎn)換函數(shù)R的定義為:

其中,Si為當前狀態(tài),Sj為被緩存的狀態(tài)、Rbasic為基本轉(zhuǎn)換規(guī)則、Rn-cross為交叉轉(zhuǎn)換規(guī)則、字符c、狀態(tài)Sj、狀態(tài)Si、狀態(tài)Sk、狀態(tài)Sc1、狀態(tài)Sc2、初始狀態(tài)S0、priority為優(yōu)先級標識,4為最高優(yōu)先級,0為最低優(yōu)先級,如果高優(yōu)先級的結(jié)果有效,則與最高優(yōu)先級的結(jié)果被優(yōu)先采納。

所述重啟轉(zhuǎn)換規(guī)則為從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的后一個狀態(tài)的轉(zhuǎn)換規(guī)則。

所述失敗轉(zhuǎn)換規(guī)則為從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的轉(zhuǎn)換規(guī)則。

還包括緩存寄存器模塊,用于緩存各狀態(tài)。

還包括選通電路。

由以上方案可知,本發(fā)明的優(yōu)點在于:

本發(fā)明通過增加狀態(tài)緩存組件和選通電路,如寄存器組和多路選通器,在串匹配過程中動態(tài)生成轉(zhuǎn)換規(guī)則,實現(xiàn)了串匹配算法的加速,同時能夠消除傳統(tǒng)串匹配算法中需存儲的大量轉(zhuǎn)換規(guī)則,降低生成狀態(tài)機的規(guī)模,提高串匹配算法的執(zhí)行速度。

附圖說明

圖1為本發(fā)明的總體結(jié)構(gòu)圖;

圖2為交叉轉(zhuǎn)換規(guī)則動態(tài)生成裝置圖;

圖3為總體流程框圖;

圖4為有窮狀態(tài)機DFA圖。

具體實施方式

本發(fā)明的總體結(jié)構(gòu)圖如圖1所示,包含如下步驟:

步驟1)轉(zhuǎn)換規(guī)則預(yù)處理

步驟11)構(gòu)造基本轉(zhuǎn)換規(guī)則

基本轉(zhuǎn)換規(guī)則是指從確定有窮狀態(tài)自動機DFA初始狀態(tài)開始直接接收模式所包含字符串的轉(zhuǎn)換規(guī)則,以Rbasic表示。

步驟12)構(gòu)造交叉轉(zhuǎn)換規(guī)則

交叉轉(zhuǎn)換規(guī)則表示狀態(tài)機中某個狀態(tài)代表的模式后綴與其他模式或該模式的前綴相同,其實質(zhì)是某一段子模式與其他模式或者該模式的前綴相同。在此處只需構(gòu)造3步及3步以上的交叉轉(zhuǎn)換規(guī)則,以Rn-cross表示,其中n為步長值,而大量的1步和2步交叉轉(zhuǎn)換規(guī)則在后續(xù)步驟中動態(tài)生成。

步驟13)構(gòu)造重啟轉(zhuǎn)換規(guī)則和失敗轉(zhuǎn)換規(guī)則

重啟轉(zhuǎn)換規(guī)則為DFA中從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的后一個狀態(tài)的轉(zhuǎn)換規(guī)則,這類轉(zhuǎn)換規(guī)則在模式匹配問題中表示輸入字符無法正確匹配當前的模式路徑,但可以從初始狀態(tài)重新開始一次模式匹配過程,并已經(jīng)接收了第1個字符;失敗轉(zhuǎn)換規(guī)則為DFA中從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的轉(zhuǎn)換規(guī)則,這類轉(zhuǎn)換規(guī)則代表輸入字符無法正確地匹配任何模式及其子模式,因此狀態(tài)機回到初始位置。根據(jù)已有的帶優(yōu)先級的狀態(tài)機類算法,可將重啟轉(zhuǎn)換規(guī)則和失敗轉(zhuǎn)換規(guī)則合并,并控制在256條規(guī)則以內(nèi)。

步驟2)構(gòu)造1步和2步交叉轉(zhuǎn)換規(guī)則生成裝置

步驟21)狀態(tài)轉(zhuǎn)換函數(shù)

狀態(tài)轉(zhuǎn)換函數(shù)R的定義為:

其中,Si為當前狀態(tài),Sj為被緩存的狀態(tài),空集表示不存在對應(yīng)的轉(zhuǎn)換規(guī)則;priority為優(yōu)先級標識,4為最高優(yōu)先級,0為最低優(yōu)先級,如果高優(yōu)先級的結(jié)果有效(非空),則該結(jié)果被優(yōu)先采納;如果優(yōu)先級高的結(jié)果無效,則低優(yōu)先級結(jié)果被采納,結(jié)果無效是指某一狀態(tài)Si在Rbasic和Rn-cross轉(zhuǎn)換函數(shù)中沒有接收字符c的轉(zhuǎn)換規(guī)則。

步驟22)交叉轉(zhuǎn)換規(guī)則動態(tài)生成裝置

交叉轉(zhuǎn)換規(guī)則動態(tài)生成裝置如圖2所示。

生成裝置在原有狀態(tài)機功能中增加對歷史信息的記錄,并由當前狀態(tài)、當前輸入符號和狀態(tài)機的歷史信息一起決定下一個狀態(tài),從外部接口來看,生成裝置與傳統(tǒng)狀態(tài)機一樣,僅接收輸入符號,輸出狀態(tài)機的判斷結(jié)果。所不同之處在于內(nèi)部增加了緩存寄存器,能夠?qū)顟B(tài)按照緩存策略函數(shù)T進行狀態(tài)緩存。

步驟3)多模式串匹配

步驟31)根據(jù)緩存策略函數(shù)確定狀態(tài)緩存寄存器1和2緩存的狀態(tài)Sc1和Sc2,others是指不滿足if后面的表達式的所有情況,即if(Rbasic(Sc1,c)≠Sj&&Rn-cross(Sc1,c)≠Sj):

步驟32)根據(jù)步驟1)的轉(zhuǎn)換規(guī)則集和步驟2)中的狀態(tài)轉(zhuǎn)換函數(shù)進行串匹配:

判斷當前狀態(tài)Si在基本轉(zhuǎn)換規(guī)則和n步交叉轉(zhuǎn)換規(guī)則中是否存在接收當前字符c的轉(zhuǎn)換規(guī)則:

步驟321)如果存在對應(yīng)的轉(zhuǎn)換規(guī)則,則應(yīng)用該規(guī)則,跳到下一個狀態(tài)Sk,實施基本轉(zhuǎn)換規(guī)則或n步交叉轉(zhuǎn)換規(guī)則,同時按緩存策略函數(shù)更新緩存寄存器1和緩存寄存器2中的轉(zhuǎn)換規(guī)則Sc1和Sc2;

步驟322)如果不存在對應(yīng)的轉(zhuǎn)換規(guī)則,則將被緩存的狀態(tài)Sc2取出,并以Sc2狀態(tài)為當前狀態(tài)在基本轉(zhuǎn)換規(guī)則和n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則:

步驟3221)如果存在對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,實施2步交叉轉(zhuǎn)換規(guī)則;

步驟3222)如果不存在對應(yīng)的轉(zhuǎn)換規(guī)則,則將被緩存的狀態(tài)Sc1取出,并以Sc1狀態(tài)為當前狀態(tài)在基本轉(zhuǎn)換規(guī)則和n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則:

步驟32221)如果存在對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,實施1步交叉轉(zhuǎn)換規(guī)則;

步驟32222)如果不存在對應(yīng)的轉(zhuǎn)換規(guī)則,則判斷初始狀態(tài)S0是否接收字符c:

步驟322221)如果接收字符c,則跳到相應(yīng)狀態(tài),實施重啟轉(zhuǎn)換規(guī)則;

步驟322222)如果不接收字符c,跳轉(zhuǎn)到初始狀態(tài)S0,實施失敗轉(zhuǎn)換規(guī)則。

本發(fā)明還提出一種串匹配算法的加速裝置,包括

構(gòu)造基本轉(zhuǎn)換規(guī)則模塊,用于構(gòu)造基本轉(zhuǎn)換規(guī)則;

構(gòu)造交叉轉(zhuǎn)換規(guī)則模塊,用于構(gòu)造交叉轉(zhuǎn)換規(guī)則;

匹配模塊,用于根據(jù)緩存策略函數(shù)確定狀態(tài)緩存寄存器中的狀態(tài)Sc1與Sc2,判斷當前狀態(tài)Si在基本轉(zhuǎn)換規(guī)則和n步交叉轉(zhuǎn)換規(guī)則中是否存在接收當前字符c的轉(zhuǎn)換規(guī)則,如果存在對應(yīng)的轉(zhuǎn)換規(guī)則,則應(yīng)用對應(yīng)的轉(zhuǎn)換規(guī)則,并跳到下一個狀態(tài)Sk,應(yīng)用基本轉(zhuǎn)換規(guī)則或n步交叉轉(zhuǎn)換規(guī)則,同時按緩存策略函數(shù)更新緩存寄存器中的狀態(tài)Sc1與Sc2;否則,將被緩存的狀態(tài)Sc2取出,并以狀態(tài)Sc2為當前狀態(tài),在基本轉(zhuǎn)換規(guī)則與n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則;如果尋找到對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,并應(yīng)用2步交叉轉(zhuǎn)換規(guī)則;否則,將被緩存的狀態(tài)Sc1取出,并以狀態(tài)Sc1為當前狀態(tài)在基本轉(zhuǎn)換規(guī)則與n步交叉轉(zhuǎn)換規(guī)則中尋找接收當前字符c的轉(zhuǎn)換規(guī)則;如果尋找到對應(yīng)的轉(zhuǎn)換規(guī)則,則跳轉(zhuǎn)到對應(yīng)的下一個狀態(tài)Sj,并應(yīng)用1步交叉轉(zhuǎn)換規(guī)則;否則,判斷初始狀態(tài)S0是否接收字符c;如果接收字符c,則跳到相應(yīng)狀態(tài),應(yīng)用重啟轉(zhuǎn)換規(guī)則;否則,跳轉(zhuǎn)到初始狀態(tài)S0,用于失敗轉(zhuǎn)換規(guī)則。

通過狀態(tài)轉(zhuǎn)換函數(shù)R構(gòu)造所述交叉轉(zhuǎn)換規(guī)則,所述狀態(tài)轉(zhuǎn)換函數(shù)R的定義為:

其中,Si為當前狀態(tài),Sj為被緩存的狀態(tài)、Rbasic為基本轉(zhuǎn)換規(guī)則、Rn-cross為交叉轉(zhuǎn)換規(guī)則、字符c、狀態(tài)Sj、狀態(tài)Si、狀態(tài)Sk、狀態(tài)Sc1、狀態(tài)Sc2、初始狀態(tài)S0、priority為優(yōu)先級標識,4為最高優(yōu)先級,0為最低優(yōu)先級,如果高優(yōu)先級的結(jié)果有效,則與最高優(yōu)先級的結(jié)果被優(yōu)先采納。

所述重啟轉(zhuǎn)換規(guī)則為從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的后一個狀態(tài)的轉(zhuǎn)換規(guī)則。

所述失敗轉(zhuǎn)換規(guī)則為從其他狀態(tài)轉(zhuǎn)換到初始狀態(tài)的轉(zhuǎn)換規(guī)則。

還包括緩存寄存器模塊,用于緩存各狀態(tài);選通電路。

以下為本發(fā)明的具體實施例,如下所示:

本方法的總體流程框圖如圖3所示:

現(xiàn)在采用一個模式集為{BASIC,SIEAN}的實例作為本發(fā)明的一個實施例,結(jié)合本發(fā)明的算法,對輸入“BASIEAN”進行串匹配操作。

步驟1轉(zhuǎn)換規(guī)則預(yù)處理:

首先,構(gòu)建基本轉(zhuǎn)換規(guī)則Rbasic的DFA圖,如圖4所示:

接著由此DFA圖建立基本轉(zhuǎn)換規(guī)則表1:(12)

由于沒有3個字符及以上的子串與模式集的前綴相同,故3步及3步以上的交叉轉(zhuǎn)換規(guī)則無。

重啟規(guī)則和失敗規(guī)則見表2:(13)

步驟2利用1步和2步交叉轉(zhuǎn)換規(guī)則生成裝置動態(tài)生成轉(zhuǎn)換規(guī)則并完成串匹配:

第一個周期接收字符“B”,此時應(yīng)用規(guī)則R1,當前狀態(tài)S0變?yōu)镾1,同時根據(jù)緩存策略函數(shù)可得緩存寄存器2的內(nèi)容則為空(Sc2=φ,others),緩存寄存器1的內(nèi)容為狀態(tài)S1(Sc1=Rbasic(S0,B)=S1);

第二個周期接收字符“A”,此時應(yīng)用規(guī)則R2,當前狀態(tài)S1變?yōu)镾2,同時緩存寄存器2的內(nèi)容則為S2(Sc2=Rbasic(Sc1,A)||Rn-cross(Sc1,A)=Rbasic(S1,A)||Rn-cross(S1,A)=S2),緩存寄存器1的內(nèi)容為狀態(tài)S0(Rbasic(S0,A)=φ→Sc1=S0);

第三個周期接收字符“S”,此時應(yīng)用規(guī)則R3,當前狀態(tài)S2變?yōu)镾3,同時緩存寄存器2的內(nèi)容則為S6(Sc2=Rbasic(Sc1,S)||Rn-cross(Sc1,S)=Rbasic(S0,S)||Rn-cross(S0,S)=S6),緩存寄存器1的內(nèi)容為狀態(tài)S6(Sc1=Rbasic(S0,S)=S6);

第四個周期接收字符“I”,此時應(yīng)用規(guī)則R4,當前狀態(tài)S3變?yōu)镾4,同時緩存寄存器2的內(nèi)容為S7(Sc2=Rbasic(Sc1,S)||Rn-cross(Sc1,S)=Rbasic(S6,I)||Rn-cross(S6,I)=S7),緩存寄存器1的內(nèi)容為狀態(tài)S0(Rbasic(S0,I)=φ→Sc1=S0);

第五個周期接收字符“E”,基本轉(zhuǎn)換規(guī)則都為空,此時取出緩存寄存器2的內(nèi)容S7,應(yīng)用規(guī)則R8,當前狀態(tài)S4變?yōu)镾8,同時緩存寄存器2的內(nèi)容變?yōu)榭?Sc2=Rbasic(Sc1,E)||Rn-cross(Sc1,E)=Rbasic(S0,E)||Rn-cross(S0,E)=φ),緩存寄存器1的內(nèi)容為狀態(tài)S0(Rbasic(S0,E)=φ→Sc1=S0);

第六個周期接收字符“A”,此時應(yīng)用規(guī)則R9,當前狀態(tài)S8變?yōu)镾9,同時緩存寄存器2的內(nèi)容則為空(Sc2=Rbasic(Sc1,A)||Rn-cross(Sc1,A)=Rbasic(S0,A)||Rn-cross(S0,A)=φ),緩存寄存器1的內(nèi)容為狀態(tài)S0(Rbasic(S0,A)=φ→Sc1=S0);

第七個周期接收字符“N”,此時應(yīng)用規(guī)則R10,當前狀態(tài)S9變?yōu)镾10,S10為終止狀態(tài)且字符輸入完畢,故成功匹配字符串“SIEAN”,串匹配結(jié)束。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
花莲县| 奉化市| 莱阳市| 武城县| 普定县| 深圳市| 留坝县| 安化县| 大英县| 环江| 通州区| 四平市| 庄浪县| 湾仔区| 南投市| 青铜峡市| 赤峰市| 永年县| 汶川县| 南华县| 烟台市| 沂源县| 广灵县| 海丰县| 高雄县| 瑞丽市| 新竹市| 什邡市| 新和县| 蓬溪县| 荃湾区| 长葛市| 鹿泉市| 尉犁县| 惠州市| 清苑县| 响水县| 华亭县| 承德市| 扎鲁特旗| 雅江县|