當前位置:
首頁 > 知識 > C和C加加文本搜索中的精確匹配演算法上

C和C加加文本搜索中的精確匹配演算法上

在文本內容中,都是以字元串的方式來表示,此時要精確搜索文本中是否存在目標文本,也即是搜索在大字元串中搜索目標字元串。這種精確匹配在計算機系統中有著較為廣泛的應用,如文本編輯,拼寫檢查,情報搜索,互聯網搜索等。

較為常見的字元串精確匹配演算法有以下幾種:

1,BF演算法

BF即英文Brute Force 演算法是演算法模式匹配中最簡單,最直觀的演算法。該演算法的基本思想是從主字元串T(t0,t1,t2,t3,….tn-1)中的第m個字元起和目標第1個字元比較,如果相等,則繼續逐個比較後續字元;比較過程中一旦發現不相等,則回溯到源字元串的m+1個字元,重新匹配,依次類推,知道目標字元串每個字元和源字元串的一個連續的字元序列相等,就匹配成功,否則匹配失敗。

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

2,MP演算法

MP演算法是對BF演算法的極大改進,利用了已經得到的並且存貯的比較結果,在後續比較過程中直接調用這些比較結果,大大的提高了演算法的效率。在MP演算法中,,最為關鍵的是尋找匹配失效函數,而一旦目標字元串給定,不管源字元串的取值如何,失效函數均為同一個,也即是失效函數與源字元串無關。

下面給出目標字元串的失效函數C語言代碼實現方法:

voidpreMP(const char *dest, intm,intmpnext[])

{

inti, j;

i=0;

j=mpnext[0]=-1;

while(i

{

while(j>-1 && x[i]!=x[j])

j=mpnext[j];

mpnext[++i]=++j;

}

}

其中函數的參數說明如下:

dest:目標字元串

m:目標字元串的長度

mpnext:用來存貯失效發生時下一輪比較的目標字元串的起始比較位置。

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C語言的這些考點,你都知道嗎?

TAG:C加加 |

您可能感興趣

ICML亮點論文:隨機優化演算法的證明以及在架構搜索上的應用
基於貪婪搜索的RC-LDPC編碼序列打孔演算法研究
一文理解搜索演算法-徹底入門DFS
指數級加速架構搜索:CMU提出基於梯度下降的可微架構搜索方法
搜狗搜索與牛津出版社達成合作,讓英文搜索更加權威
採用C 的最簡單的廣度優先搜索BFS和深度優先搜索DFS應用
終於把微軟BING搜索-SPTAG演算法的原理搞清了
你應該了解的AI演算法,樹搜索和演化演算法
搜索引擎演算法大全
基於中文知識圖譜和機器翻譯技術,搜狗搜索正式上線海外權威健康信息
谷歌搜索歧視特朗普?全面拆解Google搜索演算法及優化
鏈接原理與搜索引擎演算法
情感分析:利用上下文語義搜索演算法獲得更深入的信息
IBM 使用 NYPD 的監控錄像開發基於身體特徵的搜索技術
谷歌為G Suite添加NLP功能,提高搜索效率並推薦相關內
搜狗升級輸入法,新推日文韓文搜索
PPT 的圖片搜索方法
神經架構優化(NAO):新的神經架構搜索(NAS)演算法
進化演算法+AutoML,谷歌提出新型神經網路架構搜索方法
谷歌宣布收購GIF平台Tenor加強圖像搜索引擎