【问题标题】:How do you normalize a finite state machine?如何规范化有限状态机?
【发布时间】:2023-04-06 03:15:01
【问题描述】:
  1. 如何找到最小的确定性 FSM?
  2. 有没有办法标准化非确定性 FSM?
  3. 是否有线性时间限制算法来找到给定机器的最小 FSM?
  4. 有没有办法查看两个 FSM 是否相等?

这不是家庭作业问题。我在看this lecture series,只是好奇。

【问题讨论】:

  • 看起来像 4 个问题,但 +1 表示更不寻常的问题类型。
  • 我认为它们都是相关的。如果我找到范式,那么这就是最小的,如果我能找到两个的范式,那么我可以证明它们是等价的。我需要一种更快的方法来规范化,并希望有更好的方法来解决每个问题。
  • 肯定是相互关联的。一个问题?不是真的,但考虑到您的最终目标(即#4),将它们放在一起是明智的,并且感谢您提出这样有趣的问题。我急切地等待一个答案(希望我能理解它......自从我做任何理论工作以来已经太久了......)

标签: computer-science finite-automata


【解决方案1】:

由于所有非确定性 FSM 都有一个对应的确定性 FSM,因此对 1 和 2 的答案应该是相同的。

如果您想了解更多信息,请获取 Michael Sipser 的“计算理论导论”,这是一本学习这些知识的非常棒的书。 Sipser 知道他在谈论什么以及如何很好地沟通。

【讨论】:

  • +1。哎哟!我仍然为那本小而致命的书感到头疼。
  • 是的,我可以将非确定性转换为确定性,然后解决该问题,但问题是我可能会出现状态爆炸。有没有办法在线性时空约束下系统地解决非确定性本身?
  • 您是否建议任何可以标准化确定性的算法都可以用于标准化非确定性?
  • 加一个仅供 Sipser 参考。这是一个宝藏。
【解决方案2】:

一些非正式的答案可以为您提供想法,有关详细证明,请阅读一本关于 Automata 的好书,例如 this one 或其他答案中提到的那些。而且我很确定您可以找到在线资料来回答您的所有问题。

  • 如何找到最小的确定性 FSM?

该过程是消除重复状态(或合并等效状态)。你知道状态和转换是生成字符串的关键。基本上,重复的状态不会使生成的语言更大或更小。算法从总能生成lamda(空字符串)的最终状态开始,递归更新表示状态生成能力的表,最后合并没有区别的状态。

  • 有没有办法标准化非确定性 FSM?

NFA 的归一化 DFA 是使用 NFA 的不同状态集合作为 DFA 的状态,例如 {state0} -(1)-> {state1, state2} 去除非确定性部分,没有避免状态爆炸的方法,因为 DFA 必须这样做才能表示语言。

  • 是否有线性时间限制算法来找到给定机器的最小 FSM?

我记得最好的方法是 O(NLogN),方法是在西安大略大学教授的一些论文中重复使用信息,并且怀疑是否存在更好的方法。我相信经典的是 O(N^2)。

  • 有没有办法查看两个 FSM 是否相等?

是的。获取最小的,通过访问字符串(可以从开始状态到达状态的字符串,这几乎是那里的状态的真实“名称”)对状态进行编码,并验证转换图。虽然可能有更好的方法,但在 bigO 上不会有太大的不同。

【讨论】:

    【解决方案3】:
    • 如果给定一些确定性 FSM,则可以使用 O(n2); Hopcroft 的算法在 O(n log n) 中完成。 Here 你会发现两者的描述。您可以通过最小化 A 和 B 并检查它们是否相同来检查它们是否相等。
    • 如果给定了一些不确定的 FSM,那么找到一个等效的最小 FSM 是 PSPACE-complete。换句话说,没有好的算法是已知的,并且推测它不存在。检查两个非确定性自动机的等价性也是 PSPACE 完备的。因此,除非出现非常不可能的突破,否则您应该将自动机转换为确定性自动机(这需要很长时间),然后执行检查。
    • 您可以将非确定性 FSM 转换为具有指数数量状态的确定性 FSM。这是不可避免的。练习(不难!):由末尾第 n 个字母为“a”的单词组成的语言可以使用具有 n 个状态的非确定性 FSM 来识别,而 无法使用具有少于 2n 个状态的确定性 FSM。一般情况下不能打破指数界限。

    【讨论】:

    • 很好的示例练习。很容易看出 NDFA 的实现,但也很容易证明 DFA 必须始终“知道”前面的 N 个字符中的每一个是否都是“A”。
    【解决方案4】:

    从第 2.5 节开始检查“编译器设计基础”。可在线免费使用。 http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/basics_lulu.pdf

    它包括将 NFA 转换为 DFA 并最小化 DFA。 NFA 在转换为 DFA 后可以呈指数级增长。

    "...任何常规语言(一种语言 可以用正则表达式 NFA 或 DFA 表示的)具有唯一性 最小 DFA。因此,我们可以确定正则表达式的等价性(或 NFA 或 DFA)通过将两者都转换为最小 DFA 并比较结果。”

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 2015-04-29
      • 2016-10-28
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多