2013-10-28 68 views
3

在字母表Σ = {0,1}下面的語言都是定期:爲這些語言編寫正則表達式?

L = {W | w的長度是偶數,並以01開始}

L = {w | w中的1的數目是3的倍數}

L = {w | w不包含子串10}

我被要求爲這些語言編寫正則表達式,但我不知道該怎麼做。任何人都可以給我如何解決這些問題的建議嗎?

+0

你到目前爲止嘗試過什麼?這看起來像是試圖讓我們爲你做功課。 – templatetypedef

+0

我是新手,無法理解正則表達式的規則。 – Light

+1

@HamZa:很好。在我的文化中,硬件即將到來表明這是墮落。 – beroe

回答

1

L = {w | w是偶數長度,並與01開始}

答:01((0 + 1)(0 + 1))*

說明:01本身甚至長到,我們可以任意後綴即使長度的字符串組成的0 S和1秒。

L = {w | 1個在W的數量是3的倍數}

答:(0*10*10*10*)*

說明:0可以出現任意時間,任何地點在字符串中的限制是在1應該在3的倍數所以*超過三個1

L = {w |瓦特確實包含子串10}

答案:0*1*

說明:字符串不能包含10意味着只有1被允許任何1之後。

+0

任何意見來自down-voter?什麼是錯誤的答案是完全正確的...... –

2

這裏一些提示:

  1. 可以使用表達式(0 ∪ 1)意味着 「0或1,」 和(0 ∪ 1)(0 ∪ 1)來表示「任意兩個字符串「。你可以用這些表達式中的第二個表達式來構造所有長度正則表達式嗎?你能看到如何從那裏到你需要的語言嗎?

  2. 任何具有1的倍數爲3的倍數的字符串都可以細分爲一串較小的字符串,每個字符串由三個1組成,其中0是穿插的。你能把所有的字符串都用三個1來表示嗎?從那裏,你能得到你需要的語言嗎?

  3. 這實際上是最簡單的一堆。寫出一些不包含10的字符串。注意什麼?作爲一個提示,你可以用四個字符來做到這一點。

希望這有助於!