回答
我給一個方法和證明的草圖,可能會有一些漏洞,我相信你可以填補自己。
的想法是使用nerode's theorem - 表明,有對R 大號等同羣組的infinte數 - 從定理可以推導出的語言是不規則的。
定義的集兩種類型:
- G_J = {A Ñ b ķ | NK = J,K ≥ 1}在每個 f] [-2,-1,0,1,...]
- H_j = {A Ĵ}用於每個 f] [0,1 ,. ..
- G_illegal = {0,1} * /(G_JÚH_j)在指定的範圍內的每個j]的
這是很容易看到,對於在每個G_illegal
x
,和{a,b}中的每個z
*:xz
不在L
中。
因此,對於在每G_illegal
並x,y
在每個z
{A,B} *:xz
在L
< - >在L
yz
。
而且,對於在每個z
{A,B} * - 並且對於每個x
,y
在一些G_j
[相同j
兩個]:
- 如果
z
包含a
,既xz
和yz
不在L
- 如果
z
= b j,則xz = a n b k b j,並且由於k+j = n
-xz
在L
中。同樣適用於y
,所以yz
在L
。 - 如果
z
= B J + 2,然後XZ =一個Ñ b ķ b J + 2,並且由於k+j+2 = n+2
-xz
是L
。同樣適用於y
,所以yz
在L
。 - 否則,
x
爲b 我使得i ≠ j和i ≠ J + 2,你會得到兩個xz
和yz
不是L
。
因此,對於每個j和用於在每G_j
並x,y
在每個z
{A,B} *:xz
在L
< - 在L
>yz
。
使用相同的方法對每個H_j
證明相同。
而且,很容易表明,對於每個x
G_JùH_j,以及用於在每個G_illegal y
- 爲z
= B Ĵ,XZ爲L和yz不在L.
對於x
在G_j和y
in H_i,for z = ab j + 1 - 很容易看出xz
不在L
中,而yz
在L
中。
這是很容易看到,對於x
,在G_J和的G_i y
分別或x
,y
在H_j,H_i - 爲z
= B Ĵ:xz
是在L
而yz
不是。
我們只是證明了我們創建的集實際上是對R 大號從nerode's theorem的等價關係,因爲我們有這些組的無限數量,每個用戶可以使用R 大號的等價關係[我們有H_j
和G_j
每j
] - 我們可以從nerode的定理推導出語言L
是不規則的。
您可以使用pumping lemma作爲常規語言。它基本上說,如果你可以找到一個字符串給任何給定的整數n和這個字符串的任何分區到xyz,這樣| xy | < = n和| y | > 0,那麼你可以抽出字符串的y部分,並且必須保持在語言中,這意味着,如果xy^iz它不在我的語言中,那麼語言是不規則的。
證明是這樣的,有種對手的證明。假設有人告訴你這種語言是正規的。然後問他一個n> 0的數字。你建立一個長度大於n的方便的字符串,並且你給敵手。他以任何他想要的方式將字符串分割爲x,y z,只要| xy | < = n。然後你必須抽y(直到重複它),直到找到一個不是同一種語言的字符串。
在這種情況下,我告訴你:給我n。你修復n。我告訴你:取出字符串「a^n b^{n + 2}」,並告訴你將它分開。無論如何,你可以分割這個字符串,你總是必須使y = a^k,k> 0,因爲你迫使| xy | < = n,我的字符串以^ n開頭。這裏有個訣竅,你給對手一個弦,這樣他就可以把它分開,他給你一個你可以抽的部分。所以,現在我們抽出0次,比如0次,然後得到「a^m b^{n + 2}」,這與你的語言不符。完成。我們也可以抽1次,n次,n!階乘時間,任何你需要讓它離開語言的東西。
這個定理的證明繞了一圈說如果你有一個正規的語言,那麼你有一個自動機有一些固定的n狀態。如果一個字符串有超過n個字符,那麼它必須經過自動機中的某個循環。如果我們在進入循環之前將字符串的一部分命名爲x,並且將循環中的部分命名爲y,很明顯我們可以根據需要多次執行y循環,因爲我們可以根據需要多次循環運行循環,並且結果字符串必須使用該語言,因爲它會被該自動機識別。爲了用這個定理證明非規律性,由於我們不知道假定的自動機將如何,我們必須讓對手選擇n和自動機內週期的位置(不會有自動機,但是你對敵人說了這樣的話:敢給我一個自動機,我會告訴你它不能存在。)
Pumping引理用於證明語言不正規。但是,它並不能證明一種語言是正規的。 – 2016-01-13 13:15:24
@FabianBigler你是對的。也許從我的回答中並不清楚,但那是我的意圖,使用抽象引理來證明語言是不規則的。直覺上很容易看到不會規律,因爲常規語言無法計數,因此在看到n a之後,您不能強制b出現n + 2次。謝謝你的評論。 – 2016-01-13 14:44:55
- 1. 序言 - 這種否定是否正確?
- 2. 這種語言是否可確定
- 3. 證明這個語言是否可判定和識別
- 4. 是否有一種語言具有這種簡化的語法?
- 5. 證明一定的語言規則
- 6. 如何確定給定的語言是否正規(僅通過查看語言)?
- 7. 正規語言?
- 8. 是否有任何不是上下文無關語言的正規語言?
- 9. 您如何證明有序的語言是正常的?
- 10. 如何知道一種語言是否能正確渲染?
- 11. 如何表明如果語言L是規則的,那麼L'是正則的?
- 12. 證明常規語言和上下文無關語言是遞歸的
- 13. ADFS聲明規則語言
- 14. 檢查是否正規語言給CF語法
- 15. 每一種正規語言都是可判定的
- 16. 這種語言如何不遞歸?
- 17. 這是哪種編程語言?
- 18. 這是一種編程語言嗎?
- 19. 「模式語言」如何與「正規語言」相關?
- 20. 找出哪些是正規的語言
- 21. 例誰的語言不是正規
- 22. 正規語言......是這些元素的集合?
- 23. 0轉PDA的語言是否與常規語言一致?
- 24. 如何判斷一種語言是否是一見鍾情的?
- 25. 這種語言是否有下推自動機(PDA)?
- 26. word2vec是否支持多種語言?
- 27. 正規語言,L1和L2
- 28. 插入正規語言
- 29. Groovy編程語言是否存在正式的規範?
- 30. 是否有常規語言來表示正則表達式?
通過做你自己的功課...? – 2012-03-10 04:40:35
是的。我知道L1 = {a^nb^n:n≥1}並且L2 = {a^nb^n + 2:n≥1}都是非規則的。但是我不知道L =(L1聯盟L2)是否規則。 – 2012-03-10 07:20:16