[英]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.