[英]Is this a regular language?
這是最初的語法:
S → ε | c | bSb | aAa
A → aSa | bAb
一些由此產生的詞是:
baabaabbbbaabaab
bcb
baabaacaabaab
bbaabcbaabb
ababbaba
bbbb
ababbcbbaba
baabcbaab
aaaacaaaa
aacaa
baaaaaacaaaaaab
bbbbaacaabbbb
abaaabbaaaba
abbbaaacaaabbba
起初我寫了這個正則表達式(a|b)*c?(a|b)*
但后來我注意到 a 和 b 的出現總是偶數,所以這個正則表達式是錯誤的。 考慮到自動機無法計數,我是否可以得出該語言不規則的結論? 非常感謝!
這種語言不是常規的。 您可以使用 Myhill-Nerode 定理證明如下。 考慮前綴b^nc
。 可以附加到該字符串以獲得語法語言中的字符串的最短字符串是b^n
; 不能將較短的字符串附加到b^nc
以獲取語言中的字符串。 想象一下語言是規則的。 然后在處理前綴b^nc
,DFA 必須有一條最短路徑到長度為n
的接受狀態。 但是n
是一個任意的自然數,而且 DFA 必須有一些固定不變的狀態數。 這是一個矛盾,所以我們的語言沒有 DFA,也不是正則的。
生成正則語言的非正則文法的示例如下:
S -> aSa | aS | A | e
aSSaa -> Saa
A -> AA | ASA | aSaSA
SAS -> ASASSASaaSa
這不是常規的,甚至不是上下文無關的。 但是它生成 a, a*
的所有字符串的正則語言,因為產生式S -> aS | e
S -> aS | e
一個人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.