為何要定義有限自動機(finite automata)?
最早科學家想要定義「計算」這件非常基本的事,但在數學裡,越是基本的是越難找到一個完整精確的描述方式。而「計算」這個詞基本上是一個「動作」,就像定義「坐下」,沒有「人」這個對象來執行「大腿彎曲後把重心放在椅子上」的話很難定義「坐下」,因此科學家定義了一些不同版本的機器來試圖定義「計算」這個動作。
決定性有限自動機(Deterministic Finite automata, DFA)介紹
有限狀態機可以看成是一種模型,用來描述擁有極為有限的記憶體的電腦。如控制自動門的設備就像是一種有限自動機,只有單一位元的記憶體。在有限自動機的模型定義中,沒有限定輸入字串的長度是有限的,也就是說有限狀態機是「記憶」有限,但「輸入」可以無限長。(決定性的意思將於之後的章節解釋,通常只講有限狀態機的話是指決定性有限狀態機)
狀態圖(state diagram)來描述自動門作用:
有限自動機定義
一個有限自動機是含有5個元素的 5-tuple(Q,Σ,δ,q0,F) ,意義分別是 (狀態集Q, 字母集Σ, 轉移函式δ, 開始狀態q0, 結束狀態F) ,從定義中可知F可以是空集合,表示沒有可以接受的狀態。
原文定義如下:
A finite automaton is a 5-tuple (Q,Σ,δ,q0,F) , where
- Q : is a finite set called the states
- Σ : is a finite set called the alphabet
- δ : Q×Σ→Q, is the transition function //箭頭線段代表狀態的變化
- q0∈Q : is the start state //開始狀態
- F⊆Q : is the set of accept states or final states //接受狀態
看一個狀態圖例子最容易理解:
- 從q1開始,接受輸入1,到q2。
- 接著q2接受輸入1,到q2。
- 接著q2接受輸入0,到q3。
- 接著q3接受輸入1,到q2。
- 輸出accept。
有限自動機下的「計算」定義
如果一系列的狀態 r1,r2,...rn∈Q 符合下面三個條件,則稱這個有限自動機 M=(Q,Σ,δ,q0,F) 接受一個字串 w=w1w2w3…wn
- r0=q0,意思是機器M從他的初始狀態出發
- δ(ri,wi+1)=ri+1,i=0,...,n−1,意思是機器M慢慢吃字串根據轉移函式而轉移狀態的過程
- rn∈F,意思是機器M吃完字串停在接受狀態
有限自動機相關的專有名詞
- 語言 (Language) : 機器M的language A,意思是說language A是收集所有機器M可以接受的字串所形成的集合,寫成 L(M)=A。
- 辨識 (Recognizes) : 通常寫成機器M recognizes A,意思是機器M可以「辨識」language A這個集合(所有裡面的字串)。
- 注意[1] : 一個machine M只recognize一個language。
- 注意[2] : 小心單位,language 是一種「集合」,因此 “Recognizes” 這個動詞後接 Language, “accept” 這個動詞後才接string。但後面接language時,也有些人用accept。
- 正則語言 (Regular Language) : 假如一種語言能夠由某個有限狀態機辨識,則該語言就是一種正則語言。
正則算子 The Regular Operations
正則語言(Regular language)在這幾個算子(Operations)下具有封閉性。
- 聯集 Union : A∪B={x | x∈A or x∈B},就是普通的集合聯集操作
- 字串串接 Concatenation : A⋅B={xy | x∈A and y∈B},就是字串串接字面上的意思,把兩個字串接起來。
- Star : A∗={x1x2...xk | k≥0 and xi∈A},就是這個字串可以隨意串接n次,出現0次也是可能的,用上面兩個算子來表達的話可以寫成 A∗=ϕ∪A∪A2∪∪A3... (平方表示自己跟自己串接)
- A program behaves like a finite automaton:
- Its start state is a function mapping program variables
- to their initial values
- Program execution goes from state to state by transitions performed according to program control flow
- The language of this machine is the class of problems solved by program execution
- A program computation differs from FA computation because:
- A program may have a potential infinite set of states and can run forever
- During execution a program may interact with its environment
- The accepting state of the program has a larger interpretation
Reference
交大陳穎平教授正規語言講義