亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于QS算法的改進(jìn)算法QS_I

        2018-10-25 01:21:18李莉
        現(xiàn)代計(jì)算機(jī) 2018年27期
        關(guān)鍵詞:文本

        李莉

        (福州職業(yè)技術(shù)學(xué)院信息技術(shù)工程系,福州 350100)

        0 引言

        在當(dāng)今大數(shù)據(jù)時(shí)代,數(shù)據(jù)信息量在迅速膨大,如何快速準(zhǔn)確地找到特定的信息是大數(shù)據(jù)領(lǐng)域研究的重點(diǎn)。不管是生物信息領(lǐng)域、航海領(lǐng)域、金融領(lǐng)域、文學(xué)領(lǐng)域還是計(jì)算機(jī)領(lǐng)域,文本都是必不可少的信息組成元素,模式匹配算法不僅應(yīng)用在模式識(shí)別領(lǐng)域,也廣泛應(yīng)用于文本挖掘、網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NIDS)等領(lǐng)域,所以尋找精確而有效的模式匹配算法已成為研究的焦點(diǎn)之一[1-2]。

        本文研究的算法是基于字符比較的單模式匹配算法。BM(Boyer-Moore)算法[3]是經(jīng)典的單模式匹配算法,基于BM算法的改進(jìn)算法有BMH算法[4]、QS算法[5]、FQS算法[6]等,I_BMH2C算法[7]和QSP算法[8]是基于QS算法提出的兩種改進(jìn)算法。本文在QS算法基礎(chǔ)上提出一種新的改進(jìn)算法 QS_I(QS Improvement)算法,并將QS_I算法與QS算法、I_BMH2C算法和QSP算法的性能做了對(duì)比,理論與實(shí)驗(yàn)均證明QS_I算法的性能均高于 QS、I_BMH2C、QSP 算法。

        1 相關(guān)算法分析

        本文中的文本以T=T[0...n-1]表示,長(zhǎng)度為n;模式串以P=P[0...m-1]表示,長(zhǎng)度為m;且滿足條件n>=m。按照單模式匹配算法的定義,找出文本T中所有匹配的模式串P的起始位置j:T[j]=P[0],T[j+1]=P[1]......T[j+m-1]=P[m-1]。

        1.1 QS算法

        Horspool在1980年提出改進(jìn)與簡(jiǎn)化BM算法BMH算法[4],1990年Sunday在BMH算法的基礎(chǔ)上提出新的改進(jìn)算法BMHS算法,簡(jiǎn)稱QS算法[5]。QS算法的改進(jìn)思路:預(yù)處理部分只引用壞字符跳躍規(guī)則進(jìn)行匹配,在當(dāng)前匹配窗口出現(xiàn)不匹配時(shí),模式串必然右移,末字符的下一字符(T[j+m])是下次匹配窗口的處理對(duì)象,使用字符T[j+m]決定模式串當(dāng)前的右移量,若字符T[j+m]未在模式P中出現(xiàn)時(shí),窗口右移量為m+1,大于BM算法的最大右移量m。QS算法預(yù)處理部分的壞字符規(guī)則略有改進(jìn),公式如下:

        以文本串T=“DCBDADBCDBDCCADCCBADACDC”和模式串P=“CBADACDC”為例,匹配過程如表1所示。預(yù)處理后得到數(shù)組QBCp的值為:QBCp[A,B,C,D]=[4,7,1,2]。

        表1 QS匹配過程

        1.2 I_BMH 2 C算法和QSP算法

        2014年王艷霞在BMH2C算法[9]的基礎(chǔ)上提出一種改進(jìn)算法——I_BMH2C算法[7],BMH2C算法使用末字符(T[j+m-1])和下一字符(T[j+m])兩個(gè)字符作為子串來決定右移量,但BMH2C算法并沒有考慮雙字符在模式串中重復(fù)出現(xiàn)的情況。I_BMH2C算法的改進(jìn)思路:分析雙字符在模式串中出現(xiàn)0次、1次和1次以上三種情況,利用兩個(gè)右移數(shù)組和一個(gè)模式串預(yù)處理數(shù)組,在匹配過程中通過判斷字符T[k+2]與模式串預(yù)處理數(shù)組中相應(yīng)字符是否相等,再選擇右移數(shù)組之一的對(duì)應(yīng)值作為當(dāng)前窗口的右移量[9]。

        2016年LI結(jié)合BMH2C算法和I_BMH2C算法的不足之處,提出一種改進(jìn)算法——QSP算法[8],QSP算法預(yù)處理部分只從單字符的角度進(jìn)行考慮,找出模式串中出現(xiàn)1次以上的單字符,計(jì)算出這些字符的跳轉(zhuǎn)期望值差,得到最大差值和相應(yīng)字符P[maxPos],并修改第二跳轉(zhuǎn)數(shù)組的值;在匹配部分先比較P[maxPos]和T[j+maxPos],再選擇相應(yīng)的跳轉(zhuǎn)數(shù)組進(jìn)行右移。

        I_BMH2C算法分析T[j+m-1]和T[j+m]雙子字符和T[k+2]字符,在預(yù)處理部分計(jì)算復(fù)雜度高,雙字符在模式串中出現(xiàn)1次以上的情況比單字符重復(fù)出現(xiàn)的概率低,每次右移量并不能最大優(yōu)化,QSP算法的運(yùn)行效率明顯高于I_BMH2C算法。QSP算法在匹配階段,先只匹配P[maxPos]和T[j+maxPos],不是與文本一一進(jìn)行比較,在相等的情況下,ESi的值如果大于QS預(yù)處理規(guī)則的距離,窗口的右移量將得到提升,但QSP算法窗口最大右移量只為m+1,與QS算法的最大右移量一致,QSP算法的最壞時(shí)間復(fù)雜度為O(n*m),最好的時(shí)間復(fù)雜度為O(n/m)。綜上所述,以上兩種改進(jìn)算法都有待進(jìn)一步提升[10-11]。

        2 QS_I算法

        2.1 QS_I算法思路

        QSP算法的運(yùn)行效率比QS算法好,但QSP算法的最大右移量只為m+1,具有一定的局限性。本文結(jié)合QSP算法的不足之處,提出一種新的改進(jìn)算法QS_I算法,QS_I算法是基于模式串單字符的QS改進(jìn)算法,它的改進(jìn)之處在于預(yù)處理考慮模式串中重復(fù)出現(xiàn)的單字符,計(jì)算出所有單字符距離前部分最近出現(xiàn)同樣字符的距離,獲取距離最遠(yuǎn)的單字符p[pfi](下文用P_WORD表示)、此字符在模式串中的位置pfi值和模式串初步右移量SHIFT_1,在匹配階段只用模式串的單字符P_WORD與相應(yīng)的文本字符(T[j+pfi])進(jìn)行對(duì)比,兩字符不匹配,預(yù)測(cè)模式串初步移動(dòng)SHIFT_1距離后模式串和文本依舊不匹配,再根據(jù)跳轉(zhuǎn)數(shù)組shift決定模式串第二次右移的距離為shift[s[j+SHIFT_1+m],QS_I算法的最大右移量為m+1+SHIFT_1,大于QSP算法。

        QS_I算法分為預(yù)處理階段和匹配階段兩部分,QS_I算法的流程圖如圖1:

        圖1 QS_I算法流程圖

        2.2 預(yù)處理階段

        QS_I算法的預(yù)處理部分結(jié)合QS算法的預(yù)處理,并作相應(yīng)的改進(jìn),預(yù)處理部分得到的是距離最遠(yuǎn)的單字符P_WORD的位置pfi值、模式串初步右移量SHIFT_1和shift數(shù)組。shift數(shù)組仍采用QS算法的預(yù)處理規(guī)則(公式1),shift數(shù)組在QS_I算法中的作用是計(jì)算模式串末字符對(duì)應(yīng)文本位置的下一個(gè)字符的跳轉(zhuǎn)距離;QS_I算法預(yù)處理的改進(jìn)部分體現(xiàn)在得到P_WORD值的過程中,整體分析模式串,計(jì)算出所有單字符距離前期最近出現(xiàn)同樣字符的距離,比較得出最大的距離SHIFT_1值和單字符P_WORD的位置pfi值。預(yù)處理部分算法的時(shí)間復(fù)雜度為O(m*m)。

        預(yù)處理過程的主要改進(jìn)偽代碼如下:

        int ds=-1,SHIFT_1=0,flag=0;

        int pfi=m-1;//默認(rèn)是模式串的末字符

        for(i=1;i

        {

        for(j=0;j

        {

        if(x[j]==x[i])//找最右邊出現(xiàn)的同樣字符

        {

        ds=i-j;//計(jì)算單字符距離前部分最近出現(xiàn)同樣字符的距離

        }

        }

        if(ds>=SHIFT_1)//比較得出最大的距離SHIFT_1值和單字符P_WORD的位置pfi值

        {SHIFT_1=ds;

        flag=1;

        pfi=i;

        }

        ds=-1;//重置ds

        }

        同樣以模式串P=“CBADACDC”為例,引用公式(1)計(jì)算得出shift數(shù)組的值為:shift[A,B,C,D]=[4,7,1,2]。引用上面的偽代碼進(jìn)行計(jì)算,得出相應(yīng)的值為P_WORD=P[5]='C',pfi=5,SHIFT_1=5-0=5,計(jì)算過程如表2所示:

        表2 QS_I預(yù)處理過程

        2.3 匹配階段

        QS_I算法的匹配階段分為兩個(gè)步驟,具體核心代碼如下:

        int SHIFT_1=preQs_IBc(p,m);//計(jì)算模式串初步的右移量

        char PM_WORD=p[pfi];//模式串中間字符

        while(j

        {

        //1.模式串的單字符P_WORD與相應(yīng)的文本字符

        (T[j+pfi])不相等

        while(T[j+pfi]!=P_WORD)

        {

        //指針j右移距離=初步的移動(dòng)距離+再次的右移量

        j=j+SHIFT_1+shift[T[j+SHIFT_1+m]];

        if(j>n-m)

        {

        return

        }

        }

        //2.兩字符若相等,則引用QS算法匹配過程

        compare P[0…,m-1]and T[j,…j+m-1]

        if all matched then do

        output j

        end if

        j=j+shift1[T[j+m]];//指針j的距離直接引用QS算法規(guī)則計(jì)算

        }

        匹配階段的改進(jìn)思路:先直接比較模式串單字符P_WORD與相對(duì)應(yīng)的文本字符T[j+pfi],若兩字符不等,且字符P_WORD距離左邊SHIFT_1的距離又重復(fù)出現(xiàn),那么模式串移動(dòng)SHIFT_1后,模式串顯然不匹配當(dāng)前對(duì)應(yīng)的文本字符串,再引用shift數(shù)組,計(jì)算相對(duì)應(yīng)的文本下一字符(T[j+SHIFT_1+m])的右移量SHIFT_2(shift[T[j+SHIFT_1+m]]),指針j跳轉(zhuǎn)距離為SHIFT_1+SHIFT_2;單字符P_WORD沒有在模式串前部分出現(xiàn)過,SHIFT_1=0,SHIFT_2=T[j+SHIFT_1+m]=T[j+m],表示直接引用QS規(guī)則進(jìn)行右移。若兩字符相等,說明在當(dāng)前指針j位置,存在全匹配的可能性,再進(jìn)行一一比較。

        在匹配過程中,QS_I算法的最壞搜索時(shí)間復(fù)雜度為O(m*n),最好時(shí)間復(fù)雜度為O(m/n)[12]。

        同樣以文本串 T=“DCBDADBCDBDCCADCCBA?DACDC”和模式串P=“CBADACDC”為例,預(yù)處理后得到的值為 pfi=5,P_WORD='C',SHIFT_1=5,數(shù)組 shift的值為:shift[A,B,C,D]=[4,7,1,2]。

        匹配過程如表3所示。

        表3 QS_I匹配過程

        如表3所示,在第一次匹配窗口中,文本指針j=0,因?yàn)?P[5]≠T[0+5]即'D'!='C',所以 j=j+SHIFT_1+shift[T[j+SHIFT_1+m]]=0+5+shift[T[13]]=5+4=9;在第二次匹配窗口中,P[5]≠T[9+5],j=9+5+shift[9+5+8]=14+2=16;在第三次匹配窗口中,P[5]=T[16+5],則進(jìn)入搜索全匹配模式串階段,并找到一個(gè)全匹配模式串P,輸出當(dāng)前指針j=16。

        QSP算法的匹配過程如表4所示:

        表4 QSP匹配過程

        圖2 bible文本運(yùn)行時(shí)間圖

        從表1、表3、表4可以看出,QS算法、QSP算法和QS_I算法的匹配窗口次數(shù)分別是6次、5次和3次,QS_I算法的比較窗口次數(shù)明顯低于QS算法和QSP算法的窗口次數(shù)。通過以下的實(shí)驗(yàn)證明QS_I算法的匹配效率確實(shí)高于QS算法和QSP算法。

        3 實(shí)驗(yàn)結(jié)果

        本文針對(duì)QS算法、I_BMH2C算法、QSP算法和QS_I算法進(jìn)行對(duì)比實(shí)驗(yàn)分析。算法是在Visual C++6.0編譯器上實(shí)現(xiàn),并運(yùn)行在CPU為Intel 2.30GHz,內(nèi)存為4GB的計(jì)算機(jī)上,算法采用C語(yǔ)言實(shí)現(xiàn)。

        本文實(shí)驗(yàn)的文本是bible.txt和100M128.txt,bible.txt文本來源于坎特伯雷語(yǔ)料(http://corpus.canterbury.ac.nz/),字符集大小分別為 63,100M128.txt是隨機(jī)生成的100MB大小的文本,字符集大小為128。實(shí)驗(yàn)隨機(jī)構(gòu)建長(zhǎng)度為m(5<=m<=50)模式串,長(zhǎng)度間隔為5,每組測(cè)試的次數(shù)為10次取平均值,執(zhí)行上述算法程序,統(tǒng)計(jì)出模式串不同長(zhǎng)度時(shí)各算法的運(yùn)行時(shí)間。

        四種算法的運(yùn)行時(shí)間圖如下:

        圖3 100M文本運(yùn)行時(shí)間圖

        從圖2和圖3的運(yùn)行時(shí)間圖可以看出,在字符集不大于128時(shí),QS_I算法的運(yùn)行時(shí)間明顯低于QS算法、I_BMH2C算法和QSP算法,說明在此區(qū)域中,QS_I算法窗口平均右移量高于其他三個(gè)算法。QS_I算法預(yù)處理和匹配階段的計(jì)算復(fù)雜度比I_BMH2C算法和QSP算法簡(jiǎn)單,在匹配階段先只用模式串單字符P_WORD和文本字符T[j+pfi]進(jìn)行比較,若不匹配可右移SHIFT_1+SHIFT_2兩步,若兩字符相等再引用QS匹配規(guī)則,所以QS_I算法的最大右移量為m+1+SHIFT_1。

        4 結(jié)語(yǔ)

        本文通過分析QS算法、I_BMH2C算法、QSP算法,并在QS算法的基礎(chǔ)上提出一種改進(jìn)算法——QS_I算法,QS_I算法不僅用單字符考慮當(dāng)前窗口不匹配的可能性,還預(yù)測(cè)下次窗口移動(dòng)的距離,模式串最大右移量為m+1+SHIFT_1,通過實(shí)驗(yàn)證明在字符集不大于128時(shí),QS_I算法的運(yùn)行效率明顯高于其他算法。綜上所述,QS_I算法提高了匹配效率,具有一定的應(yīng)用前景。

        猜你喜歡
        文本
        文本聯(lián)讀學(xué)概括 細(xì)致觀察促寫作
        重點(diǎn):論述類文本閱讀
        重點(diǎn):實(shí)用類文本閱讀
        初中群文閱讀的文本選擇及組織
        甘肅教育(2020年8期)2020-06-11 06:10:02
        作為“文本鏈”的元電影
        在808DA上文本顯示的改善
        “文化傳承與理解”離不開對(duì)具體文本的解讀與把握
        基于doc2vec和TF-IDF的相似文本識(shí)別
        電子制作(2018年18期)2018-11-14 01:48:06
        文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學(xué)隱喻
        從背景出發(fā)還是從文本出發(fā)
        国产成人亚洲综合无码精品| 白嫩丰满少妇av一区二区| 欧美性猛交xxxx乱大交极品| 精品人妻无码视频中文字幕一区二区三区 | 亚洲熟妇乱子伦在线| 亚洲天堂色婷婷一区二区 | 亚洲一区二区三区,日本| 国产精品久线在线观看| 四虎影视永久在线精品| 在线a人片免费观看国产| 国产一区二区三区在线av| 亚洲一区精品无码| 亚洲精品无码av中文字幕| 日本VA欧美VA精品发布| 亚洲av粉色一区二区三区| 亚洲精品岛国av一区二区| 日本在线 | 中文| 久久人人爽人人爽人人av | 欧美片欧美日韩国产综合片| 亚洲精品一区二区成人精品网站| 4hu四虎永久免费地址ww416| 女同性黄网aaaaa片| 2022国内精品免费福利视频| 亚洲精品av一区二区日韩| 久久久久人妻精品一区二区三区| 日本无码人妻波多野结衣| 国产精品无码Av在线播放小说| 亚洲一区极品美女写真在线看 | 人妻少妇不满足中文字幕| 欧美寡妇xxxx黑人猛交| 免费在线亚洲视频| 中文字幕视频二区三区| 中文字幕人成人乱码亚洲av| 久久久久国产一区二区| 亚洲AV成人无码国产一区二区| 亚洲中文字幕免费精品| 99无码精品二区在线视频| 男女超爽视频免费播放| 中文字幕一区二区三在线| 国产一级内射视频在线观看| 亚洲国产长腿丝袜av天堂|