Computer science 如何规范化有限状态机? 如何找到最小确定性有限状态机 有没有办法规范化非确定性FSM 对于给定的机器,是否有一个线性时间约束算法来寻找最小FSM 有没有办法确定两个FSM是否相等

Computer science 如何规范化有限状态机? 如何找到最小确定性有限状态机 有没有办法规范化非确定性FSM 对于给定的机器,是否有一个线性时间约束算法来寻找最小FSM 有没有办法确定两个FSM是否相等,computer-science,finite-automata,Computer Science,Finite Automata,这不是一个家庭作业问题。我一直在看,只是好奇而已。由于所有非确定性FSM都有一个共同响应的确定性FSM,所以对1和2的答案应该是相同的 如果你想知道更多,可以买一本迈克尔·西普的《计算理论导论》,这是一本学习这些知识的好书。Sipser知道他所谈论的内容以及如何很好地进行沟通。从第2.5节开始检查“编译器设计基础”。网上免费提供 它包括将NFA转换为DFA和最小化DFA。NFA在转换为DFA时可以指数级扩展 “…任何常规语言(a语言) 可以用正则表达式表示的,NFA或DFA)具有唯一的 因此,我

这不是一个家庭作业问题。我一直在看,只是好奇而已。

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

如果你想知道更多,可以买一本迈克尔·西普的《计算理论导论》,这是一本学习这些知识的好书。Sipser知道他所谈论的内容以及如何很好地进行沟通。

从第2.5节开始检查“编译器设计基础”。网上免费提供

它包括将NFA转换为DFA和最小化DFA。NFA在转换为DFA时可以指数级扩展

“…任何常规语言(a语言) 可以用正则表达式表示的,NFA或DFA)具有唯一的 因此,我们可以确定正则表达式(或
NFA或DFA)将两者转换为最小DFA,并比较结果。”

一些非正式的答案为您提供想法,要获得详细的证明,请阅读一本关于自动机的好书,例如或其他答案中提到的书。我敢肯定,你可以在网上找到回答你所有问题的材料

  • 如何找到最小确定性有限状态机
该过程旨在消除重复状态(或合并等效状态)。您知道状态和转换是生成字符串的关键。基本上,复制状态不会使生成的语言变大或变小。该算法从始终具有生成lamda(空字符串)能力的最终状态开始,递归地更新指示状态生成能力的表,最后合并这些状态而不产生任何差异

  • 有没有办法规范化非确定性FSM
NFA的规范化DFA使用NFA的不同状态集合作为DFA的状态,例如,{state0}-(1)->{state1,state2}要删除非确定性部分,无法避免状态爆炸,因为DFA必须这样做才能表示语言

  • 对于给定的机器,是否有一个线性时间约束算法来寻找最小FSM
我记得最好的方法是O(NLogN),它是通过重复使用一位西安大略大学教授的论文中的信息来实现的,我怀疑是否存在更好的方法。我相信经典的是O(N^2)

  • 有没有办法确定两个FSM是否相等
对。获取最小值,通过访问字符串(一个可以从开始状态到达状态的字符串,这几乎是状态的真实“名称”)对状态进行编码,并验证转换映射。虽然可能有更好的方法,但在bigO上不会有太大的区别

  • 如果给你一些确定性的有限状态机,那么你可以用O(n2)中一个非常简单的算法找到一个等价的最小值;霍普克罗夫特的算法在O(n logn)中实现了这一点。您可以找到这两个方面的描述。您可以通过最小化A和B并检查它们是否相同来检查它们是否相等
  • 如果给你一些不确定的有限状态机,那么找到一个等价的最小值是非常困难的。换句话说,没有一个好的算法是已知的,并且推测它不存在。检查两个不确定自动机的等价性也是PSPACE完成的。因此,除非有非常不可能的突破,否则您应该将自动机转换为确定性自动机(这需要很多时间),然后执行检查
  • 您可以将非确定性FSM转换为具有指数状态数的确定性FSM。这是不可避免的。练习(不难!):由单词组成的语言,其中结尾的第n个字母是“a”,可以使用具有n个状态的非确定性有限状态机识别,而不能使用小于2n个状态的确定性有限状态机识别。在一般情况下,指数界不能被打破

看起来像4个问题,但+1表示一种更不寻常的问题。我认为它们都是相关的。如果我找到标准形式,那就是最小值,如果我能找到两个的标准形式,那么我可以证明它们是等价的。我需要一个更快的方法来正常化,并且希望有更好的方法来解决每个问题。当然,这是相互关联和相互促进的。一个问题?不完全是这样,但考虑到你的最终目标(即#4)和提出如此有趣的问题的荣誉,将它们包括在一起是明智的。我急切地等待答案(希望我能理解它…我已经很久没有做任何理论工作了…+1)。哎哟我仍然觉得那本小而致命的书让我头疼。是的,我可以将不确定性转化为确定性,然后解决这个问题,但问题是我可能会有一个状态爆炸。有没有一种方法可以在线性时间和空间范围内系统地解决非确定性问题?您是否建议使用任何规范化确定性的算法来规范化非确定性问题?另外一种仅用于Sipser参考。这是一个宝藏。很好的例子练习。很容易看到NDFA实现,但也很容易显示DFA必须始终“知道”前面N个字符中的每一个是否为“A”。