簡體   English   中英

正則表達式到 DFA

[英]Regular Expression to DFA

有人可以告訴我附加的 DFA 是否正確嗎?

我想為具有字母 Σ ={a, b} 的語言提供 DFA

我需要 DFA ----> A={ε, b, ab} 在此處輸入圖像描述

不,有多種原因:

  1. 你的機器人bab
  2. 您的自動機不接受ab
  3. 您的自動機不是 DFA,至少按照一些嚴格的定義

關於第一點:從q1開始,我們看到b ,到q2 ,看到a ,到q3 ,看到b ,再到q4 ,這是接受。 我們看到了bab並接受了它。

關於第二點:從q1開始,我們看到a但沒有定義的轉換。 自動機“崩潰”並且無法接受。 因此不接受以a開頭的字符串,包括ab

關於第三點:DFA 通常需要顯示所有狀態和轉換,包括死狀態和永遠不會返回任何接受狀態的轉換。 您不會顯示所有轉換,也不會顯示自動機中的所有狀態。

您可以使用 Myhill-Nerode 定理來確定您的語言的最小 DFA 有多少個狀態。 我們注意到空狀態可以附加空字符串bab以獲得語言中的字符串; a可以附加b 並且b可以附加空字符串。 不能將任何內容附加到aabbba以獲取語言中的字符串(因此這些是無法區分的); ab可以附加空字符串(因此與b無法區分)。

如此確定的等價類對應於最小 DFA 中的狀態。 我們的等價類是:

  1. 類似空字符串的字符串
  2. b這樣的字符串
  3. a字符串
  4. aa這樣的字符串

我們注意到b在語言中,因此第二類將對應於接受狀態。 我們注意到不能將任何內容附加到aa以獲取語言中的字符串,因此此類對應於 DFA 中的死狀態。 我們通過查看附加新符號將我們置於哪個新等價類來編寫這些狀態之間的轉換:

  1. 附加a將我們置於 (3) 中,因為將a附加到空字符串給出a (3) 中的 a。 附加b將我們置於 (2) 中,因為將b附加到空字符串會得到位於 (2) 中的b

  2. 附加a將我們置於 (4) 中,因為將a附加到b給出了ba ,這與aa類似,因為它不是語言中任何字符串的前綴。 附加b ,我們通過類似的論點到達(4)。

  3. 附加a我們得到aa並且在 (4) 中。 附加b我們得到ab就像b所以我們在(2)中。

  4. 所有從死狀態的轉換都返回到死狀態; ab都返回到 (4)。

你最終會得到類似的東西:

q1 --a--> q3
 |        /|
 b  --b--< a
 | /       |
 vv        v
q2 -a,b-> q4 \
           ^ a,b
           \_/

或以表格形式:

q    s    q'
==   =    ==
q1   a    q3
q1   b    q2
q2   a    q4
q2   b    q4
q3   a    q4
q3   b    q2
q4   a    q4
q4   b    q4

我認為這個 DFA 對那種語言是正確的。

在此處輸入圖像描述

您附加的 DFA 錯誤.. 您的 DFA 僅適用於 €,b,bab 但不能接受 ab。 為了讓您的 dfa 接受 ab,還向 q0 添加一個新狀態,它接受 a 並且每當 newstate 作為 b 獲得輸入時,將其發送到最終狀態。 由於它是一個 dfa,因此您不需要將其發送到新狀態(死亡狀態)您的問題的 dfa 在這里:單擊此處查看 dfa

暫無
暫無

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

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