設計一個識別至少包含兩個 0 和至少包含兩個 1 的字串的 DFA


確定性有限自動機 (DFA) 是一個 5 元組

M=(Q, Σ, δ,q0,F)

其中,

  • Q:稱為狀態的有限集合。
  • Σ:稱為字母表的有限集合。
  • δ:Q × Σ → Q 是轉移函式。
  • q0 ϵ Q 是起始狀態或初始狀態。
  • F:終止狀態或接受狀態。

問題

構造一個識別至少包含兩個 0 和至少包含兩個 1 的字串的 DFA。

解決方案

基於給定條件在字母表 Σ ={0,1} 上生成的語言是 -

L={0011,001011,0001010,0011001,010101,……}

給定的語言接受至少兩個 0,意味著它可以接受兩個或兩個以上的 0,並且至少兩個 1,意味著它接受兩個或兩個以上的 1。

假設,

  • 輸入 - 00010
  • 輸出 - 字串被拒絕

因為,給定的輸入不包含至少兩個 1。

即使它至少包含兩個 0,它也不會接受該字串。

為了接受字串,兩個條件都必須滿足,如果其中一個不滿足,則該字串將不會被機器接受。

  • 輸入 - 001001001
  • 輸出 - 字串被接受

現在為給定的輸入構造 DFA -

狀態0 的數量1 的數量
→ q000
q101
q20> =2
q310
q411
q51> =2
q6> =20
q7> =21
*q8> =2> =2

DFA 將如下所示 -

解釋

如果輸入是 1,則 1 的數量增加到 1。轉移到狀態 q1。如果輸入是 0,則 0 的數量增加到 1。轉移到狀態 q3。

如果輸入是 1,則 1 的數量增加到 2。轉移到狀態 q2。如果輸入是 0,則 0 的數量增加到 1。轉移到狀態 q4。

如果輸入是 1,則 1 的數量始終增加 1。然後保持在同一狀態。如果輸入是 0,則 0 的數量增加到 1。轉移到狀態 q5。

如果輸入是 1,則 1 的數量增加到 1。轉移到狀態 q4。如果輸入是 0,則 0 的數量增加到 2。轉移到狀態 q6。

如果輸入是 1,則 1 的數量增加到 2。轉移到狀態 q5。如果輸入是 0,則 0 的數量增加到 2。轉移到狀態 q7。

如果輸入是 1,則 1 的數量始終增加 1。然後保持在同一狀態。如果輸入是 0,則 0 的數量增加到 2。轉移到狀態 q8

如果輸入是 1,則 1 的數量增加到 1。轉移到狀態 q7。如果輸入是 0,則 0 的數量持續增加 1。然後保持在同一狀態。

如果輸入是 1,則 1 的數量增加到 2。轉移到狀態 q8。如果輸入是 0,則 0 的數量持續增加 1。然後保持在同一狀態。

如果輸入是 1,則 1 的數量始終增加 1。然後保持在同一狀態。如果輸入是 0,則 0 的數量持續增加 1。然後保持在同一狀態。

最後,如果字串結束,則它被接受。

更新於: 2021年6月15日

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.