problem description
adfa=證明:adfa是可判定的。 實驗方法:編寫乙個演算法/程式,對於任意給定的輸入,可以判定adfa。
input
有多個測試序列,測試結束於測試檔案結束;每個測試序列的第一行為幾個正整數n m t a分別表示有n個狀態,從a開始m個小寫字母組成的字符集,第乙個狀態預設為起始狀態。t個接受狀態和a個測試串,接下來為乙個n行m列的矩陣s,其中s[i][j]表示第i行第j列,意義為狀態i經過字母j到達狀態s[i][j]。接下來有t個數字,表示t個接受狀態值,然後是a行,每行乙個串表示待測試的串。
output
對於每個字串輸出yes表示該dfa接受該串,no表示不接受。
sample input
3 3 1 2
2 3 2
3 3 3
3 3 3ab
sample output
yesno對於這個問題,我們需要知道dfa
是什麼,以及它的執行原理是怎樣的。
有窮自動機例子:
那麼m1
識別正則語言a=
那麼dfa
是什麼呢?對,dfa是確定型的有窮自動機,意思就是當機器處於給定的狀態並讀入下乙個輸入符號時,可以知道機器的下乙個狀態是什麼。
然後我們可以把上題的描述轉換成乙個dfa
,m1=(q
,,,,f
),其中
①q=。
②=。③描述為
④1是起始狀態。
⑤f=。
有窮自動機:
我們把問題搞清楚了,那麼久可以開始寫**了。
**如下:
#include#include#includeusing namespace std;
class dfa
bool go(char* w)
}for(int i=0;i>accept[i];
}for(int i=0;i>test[i];
}//驗證
dfa dfa;
dfa.init(n,m,t,accept,s);
for(int i=0;i
有窮狀態自動機
有窮狀態自動機 fa finite automaton 是乙個五元組 m q,q0,f q 狀態的非空有窮集合.q q,q稱為m的乙個狀態.輸入字母表.狀態轉移函式,有時又叫作狀態轉換函式或者移動函式,q q,q,a p.q0 m的開始狀態,也可叫作初始狀態或啟動狀態.q0 q.f m的終止狀態集合...
詞法分析 有窮自動機
1.有窮自動機的概念 有窮自動機 fa 是詞法分析的重要理論基礎。系統根據自己的有窮狀態和離散的輸入資訊決定系統的後序行為。每處理乙個輸入,系統內部狀態也可能發生改變。其轉換圖表示法如下所示 其中start指向的表示初始態,箭頭上面的表示輸入,有向邊就是變化,圓圈內表示狀態。多加了乙個圈 雙圈,狀態...
實驗三 有窮自動機
實驗三 有窮自動機 一 實驗目標 1 掌握有窮狀態自動機的概念 2 掌握有窮狀態自動機的儲存及表示方法 3 掌握有窮狀態自動機與正則式之間的關係。二 實驗要求 1 輸入正規式 2 構造該正規式的有窮狀態自動機 3.以五元組形式輸出。三 演算法 參見教材的轉換規則。練習 a b abb l l d 1...