Transcript Chapter 5

Chapter 12
自動機與正規語言
1
12.2 有限自動機
12.3 正規語言
12.4 具輸出功能的自動機
2
12.2 有限自動機
3
有限狀態自動機(FA)
有限狀態機,我們常用 (S , S0 , S f , ,T ) 代表 FA,這五個變
數的定義為:
S
:狀態集(Set of States)
S 0 :起始狀態(Initial State)
S f :最終狀態(Final State)
 :字母集(Alphabet Set)
T
:轉換函數(Transition Function)
4
有限狀態自動機(FA)的例子。
0
S0
1
1
S1
圖 12.2.1 一個 FA 例子
狀態 S 0 旁邊加一個 > 以表示 FA 由這裡起動。
S  {S0 , S1} S0  {S0 } S f  {S1}
  {0,1}
T ( S0 , 0)  S0
T ( S0 ,1)  S1
T ( S1 ,1)  S1
其可接受字串 1、01、11、011、001、111、…等。
5
FA 能接受的語言(Language)。我們記為 L(FA)。圖 12.2.1 所能接受的語
言可寫成
L(FA)  0*11*
 0*1
其中 0* 代表符號 0 出現的個數需大於或等於 0,而 1 代表符號 1 出現的
個數需大於或等於 1。例如: 0*  { ,0,00,000,} 和 1  {1,11,111,} 。
在上述的 FA 例子中,某一個狀態接受一個輸入後只能轉換到另一個狀
態。這一類的 FA 也稱作可決定式有限狀態機 Deterministic FA,簡稱
為 DFA。
6
範例 3 (政大)
請畫一個能夠認知由 baa 起頭的字串的自動狀態機佈於 {a, b} 上。
令 S  {S0 , S1 , S2 , S3 , S4 } 和 I  {0, 1} ,其中 S 0 為起始狀態且 S 3 為接受
狀態,則此自動狀態機可如下圖所示:
7
範例 4
是否也有不可決定式有限狀態機 NFA(Nondeterministic FA)?
若存在某一個狀態在接受到一個輸入後,可轉換到一個以上的狀態時,
就稱為 NFA。例如:圖 12.2.2 就是一個 NFA 的例子,這裡,符號  代表
FA 即使沒有讀到任何符號也會從狀態 S 0 轉換到狀態 S f  S1 。
0
S0

1
1
S1
0
圖 12.2.2 一個 NFA 例子
8
圖 12.2.2 可接受的語言為
L(NFA)  0* (1  0)1*  0*1*
 0*1*
在 NFA 中,由於一個狀態在讀入一個輸入後,會進到一個以上的狀態,這種機
器有很強的猜測(Guess)能力。
NFA 在設計上要比 DFA 有更大的彈性與自由度。若我們能找到一個將 NFA 轉
換成 DFA 的方法就太好了。因為 DFA 在程序模擬上,由某一步推進到另外一
步都明確的決定性。
9
將 NFA 轉換成 DFA。
利用到封閉性(Closure)的特性。例如範例 4 中的 NFA 的各狀態讀
入一符號後之封閉性可表示於圖 12.2.3 中。
0
1
S0
[ S 0 , S1 ]
[ S1 ]
S1

[ S1 ]
圖 12.2.3 圖 12.2.2 的封密性示意圖
將 [ S 0 , S1 ] 編 成 新 的 符 號 S 0 , 而 將 [ S1 ] 編 成 符 號 S1 。 為 什 麼
( S0 , 0 ) {S0 ,S1 呢?讀者可將
}
S 0  [ S 0 , S1 ] 想像成一個新的狀態符
號。
10
根據圖 12.2.3,範例 4 中的 NFA 可轉換成圖 12.2.4 的 DFA。
1
0
1
S0
S1
圖 12.2.4 圖 12.2.2 轉換後的 DFA
上述圖中所示的 DFA 可接受的語言可表示為
L(DFA)  0*  0*1
 0*1*
11
12.3 正規語言
12
DFA 可接受的語言。
正規表達式(Regular Expression),我們以 RE 稱之。定義如下:
 RE 可以是空字母 ε
 在 DFA 中的字母集 Σ 內,若 t  Σ,則 t 亦為 RE
 若 x 為 RE 且 y 亦為 RE,則 (x+y) 和 (xy) 也是 RE
 若 x 為 RE 且 y 亦為 RE,則 x* 和 y* 也是 RE
13
S fx
S 0x
(a) NFAx
S 0y
S fy
(b) NFAy
圖 12.3.1
NFAx 和 NFAy
14

S 0x
S fx

S 0y
S fy
S0
(a) NFA(x+y)
S 0x
S xf

S 0y
S fy
(b) NFA(xy)
15

S fx
S 0x

(c) NFAx*
圖 12.3.2
NFA( x y ) 、 NFA( xy) 和 NFA x
*
16
範例 1 (中山)
使用正規表示法表達下列自動狀態機所能接受的字串

 


令 A  1 , B  1 0 1 (0  1) , C  0 1 (0  1) ,則所求為 A  B  C 。
*
17
能被 FA 接受的語言,其所對應的文法型式定義。
FA 所對應的文法也稱作第三類型(Type III)文法,此類型的文法 G
定義如下:
G  ( N , T , P, S )
N  { A, B}
T  {a}
S  { A}
P:A  a
A  aB | Ba
N: 非終結符號集(Nonterminal Symbols)。
T: 終結符號集(Terminal Symbols)。
S: 起始符號(Start Symbol)。
P: 產生規則集(Production Rules)。
18
我們以下圖之 FA 為例,已知 L(FA)  0*1 。將 FA 中的狀態 S0 改成非終結符號 A,
而將狀態 S1 改成非終結符號 B ,按照 FA 所對應的第三類型文法,L(FA)的對應
文法如下:
G  ( N , T , P, S )
0
S0
1
1
N  { A, B}
T  {0,1}
S1
S  { A}
P : A  0 A
A  1B
A
B  1B
B 
19
若給一字串 0011,依照文法的推演(Derivation),我們得到
A  0A
 00 A
 001B
 0011B
 0011
從前面幾個 FA 的例子,我們不免好奇 FA 的能力之限制。
20
範例 2 (中正)
能找出一個詞組結構
(Phrase-Structure) 的 文 法 去 生 成 集 合
{0m1m n 0n | m  0, n  0} 。注意一個詞組結構的文法 G  (V , T , S , P)
包含一個詞彙集合 V,一個 V 的子集合 T 包含終端符號,一個屬於 V 的
開始符號 S, 以及一個集合 P 包含生成規則。
令所求為 G  (V , T , S , P)
其中
V  {S , A, B, 0, 1}
T  {0, 1}
S S
P  {S  AB, A  0 A1, A   , B  1B0, B  }
21
範例 4 (政大)
FA 能否唯一接受 L  {0n1n | n  1} ?
FA 因為沒有記憶的功能。
這裡,採用鴿籠定理來證明 FA 是無法唯一接受 L  {0n1n | n  1} 的。
因為 FA 的狀態數是有限的,我們可以假設 FA 的狀態數為 S  k ,k
為一個定數。反觀 L 中的 n, n  1 ,可看成無限大的數。假設 FA 的
k 個狀態為 S 0 、 S1 …和 S k 1 且 n  k 。當 FA 處理完 0 n 時,鴿籠定理
告訴我們:在 FA 的 k 個狀態中,必有兩個狀態, S i 和 S j ,會呈現
圖 12.3.3 的迴圈組態(Configuration)。
22
0
Si
0
...
圖 12.3.3 狀態
0
Sj
S i 被拜訪二次
這 時 , 若 0 n1n 能 唯 一 被 假 設 的 FA 接 受 的 話 , 則 意 謂 著
0 n( j i 1)1n  0 n j i 11n 也會被 FA 接受。這和假設是衝突的。
23
範例 5
可否寫一文法以辨識 L  {0n1n | n  1} ?
G  ( N , T , P, S )
N  {S }
T  {0,1,  }
S  {S }
P:S  0 S1
S 
上面的文法稱為語境自由文法(Context-Free Grammar, CFG)。CFG 中
的產生規則 P:A   需滿足 A  N 和   ( N  T )* 。CFG 所定的文法
規則也稱作第二類型(Type II)的文法。
24
在形式語言中的第零類型(Type 0)及第一類型(Type I)文
法。
 第一類型(Type I):產生規則需滿足
 
 
這裡  ,   (T  N )* ,但  的長度需大於等於  的長度。
 第零類型(Type 0):產生規則需滿足

 
這裡  和  無特別限制。除了    和  ,   (T  N )* 外。
第 一 類 型 的 文 法 也 叫 語 境 限 定 文 法 (Context-Sensitive
Grammar, CSG) , 而 第 零 類 型 的 文 法 也 叫 非 限 制 型 文 法
(Unrestricted Grammar, UG)。
25
第三類型
第二類型
第一類型
第零類型
圖 12.3.4 四種文法類型的 Chomsky 階層圖
26
範例 6
四種文法類型與對應的機器模型為何?
RG
↔
第三類型文法
↔ FA
CFG
↔
第二類型文法
↔ PA
CSG
↔
第一類型文法
↔ LBA
UG
↔
第零類型文法
↔ TM
這裡,PA 代表下推自動機(Puchdown Automata),LBA 代表線性有限
自 動 機 (Linear Bounded Automata) , 而 TM 代 表 杜 林 機 (Turing
Machine)。
27
• 12.4 具輸出功能的自動機
28
帶有輸出功能的 FA 例子。
0
1
0
1
S2
S0
0
1
1
0
1
0
1
0
S1
圖 12.4.1 帶有輸出功能的 FA
a
代表輸入為 a 時,則輸出為 b。若輸入的字串為 0110111,則輸出的字串為 1001000。
b
29
範例 2
可否用表格的方式表示圖 12.4.1 的 FA?
圖 12.4.1 的表格表示法如圖 12.4.3 所示。
目前狀態
下個狀態
輸
出
0
1
0
1
S0
S0
S1
1
0
S1
S0
S2
1
0
S2
S0
S2
1
0
圖 12.4.3 圖 12.4.1 的表格表示法
30
試題 2.1
請描述下列有限狀態機能夠認知的語言。
假設輸出 1 時,表示接受此字串。依據題目之有限狀態機可知其可
接受 (認知) 任何字串中有連續三個或以上的 1 之字串。
31