C語言 確定有限狀態自動機 DFA

2021-08-20 19:39:06 字數 1083 閱讀 3378

有限狀態自動機擁有有限數量的狀態,每個狀態可以遷移到零個或多個狀態,輸入字串決定執行哪個狀態的遷移。

本篇的主要目的是實現dfa。

實現過程

下面是乙個字串ababac的dfa:

構建dfa過程

實現分析

一. 首先dfa有什麼意義呢?它表示了什麼?

同理更長的字串對應輸出不同的值,如果字串完全匹配的話,那麼dfa就會輸出匹配字串的大小。

二. 如果字串不完全匹配怎麼確定輸出的值?

可以發現規律是複製dfa[x]到第dfa[j]中,x的值的確定:

**實現

#include 

#include

#include

#include

#include

#define length 6

#define wordlength 6

#define charlength 256

void dfa(char *a)

}dfa[0][a[0]] = 1;

for (int

x = 0, i = 1; i < length; i++)

dfa[i][a[i]] = i + 1;

x = dfa[x][a[i]];

}}void main()

編譯原理DFA(有限確定自動機)的構造

code 原題 1 自己定義乙個簡單語言或者乙個右線性正規文法 v au bq q aq bq e 2 構造其有窮確定自動機,如 3 利用有窮確定自動機m k,f,s,z 行為模擬程式演算法,來對於任意給定的串,若屬於該語言時,該過程經有限次計算後就會停止並回答 是 若不屬於,要麼能停止並回答 不是...

有限狀態自動機

有限自動機是更一般化的狀態轉化圖。分為確定有限自動機 dfa 和不確定有限自動機 nfa m s,f,so,z 其中 下圖為乙個確定的有限狀態自動機 m s,f,so,z 其中 下圖為乙個不確定的有限狀態自動機 說了半天其實它們的本質區別就在於s0,確定的有限狀態自動機的s0是唯一確定的。而不確定的...

有限狀態自動機

有限自動機是更一般化的狀態轉化圖。分為確定有限自動機 dfa 和不確定有限自動機 nfa m s,f,so,z 其中 下圖為乙個確定的有限狀態自動機 m s,f,so,z 其中 下圖為乙個不確定的有限狀態自動機 說了半天其實它們的本質區別就在於s0,確定的有限狀態自動機的s0是唯一確定的。而不確定的...