簡體   English   中英

如何構造 L 接受的 DFA:w 包含'110'且不包含'010'?

[英]How to construct DFA that L accept : w contain '110' and doesn't contain '010'?

L = { w 屬於 {0,1}* | w 包含 '110' 不包含 '010'}

我需要構造接收 L 的 DFA。

我怎樣才能畫出一個能同時滿足這兩個條件的 DFA?

提示將是一個很大的幫助。

有限狀態機(或自動機)包括:

  • 一組有限的符號,稱為“字母表”。
  • 一組有限的狀態。 除了標簽之外,狀態中沒有其他信息。
  • 轉換表,將每對 <state, symbol> 映射到一個新狀態。
  • 起始狀態:機器在讀取第一個符號之前所處的狀態的名稱。
  • 接受狀態集:定義成功匹配的狀態集的子集。

機器以起始狀態啟動,然后依次讀取每個符號。 當它讀取一個符號時,它使用轉換表來決定下一個狀態是哪個。 當它到達終點時,如果當前狀態在接受集中,它就宣布成功; 否則,它宣布失敗。

在確定性有限狀態自動機 (DFA) 中,轉換表是單值且完整的; 也就是說,每個條目都只填充了一個狀態。 (構建 DFA 通常涉及添加一個“接收器狀態”,它是非接受的並且在每個符號上都有一個自轉換。這個狀態用於處理不能在接受輸入開始的輸入。)

如果你有一個識別語言 L 的 DFA,你可以通過簡單地將接受狀態集替換為非接受狀態集來為 L 的補集構造一個 DFA。 因此,如果您有一個識別任何包含 010 的輸入的 DFA,您可以構造一個識別任何不包含 010 的輸入的 DFA,只需更改接受狀態列表即可。

如果你有兩個識別語言 L 1和 L 2的 DFA,你可以構造一個新的 DFA,它只識別 L 1和 L 2中的那些字符串——也就是說,交集 L 1 ∩ L 2——使用笛卡爾兩個 DFA 的乘積。 在新機器中:

  • 字母表是原始字母表的交集。 (通常,在此操作中所有的字母表都是相同的。我只是為了完整性而注意到這一點。)
  • 新機器的狀態是原始機器狀態的笛卡爾積。 換句話說,新狀態是所有對 <q i , r j >,其中 q i是第一台機器的狀態,r j是第二台機器的狀態。
  • 轉換表是使用兩個原始轉換表構建的。 如果第一台機器在符號 α 上存在從 q i到 q i'的轉換,並且在第二台機器中在同一符號 α 上存在從 r j到 r j'的轉換,則在組合機器中存在 α 上的轉換從 <q i , r j > 到 <q i' , r j' >。
  • 組合機的起始狀態是原機的一對起始狀態。
  • 組合機器的接受狀態都是<q i , r j >對,其中q i是第一台機器的接受狀態,r j是第二台機器的接受狀態。

因此,如果您可以為以下內容構造 DFA:

  • 包含110的字符串的語言
  • 對於包含010的字符串的語言,則可以使用上述兩個過程構造一個包含110和不包含010的DFA。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM