Has*_*ell 6 deterministic automata regular-language
我对这些东西真的很新,所以我为这里的noobishness道歉.
构建一个Deterministic Finite Automaton识别以下语言的DFA:
L= { w : w has at least two a's and an odd number of b's}.
Run Code Online (Sandbox Code Playgroud)
每个部分的自动化(at least 2 a's, odd # of b's)很容易单独制作......任何人都可以解释一种系统的方式将它们合二为一吗?谢谢.
son*_*s21 18
您可以使用以下简单步骤构建组合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}.
Run Code Online (Sandbox Code Playgroud)
步骤1:
DFA为奇数个b.

DFA至少为2个.

第2
步:重命名DFA1的stae

Step3(a,b,c):
构造的转换表将为.

Step3d:
由于我们必须使用两个DFA的AND,因此最终状态为Q [2,4] ,因为它包含两个DFA的最终状态.
如果我们必须对两个DFA进行OR,则最终状态为Q [0,4],Q [2,3],Q [1,4],Q [2,4].
在添加最终状态后,转换表会这样.

步骤4:
将所有状态Q [i,j]
Q [0,3]重命名为Q 0
Q [1,3]至Q 2
Q [0,4]至Q 1
Q [2,3]至Q 4
Q [1 ,4]到Q 3
Q [2,4]到Q 5
所以最终的DFA将如下所示.
