2011-09-20 27 views
1

我試圖得到繪圖DFA的竅門。我有以下問題與我的下面的嘗試,想知道是否有人可以告訴我,如果我是正確的,或者如果不正確,我做錯了什麼。謝謝!此外,如果任何人有一個很好的資源來了解更多關於如何做到這一點,將不勝感激。給出識別下列語言的DFA的狀態圖。在所有的部分字母是{0,1}

給出識別下列語言的DFA的狀態圖。在所有部分中,字母表是{0,1}

{w | W的長度最多爲5}

enter image description here

+0

如果我選擇以下順序會發生什麼? '000000' – cheeken

+0

啊,它永遠不會進行。 – jfisk

+0

我更新了問題,因此可以繼續。現在如果它的長度超過5,它將停止。這是正確的還是我仍然關閉? – jfisk

回答

1

這裏有一些線索。

  • 「至多5」:這意味着你必須做一些計數。在狀態機中,計數由每個節點的上下文完成。換句話說,你需要多個節點,每個節點都有特殊的含義,這個含義就是你的「計數器價值」。
  • 「至多5」:這意味着你必須接受長度爲0,1,2,3,4和5的話(所有這些都具有唯一值,提示提示)
  • 你的字母是{0,1},但是沒有頻率,訂購或與01相關的任何語言的要求。這意味着每次出現0的轉換時,相同的轉換必須可用於1,反之亦然。 (或者減少該規則的一些等價關係 - 但這是在括號中,因爲這不是你需要考慮的東西)上面顯示
+0

您最新的DFA適用於該語言:'{w | w的長度恰好是5'。你怎麼解決它? – cheeken

0

我覺得DFA是錯誤的。它將接受長度爲5的字符串,所以你應該讓所有前六個狀態都是最終狀態。您只接受'1',但它也應該接受'0'......所以請將0與全部1相加。

0

這裏是你的錯誤:

  • 您沒有標註啓動狀態。
  • 字符串「0」,「」(空字符串),「1」被拒絕,但在規定的語言內。換句話說,你只接受正好是長度爲5的單詞,而不是所有長度小於等於5的單詞。

由於字母表是{0,1},因此您必須在每個狀態下指定遇到0或1時會發生什麼情況。如果你遇到一個輸入字符,其邊緣沒有被指定,按照慣例,你將會進入死亡狀態,這個狀態總是返回自己並且永遠不會被接受,但是沒有被提取。這就是爲什麼你最右邊的狀態是不必要的,但你的左邊狀態是不完整的。

最後,大提示:您可以有多個「接受」或「最終」狀態。

+0

我將更新圖形以包含箭頭到起始狀態 – jfisk

+0

您是否看到與我相同的圖片?從開始狀態開始,看起來沒有標記爲「0」的邊緣。您應該將「1」重新標記爲「0,1」。 – bdares

+0

D'Oh,修正了這個問題 – jfisk