999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種新的字符串單模式匹配算法

2008-12-31 00:00:00張永平徐冬陽
電腦知識與技術 2008年15期

摘要:在分析了BM模式匹配算法的基礎上,提出了一種新的字符串單模式匹配算法,該算法通過對模式中的字符進行等級劃分,設置模式中各個字符的優先級,改進模式串的移動方式,減少了模式匹配的次數和字符比較的次數,有效的提高了模式匹配的效率。實驗顯示,該算法有效的提高了模式匹配的效率。

關鍵詞:模式匹配;字符串;文本

中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2008)15-21070-02

A New Algorithm for String Single Pattern Matching

ZHANG Yong-ping,XU Dong-yang

(Computer Science and Technology Department,China University of Mining and Technology,Xuzhou 221008,China)

Abstract:This paper analyzed BM pattern matching algorithms firstly.On the basis of this,a new string single pattern matching algorithm was proposed,which Delaminated the pattern string,set priority of the characters of pattern string,improved the shift way of the pattern string.The algorithm can reduce the times of pattern matching and character comparing,it improves the efficiency of pattern matching effectively.By the experiments,the algorithm can improve the efficiency of pattern matching effectively.

Key words:Pattern matching;Character string;Text

1 引言

字符串的模式匹配問題的形式化定義是:在字符集∑上,給定一個長度為N的文本字符串T[1…N],以及一個長度為M的模式字符串P[1…M]。如果對于1≤s≤N,存在T[s+1…s+M],則模式P在文本T的位置s處出現,即模式與文本匹配。字符串的模式匹配問題就是要尋找P在T中是否出現,以及出現的位置。在字符串匹配的算法中,最著名的是BM算法。本文在對BM匹配算法分析的基礎上,提出一種改進的字符串匹配算法。

2 BM算法

首先,作如下假設:

字符集:X={x|x在正文中出現};正文T:T[1…N],長度為 N;模式P:P[1…M],長度為 M;N≥M。

1977 年,Boyer 和 Moore 提出了一個全新的模式匹配算法——BM 算法。此算法在匹配過程中,模式P從左向右移動,但字符比較按照 P[M]、P[M-1]、…、P[1]的次序從右向左進行。該算法的一個最主要的特點是:在匹配過程中,可以跳過很多無用的字符。通過這種跳躍式的匹配,獲得了極高的匹配效率。BM算法的關鍵是根據給定的模式P,定義一個從字母到正整數的映射函數dist1: x→{1,2, …,m},這里x∈∑ (∑是字符集),函數dist1也稱為滑動距離函數,它給出了正文中可能出現的任意字符x在模式串P中的位置,dist1函數的具體定義如下:

BM算法思想是:假如在執行正文中自位置i起“返前”的一段與模式匹配(自右向左)檢查中,一旦發現不匹配(無論在哪個位置),立即執行由P[M]與T[i+d(T[i])]起始的自右向左的匹配檢查。

例如:文本T為“foucchsixvchhnseerch”,模式P為“seerch”,按照BM算法,字符集X和dist1函數值如表1所示,具體的匹配過程如表2所示(粗體字符為匹配失敗的字符;括號中顯示的數字為當前匹配時,字符比較的次數)。

注釋:第一次匹配,i=4,dist1[c]=1,P向右滑1個字符。第二次匹配,i=7,dist1[s]=5,P向右滑5個字符。第三次匹配,i=10,dist1[v]=6,P向右滑6個字符。第四次匹配,i=18,dist1[r]=2,P向右滑2個字符。第五次匹配成功。

3 一種新的字符串單模式匹配算法

通過上面算法特點的分析,我們可以看出影響字符串模式匹配效率和速度的關鍵因素是:模式P和文本T在某個位置匹配失敗時,如何使模式向右移動的幅度最大,即盡可能多的跳過不需要比較的文本字符,從而減少匹配的次數和匹配過程中字符比較的次數。

基于上面的因素,提出了一種改進的字符串匹配算法,該算法簡單實用,易于理解。算法的基本規則如下:

3.1 比較順序

與BM算法相同,進行模式匹配時,模式串P沿著文本T從左到右移動,字符的比較按照從右至左的順序進行。

3.2 算法的初始化

在開始之前,作如下假設:

字符集:X={x|x在正文中出現};正文串 T:T[1…N],長度為 N;模式串 P:P[1…M],長度為 M;N≥M。

首先定義一個函數S來確定正文T中出現的字符x在模式P中是否存在。定義如下:

我們對模式P中的字符按等級進行優先級別的分類,分類方法如下:

(1)將模式的末尾字符P[M]作為最優先的等級獨立出來進行處理。

(2)將模式中子串P[1…M-1]中的字符以字符重復出現的次數為標準進行分類,出現一次的所有字符列為第一級,把出現兩次的所有字符列為第二級,依此類推,直至將所有的字符分配完畢。

(3)字符比較的優先級別按照重復次數的多少,從小到大排列,重復次數越少的優先級越高。同一級別的字符,按照模式P中從左至右出現的順序排列。

對模式P中字符進行優先級分類的同時,將各字符在模式P中對應的位置記錄下來,位置按字符在P中從左至右出現的順序進行記錄,這里定義一個三維數組lev[L][F][G](L記錄級別,F記錄字符,G記錄字符在P中的位置);位置的記錄,便于字符的迅速定位。

此外,我們采用BM算法中的dist1函數。

3.3 算法中模式P移動方式

我們假設:文本串T中和模式串P最后一個字符對應的位置為end。

本算法移動距離的計算,利用了文本串T中的字符T[end+1],還有dist1函數和S函數。具體步驟如下:

(1)首先比較T[end]和P[M],如果字符匹配,執行2);如果字符不匹配,執行3);

(2)按照字符的優先級別,利用記錄的字符位置,在P中定位字符,并與T中對應位置的字符進行比較,直至匹配失敗,記錄下T中失敗字符對應的位置i。然后,判斷S(end+1),如果S(end+1)=0(即T中該字符不在P中),模式P向右移動(M+1)個字符(即移動到T[end+2]),進入下一輪匹配;如果S(end+1)=1(即T中該字符在P中),模式串P向右移動max(dist1[T[i]], dist1[T[end+1]])個字符。

(3)如果T[end]不在P中,模式P向右移動(M)個字符(即跳過T[end]);如果T[end]在P中,判斷S(end+1),若S(end+1)=0,模式P向右移動(M+1)個字符,若S(end+1)=1,模式P向右移動max(dist1[T[end]], dist1[T[end+1]])個字符。

3.4 實例說明

例如,同樣的文本T:“foucchsixvchhnseerch”,模式P:“seerch”,字符集X和dist1函數值如表1所示,P中字符的優先級別為:最高級:h;第一級:s, r, c;第二級:e。用改進算法進行匹配的過程如表3所示(括號中顯示的數字為當前匹配時,字符比較的次數)。

改進算法的匹配過程如下:

第一次匹配:T[h]=P[h],依據步驟2,比較第一層字符,T[f]≠P[s],判斷S(T[s]),S(T[s])=1,(dist1[T[f]]=6)>(dist1[T[s]]=5),所以模式串P向右移動6個字符,第一次匹配結束。

第二次匹配:T[h]=P[h],依據步驟2,比較第一層字符,T[s]=P[s],繼續比較,T[v]≠P[r],判斷T[h],S(T[h])=1,(dist1[T[v]]=6)=(dist1[T[h]]=6),所有模式串P移動6個字符,第二次匹配結束。

第三次匹配:T[r]≠P[h],依據步驟3,T[r]∈P,判斷S(T[c]), S(T[c])=1,(dist1[T[r]]=2)>(dist1[T[c]]=1),所以模式串P向右移動2個字符,第三次匹配結束。

第四次匹配:匹配成功。

在BM算法中,同樣的文本串T和模式串P,一共需要5次匹配,14次字符比較。而使用改進的算法時,只需要4次匹配,12次字符比較。

可以看出,改進算法可以加快字符串模式匹配的速度,提高了字符串模式匹配的效率。

4 實驗結果

本文共測試兩種模式匹配算法,分別是:BM算法、改進算法。文本串T由英文組成,測試結果如表4所示。

通過上面的測試,可以看出本文提出的改進算法有效地減少了模式串匹配地次數,提過了模式匹配的速度。

5 結束語

我們在實際應用中,應用改進算法,在多數字符串比較的情況下,能夠提高字符串模式匹配的速度,減少匹配次數和字符比較的次數,有效的提高了字符串模式匹配的效率,因此具有較大的實用價值。本文作者創新點:在分析BM模式匹配算法的基礎上,利用對模式串P分層,設置模式串P中各個字符的優先級和改進模式移動方式,提出了一種改進的字符串模式匹配算法。實驗表明,算法能夠減少模式匹配的次數和字符比較的次數,提高了模式匹配的速度,具有較好的性能。

參考文獻:

[1]Berry T,Pavindran S.A fast string matching algorithm and experim ental results [C].Prague,Czech Republic:Proceedings of the Prague Stringology Club Workshop,1999:16-28.

[2]Charras C.Exact String Matching Algorithms[Z].http://www-igm.univmlv.fr/-lecroq/string/.[3]HORSPOOL RN.Practical fast searching in strings[J].Software Practice and Experience,1980,10(6):501-506.[4]巫喜紅,凌捷.單模式匹配算法研究[J].微計算機信息,2006,8-3:202-204.

收稿日期:2008-02-25

作者簡介:張永平(1958-),男(漢族),遼寧丹東人,中國礦業大學計算機科學與技術學院,副教授,碩士生導師,研究方向:計算機網絡與信息安全,密碼學;徐冬陽(1983-),男(漢族),江蘇南通人,中國礦業大學計算機科學與技術學院碩士研究生,研究方向:計算機網絡與信息安全。

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 国产视频久久久久| 国产精品护士| 欧美a在线视频| 天天摸夜夜操| 亚洲综合中文字幕国产精品欧美| 狠狠色综合久久狠狠色综合| 蜜芽国产尤物av尤物在线看| 国产91成人| 极品私人尤物在线精品首页| 成人国产精品2021| 青青草国产在线视频| 国产在线一区视频| 久久精品人人做人人综合试看| 激情无码视频在线看| 久久综合色天堂av| 成色7777精品在线| 国产欧美精品一区二区| 思思99热精品在线| 亚洲精品在线影院| 亚洲福利片无码最新在线播放| 国产成人免费观看在线视频| 国产性生大片免费观看性欧美| 99久久成人国产精品免费| 真实国产乱子伦高清| 亚洲娇小与黑人巨大交| 无码日韩人妻精品久久蜜桃| 欧美一区二区精品久久久| 色婷婷色丁香| 国产一区二区三区在线无码| 中文字幕无码制服中字| 国产精品99在线观看| 亚洲精品成人片在线观看| 激情影院内射美女| 欧美日韩中文国产| 国内精品自在自线视频香蕉| 国产小视频a在线观看| 日韩第九页| 国产成人91精品免费网址在线| 国产福利免费视频| 久久77777| 国内精自线i品一区202| 四虎影视无码永久免费观看| 亚洲人免费视频| 久久9966精品国产免费| 欧美日韩动态图| 国产高清免费午夜在线视频| 午夜精品区| 丝袜亚洲综合| 四虎永久在线| 色欲国产一区二区日韩欧美| 国产精品无码一区二区桃花视频| 国产精品hd在线播放| 无码网站免费观看| 91丝袜乱伦| P尤物久久99国产综合精品| 欧美精品亚洲精品日韩专区va| 无码内射在线| 91美女视频在线| 亚洲国产成熟视频在线多多| 婷婷六月在线| 91在线视频福利| 91精品视频播放| 国产成人精品亚洲日本对白优播| 久久人搡人人玩人妻精品| 日本五区在线不卡精品| 任我操在线视频| 欧美在线三级| 亚洲欧美成人在线视频| 91av国产在线| 中国国产高清免费AV片| 午夜视频免费一区二区在线看| 国产精品对白刺激| 国产理论最新国产精品视频| 成人看片欧美一区二区| 欧美不卡二区| 国产真实乱子伦精品视手机观看 | 在线中文字幕日韩| 嫩草国产在线| 日韩在线观看网站| 91毛片网| 日韩在线观看网站| 国产在线自乱拍播放|