資源簡(jiǎn)介
DFA最小化算法,即集合劃分法。首先按照是否是接收狀態(tài)將DFA狀態(tài)劃分成兩個(gè)集合(當(dāng)都是接受狀態(tài)時(shí)劃分成一個(gè)),然后根據(jù)狀態(tài)轉(zhuǎn)換指向集合分裂之。
代碼片段和文件信息
//?@Fierralin
#include?
#include?
#include?
using?namespace?std;
ifstream?inc(“dfa.txt“);
ofstream?ouc(“dfa.dfa“);
struct?DFA?{
int?m;?//?狀態(tài)數(shù)目
int?sn;?//?開始狀態(tài)數(shù)目
int?*s;?//?開始狀態(tài)集合
int?an;?//?接收狀態(tài)數(shù)目
int?*a;?//?接受狀態(tài)集合
int?n;?//?字母表的規(guī)模
char?*t;?//?字母表
int?*c[1000];?//?狀態(tài)轉(zhuǎn)換函數(shù)
void?set(int?q1?int?q2?int?q3?int?q4)?{?//?輸入和存儲(chǔ)DFA
int?i?j;
m?=?q1?n?=?q2?sn?=?q3?an?=?q4;
s?=?new?int[sn];
for?(i?=?0;?i?>?s[i];?//?輸入開始狀態(tài)集合
a?=?new?int[an];
for?(i?=?0;?i?>?a[i];?//?輸入接受狀態(tài)集合
t?=?new?char[n];
for?(i?=?0;?i?>?t[i];?//?輸入字母表
for?(i?=?0;?i? for?(i?=?0;?i?>?c[i][j];?//?輸入狀態(tài)轉(zhuǎn)換表
}
void?r
評(píng)論
共有 條評(píng)論