簡體   English   中英

這是常規語言嗎?

[英]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.

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