需要构造DFA(确定性有限自动机)
Need to construct DFA (deterministic finite automaton)
我需要构建一个 DFA,它可以识别仅由 0 和 1 组成的所有字符串,以便它们具有偶数个零和可被 3 整除的 1。我找到了一个用于偶数情况的自动机0 和偶数个 1:
我尝试通过添加一些状态、更改分支等从这里开始。但是我仍然没有成功,通常因为我要添加的分支和状态而忘记了自动机在做什么。任何帮助将不胜感激。
您需要记录被 2 和 3 整除的状态,这意味着您需要 6 个状态。只需将它们命名为 0|0
、1|0
、0|1
、1|1
、0|2
、1|2
。第一个数字告诉您,当您达到该状态时,您有偶数或奇数个零,第二个数字告诉您,当您达到该状态时,您有多个 1,除以 3 时,给出给定的模数。
您的状态图包含:
0|x --0--> 1|x
1|x --0--> 0|x
y|0 --1--> y|1
y|1 --1--> y|2
y|2 --1--> y|0
开始状态是0|0
,也是唯一的停止状态
要理解的重要一点是,每个状态记录分别除以 2 或 3 时读取的 0 或 1 的数量的模数。在这两种情况下,0|0
都是模数 0,即接受标准。这一切都有效,因为要跟踪的不同状态的数量是有限的。 DFA 这个名字已经告诉我们它无法跟踪无限数量的状态。
一种看待它的方法是问题要求两种语言的交集:一种包含偶数个零,另一种包含可被 3 整除的 1 的数量。解决这个问题的一种方法是为 DFA 制作两种语言,然后制作另一个 DFA,在读取输入符号时跟踪每个 DFA 中的状态对。
我需要构建一个 DFA,它可以识别仅由 0 和 1 组成的所有字符串,以便它们具有偶数个零和可被 3 整除的 1。我找到了一个用于偶数情况的自动机0 和偶数个 1:
我尝试通过添加一些状态、更改分支等从这里开始。但是我仍然没有成功,通常因为我要添加的分支和状态而忘记了自动机在做什么。任何帮助将不胜感激。
您需要记录被 2 和 3 整除的状态,这意味着您需要 6 个状态。只需将它们命名为 0|0
、1|0
、0|1
、1|1
、0|2
、1|2
。第一个数字告诉您,当您达到该状态时,您有偶数或奇数个零,第二个数字告诉您,当您达到该状态时,您有多个 1,除以 3 时,给出给定的模数。
您的状态图包含:
0|x --0--> 1|x
1|x --0--> 0|x
y|0 --1--> y|1
y|1 --1--> y|2
y|2 --1--> y|0
开始状态是0|0
,也是唯一的停止状态
要理解的重要一点是,每个状态记录分别除以 2 或 3 时读取的 0 或 1 的数量的模数。在这两种情况下,0|0
都是模数 0,即接受标准。这一切都有效,因为要跟踪的不同状态的数量是有限的。 DFA 这个名字已经告诉我们它无法跟踪无限数量的状态。
一种看待它的方法是问题要求两种语言的交集:一种包含偶数个零,另一种包含可被 3 整除的 1 的数量。解决这个问题的一种方法是为 DFA 制作两种语言,然后制作另一个 DFA,在读取输入符号时跟踪每个 DFA 中的状态对。