[英]Combining deterministic finite automata
我對這些東西真的很新,所以我為這里的noobishness道歉。
構造Deterministic Finite Automaton
DFA識別以下語言:
L= { w : w has at least two a's and an odd number of b's}.
每個部分的自動化(at least 2 a's, odd # of b's)
很容易分開制作......任何人都可以解釋一種系統的方法將它們合二為一嗎? 謝謝。
您可以使用以下簡單步驟構建組合DFA。
設Σ= {a 1 ,a 2 ,...,a k } 。
第一步:為兩種語言設計DFA並將其狀態命名為Q 0 ,Q 1 ,......
第二步:重新命名兩個DFA中的每個狀態,即將DFA中的所有狀態重命名為Q 0 ,Q 1 ,Q 2 ,Q 3 ,...假設您已經開始使用下標0; 這意味着沒有一個州會有相同的名字。
第3步:使用以下步驟構建轉換表(δ)
3A。 組合DFA的開始狀態:
取兩個DFA(DFA1和DFA2)的起始狀態,並將它們命名為Q [i,j] ,其中i和j分別是DFA1和DFA2的起始狀態的下標; 即,Q i是第1個DFA的開始狀態,Q j是第2個DFA的開始狀態,將Q [i,j]標記為組合DFA的開始狀態。
3B。 將兩個DFA的狀態映射為
如果δ(Q i ,a k )= Q p1且δ(Q j ,a k )= Q p2 ,其中Q p1屬於DFA1而Q p2屬於DFA2則δ(Q [i,j] ,a k ) = Q [p1,p2]
3c 。 在轉換表中剩余任何Q [i,j]時填充整個表。
3d 。 合並DFA的最終狀態:
對於AND
情況,最終狀態將是Q [i,j] ,其中Q i和Q j分別是DFA1和DFA2的最終狀態。
對於OR
情況,最終狀態將是Q [i,j] ,其中Q i或Q j是DFA1和DFA2的最終狀態。
第4步:重命名所有Q [i,j] (唯一)並繪制DFA,這將是您的結果。
例:
L= {w: w has at least two a's and an odd number of b's}.
第1步:
DFA為奇數個b。
DFA至少為2個。
第2步:
重命名DFA1的stae
步驟3(A,B,C):
構造過渡表將為。
Step3d:
因為我們必須使用兩個DFA的AND,所以最終狀態將是Q [2,4] ,因為它包含兩個DFA的最終狀態。
如果我們必須對兩個DFA進行OR,則最終狀態為Q [0,4] ,Q [2,3] ,Q [1,4] ,Q [2,4] 。
在添加最終狀態后,轉換表會這樣。
第四步:
重命名所有州Q [i,j]
Q [0,3]到Q 0
Q [1,3]到Q 2
Q [0,4]至Q 1
Q [2,3]至Q 4
問[1,4]至Q 3
Q [2,4]至Q 5
所以最終的DFA將如下所示。
它是使用兩個自動機的產品完成的。
其中a
至少為2且b
為奇數的語言L
是常規語言。 其DFA如下:
在這個DFA中,我在概念上結合了兩個DFS
!
DFA-1 = for odd number of `b`'s (placed vertically three times in diagram)
DFA-2 = for >= two a (placed Horizontally two times in diagram)
DFA過於對症和簡單,所以我認為不需要如何結合兩種DFA
為了繪制這個DFA,你總是跟蹤有多少b
s是偶數還是奇數。 States 0, 2 and 4
表示偶數b
已經到來。 因此,您可以將此DFA垂直分為兩部分,其中底部狀態為偶數b
s,上部狀態為奇數。
如果奇數b
也接受字符串,因此最終狀態應該處於上部的狀態之一。
不僅b
的數量是條件,而且a
應至少為2
。 因此可以在三個部分水平地划分這個DFA,其中的數a
s的0 state-0 and 1
, a
s為一個在state-2 and 3
和a
s為2時state-4 and 5
。 前兩后a
Ş任意數量的a
s的允許在字符串,所以有狀態的自我循環q4
和q5
。
所需的狀態的數量是六個,因為2狀態奇偶b
和作為HOULD是ATLEAST 2
SO 3狀態的= 0,A = 1,A = 2,因此2 * 3 = 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.