2012-12-08 16 views
3

快速問題, if a是一個正則表達式然後它是真的a* = (a*)*與(a *)*相同*

(a*)*有效表達式?如果是這樣,那麼任何人都可以解釋爲什麼它與a*相同?我在此表示歉意,但我無法通過Google找到任何內容。

+1

是的,它們是相同的(理論上)。 – nhahtdh

+0

我說它在理論上是一樣的,但是由正則表達式引擎編譯的代碼可能在它們之間不同,並且a *在這種情況下比(a *)*更有效,因爲(a *)*會引入另一個級別回溯。 – nhahtdh

+0

@nhahtdh:Lex工具是否未將'(a *)*'優化爲'a *'?因爲最小化應該工作? –

回答

7

,a*=(a*)*是相同的。兩者都會生成相同的語言,即包含null的任何數字a。

L(a*) = {^, a, aa, aa...... } = L ((a*)*)

(a*)*有效的表達?

是的,這個表達式叫做REGULAR-EXPRESSION(我看到你錯過了標籤)。任何正則語言(RL)都可以用正則表達式(RE)表示。代表RL的字母表方式。

爲什麼它是一樣的?

*表示重複任意次數(包括0次)。

a*表示0a,1a,2a或任何數量的a。

(a *)*表示在任何時間(包括0次)中設置的所有字符串a*的重複。

因爲L(a*)意味着所有字符串都包含使用。它的每套晚餐都由a的字符串組成。和L((a*)*)是一樣的。

+1

+1簡單明瞭的解釋 –

相關問題