NFA到DFA的轉(zhuǎn)換的算法
假設(shè)NFA N=(K, ?,f,K0,Kt),則可按如下辦法構(gòu)造一個(gè)DFA M=(S, ?,d,S0,St),使得L(M)=L(N):
1. M的狀態(tài)集S由K的一些子集組成。用[K1 K2... Kj]表示S的某一個(gè)元素,其中K1, K2,... Kj是K的狀態(tài)。并且約定,狀態(tài)K1, K2,... Kj是按無序的(無序集合),即對于子集{K1, K2}={ K2, K1}來說,S的狀態(tài)就是[K1 K2];
2. M和N的輸入字母表是相同的,即是?;
3. 轉(zhuǎn)換函數(shù)是這樣定義的
d([S1 S2,... Sj],a) = [R1R2... Rt] 其中 {R1,R2,... , Rt} = e-closure(move({K1, K2,,... Kj},a))
4. S0=e-closure(K0)為M的開始狀態(tài);
5. St={[Ki Kk... Ke],其中[Ki Kk... Ke]?S且{Si , Sk,,... Se}?Kt1F}
posted on 2009-11-27 14:36 肥仔 閱讀(2158) 評論(0) 編輯 收藏 引用 所屬分類: 狀態(tài)機(jī) & 自動(dòng)機(jī) & 形式語言