日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BF 和RK 算法

發布時間:2024/10/8 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BF 和RK 算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BF算法

BF算法,即暴風(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是將目標串S的第一個字符與模式串T的第一個字符進行匹配,若相等,則繼續比較S的第二個字符和 T的第二個字符;若不相等,則比較S的第二個字符和T的第一個字符,依次比較下去,直到得出最后的匹配結果。BF算法是一種蠻力算法。

從字符串A蟲查找B

首先S[1]和T[1]比較,若相等,則再比較S[2]和T[2],一直到T[M]為止;若S[1]和T[1]不等,則S向右移動一個字符的位置,再依次進行比較。如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],則匹配成功;否則失敗。

該算法最壞情況下要進行M*(N-M+1)次比較,時間復雜度為O(M*N)。

模式串長度為m,主串長度為n,在主串,就會有n-m+1 個長度為m的子串,然后暴力對比n-m+1 個子串于模式串,找出對應配對的子串

RK 算法

在BF算法引進哈希算法

RK算法思想

假設我們有某個hash函數可以將字符串轉換為一個整數,則hash結果不同的字符串肯定不同,但hash結果相同的字符串則很有可能相同(存在小概率不同的可能)。

算法每次從S中取長度為m的子串,將其hash結果與P的hash結果進行比較,若相等,則有可能匹配成功,若不相等,則繼續從S中選新的子串進行比較。


假設要匹配的字符串的字符集值包含K個字符
,就可以用一個K進制來表示子串,這個K進制轉化成十進制

比如包含a~z26個小寫字母,映射到0 ~ 25個數字,a 表示 0,z 表示 25

相鄰兩個子串s [ i-1] 和 s[i] ( i 表示子串在主串的其實位置,子串的長度都為m),對應的哈希值計算公式有交集。使用s [i-1] 的哈希值 很快計算出s [i ]的哈希值

RF算法比BF 算法要高

模式串哈希值于每一個哈希值之間的比較時間復雜度是O(1)O(1)O(1),總需要n-m+1給子串的哈希值,所以 時間復雜度是O(n)O(n)O(n)

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的BF 和RK 算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。