有窮狀態自動機(fa—finite automaton)是乙個五元組:
m=(q, σ, δ, q0, f)
q——狀態的非空有窮集合.∀q∈q,q稱為m的乙個狀態.
σ——輸入字母表.
δ——狀態轉移函式,有時又叫作狀態轉換函式或者移動函式,δ:q×σ→q,δ(q,a)=p.
q0——m的開始狀態,也可叫作初始狀態或啟動狀態.q0∈q.
f——m的終止狀態集合.f被q包含.任給q∈f,q稱為m的終止狀態.
對有窮狀態自動機的介紹主要分為3個部分:確定的有窮狀態自動機(dfa),不確定的有窮狀態自動機(nfa)和帶空移動的有窮狀態自動機(ε-nfa).
有窮狀態自動機對同乙個狀態下輸入乙個符號可以得到的轉換是否是確定的分為確定的有窮狀態自動機(deterministic finite automaton,dfa)和不確定的有窮狀態自動機(non-deterministic finite automaton,nfa).換句話說,對於乙個輸入字元,nfa與dfa的差異是前者可以進入若干個狀態,而後者只能進入乙個惟一的狀態. nfa和dfa的唯一區別就在於狀態轉移函式不一樣.dfa是nfa的乙個特例,它們是等價的.
如果fa的構造允許在某一狀態下不讀入字元--不移動讀頭,而只改變狀態.在其狀態轉移圖上來看,它允許了出現標記為ε的弧.這種空移動的nfa稱為帶空移動的nfa.ε-nfa在nfa的基礎上,允許直接根據當前狀態變換到新的狀態.ε-nfa的出現,使某些語言更容易得到狀態轉移圖.
nfa與dfa是等價的,ε-nfa與dfa是等價的.它們統稱fa.
fa是正則語言的識別模型.下面是幾種構造:
dfa=>右線性文法
(1)刪除不可達和陷阱狀態
(2)由δ(q,a)=p,得q->ap.若p∈f,增加q->a.開始狀態為開始符號q.
(3)考察ε.若有,在保證開始符號不出現在產生式右部前提下,增加q->ε.
dfa=>左線性文法
(1)刪除不可達和陷阱狀態
(2)由δ(q,a)=p,得p->qa.若q為開始狀態,增加p->a.若p∈f,增加z->qa(z為新引入開始狀態).若q為開始狀態,且p∈f,增加z->a.
(3)考察ε.若有,在保證開始符號不出現在產生式右部前提下,增加q->ε.
右線性文法=>fa
(1)a->ab,得b∈δ(a,a).a->a,得z∈δ(a,a)(z為新引入開始狀態)開始符號為開始狀態s.
(2)考察ε.若有,在保證開始符號不出現在產生式右部前提下,增加z∈δ(s,ε).
左線性文法=>fa
(1)a->a,得a∈δ(z,a)(z為新引入開始狀態).a->ba,得a∈δ(b,a),開始符號為終止符號.
(2)考察ε.若有,在保證開始符號不出現在產生式右部前提下,增加z∈δ(s,ε).
有窮自動機
problem description adfa 證明 adfa是可判定的。實驗方法 編寫乙個演算法 程式,對於任意給定的輸入,可以判定adfa。input 有多個測試序列,測試結束於測試檔案結束 每個測試序列的第一行為幾個正整數n m t a分別表示有n個狀態,從a開始m個小寫字母組成的字符集,第...
詞法分析 有窮自動機
1.有窮自動機的概念 有窮自動機 fa 是詞法分析的重要理論基礎。系統根據自己的有窮狀態和離散的輸入資訊決定系統的後序行為。每處理乙個輸入,系統內部狀態也可能發生改變。其轉換圖表示法如下所示 其中start指向的表示初始態,箭頭上面的表示輸入,有向邊就是變化,圓圈內表示狀態。多加了乙個圈 雙圈,狀態...
實驗三 有窮自動機
實驗三 有窮自動機 一 實驗目標 1 掌握有窮狀態自動機的概念 2 掌握有窮狀態自動機的儲存及表示方法 3 掌握有窮狀態自動機與正則式之間的關係。二 實驗要求 1 輸入正規式 2 構造該正規式的有窮狀態自動機 3.以五元組形式輸出。三 演算法 參見教材的轉換規則。練習 a b abb l l d 1...