編譯器設計中的有限自動機是什麼?
自動機是數字計算機的一種抽象模型,具有離散的輸入和輸出。每個自動機都包含一個讀取輸入的機制。可以認為輸入是在給定字母表上的字串,寫在自動機可以讀取的輸入檔案上。輸入檔案被分成稱為單元格的較小部分。
它是一種語言的機器或識別器,用於檢查語言是否接受該字串。在**有限自動機**中,**有限**表示有限數量的狀態,而自動機表示在沒有人工干預的情況下工作的**自動**機器。有限自動機由一組有限狀態和從一個狀態到另一個狀態的轉換組成,這些轉換出現在從字母表 $\sum$ 中選擇的輸入符號上。
有限自動機的表示
有兩種方法可以表示有限自動機:
狀態轉換圖
它是一個具有狀態和邊的有向圖或流程圖。
示例

0, 1, 2→States 0 →Initial State 2→Final State a,b→Input Symbols
狀態轉換表

有限自動機可以用 5 元組 (Q,∑,$\delta$,q0,F) 表示
- Q 是一個有限的非空狀態集。
- $\sum$ 是一個有限的輸入符號集。
- $\delta$ 是狀態轉換函式。
- q0 ∈ Q 是初始狀態。
- F $\subseteq$ Q 是終結狀態集。
**示例** - 設計一個接受字串“abb”的有限自動機。
解決方案

狀態:Q= {q0,q1,q2,q3}
輸入符號:$\sum$ ={a,b}
狀態轉換函式 $\delta$: {$\delta$ (q0,𝑎)=q1,$\delta$(q1,𝑏)=q2,$\delta$(q2,b)=q3}
初始狀態:q0
終結狀態 (F) : {q3}
有限自動機的型別
有限自動機有兩種型別,如下所示:
- 確定性有限自動機 (DFA)
“確定性”意味著對於每個輸入,自動機從其當前狀態轉換到下一個狀態只有一個狀態。
DFA 可以用 5 元組 (Q,$\sum$,$\delta$,q0,F) 表示
- Q 是一個有限的非空狀態集。
- ∑ 是一個有限的輸入符號集。
- $\delta$ 是一個狀態轉換函式,用於從當前狀態移動到下一個狀態。
∴ $\delta$:Q x Σ → Q
- q0 ∈ Q 是初始狀態。
- F $\subseteq$ Q 是終結狀態集。
- 非確定性有限自動機 (NFA)
“非確定性”意味著可能存在多個可能的轉換。因此,對於給定的輸入,輸出是非確定性的。
NFA 可以用 5 元組 (Q,$\sum$,$\delta$,q0,F) 表示
- Q 是一個有限的非空狀態集。
- ∑ 是一個有限的輸入符號集。
- $\delta$ 是一個狀態轉換函式,用於從當前狀態移動到下一個狀態。
∴ $\delta$:Q x $\sum$ → 2Q
- q0 ∈ Q 是初始狀態。
- F $\subseteq$ Q 是終結狀態集。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP