構造與正規式 (0|1)*01 等價的 DFA

肖朋偉發表於2019-06-21

構造與正規式 (0|1)*01 等價的 DFA

解題步驟:

  • NFA 狀態轉換圖
  • 子集法
  • DFA 的狀態轉換矩陣
  • DFA 的狀態轉圖

解:

已給正規式:(0|1)*01

畫出 NFA 狀態轉換圖如下:

構造與正規式 (0|1)*01 等價的 DFA

子集法的表格:

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 等價的 DFA

驗證

(0|1)*01 正規式對應的正規集元素特點是:

  • 以 0 或 1 的任意組合,任意數量為開頭
  • 以 01 為結尾

當結尾為終結符時,可認為識別成功

相關文章