給出一個上下文無關語法H,該語法生成語言 M = {a^m b^n | 2m> n> m}。 ' 提示:m不能爲0,因爲在這種情況下2m = m。 m不能是1,因爲在這種情況下2> n> 1,這樣的自然數n不存在。所以語言M中最短的字符串是aabbb。對於較長的字符串,您需要確保 bs的數量n和m的數量滿足2m> n> m。查找上下文無關語法(CFG)
回答
我們知道aabbb
是在語言,所以S -> aabbb
是一個不錯的開始。我們如何在語言中獲得更長的字符串?那麼,我們需要保持2m > n > m
。在這種語言中最短的字符串(對於給定數量的a
s)有一個b
比他們有a
多,所以我們可能會猜測S -> aSb
不是一個錯誤的猜測;它肯定會以我們的語言生成字符串,即最短的字符串(對於給定數量的a
s)。類似地,我們語言中最長的字符串比它們所具有的a
少一個b
,所以S -> aSbb
也是安全的,因爲它產生最長的字符串(對於給定數量的a
s)。我們的語法到目前爲止是這樣的:
S -> aabbb
S -> aSb
S -> aSbb
第一後每個生產將單個a
和一個或兩個b
秒。第二個生產可以單獨使用以生成最短的字符串(對於給定數量的a
s),而第三個單獨使用時生成最長的字符串(對於給定數量的a
s)。那些最短和最長的琴絃呢?這些製作能用來獲取所有這些字符串嗎?
他們可以。你可以通過歸納來證明。您必須證明語言中所有長度爲n
(1)的字符串都是由語法生成的,而(2)是由語法生成的語言是用語言生成的。
基本情況:語言中最短的字符串是aabbb
,它由語法生成。
歸納假設:假定語法生成所有字符串,並且語言中包含長度爲k
的任何字符串。
歸納步驟:我們必須顯示語法生成所有字符串的唯一字符串長度爲k + 1
。我們已經說過,語法不能產生一個不在語言中的字符串;通過僅使用第二次生產,您將獲得n = m + 1
,並且通過使用第三次生產,您只能獲得n = 2m - 1
。要看到它會生成該語言中的所有字符串,請回想一下,該語言中的任何字符串都以至少兩個a
s開始,並以至少三個b
s結尾。所以,它可以寫成aaxbbb
。可以看出,如果該字符串是用該語言編寫的,則axbb
和/或axb
中的一個或兩個都必須使用該語言。
axbb
是在L
如果2(m - 1) > n - 1 > m - 1
,或2m - 1 > n > m
axb
是在L
如果2(m - 1) > n - 2 > m - 1
,或。
由於在任何情況下開始與基部情況下,我們具有2m - 1 > n
至少一個和/或n > m + 1
,其中之一也是L
。通過歸納假設,語法產生它;並且其中一個語法產物將從中產生長度爲k + 1
的原始字符串。所以語法生成L
中的所有字符串。
- 1. 上下文無關語法(CFG)解析器在Go
- 2. 查找上下文無關文法
- 3. 上下文無關語法
- 4. 上下文無關文法語法
- 5. 上下文無關語法與上下文敏感語法?
- 6. 上下文無關語法的算法
- 7. 「任意」上下文無關語法?
- 8. 上下文無關語法公式
- 9. 上下文無關語法幫助
- 10. 正式上下文無關文法從上下文無關語言
- 11. 找到更復雜的語言的上下文無關語法的方法
- 12. 爲以下語言編寫上下文無關語法
- 13. 上下文無關文法
- 14. 上下文無關文法
- 15. 將EBNF語法轉換爲上下文無關語法
- 16. 提供生成以下語言的上下文無關文法
- 17. CFG語法定義
- 18. 根據上下文無關的語法找出生成的語言?
- 19. 需要幫助找到這些語言的上下文無關語法
- 20. 爲語言創建上下文無關語法
- 21. 語言的上下文無關語法的數量多於bs
- 22. 可能使用DCG的Prolog中用於上下文無關語法(CFG)的序列生成器
- 23. 鑑於上下文無關文法,找到模棱兩可的語句
- 24. 從上下文無關語法構造下推自動機
- 25. 如何檢查一個上下文無關語法的語言是否是第二個上下文無關語法的子集?
- 26. 確定上下文無關語言
- 27. 特定語言的上下文無關文法
- 28. 非迴文的上下文無關語法
- 29. 這是什麼語法?上下文無關的或上下文敏感的
- 30. apropos /查找上下文相關信息
如果你想要這個作業問題的幫助,你想要https://cs.stackexchange.com/。 –
我投票結束這個問題作爲脫離主題,因爲它不屬於堆棧溢出,它屬於其他網站,可能是https://cs.stackexchange.com/。 –
@DavisHerring:[cs.se]已經提出這個問題,可能是同一張海報,幾乎立即關閉,作爲一個交叉點,碰巧,但也因爲[cs.se]強烈不鼓勵「做我的家庭作業我「的問題。 – rici