DFA 到数学符号

DFA to mathematical notation

假设我有一个字母表为 {0,1} 的 DFA,它基本上接受任何字符串,只要没有连续的 0(一次最多一个 0)。我如何用数学符号表达它?

我在想任意数量的 1,后跟一个或 none 0,然后是任意数量的 1..... 但无法找到合适的数学符号。

我的尝试,但显然不正确,因为 1010 应该被接受,但符号并未表明如此:

作为正则表达式,您可以将其写为 1*(01+)*0?。任意多个,然后任意多组恰好有一个零,后面跟着至少一个一,最后可能是一个零。 Nico 已经在评论中写了这么多。我个人认为这样的正则表达式足够正式,可以称之为数学。

现在如果你想用指数来写这个,你可以这样做

L = {1a (0 11+bi)c 0d mod 2 | a,bi,c,d ∈ ℕ for 1≤ic}

在指数中写一点公式有一个很大的好处,就是您不必将使用指数的地方和定义范围的地方分开。这里我所有的数字都是自然数(包括零)。添加一个意味着至少重复一次。并且模2使指数为0或1来表示正则表达式中的?

当然,这里有一个隐含的假设,即c作为一种循环,但不是每次都重复相同的表达式,而是bi 每次迭代都会更改。 i 的范围暗示了这种解释,但它可能被认为是令人困惑甚至不正确的。

这里正确的解决方案是使用一些正式的产品符号,使用带有下标 i = 1 和上标 c 的大 ‖ .这将表明对于从 1 到 c 的每个 i 你想要计算给定的表达式(即 011+bi) 并连接所有结果词。

你也可以给出一个递归定义:下面定义的最小不动点

L' = {1, 10} ∪ {1a 0 b | a ∈ ℕ, a > 0, bL'}

是所有以1开头并满足您条件的单词的语言。从这里你可以构建

L = {ε, 0} ∪ L' ∪ {0 a | aL'}

所以你添加空词和单独的零,然后从 L' 中提取所有未修改形式和前面加零的形式的词。