當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于QS的字符串匹配改進(jìn)算法

串匹配問題是計算機(jī)科學(xué)領(lǐng)域研究中的一個焦點(diǎn)問題,它在諸多非數(shù)值處理方面都有著非常廣泛的應(yīng)用。串匹配就是在一個大的正文T中搜索指定模式P的所有出現(xiàn)位置。按照功能,串匹配算法主要分為三類:精確串匹配算法、近似串匹配算法和正則表達(dá)式算法。其中,最有影響的是KMP算法、BM算法、RK隨機(jī)算法和SUANDAY算法以及由此而產(chǎn)生的一些改進(jìn)算法。在實(shí)際應(yīng)用中,這些算法都各有千秋,各有側(cè)重。

1  BM和QC算法分析

字符串匹配問題描述:

1.1 BM算法

BM是由Boyer和Moore于1977年提出的,它是一種簡單、快速、通用的工程算法。它的特點(diǎn)是在窗口內(nèi)部從右向左逆向匹配,采用壞字符啟發(fā)和好后綴啟發(fā)兩種方法,通過預(yù)處理模式分別計算BadcharShift[char]和GoodSufShift[char]轉(zhuǎn)移表。當(dāng)發(fā)現(xiàn)不匹配時,選擇兩者中的最大值作為模式向右移動的距離。

BM算法的預(yù)處理分為壞字符轉(zhuǎn)移表和好后綴轉(zhuǎn)移表。

壞字符移動表記錄的是字符char在模式串P中的最右出現(xiàn)位置。具體表述為:

BM算法的空間復(fù)雜度和預(yù)處理時間均為O(m+σ)。在最壞情況下,它的時間復(fù)雜度為O(nm);在最好情況下,時間復(fù)雜度為O(n/m)。

從理論上講,BM算法的時間復(fù)雜度要大大高于KMP算法的時間復(fù)雜度O(m+n),但在實(shí)際應(yīng)用中,BM算法的搜索步長接近于模式長度m,所以執(zhí)行效率非常高。

1.2 QS算法

QS算法是一種簡單、快速、實(shí)用的算法。在模式匹配過程中,該算法將發(fā)生失配的字符與計算右移量兩者獨(dú)立開來的現(xiàn)象,其僅利用T[i+m]字符計算BadcharShift[T[i+m]]來決定模式轉(zhuǎn)移。通常情況下,模式轉(zhuǎn)移量為m+1,這大大提高了算法的搜索步長和匹配效率。

QS算法的預(yù)處理與BM算法的對壞字符啟發(fā)的預(yù)處理相同。

QS算法的匹配過程如下:

QS算法的空間復(fù)雜度和預(yù)處理時間均為O(m+σ)。在最壞情況下,它的時間復(fù)雜度為O(mn);在最好情況下,時間復(fù)雜度為O(n/m+1)。

QS算法利用了失配情況下T[i+m]字符引起的Badchar-

Shift[T[i+m]]使其編碼簡單且調(diào)試迅速。通常情況下,QS算法比BM算法要快,但是當(dāng)T[i+m-1]不在模式中,而T[i+m]在模式中時,QS算法的效率就會大打折扣。

2  新算法

2.1 算法基本思想及步驟

本文在上述分析的基礎(chǔ)上,充分挖掘了其潛在可利用的隱含信息,進(jìn)一步優(yōu)化和完善了QS算法。在預(yù)處理方面,新算法與QS算法基本相同,不同的是當(dāng)模式在當(dāng)前模式匹配窗口內(nèi)自右向左匹配正文的過程中發(fā)生失配時,比較正文中T[i+m]和T[i+m-1]這兩個字符的移動距離,取其最大值進(jìn)行移動,然后在新位置重新開始模式匹配。圖1為一個新算法匹配過程示例。
 

新算法的匹配過程如下:

新算法在QS算法的基礎(chǔ)上,充分利用了失配時T[i+m-1]和T[i+m]兩個字符引起的移動距離的最大值,使得移動距離增大,減少了模式匹配的比較次數(shù)。通常情況下,新算法的時間復(fù)雜度為O(n/m+1)。

2.2 性能測試

針對本文提出的新算法,從參考文獻(xiàn)[1]中抽取chapter 32 STring Matching中第一段內(nèi)容作為測試正文,并在同樣的軟硬件環(huán)境下對BF、BM、QS和新算法進(jìn)行比較,以檢測新算法在性能和效率方面的表現(xiàn)。表1為各種算法性能比較結(jié)果。

測試正文:

Finding all occurrences of a pattern in a text is a problem that arises frequently in text editing programs.Typically,the text is a document being edited,and the pattern searched for is a particular word supplied by the user.Efficiedt algorithms for this problem can greatly aid the respONsiveness of the test editing program.String matching algorithms are also used,for example,to search for particular patterns in DNA sequences.

搜索模式:the pattern searched

由表1可知:新算法是一種比較次數(shù)少、耗時小、效率高的快速字符串匹配算法。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉