先决条件:设计有限自动机
在本文中,我们将看到一些确定性有限自动机 (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”是上述语言中使用的字符串左侧的数字。