先决条件——设计有限自动机
问题 –在输入字母表上构建 DFA 机器 = {0, 1},即接受:
- 奇数个 0 或偶数个 1
- 0的奇数和1的偶数
- 0 的奇数或 1 的偶数,但不能同时存在
解决方案——让我们首先为两种情况设计两台独立的机器:
- 只接受奇数个 0
- 只接受偶数个 1
然后,合并这两个并找到所需的最终状态。
为了合并这两台机器,我们将取这两台机器状态的笛卡尔积:
这些 DFA 的初始状态将是包含这两个独立机器的初始状态的状态。由于 q0 和 q2 是初始状态,因此 q0q2 是最终 DFA 的初始状态。
现在开始一一设计所有的 DFA:
- 0 的奇数或 1 的偶数:
这台机器接受包含奇数的语言。 0 甚至没有。 1 个。我们知道 q1 表示奇数。 0 和 q2 表示甚至没有。 1 个。因此,所需 DFA 的最终状态将包含 q1 或 q2。
.’。最终状态 = {(q0q2), (q1q2), (q1q3)}这是我们要求的 DFA,它接受包含奇数的语言。 0 甚至没有。 1 个。
- 0 的奇数和 1 的偶数:
这台机器接受包含奇数的语言。 0 甚至没有。 1 个。我们知道 q1 表示奇数。 0 和 q2 表示甚至没有。 1 个。因此,所需 DFA 的最终状态将包含 q1 和 q2。
.’。最终状态 = {(q1q2)}这是我们要求的 DFA,它接受包含奇数的语言。和 0 甚至没有。 1 个。
- 0 的奇数或 1 的偶数,但不能同时出现:
这台机器接受包含奇数的语言。 0 甚至没有。 1 的但不是包含两个奇数的语言。 0 甚至没有。 1 个。我们知道 q1 表示奇数。 0 和 q2 表示甚至没有。 1 个。因此,所需 DFA 的最终状态将恰好包含 q1 和 q2 中的一个。
.’。最终状态 = {(q0q2), (q1q3)}这是我们要求的 DFA,它接受包含奇数的语言。 0 甚至没有。 1 的但不是两者在一起。