乔姆斯基的层次结构和图灵机应该如何影响语言设计?

时间:2009-06-14 15:19:42

标签: theory language-design automata turing-machines chomsky-hierarchy

我正在学习一项离散数学测试,我们正在学习Chomsky's hierarchy以及识别层次结构每个级别的自动机类型。我被教导说大多数计算机语言属于层次结构的“2级和1级”,但不是精确的。

我的问题是:

  1. 每个级别都有哪些功能?

  2. 这仅仅是理论基础吗?我想知道Dennis Ritchie和James Gosling这样的语言设计师在设计C和Java时是否需要考虑这些因素。他们呢?有人会如何申请?

  3. 我们被告知图灵机器识别层次结构的0级。如果是这样,是否有任何属于0级的语言功能?我猜这可能是自然语言处理,是吗?

2 个答案:

答案 0 :(得分:7)

  1. 无。 1级包括2级。 也许我误解了你,所以要完整:

    • 在正则表达式匹配中使用常规语言。口语:DFA无法计算。如果你想匹配括号,你需要计算。 [等级3]
    • 语言语法通常是上下文无关语言。见2)[等级2]
    • 语境敏感语言仅在理论上使用。见3)[等级1]
  2. 它有助于设计词法分析器和解析器。我不知道C的创造者是否会想到这一点,当然还有Java。 Parser Generator

  3. 图灵机计算任何可以计算的东西。 “可以计算”甚至定义为:图灵机可以接受。 当然,这包括自然语言处理。 高于等级2的任何内容对语言生成都没有用,因为读取此类输入的程序可能无法停止(Word Problem无法再解决)。

答案 1 :(得分:3)

Type 3语法生成常规语言。这些语言的功能类似于以“xxx”开头,包含“xxx”,以“xxx”结尾,包含奇数y,等等。有限自动机(确定性或非自动)识别这些语言。

Type 2语法生成无上下文语言。这些语言的功能包括一定数量的x,后跟更少,更多或相同数量的y,或者单词后跟相同的单词,但是相反。下推自动机识别这些语言...想想有堆栈的有限自动机。

Type 1语法生成上下文相关语言。它们非常接近0型语法,因此通常很难找到它们之间的差异。 LBA(线性有界自动机)认识到这些语言,认为图灵机器资源有限......想想现代计算机。

0型语法生成图灵语言,有时称为递归可枚举语言。这些基本上是您可以编写计算机程序来识别的任何语言,但它们确实与Type 1混合,因为真正的计算机通常具有某种内存限制。

有限自动机和下推自动机在解决编写编译器时出现的问题时非常重要。然而,这并不是你学习它们的原因,你研究它们是为了学习能够/不能计算的极限。许多程序员认为你可以用计算机解决任何问题。可计算性理论教你另外。

由“Dude”编辑 - 好的,这是一个易于理解(和着名)的问题,任何图灵机或计算机或程序员或外星天才都无法解决......

想象一下你有一些多米诺骨牌......但是不是点的图案,你在顶部和底部都有一些简短的词,比如“aba”和“cab”这样的词。如果我给你5个或10个或50个这样的多米诺骨牌,你可以安排它们,以便顶部的单词,所有连接在一起,完全匹配底部的连接词。您可以根据自己的需要制作任意多个多米诺骨牌。

示例多米诺骨牌(人为:)(a / aab),(aba / ac),(cab / ab)是一组3个多米诺骨牌,其顶部(a + aba + cab)恰好等于底部(aab + ac) + AB)。

这听起来很容易,但一般来说都无法解决。

顺便说一句,当我第一次阅读/理解这个问题时......我在想......哦,哦!开始好看!