📜  DFA 机器接受奇数个 0 或/和偶数个 1

📅  最后修改于: 2021-09-27 15:48:59             🧑  作者: Mango

先决条件——设计有限自动机
问题 –在输入字母表上构建 DFA 机器\sum_ = {0, 1},即接受:

  1. 奇数个 0 或偶数个 1
  2. 0的奇数和1的偶数
  3. 0 的奇数或 1 的偶数,但不能同时存在

解决方案——让我们首先为两种情况设计两台独立的机器:

  • 只接受奇数个 0
  • 只接受偶数个 1

然后,合并这两个并找到所需的最终状态。


为了合并这两台机器,我们将取这两台机器状态的笛卡尔积:

这些 DFA 的初始状态将是包含这两个独立机器的初始状态的状态。由于 q0 和 q2 是初始状态,因此 q0q2 是最终 DFA 的初始状态。

现在开始一一设计所有的 DFA:

  1. 0 的奇数或 1 的偶数:

    这台机器接受包含奇数的语言。 0 甚至没有。 1 个。我们知道 q1 表示奇数。 0 和 q2 表示甚至没有。 1 个。因此,所需 DFA 的最终状态将包含 q1 或 q2。
    .’。最终状态 = {(q0q2), (q1q2), (q1q3)}

    这是我们要求的 DFA,它接受包含奇数的语言。 0 甚至没有。 1 个。

  2. 0 的奇数和 1 的偶数:

    这台机器接受包含奇数的语言。 0 甚至没有。 1 个。我们知道 q1 表示奇数。 0 和 q2 表示甚至没有。 1 个。因此,所需 DFA 的最终状态将包含 q1 和 q2。
    .’。最终状态 = {(q1q2)}

    这是我们要求的 DFA,它接受包含奇数的语言。和 0 甚至没有。 1 个。

  3. 0 的奇数或 1 的偶数,但不能同时出现:

    这台机器接受包含奇数的语言。 0 甚至没有。 1 的但不是包含两个奇数的语言。 0 甚至没有。 1 个。我们知道 q1 表示奇数。 0 和 q2 表示甚至没有。 1 个。因此,所需 DFA 的最终状态将恰好包含 q1 和 q2 中的一个。
    .’。最终状态 = {(q0q2), (q1q3)}

    这是我们要求的 DFA,它接受包含奇数的语言。 0 甚至没有。 1 的但不是两者在一起。