解釋確定性有限自動機 (DFA) 中的連線過程


下面解釋確定性有限自動機 (DFA) 中的連線過程:

如果 L1 和 L2 是兩個正則語言,則它們的交集 L1 ∩ L2 也是正則的。

例如:

L1 = {an | n > 0} 和 L2 = {bn | n > 0}

L3 = L1 ∩ L2 = {an ∩ bn | n > 0} 也是正則的。

在這個屬性中,我們說兩個 DFA 的連線也是 DFA。

問題

設計一個在字母表 {a,b} 上的 DFA,其中字串以 'a' 開頭並以 'b' 結尾。

解決方案

對於給定的條件,會形成兩種不同型別的語言,如下所示:

  • L1 = {a, aab, aabab, .......}
  • L2 = {b, bbab, bbabab, .......}

在 L1 中,起始元素是 'a',

在 L2 中,結束元素是 'b'。

語言 L1

它以 'a' 開頭

L1 = {a, aab, aabab, .......}

L1 的狀態轉換圖如下所示:

在上圖的狀態轉換圖中,q1 是初始狀態。

DFA 中的每個狀態都必須對兩種輸入產生轉換

所以:

  • q1 對 'a' 轉到 q3 並達到其最終狀態 {a}。

  • q1 對 'b' 轉到 q2 並達到死狀態。

  • q3 對 'a' 轉到 q3,達到最終狀態,生成從起始狀態生成的字串 {a,ab,aba,aab,abb,……} 滿足每個字串都以 'a' 開頭的條件。

  • q2 是死狀態。

語言 L2

它以 'b' 結尾

L2 = {b, bbab, bbabab, .......}

L2 的狀態轉換圖如下所示:

初始狀態 q1:q1 對 'a' 轉到 q1

        q1 對 'b' 轉到 q2

一旦我們生成字串 {ab,abb,abab,……},它就滿足語言中每個字串都以 'b' 結尾的條件。

連線 L1 和 L2

當我們將 L1 和 L2 連線起來時,我們得到以下結果:

L = L1 ∩ L2 = L1.L2 = {ab, aab, abb, aaab, ...}

L1 和 L2 連線後的狀態轉換圖如下所示:

更新於:2021年6月15日

3K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告