【问题标题】:How can we distinguish between regular languages and context free languages?我们如何区分常规语言和上下文无关语言?
【发布时间】:2015-08-13 02:01:00
【问题描述】:

为了表达常规语言,我们使用正则表达式,对于上下文无关语言,我们可以使用类似堆栈的内存,我知道上下文无关语言有一些规范,例如中心嵌入,但我仍然不确定我们什么时候可以对给定的语言是上下文无关的语言吗?例如为什么自然语言不是常规语言。除了中心嵌入还有什么原因吗?

【问题讨论】:

    标签: regular-language context-free-language


    【解决方案1】:

    自动机理论指出,常规语言可以由有限状态机 (FSM) 处理。但是,如果一种语言具有“中心嵌入”,则该语言是上下文无关语言(CFL),需要下推自动机(PDA)。

    重要的是,PDA 是一种 FSM,它具有类似内存的设备的附加资源,即“堆栈”或“计数器”,以便跟踪嵌入。

    维基百科在Languages that are not context-free 中说:-

    为了证明给定的语言不是上下文无关的,可以使用 the pumping lemma 用于上下文无关语言或其他一些 方法,例如Ogden's lemmaParikh's theorem

    维基百科在Deciding whether a language is regular 中说:-

    为了证明一种语言不规则,人们经常使用 Myhill-Nerode 定理或抽水引理等方法。

    为什么自然语言不是常规语言?

    乔姆斯基在 (1957) 中说:“英语不是常规语言”。至于上下文无关语言,“我不知道英语本身是否确实超出了此类分析的范围”。

    我正在添加 English is such a vast language which can't be recognised by a finite machine

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-07
      • 2011-02-17
      • 2015-03-09
      • 1970-01-01
      • 2014-02-20
      • 2013-09-13
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多