1 #include2 #include 3 #define ok 14 #define error 0
5 #define maxregluarlong 40
6 #define maxstatelong 40
7 #define maxcahrslong 40
8 typedef int state;
9 int icurrentstate=0; //初態以1開始
10 int iprestate=0;
11 int ilastforkstate=0;
12 int iforkstate=0;
13 int imaxstate=0;
14 char cregluarsting[maxregluarlong]; //輸入的正規式字串
15 char ccharset[maxcahrslong]; //字符集
16 int istatematrix[maxstatelong][maxcahrslong]; //狀態轉換矩陣
17 state vstoreregluarsting()//把字串讀入乙個緩衝區中
18 22 state vpreprocessregluarsting()
23 //對字串進行預處理,去掉字串裡面的對分析不產生影響
24 35 }
36 i++;
37 }
38 return ok;
39 }
40 void vconstructstatematrix(char cchar,int istate)//構造狀態轉換矩陣
41 49 void vaanalyseregluarsting()//對字串進行從左到右的分析與處理
50 73 if(cregluarsting[i]=='|')
74
81 if(icharnumbeforl==1&&cregluarsting[i+2]=='|')
82 icurrentstate=iforkstate;
83 icharnumbeforl=0;
84 }
85 if(cregluarsting[i]==')')
86
90 }
91 }
92 else
93
101 }
102 }
103 }
104 void vprintfstateprojectfunction()
105
113 void vprintfnfa()//輸出nfa
114 \n");
125 printf("\n狀態集s為:
132 printf("}\n\n");
133 vprintfstateprojectfunction();
134 printf("\n初態集s0為:\n\n");
135 printf("終態集f為:",imaxstate);
136 }
137 void main()
138
1203正規式轉換為有窮自動機
1 include2 include 3 define ok 1 4 define error 0 5 define maxregluarlong 40 6 define maxstatelong 40 7 define maxcahrslong 40 8 typedef int state 9in...
1203正規式轉換為有窮自動機
1 include2 include 3 define ok 1 4 define error 0 5 define maxregluarlong 40 6 define maxstatelong 40 7 define maxcahrslong 40 8 typedef int state 9 i...
有窮自動機
problem description adfa 證明 adfa是可判定的。實驗方法 編寫乙個演算法 程式,對於任意給定的輸入,可以判定adfa。input 有多個測試序列,測試結束於測試檔案結束 每個測試序列的第一行為幾個正整數n m t a分別表示有n個狀態,從a開始m個小寫字母組成的字符集,第...