【问题标题】:Why running DFA takes linear time?为什么运行 DFA 需要线性时间?
【发布时间】:2013-01-03 21:56:47
【问题描述】:

我刚开始学习自动机。考虑到 DFA,这似乎很容易理解,而设计一个并不难。但我觉得证明事情很难……

任何人都可以为这个问题提供非正式的证明或一些提示吗?非常感谢!

PS:对不起,我没有说得很清楚。 @Dan 所说的正是我的意思:

为什么要决定“给定一个字符串 w。自动机是否接受 还是拒绝 w?”可以在线性时间内完成?

【问题讨论】:

  • 线性在什么方面?请让您的问题更具描述性。

标签: algorithm complexity-theory theory dfa


【解决方案1】:

我想你想知道为什么要决定“给定一个字符串 w。自动机接受还是拒绝 w?”这个问题。可以在线性时间内完成吗?

假设 w=a_1...a_n。从初始状态 q_0 开始并应用转换 \delta(q_0, a_1) = q_1,这会将您带到 q_1。现在,重复此操作 n 次,直到处理完最后一个字母。这是一个线性时间算法;)

【讨论】:

  • 哇,讲解的很详细!谢谢!
  • 我应该补充一点,如果输入字母不是决策问题的一部分,这是正确的;)
  • 您还需要能够查找 O(1) 中每一对 (q, a) 的转换。
  • 仅当输入的字母大小不是决策问题输入的一部分时。
【解决方案2】:

试着这样想:

  1. 输入字符串中的每个字符被 DFA 读取多少次?
  2. 在处理输入中的单个字符时,DFA 做了多少工作?

希望这会有所帮助!

【讨论】:

  • 假设输入长度为n,那么我认为答案是O(n)。因此它是线性的对吗?谢谢~!
  • @Arch1tect - O(n) 只是线性的另一种说法。 O 表示渐近上界 - 它是一种正式的数学符号,并非特定于计算机科学。 See here for more
  • @Steve314 Linear 是一种表示函数是 Theta(n) 的方式,它有点多。
  • @Khaur - 我的意思并不是特别指大 O,但我确实是这么说的 - 哎呀。只要是?(n)(根据需要替换?),任何渐近边界都可以称为线性。但是你是对的,如果你只是说“线性”而不说哪个界限,那么常数因子内 Theta(n) 更有意义。
猜你喜欢
  • 1970-01-01
  • 2018-08-03
  • 2020-11-08
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多