簡體   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