【问题标题】:DFA + counter with multiplication, addition, bracketsDFA + 带乘法、加法、括号的计数器
【发布时间】:2018-05-13 17:23:06
【问题描述】:

我正在看一个考试题,上面写着

'解释包含加法、乘法和括号的变量 a、b、c 的正确格式的算术表达式如何被带有计数器的 DFA 识别。 (这样的 DFA 可以在每次转换时递增和递减计数器,并测试它是否为零)。'

我不太确定我是否理解它的实际要求。如果有人可以提供一个提示,将不胜感激。 (例如 a 和 b 的乘积是什么)

【问题讨论】:

  • 我投票结束这个问题,因为这与编程没有直接关系!这也许更适合 CS Stack Exchange!

标签: math computation-theory dfa deterministic


【解决方案1】:

如果你想要的只是一个提示,那么我认为这应该足够了:

  1. 某些字符串表示有效的算术表达式,例如
a + b
(a + b)*(c + d)

还有一些是无效的,比如

a + - b
a b
)
()
(a + b)*)c+d(
  1. 可以被带有计数器的 DFA 识别”在这里意味着您可以构建一个 Deterministic finite automaton 以便它在处理一个“接受状态”后停止当且仅如果该字符串表示一个有效的算术表达式

附:附加提示:计数部分在这里很重要,因为简单的 DFA 甚至无法识别任意括号字符串是否正确匹配。

【讨论】:

  • 那么它是否只是一个 DFA,这样每个转换都会从 a、b、c、+、*、(,) 的字母表中添加到表达式中,并且每次读取一个开括号,计数器递增,读取右括号时递减,只有为0时才接受输入?
  • @SonyaArnolds,这是正确的大方向,但这还不够。仔细看看我的无效示例。其中一些将被您的 DFA 接受。
猜你喜欢
  • 2014-06-23
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多