簡體   English   中英

創建確定性有限自動機

[英]Creating a deterministic finite automata

我需要通過具有以下屬性的語言 {a,b,c} 創建一個非空 DFA:

  1. 第一個符號是a。
  2. 有偶數個b。
  3. 最后一個符號是 c。

我只是想知道,我應該創建 3 個單獨的自動機,然后使用交叉點將它們組合起來,還是應該只創建一個,如果是這樣,它怎么會有偶數個 b? 我知道我可以交替使用這些狀態,但不知道如何將它們結合起來。

謝謝

這是您的自動機(假設0是偶數,因此0 b可以):

[start](a) -> [1]
[start](b,c,<eoi>) -> [reject]

[1](a) -> [1]
[1](<eoi>) -> [reject]

[1](c) -> [2]
[1](b) -> [3]

[2](<eoi>) -> [accept]
[2](c) -> [2]
[2](a) -> [1]
[2](b) -> [3]

[3](<eoi>) -> [reject]
[3](a,c) -> [3]
[3](b)->[1]

“輸入結束”在哪里。

狀態1:b的偶數,最后處理的符號不是c。 狀態2:b的偶數,最后處理的符號是c。 狀態3:b的奇數。

[在此處輸入圖片描述][1] 您需要的 DFA 顯示在附圖 [1] 中: https://i.stack.imgur.com/1K3Xw.jpg

現在讓我們嘗試了解 DFA 是如何構建的。 初始狀態- 'q0' 現在我們在'q0' 上取a 來制作字符串'a' 的起始符號。 之后,我們要構建包含偶數個“b”的 DFA,因為我們在“q1”、“q2”上取 b。 我們所需的 DFA 的最后一個符號是“c”。 所以我們在'q3'上取'c'。 最終的 state 是“q4”。 現在我們看到每個 state 的轉換。 在“q0”上,我們將字符串符號“a”作為起始符號,然后轉到 state“q1”。 如果我們在 state 'q0' 上使用字符串符號 'b' 和 'c',我們將轉到 state 'q5'。 如果我們在 state 'q1' 上取 'a','c',那么我們將留在同一個 state 'q1' 中。 現在我們在“q1”上取“b”,然后我們轉到 state“q2”。 在構造 DFA 中,我們有奇數個“b”,即 1。但我們取偶數個“b”。 如果我們在 state 'q2' 上取 'a','c',那么我們將留在同一個 state 'q2' 中。 如果我們在 state 'q2' 上使用字符串符號 'b',那么我們將轉到 state 'q3'。 如果我們在 state 'q3' 上取 'a',那么我們將留在同一個 state 'q3' 中。 如果我們在 state 'q3' 上取字符串符號 'b',那么我們將轉到 state 'q2'。 如果我們在 state 'q3' 上取字符串符號 'c' ,那么我們將轉到 state 'q4' ,這是最終的 state。 因為在那個 DFA 中,我們遵循我們需要的屬性。 如果我們在 state 'q4' 上取字符串符號 'b',那么我們將轉到 state 'q2'。 如果我們在 state 'q4' 上取字符串符號 'a',那么我們將轉到 state 'q3'。 這是我們需要的 DFA。

暫無
暫無

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

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