2012-10-20 88 views
0

這是我的教科書「Introduction to theory of Computation」中的示例ginen。 鑑於構造生成給定語言的正則表達式

{w|every 0 in w is followed by atleast one 1}} 

它正則表達式顯示爲(01+)*. 1+字母∑ as{0,1},意味着只有爲1的單個實例現在我的理解是,(01+)*將意味着字符串如0101010101010101....如果我有一個字符串11111101 or 011111111或者只有1個 這些字符串確實符合給定的標準。但正則表達式(01+)*不會生成它們。

Secondly for `{w|w starts and ends with same symbol}` the expression is given as `0∑*0 U 1∑*1 U 0 U 1.` 

據我所學到的東西兩個聯盟意味着要麼第一,第二或一個或兩者兼有的。如果我爲0∑*0取一個字符串01110,併爲10001 1∑*1取另一個字符串,然後將這兩個聯合字符串DOESNOT的起始和結束符號相同。這是否意味着工會不能將兩者結合起來或表達不正確?

回答

1

1+表示'一個或多個1'。因此,它會生成1,11,111等。因此,正則表達式(01+)*實際上會生成「每個0後跟一個或多個1並且字符串中的第一個符號不是1」的字符串。

要得到{w|every 0 in w is followed by atleast one 1},正則表達式會略有不同。這將是1*(01+)*

在第二個問題,你採取的是串聯。與10001連接的011100111010001。兩套聯盟是一套包含所有兩套要素的集合