📜  设计确定性有限自动机(第 8 组)

📅  最后修改于: 2021-09-27 14:38:03             🧑  作者: Mango

先决条件:设计有限自动机
在本文中,我们将看到一些确定性有限自动机 (DFA) 的设计。

问题 1:构造一个最小 DFA,它接受 {a, b} 上的一组字符串,其中从左侧开始的第二个符号始终是 ‘b’。
说明:所需的语言将类似于:

L1 = {ab, aba, abaa, bb, bb, bbbb, ...........}

在这里我们可以看到,包含 ‘b’ 作为左侧第二个符号的语言的每个字符串,但此 DFA 不接受以下语言,因为以下语言的某些字符串不包含 ‘b’ 作为左侧的第二个符号。

L2 = {ba, ba, babaaa..............}

此所需 DFA 不接受此语言 L2,因为它不包含“b”作为左侧的第二个符号。
所需语言的状态转换图如下所示:

在上面的 DFA 中,状态 ‘W’ 是初始状态,在获取 ‘a’ 或 ‘b’ 作为输入时,它会转换为状态 ‘X’。状态 ‘X’ 在将 ‘b’ 作为输入时转换到最终状态 ‘Y’,在获取 ‘a’ 作为输入时它转换到死状态 ‘Z’。

将 ‘a’ 或 ‘b’ 作为输入的最终状态 ‘Y’ 保持其自身状态。死状态“Z”被称为死状态,因为它无法在获取任何输入字母时进入最终状态。

注意:上述 DFA 中的状态数为 (n+2),其中“n”是上述语言中使用的字符串左侧的数字。

问题 2:构造一个最小 DFA,它接受一组 {a, b} 上的字符串,其中从左侧开始的第三个符号始终是 ‘b’。
说明:所需的语言将类似于:

L1 = {aab, baba, aabaa, bbb, abb, bbbb, ...........}

在这里我们可以看到,包含 ‘b’ 作为左侧第三个符号的语言的每个字符串,但此 DFA 不接受以下语言,因为以下语言的某些字符串不包含 ‘b’ 作为左侧的第三个符号。

L2 = {baa, aba, baabaaa..............}

此所需 DFA 不接受此语言 L2,因为它不包含“b”作为左侧的第三个符号。
所需语言的状态转换图如下所示:

在上面的 DFA 中,状态 ‘V’ 是初始状态,它在获取 ‘a’ 或 ‘b’ 作为输入时转换到状态 ‘W’。状态 ‘W’ 是一种状态,它在获得 ‘a’ 或 ‘b’ 作为输入时转换到状态 ‘X’。将“b”作为输入时的状态“X”转换为最终状态“Y”,将“a”作为输入时转换为死状态“Z”。

将 ‘a’ 或 ‘b’ 作为输入的最终状态 ‘Y’ 保持其自身状态。死状态“Z”被称为死状态,因为它无法在获取任何输入字母时进入最终状态。

注意:上述 DFA 中的状态数为 (n+2),其中“n”是上述语言中使用的字符串左侧的数字。