有限自動機的構造與識別

2022-06-04 19:33:08 字數 4270 閱讀 2972

實驗三 有限自動機的構造與識別

一、實驗目標

1、掌握有窮狀態自動機的概念;  

2、掌握有窮狀態自動機的儲存及表示方法;

3、掌握有窮狀態自動機與正則式之間的關係。

二、實驗要求

1、輸入正規式; 

2、構造該正規式的有窮狀態自動機;

3. 以五元組形式輸出。

三、演算法

參見教材的轉換規則。

練習:²  (a|b)*abb

²  l(l|d)*

²  1(1010*|1(010)*1)*0

四、完成演算法設計、編碼和除錯工作,完成實驗報告。

#include

#include

#include

intmain()

;

//存放非終結符號

charvt[30] = ;

//存放終結符號

printf("\t請輸入規則個數:");

scanf("%d",&n);

line = n;

for(i = 0; i < 30; i++)//給字串陣列p、q全部賦值為'\0'

for(j=0;j<30;j++)

printf("\t請輸入文法:\n");

for(i = 0; i < line; i++)

//把字元分為終結符號合非終結符號

l=0;m=0;

for(i = 0;i < line; i++)

}

if(flag == 0)

}

// 終結符號放入陣列vt中

if(p[i][j]<='z'&& p[i][j]>='a')

}

if(flag==0)

}

}

//把規則右部分分離放入陣列q中

count = 0;

k =0;

for(i = 0;i < line;i++)

else

}

count++;k=0;

}

//判斷是確定的還是非確定的有窮狀態自動並進行前半部分列印

//判斷依據:q陣列中每一行字串是否相同

flag = 0;

for(i=0;i

if(flag==0)

}

}

}

// 把規則右部分分離放入陣列 q 中

count=0;

k=0;

for(i=0;i

else

}

count++;k=0;

}

// 判斷是確定的還是非確定的有窮狀態自動機並進行前半部分列印

// 判斷依據q 陣列中每一行字串是否相同

flag=0;

for(i=0;i

}

}

if(flag==1) , ) \n");}

else, ) \n");}

printf("\t其中:\n\tk=

printf("}\n");printf("\t∑ =

printf("}\n");k=0;count=0;

for(i=0;i

else

if(p[i][j]=='|')

}

}

count++;k=0;

}

printf("\n");printf("\tm:\n");l=0;

while(vn[l]!='\0')

}

printf("}\t");l++;

}

printf("\n");

l=0;

k=0;

while(vt[k]!='\0')

}

printf("}\t");l++;

}

k++;printf("\n");

}

system("pause");

}

1118有限自動機的構造與識別

include include include intmain 存放非終結符號 char vt 30 存放終結符號 printf 請輸入規則個數 scanf d n line n for i 0 i 30 i 給字串陣列p q全部賦值為 0 for j 0 j 30 j printf 請輸入文法 n...

實驗三 有限自動機的構造與識別

實驗三 有限自動機的構造與識別 一 實驗目標 1 掌握有窮狀態自動機的概念 2 掌握有窮狀態自動機的儲存及表示方法 3 掌握有窮狀態自動機與正則式之間的關係。二 實驗要求 1 輸入正規式 2 構造該正規式的有窮狀態自動機 3.以五元組形式輸出。三 演算法 參見教材的轉換規則。練習 a b abb l...

實驗三 有限自動機的構造與識別

一 實驗目標 1 掌握有窮狀態自動機的概念 2 掌握有窮狀態自動機的儲存及表示方法 3 掌握有窮狀態自動機與正則式之間的關係。二 實驗要求 1 輸入正規式 2 構造該正規式的有窮狀態自動機 3.以五元組形式輸出。三 演算法 參見教材的轉換規則。練習 a b abb l l d 1 1010 1 01...