利用有限自動機進行字串匹配

2022-07-24 01:21:21 字數 789 閱讀 6777

字串匹配演算法有四種:

1.樸素演算法,預處理o(0),匹配時間o((n-m+1)m)  其中n是文字長度,m是模式長度

2.rabin-karp演算法,預處理o(m),匹配時間同樸素演算法

3.有限自動機演算法,預處理o(m|∑|),匹配時間o(n)

4.kmp演算法,預處理o(m),匹配時間o(n)

這裡討論的是有限自動機演算法,先給出預處理為o(m^3|∑|),匹配時間為o(n)的演算法。

**:view code

1 #include 2 #include 

3 #include 4

using

namespace

std;

5string str="

abc";6

string

t,p;

7int res[8][3];8

9void transition() //

o(m^3*|all|)

1030 res[q][i]=k;

31//

cout<32}33

34//

for(i=0;i<=m;i++)

35//40}

4142

void

match()

4355}56

57int

main()

5865

66/*

67ababaca abababacabababacab

68*/

具體理論知識可以參考演算法導論。

利用有限自動機進行字串匹配

乙個有限自動機m是乙個5元組,q,q0,f,m,g q 狀態的集合,q0 開始狀態,f接收狀態,m字符集,g 轉換函式 文字字串t,匹配模式p 1,2,3.m 每乙個匹配模式都有乙個對應的有限自動機,將字串t按序輸入到自動機中,如果到達接受狀態,則匹配成功,下面介紹如何為p構造自動機。1.狀態集合q...

字串匹配演算法 利用有限自動機進行匹配

本文內容與 演算法導論 中字串匹配章節相關並部分摘錄。常用的字串匹配演算法有樸素字串匹配演算法,rabin karp演算法,利用有限自動機進行字串匹配和kmp演算法等。前面兩種比較簡單,重點是後面兩種。利用有限自動機進行字串匹配 假設要對文字字串t進行掃瞄,找出模式p的所有出現位置。這個方法可以通過...

字串匹配 有限自動機

有限自動機包含乙個五元組 q,q0,a,q表示狀態有限集 q0為初始狀態 q0 q a表示接受狀態的集合 a 是q的子集 是輸入字母表 是狀態轉移函式 對於終態函式我還不是很理解,希望大家不吝賜教 演算法導論上有乙個例子 p ababaca 那麼轉換成五元組是 q q0 0 注 0狀態什麼都沒有 a...