基於有限狀態自動機的字串匹配

2021-08-30 22:15:23 字數 1250 閱讀 4273

1 應用場景及相關概念

有線狀態自動機在許多不同的領域有著廣泛的應用。如電子工程,語言學,電腦科學,哲學,生物學,邏輯學和數學。有限狀態機是在自動化理論和計算機理論中研究的一類自動機。在電腦科學中,有線狀態機被廣泛用於建模應用的行為,硬體電路系統設計,軟體工程,編譯器,網路協議,計算與語言的研究等。在數學建模中,有限狀態自動機,finite state machine,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。有限狀態自動機擁有有限數量的狀態和有限個輸入集,每個狀態可以轉移到零個到多個的其他的狀態,輸入字串決定哪個狀態的轉移。狀態儲存了關於過去的資訊,它反映了系統從開始到現在時刻的輸入變化。轉移指狀態之間的變更,通常用可以滿足轉移發生的條件來描述它。動作是在給定時刻要進行會話的描述。有多種型別動作[1]:

有限狀態機的表示方法通常有兩種,狀態轉移圖和狀態轉移表,實際上兩者表達的概念都是一樣的,通常都是反應有限狀態機隨著輸入條件的變化而發生的轉移。在這一點上有點類似於貝葉斯網路過程中建立的狀態轉移概率矩陣,用來指導狀態之間轉移的條件。

有限狀態機根據其應用的不同場景可以分為連個不同的類別:接收器(識別器)和變換器

(1)接收器(識別器)

接收器(識別器),通常產生乙個二元輸出,來判別輸入是否被機器所接受。所有的fsm狀態轉移要麼是接收狀態,要麼是拒絕狀態。在所有的輸入都被處理的時候,如果當前狀態是接收狀態,則輸入被接收,否則輸入被拒絕。

(2)變換器

變換器使用動作基於給定輸入和(或)狀態生成輸出。它們用於控制應用。長分為兩類:

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

很多字串的匹配演算法都需要建立乙個有限自動,它通過對文字字串t進行掃瞄的方法找出模式p所出現的位置。用於字串匹配的自動機都是非常有效的:它們只對每個文字字元掃瞄一次,並且檢查每個文字字元的時間為常數。因此,在建立好自動機後字串匹配的時間為o(n)。而建立有線狀態自動機的時間複雜度通常為o(|∑|*|p|),因此,當∑非常大時可能會是該方法的效率降低。但是相比於樸素字串匹配演算法o(m*n)和rabin-karp演算法((n-m-1)*m),效率還是提高了很多,其中n為匹配文字字串的長度,m為模式p的長度。

有限自動m通常用乙個五元組來表示,m=,其中

有限狀態自動機開始於q,每次讀入輸入的字串的乙個字元。如果當前有限自動機的狀態為p,讀入字元為a,則它從p變為狀態δ(p,a)的過程就是一次轉移。如果δ(p,a) ∈q,則表示自動機接受迄今為止輸入的所有字元。而沒有被接受的輸入被稱為拒絕的輸入。當乙個文字字串被自動擠讀取過程中存在狀態f ∈a,則表示當前字串被接受,匹配成功,否則,則匹配失敗。

字串匹配 有限自動機

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

字串 最小字尾自動機與有限狀態自動機

1 最小字尾自動機 乙個串x的最小字尾自動機sa suffixautomaton 記為sa x 即識別串x的所有字尾的最小確定自動機.如圖1所示,該自動機可以接受串baabbaa的以下所有字尾 a,aa,baa,bbaa,abbaa,aabbaa,baabbaa.已經存在以線性複雜度構造sa的演算法...

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

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