CFG和封閉性
回答
既然你沒有指定你的問題是什麼,我只會通過你需要知道的。
根據工會關閉 - 這是什麼意思?
如果我們有一種語言L
和語言S
,並且兩者都是上下文無關的,我們知道這些語言的聯合也是上下文無關的。
大號∪S =上下文無關語言
節能燈更封閉性見this,你可以在網上找到的這證明,如果你有興趣(或者你可以嘗試讓你自己的證據)。
你怎麼用這個來解決你的問題?
您有此語言規範(讓我們稱之爲L
):
L = {A米 b ÑÇp d q:N = q或米< = p或M + N = p + q}
可以將此語言分成其他3種語言:
A = {A米 b ÑÇp d q:n爲q}
B = {A米 b ÑÇp d q:米< = p}
C = {A米 b ñçp d q:M + N = p + q}
很容易看到A ∪ B ∪ C = L
。
如果您可以證明A,B和C是上下文無關的,您可以得出結論L也是上下文無關的。
解決方案
要確定一個語言是否是上下文,看this answer。引用答案:
首先,您應該嘗試構建構成主題中語言的context-free grammar。如果所有產品的左手邊只包含一個非終端符號,則語法無上下文。根據定義,如果存在,那麼語言是上下文無關的。
等效結構將是pushdown automaton。它與DFA相同,但有可用的堆棧。構建起來可能比語法更容易。
因此,如果您可以爲每種語言A,B和C構建CFG(或PDA),那麼您已經解決了您的問題。
讓我們的語言A
: 我們需要生成表單a..b..c..d..
的字符串,我們必須有b
S和d
秒的等量的語法。
S -> AE
A -> Aa | ε
E -> bEd | C
C -> Cc | ε
S
是開始變量(或非末端),ε
是空字符串(有些人用空符號^
但我一直被告知使用ε
)。該語法應該能夠生成語言A
,因此A
是上下文無關的。 (請讓我知道是否有人發現錯誤,我還沒有創建CFGs)。
由於這是一個練習,我會讓你解決其餘的部分,但你應該已經知道如何去做。
非常感謝這麼棒的文字! – nurgasemetey 2013-04-29 17:06:02
- 1. 封閉性
- 2. PHP fputcsv和封閉領域
- 3. 屬性和封裝
- 4. 修改封閉
- 5. 在封閉
- 6. 封閉在Javascript
- 7. 從封閉
- 8. 與封閉
- 9. PHP,封閉類
- 10. 封閉範圍
- 11. 錯誤在封閉
- 12. 計劃 - 在封閉
- 13. AS3封閉混亂
- 14. 封閉缺失者
- 15. 如何在封閉
- 16. 不是封閉類
- 17. 與接受封閉
- 18. 打字稿lambdas和封閉(範圍)
- 19. 谷歌封閉編譯器和JSON
- 20. 封閉術語和語義疑問
- 21. 模塊和封閉之間的區別
- 22. 弱自我封閉和後果示例
- 23. 開源和封閉源碼鈦
- 24. Grails的外殼和封閉件
- 25. 同樣,傳遞封閉和身份
- 26. 有限狀態機和封閉
- 27. HTML5畫布,動畫和封閉庫
- 28. 開放形式和封閉形式
- 29. CFG和它的反向
- 30. 封閉實例無效時的封閉類型行爲
由於這不是編程相關的,我建議在cs.stackexchange.com上詢問它。 – templatetypedef 2013-04-29 17:00:50