我如何构建这个有限自动机?

and*_*and 2 regex finite-automata discrete-mathematics

我正在攻读离散数学考试,我发现这个练习是我无法弄清楚的.

"为字母表中的语言Sigma = {0,1,2}建立一个基本的有限自动机(DFA,NFA,NFA-lambda),其中字符串中元素的总和是和,这个总和大于3"

我曾尝试使用Kleene的Theorem连接两种语言,例如连接与此正则表达式相关联的语言:

(00 U 11 U 22 U 02 U 20)* - 偶数元素

用这个

(22 U 1111 U 222 U 2222)* - 总和大于3的那些

这有意义吗??我觉得我的正则表达式很松弛.

Ste*_*202 9

我发现你的符号有点模糊,所以也许我完全误会了.如果是这样,请忽略以下内容.看来你还没有:

  • 我假设*表示"0次或更多次".但是,必须出现sum> = 3的其中一个字符串.据说你需要+('1次或更多次').
  • 在>> 3的字符串列表中缺少112和211.
  • 该列表中的222和2222是多余的.
  • 所有这些字符串可以任意地散布0.
  • 00的总和不比0的总和还要多.

编辑:这个怎么样(acc是唯一的接受状态,dot-source):

自动机http://student.science.uva.nl/~sschroev/so/885411.png

在状态ac,字符串总和总是奇数.在州开始时,bacc总和是偶数.此外,在开始时,总和为0,在b处为2,在d处为> = 4.这可以相当容易地证明.因此,接受州acc符合所有标准.

编辑2:我会说这是一个接受所请求语言的正则表达式:

0*(2|(1(0|2)*1))(0*(2|(1(0|2)*1))+
Run Code Online (Sandbox Code Playgroud)