先决条件:设计有限自动机
在本文中,我们将看到一些确定性有限自动机 (DFA) 的设计。
问题 1:构造一个最小 DFA 接受 {a, b} 上的字符串集,其中每个 ‘a’ 后跟一个 ‘bb’。
说明:所需的语言将类似于:
L1 = {ε, abb, abbabb, bbbbabb, abbabbabbabbabbbb, ..............}
在这里我们可以看到,包含 ‘a’ 的语言的每个字符串后面都跟有 ‘bb’,但此 DFA 不接受以下语言,因为以下语言的某些字符串不包含 ‘a’ 后跟’bb’。
L2 = {ba, baab, bbaba, ..............}
包含 ‘a’ 后跟 ‘bb’ 的语言的状态转换图将如下所示:
在上面的 DFA 中,状态 ‘v’ 也是初始状态和最终状态,在将 ‘b’ 作为输入时,它保持自身的状态,在获得 ‘a’ 作为输入时,它转换为正常状态 ‘W’将“a”作为输入时,它会转变为死状态“Z”,将“b”作为输入时,它会转变为正常状态“X”,而在将“b”作为输入时,它会转变为最终状态“ V’ 并在将 ‘a’ 作为输入时,它会转变为相同的死状态 ‘Z’。状态“Z”被称为死状态,因为在获得任何输入时,它永远无法转换到任何最终状态。
问题 2:构造一个接受 {a, b} 上的字符串集的最小 DFA,其中每个 ‘a’ 后面永远不会跟有 ‘bb’。
说明:所需的语言将类似于:
L1 = {ε, a, aa, aabaa, b, bb, bbbbba, ..............}
在这里我们可以看到,包含“a”的语言的每个字符串后面永远不会跟“bb”,但此 DFA 不接受以下语言,因为包含“a”的以下语言的某些字符串后跟“ bb’。
L2 = {abb, babbabb, bbaba, ..............}
包含“a”的语言的状态转换图永远不会跟随着“bb”,如下所示:
在上面的 DFA 中,状态 ‘W’ 也是初始状态和最终状态,在将 ‘b’ 作为输入时,它保持自身的状态,在获得 ‘a’ 作为输入时,它转换到最终状态 ‘X’ ‘ 在获得 ‘a’ 作为输入时,它保持在 ‘X’ 的状态,获得 ‘b’ 作为输入,它转换到最终状态 ‘Y’,在获取 ‘a’ 作为输入时,它转换到另一个最终状态状态 ‘X’ 和最终状态 ‘Y’ 以获取 ‘b’ 作为输入,它过渡到死状态 ‘Z’。状态“Z”被称为死状态,因为在获得任何输入时,它永远无法进入任何最终状态。