[英]What is the language described by this CFG?
我們可以寫出一些語言中最短的字符串來感受一下:
S -> aTb -> ab
S -> aTb -> aabb
S -> SS -> … -> abab
S -> SS -> … -> abaabb
S -> SS -> … -> aabbab
我們注意到,語法生成的唯一字符串將S
每個實例都轉換為ab
或aabb
。 此外,我們可以僅使用S -> SS
以中間形式獲得任意數量的S
。 因此,這是常規語言(ab + aabb)+
。
證明是通過對字符串長度 n 進行歸納。
基本情況:最短的字符串 ab 和 aabb 在語言(ab + aabb)+
,並由如上所示的語法生成。
歸納假設:語法生成的語言與長度為k
所有字符串的語言(ab + aabb)+
相匹配。
歸納步驟:我們必須證明由次高長度的語法生成的字符串在該語言中,而次高長度的語言中的字符串由該語法生成。 注意:語法只能生成偶數字符串,而語言(ab + aabb)+
只包含偶數字符串,所以真正的下一個最高步驟是大於k
的最小偶數。
我們知道長度為k
字符串的語言和語法匹配。 設 X 為長度為 k 的語言的所有字符串的集合,Y 為長度為 k - 2 的語言的所有字符串的集合。 然后,語法通過修改中的字符串的派生生成一組字符串 X' X 使用生產S -> SS
一次額外的時間,然后為剛剛引入的S
實例選擇S -> aTb -> ab
。 該語法還通過修改 Y 中字符串的派生來生成一組字符串 Y' 以使用產生式S -> SS
一次額外的時間,然后為剛剛引入的S
實例選擇S -> aTb -> aabb
。 這些相同的字符串匹配正則表達式,因為 X 和 Y 中的字符串匹配,而 X' 和 Y' 只是添加了 ab 或 aabb 的那些字符串,這是 Kleene 星允許的。
類似地,匹配正則表達式的長度為 k 和 k-2 的字符串可以在末尾添加 ab 或 aabb(感謝 Kleene 星)以獲得所有匹配的長度為 k+2 的字符串。 但是這些也必須由語法生成,因為前綴是由語法生成的,我們有生產(上面概述)允許我們向我們的派生字符串引入額外的 ab 或 aabb。
換句話說,語言是所有字符串的集合,這些字符串是以任意順序連接任意數量的字符串 ab 和 aabb 的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.