1203正規式轉換為有窮自動機

2022-04-09 15:27:06 字數 1789 閱讀 6709

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;

9int icurrentstate=0; //

初態以1開始

10int iprestate=0;11

int ilastforkstate=0;12

int iforkstate=0;13

int imaxstate=0;14

char cregluarsting[maxregluarlong]; //

輸入的正規式字串

15char ccharset[maxcahrslong]; //

字符集16

int istatematrix[maxstatelong][maxcahrslong]; //

狀態轉換矩陣

17 state vstoreregluarsting()//

把字串讀入乙個緩衝區中

1822

state vpreprocessregluarsting()

23//

對字串進行預處理,去掉字串裡面的對分析不產生影響

2435

}36 i++;37}

38return

ok;39}40

void vconstructstatematrix(char cchar,int istate)//

構造狀態轉換矩陣

4149

void vaanalyseregluarsting()//

對字串進行從左到右的分析與處理

5073

if(cregluarsting[i]=='|'

)7481if(icharnumbeforl==1&&cregluarsting[i+2]=='|'

)82 icurrentstate=iforkstate;

83 icharnumbeforl=0;84

}85if(cregluarsting[i]==')'

)8690}

91}92else

93101

}

102}

103}

104void

vprintfstateprojectfunction()

105113

void vprintfnfa()//

輸出nfa

114\n");

125 printf("

\n狀態集s為:

132 printf("

}\n\n");

133vprintfstateprojectfunction();

134 printf("

\n初態集s0為:\n\n");

135 printf("

終態集f為:

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...

正規式轉換為有窮自動機

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個小寫字母組成的字符集,第...