[英]How do you determine if a language is regular, context free but not regular, or not context free?
我有一個家庭作業問題,需要您證明一種語言是否是以下三種語言之一:
您將如何證明每個人? 我知道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.