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