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

📅  最后修改于: 2021-09-28 09:30:43             🧑  作者: Mango

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

问题 1:在 {a, b} 上构造一个接受字符串集的最小 DFA,其中 a n b m c l ,其中 n、m 和 l 大于或等于 0。
说明:所需的语言将类似于:

L1 = {ε, a, aa, aaa, b, bb, bbb, c, cc, ccc, abc, ab, ac, ...........}

注意:在上面的字符串中应该有像 abc 这样的顺序,即,在 ‘b’ 之后不应该有任何 ‘a’ 或在 ‘c’ 之后不应该有任何 ‘a’ 等。

在这里我们可以看到,包含a、b和c的语言的每个字符串的幂大于或等于0但下面的语言不被这个DFA接受,因为下面的语言的一些字符串不包含a,b和 c 的幂大于或等于 0 或者它们可能不遵循 a、b 和 c 的格式,即在 ‘b’ 之后不应有任何 ‘a’ 或在 ‘c’ 之后不应有任何 ‘a’ 等。

L2 = {ba, bac, bbacaa..............}

此所需的 DFA 不接受此语言 L2,因为它的字符串在 ‘b’ 之后包含 ‘a’,在 ‘c’ 之后包含 ‘a’ 等。
所需语言的状态转换图如下所示:

在上面的 DFA 中,状态 ‘W’ 是初始和最终状态,在获得 ‘a’ 作为输入时它保持自身状态,在获得 ‘b’ 作为输入时它转换到最终状态 ‘X’并在获得“c”作为输入时,它会转换为另一个最终状态“Y”。状态 ‘X’ 是最终状态,在获得 ‘b’ 作为输入时,它保持自身状态,在获得 ‘c’ 作为输入时,它转换到另一个最终状态 ‘Y’ 并在获得 ‘a’ 作为它转换到死状态“Z”的输入。

另一个最终状态 ‘Y’ 在获得 ‘c’ 作为输入时它保持在它自己的状态,并且在获得输入作为 ‘a’ 或 ‘b’ 时它转换到相同的死状态 ‘Z’。状态“Z”被称为死状态,因为它无法在获取任何输入字母时进入任何最终状态。

问题 2:在 {a, b} 上构造一个接受字符串集的最小 DFA,其中 a n b m c l ,其中 n、m 和 l 大于或等于 1。
说明:所需的语言将类似于:

L1 = {abc, aabc, aabbc, aabbcc, abbc, ...........}

注意:在上面的字符串中应该有像 abc 这样的顺序,即,在 ‘b’ 之后不应该有任何 ‘a’ 或在 ‘a’ 之后不应该有任何 ‘c’ 等。

在这里我们可以看到,语言的每个字符串都包含幂大于或等于 1 的 a、b 和 c 但下面的语言不被此 DFA 接受,因为下面语言的某些字符串不包含 a、b和 c 的幂大于或等于 1 或者它们可能不遵循 a、b 和 c 的格式,即,在 ‘b’ 之后不应有任何 ‘a’ 或在 ‘a’ 之后不应有任何 ‘c’ 等。

L2 = {ba, bac, bbacaa..............}

此所需的 DFA 不接受此语言 L2,因为它的字符串在 ‘b’ 之后包含 ‘a’,在 ‘a’ 之后包含 ‘c’ 等。
所需语言的状态转换图如下所示:

在上面的 DFA 中,初始状态 ‘V’ 在将 ‘a’ 作为输入时转变为状态 ‘W’,在获得 ‘b’ 或 ‘c’ 作为输入时转变为死状态 ‘Z’。将“b”作为输入时的状态“W”要么保持在状态本身,要么转变为状态“X”,而在获得“a”或“c”时转变为相同的死状态“Z”。状态 ‘X’ 在将 ‘b’ 作为输入时保持在它自身的状态,在获得 ‘c’ 作为输入时它转换到最终状态 ‘Y’ 并在获取 ‘a’ 作为输入时它转换到相同的死亡状态“Z”。

将“c”作为输入时的最终状态“Y”保持在自身的状态,而在将“a”或“b”作为输入时,它转换到相同的死状态“Z”。状态“Z”被称为死状态,这是因为它无法在获得任何输入字母时进入最终状态。