图解常见匹配算法
前言
常見匹配算法有BF算法,RK算法,KMP算法,BM算法,Sunday算法
參考資料,很好的文檔,值得細(xì)細(xì)品嘗
BF算法
代碼部分
邏輯圖
RK算法
代碼部分
數(shù)據(jù)調(diào)試
邏輯圖
摘自霍納法則
假設(shè)有n+2個實數(shù)a0,a1,…,an,和x的序列,要對多項式Pn(x)= anxn +an-1xn-1+…+a1x+a0求值,直接方法是對每一項分別求值,并把每一項求的值累加起來,這種方法十分低效,它需要進(jìn)行n+(n-1)+…+1=n(n+1)/2次乘法運(yùn)算和n次加法運(yùn)算。有沒有更高效的算法呢?答案是肯定的。通過如下變換我們可以得到一種快得多的算法,即Pn(x)= anxn +an-1xn-1+…+a1x+a0=((…(((anx+an-1)x+an-2)x+ an-3)…)x+a1)x+a0,這種求值的安排我們稱為霍納法則。
KMP算法
代碼部分
關(guān)于next數(shù)組/前綴表
邏輯圖
BM算法
關(guān)于壞字符和好后綴
BMH版本(只用壞字符表)
完整版本
邏輯圖
Sunday算法
代碼部分
邏輯圖
總結(jié)
- 上一篇: 软件著作权统计源程序量,统计php代码行
- 下一篇: 松下PLC连接海创-IIoT平台案例