繁体   English   中英

您如何确定语言是常规的,无上下文的但不是常规的还是无上下文的?

[英]How do you determine if a language is regular, context free but not regular, or not context free?

我有一个家庭作业问题,需要您证明一种语言是否是以下三种语言之一:

  1. 普通语言
  2. 无上下文但不规则
  3. 并非无文字

您将如何证明每个人? 我知道Pumping Lemma可以验证一种语言是否不规则或不是上下文无关的,仅此而已。

以下示例可帮助我更好地理解:

{a ^(2n + 1)b ^(3n + 2)| n∈N},字母{a,b},其中N都是自然数。

常规语言的抽动引理可以告诉您某种语言不是常规语言。 但是,它不能告诉您语言是正常的。 要说出某种语言是正规的,您必须做的等效工作是产生一个有限的自动机,正规语法或正规表达式,然后证明它对您的语言是正确的。

上下文无关语言的抽动引理告诉您该语言是否是上下文无关的。 也就是说,如果一种语言满足了上下文无关语言的激进引理,那么它就是上下文无关的。 如果不是,则不是。 但是,您可以肯定地使用它,就像使用普通语言的抽水引理一样,然后继续查找下推自动机或无上下文语法。

对于您的情况,我们可以先选择字符串a ^(2p + 1)b ^(3p + 2)来显示常规语言的抽引引理,表明该语言不是常规语言。 通过论证对于任何形式为a ^(2k + 1)b ^(3k + 2)的字符串(其中2k + 1和3k + 2足够大),我们可以始终证明语言是上下文无关的,我们始终可以选择v包含2个a和y包含三个b,因此抽运可维持所需的属性。 或者,我们可以基于相同的见解为其提供CFG:

S -> aaSbbb | abb

然后我们应该证明语法是正确的,这是练习。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM