簡體   English   中英

L = {a^nb^m | n,m>=1, n?= 3m} 不規則?

[英]How L = {a^n b^m | n,m>=1, n != 3m} is not regular?

我正在努力理解這個問題。 有人有什么想法嗎?

編輯:它是...n,m<1...,但是我的問題是...n,m>=1...

如果 n 和 m 小於或等於 1,那么這種語言實際上是正則的,因為它是有限語言 {a,b,ab}。 相反,如果您的意思是 n 和 m 大於或等於 1,則分析變得更加困難。

假設 n 和 m 大於或等於 1,則語言是無限的,可能是規則的,也可能不是規則的。 我有一種感覺,使用常規語言的泵引理來證明這種語言將很難或不可能證明是非常規的。 這里有兩種更簡單的證明方法:Myhill-Nerode 定理和常規語言的閉包屬性。

為了使用 Myhill-Nerode 證明該語言是非常規的,我們需要識別一個無限的字符串序列,這些字符串對於我們的語言都是可區分的。 如果兩個字符串具有不同的字符串集,可以將它們連接到它們上以得到我們語言中的字符串,則它們對於我們的語言是可區分的。 考慮字符串 aaa, aaaaaa, ..., a^3k, ...。 在我們的語言中,不能連接到這些字符串以獲得字符串的最短字符串是 b、bb、...、b^k、...。 這意味着每個字符串 a^3k 就我們的語言而言是可區分的; 可以連接到我們的字符串的字符串集取決於參數 k。 這表明對於我們的語言,在不可區分關系下存在無限多個等價類。 這意味着我們語言的最小 DFA 將具有無限多的狀態,這是一個矛盾。

要使用閉包屬性證明該語言是非常規的,請考慮以下語言:

L = {a^n b^m | n, m >= 1, n != 3m}
R = {a^n b^m | n, m >= 1, n = 3m}
S = {a^n b^m | n, m >= 1}

首先,請注意 R 是非正則的(使用泵引理很簡單的證明)並且 S 是正則的(這是正則語言 aa bb )。

接下來注意S\L = R(這里,\表示設置差異)。

然而,這是一個矛盾,因為我們假設 L 是正則的,我們知道 S 是正則的,並且我們知道正則語言在集差下是封閉的(我們可以使用笛卡爾積機器構造來構造兩種正則語言的差的 DFA) . 兩種正則語言的區別不可能是非常規語言R,所以我們通過反證證明L一定是非常規語言。

這是使用閉包屬性顯示不規則性的另一種方法。

直觀地說,我們期望語言 {a 3n b n | n ∈ N} 是非常規的,因為它本質上是規范的“n 個 a 的副本,然后是 n 個 b 的副本”的語言有點延伸。 如果您對這種語言不規則的想法感到滿意,那就太好了,如果不是。 您可以使用 Myhill-Nerode 定理或抽水引理來寫一個簡短的證明。

考慮到這一點,語言 L = { a n b m | n ≠ 3n } 與上面給出的關系非常密切。 實際上,它有點像是上述語言的“對立面”。 因此,讓我們形成所有未出現在 L 中的字符串的補碼 L'。那將是所有形式為 a 3n b n的字符串,加上所有不匹配 a b的字符串。 嘿,如果 L 是常規的。 L'也是如此。

由於 L' 中有一些我們不想要的字符串,讓我們將它與b相交以獲得我們想要的字符串。 將正則語言與正則語言相交會返回正則語言,這意味着如果 L' 是正則,則 L' ∩ a b是正則的。 但是這種語言是我們在上面看到的,我們知道它不是正則的,這意味着 L 也不是,我們完成了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM