構造與正規式 (0|1)*01 等價的 DFA
解題步驟:
- NFA 狀態轉換圖
- 子集法
- DFA 的狀態轉換矩陣
- DFA 的狀態轉圖
解:
已給正規式:(0|1)*01
畫出 NFA 狀態轉換圖如下:
子集法的表格:
I狀態\字元 | I0 | I1 |
---|---|---|
{S, A, B} 求法: 表示開始符號,以及開始符號識別 n 和 ε 可以到達的狀態集合。如本題中: 開始符號 S,通過識別 ε 可以到達的轉態有 A, B,所以集合為 {S, A, B} | {A, B, C} 求法: 表示改行最左端的狀態集,識別最上端的符號可以到達的狀態,以及這些狀態識別 n 個 ε 可以到達的狀態的集合。如本題中: 有 {S, A, B},逐個判斷 S 識別 0 弧沒有可以到達的狀態;A 識別 0 可以到達 A,B 識別 0 可以到達 C;現在已有 A, C 狀態,又因為 A 狀態識別 ε 可以到達 B,所以整個集合為 {A, B, C} | {A, B} 求法: 同相鄰左測表格求法。如本題中: 有 {S, A, B},S 狀態識別 1 沒有可以到達的狀態,A 識別 1 可以到達 A,B 識別 1 沒有可以到達的狀態。所以此時只有 A。又因為 A 狀態識別 ε 可以到達 B,所以整個集合為 {A, B} |
{A, B, C} 求法: 這個為什麼是 {A, B, C}?因為 相鄰右上方表格為 {A, B, C} 為什麼用相鄰右上方表格的狀態集?因為 它是初始態,僅識別 0 和 ε 就能到達的狀態集。所以,可以將該狀態集視為識別一條弧所到達的狀態集。可以看做是下一狀態,為起狀態別名做準備。 | {A, B, C} 注: 有 A 就有 B | {A, B, T} |
{A, B} | {A, B, C} | {A, B} |
{A, B, T} | {A, B, C} | {A, B} |
對狀態中間重新命名,求新的狀態轉換矩陣:
(1)因為 S 是初態,重新命名為 S',也是終態
(2)設 {A, B, C} 為 A'
(3)設 {A, B} 為 B'
(4)因為 T 是終態,此時 {A, B, T} 不是相當於 A' 識別 1 弧所到達的狀態,T 是終態,{A, B, T} 也是終態,重新命名為 T'
I狀態\字元 | I0 | I1 |
---|---|---|
S' | A' | B' |
A' | A' | T' |
B' | A' | B' |
T' | A' | B' |
畫出 NFA 狀態轉換圖如下:
驗證
(0|1)*01 正規式對應的正規集元素特點是:
- 以 0 或 1 的任意組合,任意數量為開頭
- 以 01 為結尾
當結尾為終結符時,可認為識別成功