我对这些东西真的很陌生,所以我为这里的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)
很容易单独制作......谁能解释一种将它们组合成一个系统的方法?谢谢。
我对这些东西真的很陌生,所以我为这里的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 开始;这意味着没有一个州有相同的名字。
第三步:使用以下步骤构建转移表(δ)
3a。组合 DFA 的
起始状态:取两个 DFA(DFA1 和 DFA2)的起始状态,命名为 Q [ i , j ]其中 i 和 j 分别是 DFA1 和 DFA2 的起始状态的下标;即Q i是第一个DFA 的开始状态,Q j是第二个DFA 的开始状态,并将Q [i , j]标记为组合DFA 的开始状态。
3b。将两个 DFA 的状态映射为
δ(Q i , ak ) = Q p1和 δ(Q j , ak ) = 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}.
Step1:
奇数个b的DFA。
DFA 至少 2 个。
Step2:
重命名 DFA1 的状态
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]。
添加最终状态后的转换表会像这样。
Step4:
重命名所有状态 Q [i,j]
Q [0,3] to Q 0
Q [1,3] to Q 2
Q [0,4] to Q 1
Q [2,3] to Q 4
Q [1 ,4]到 Q 3
Q [2,4]到 Q 5
所以最终的 DFA 将如下所示。
它是使用两个自动机的乘积完成的。
至少两个且为奇数的语言L
是常规语言。其DFA如下:a
b
在这个 DFA 中,我在DFS
概念上结合了两个 s!
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
,上部状态为奇数。
如果奇数也接受字符串,b
因此最终状态应处于上部状态之一。
s 的数量不仅b
是条件,而且a
应该是至少2
。因此,您可以将此 DFA 水平划分为三个部分,其中a
s 的数量为 0 state-0 and 1
,a
s 为 1,state-2 and 3
sa
为 2 state-4 and 5
。在前两个a
s 之后,字符串中允许有任意数量的s,因此状态和a
存在自循环。q4
q5
所需的状态数为 6,因为奇偶数为 2 个状态,b
并且应该至少2
有 3 个状态 a=0、a=1、a=2,因此 2*3 = 6