【问题标题】:DFA to mathematical notationDFA 到数学符号
【发布时间】:2016-09-27 12:47:32
【问题描述】:

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

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

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

【问题讨论】:

  • 我投票结束这个问题,因为它与编程无关。
  • 您在寻找 DFA 的正则表达式吗?然后应该有一个简单的转换过程。它可能类似于1*(01+)*0?
  • @NicoSchertler 我尝试使用想要的数学集合符号编辑了我的帖子。

标签: math computer-science finite-automata dfa


【解决方案1】:

作为正则表达式,您可以将其写为1*(01+)*0?。任意多个 1,然后是任意多个组,恰好是一个零,后跟至少一个 1,最后可能是一个零。 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' 中取出所有单词,以未修改的形式和前面添加零的形式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多