📜  DFA 中的跨产品操作

📅  最后修改于: 2021-09-27 22:33:52             🧑  作者: Mango

先决条件:设计有限自动机
让我们借助以下示例来了解确定性有限自动机 (DFA) 中的叉积运算-

为 {a, b} 上的一组字符串设计 DFA,使得语言的字符串包含偶数个 a 和 b,然后所需的语言将如下所示 –

L = {ε, aa, bb, abab, aabb, baba, bbaa, .......}

让我们看看 DFA 中跨产品操作的步骤:

第1步:
让我们形成一个 DFA,它计算偶数个 a-
在下面的状态转换图中,’W’ 也是初始状态和最终状态,它接受包含偶数个 a 和任意数量 b 的字符串语言。

上述 DFA 接受的语言是-

L = {ε, aab, b, baa, aabbbbb, aaaab, ..........}

上述 DFA 不接受的语言是-

L = {aaa, abbb, baaa, bbaaba, ...........}

第2步:
让我们形成一个 DFA,它计算 b 的偶数 –
在下面的状态转换图中,’Y’ 也是初始状态和最终状态,它接受包含偶数个 b 和任意数量 a 的字符串语言。

上述 DFA 接受的语言是-

L = {ε, bba, a, abb, bbbbaaaa, bbbba, ...........}

上述 DFA 不接受的语言是-

L = {bbb, bbba, abbb, aaba, ...........}

第 3 步:
在这里,第 1 步和第 2 步的状态交叉相乘并产生如下结果-

{W, X} * {Y, Z} = {WY, WZ, XY, XZ} 

在下面的状态转换图中,使用的四个状态 {WY, WZ, XY, XZ} 是第 1 步和第 2 步状态的叉积的结果,其中“WY”也是初始和最终状态,因为在第 1 步’W’ 是初始和最终状态,在步骤 2 中,’Y’ 是初始和最终状态,其余是正常状态。
然后交叉产品操作后的结果状态转换图如下所示 –

因此,上述 DFA 接受 a 和 b字符串的偶数的所有语言,并且上面 DFA 接受和不接受的语言如下-

L1 = {ε, aa, bb, abab, aabb, baba, bbaa, .......}
L2 = {aaa, aaabb, aaabaabb, aaabb, baaba, bbbaa, .......}

L1 被上述 DFA 接受,但 L2 不接受。