的,我需要證明或反駁以下正則表達式簡化正則表達式表達
(RS + R)* R = R (SR + R)*
// or, for programmers:
/(RS|R)*R/ == /R(SR|R)*/
的我有一種強烈的直覺覺得自己是等價的,但我怎麼給一個循序漸進的使用正則表達式的法律一步證明。
的,我需要證明或反駁以下正則表達式簡化正則表達式表達
(RS + R)* R = R (SR + R)*
// or, for programmers:
/(RS|R)*R/ == /R(SR|R)*/
的我有一種強烈的直覺覺得自己是等價的,但我怎麼給一個循序漸進的使用正則表達式的法律一步證明。
先了解這個形式語言的意思:
(RS + R)*R = R(SR + R)*
從LHS,(RS + R)*
用來生成的RS
和R
任意組合,包括^
小量。有些〔實施例字符串是{^, RS, RSRS, RRRS, RSR,...}
:字符串的方式從R
啓動,但可以與任何S
或R
結束 - 我們可以用英語描述:R
可以在S
總是跟着一個R
(連續兩個S
是不可能的)的任意組合衝擊片雷管。
而且,完整的LSH's re (RS + R)*R
表示字符串始終以R
結尾。
現在,考慮下面的例子:
R + S
是一樣S + R
,它基本上是工會RS
不能寫成SR
,爲了在串聯重要(RS)R
可寫爲R(SR)
(RS)*R
可以寫成R(SR)*
,兩者都是相同的,即RSRSRS...SR
(AB + AC)
可以寫成A(B + C)
(AB + A)
可以寫爲A(B + ^)
,這是因爲A = ^A = A^
(BA + A)
可以寫爲(B + ^)A
。正式證明:
(RS + R)*R // LHS => (R(S + ^))*R // from rule 6 => R((S + ^)R)* // from rule 4 => R(SR + R)* // from rule 7, in revers `(B + ^)A` --> `(BA + A)` // RHS
相同的步驟對正則表達式正確。
是的,第一個正則表達式等於第二個正則表達式。
我不能給你正式的證明,因爲我不是很精通證明,但我可以給你一個暗示,那些表達式是平等的。
可以手動枚舉的例子,像這樣:
1)我可以產生E(小量)?
(RS + R)*可以EPSILON
R 1不能被EPSILON
串聯的2 =(ε)R或簡單地= R
所以你可以形成的最基本的字符串是'R'。現在繼續推導字符串的過程,你會得出2個正則表達式是相等的結論。
是的,它們是等價的。你有沒有開始證明?你在什麼時候卡住了?我們不會簡單地爲你做功課:-) – Bergi