类型 3 语法生成常规语言。这些语言具有以“xxx”开头、包含“xxx”、以“xxx”结尾、包含奇数个 y 等特征的语言。有限自动机(确定性或非确定性)识别这些语言。
类型 2 语法生成上下文无关语言。这些语言具有一些特征,例如某些数量的 x 后跟更少、或更多或相等数量的 y,或者一个单词后跟同一个单词,但相反。下推自动机识别这些语言......想想带有堆栈的有限自动机。
类型 1 语法生成上下文相关的语言。这些语法非常接近 0 型语法,因此通常很难找到它们之间的区别。LBA(线性有界自动机)识别这些语言,想想资源有限的图灵机……想想现代计算机。
0 型语法生成图灵语言,有时称为递归可枚举语言。这些基本上是您可以编写计算机程序来识别的任何语言,但它们确实与类型 1 融合在一起,因为真正的计算机通常具有某种内存限制。
有限自动机和下推自动机对于解决编写编译器时出现的问题非常重要。然而,这不是你研究它们的原因,你研究它们是为了了解可以/不能计算的限制。许多程序员认为你可以用电脑解决任何问题。可计算性理论教你其他方面。
由“Dude”编辑 - 好的,这是一个易于理解(且著名)的问题,任何图灵机、计算机、程序员或外星天才都无法解决......
想象一下,您有一些多米诺骨牌……但不是点状图案,而是顶部和底部有一些简短的单词,例如“aba”和“cab”之类的单词。如果我给你 5 或 10 或 50 块这样的多米诺骨牌,你能把它们排列成顶部的单词,全部连接在一起,与底部的连接单词完全匹配。您可以制作任意数量的多米诺骨牌副本。
多米诺骨牌示例(人为:) (a/aab), (aba/ac), (cab/ab) 是一组 3 块多米诺骨牌,其中顶部 (a+aba+cab) 正好等于底部 (aab+ac+ab) .
这听起来很容易,但通常无法解决。
顺便说一句,当我第一次阅读/理解这个问题时......我在想......哦,哦!开始看起来不错!