我自己学习CS理论,而且我一直试图解决一个强硬的证据。
这里以正式术语定义的原始问题:
基本上,我必须证明以下内容:给定一种语言的正则表达式,你是否总能有一个相等长度的正则表达式来反转该语言。
我没有问题证明常规语言在逆转时被关闭,但是长度约束使得它变得更加困难。如果可以,请帮帮我,谢谢!
答案 0 :(得分:1)
您只需要在给定原始正则表达式的情况下为反向语言构造正则表达式。因为正则表达式是递归定义的,所以您只需要反转子正则表达式的串联,而不要触及其他正则表达式。长度显然相等。
示例:ab(c|d*e)
- > (ed*|c)ba
答案 1 :(得分:1)
我们需要对正则表达式的结构进行归纳。大纲如下,细节需要填写:
对于终端w,w ^ R = w,因此显然| w | = | w ^ R |。
表示正则表达式(w_1 | w_2),其中包含| w_1 ^ R | = | w_1 |和| w_2 ^ R | = | w_2 |,我们有(w_1 | w_2)^ R =(w_1 ^ R | w_2 ^ R)因此|(w_1 | w_2)| = |(w_1 | w_2)^ R |
表示正则表达式w * with | w | = | w ^ R |,我们有w * ^ R = w ^ R *,因此| w * | = | w * ^ R |
表示带有| w_1 |的正则表达式w_1w_2 = | w_1 ^ R |和| w_2 | = | w_2 ^ R |,我们有(w_1w_2)^ R = w_2 ^ Rw_1 ^ R,因此| w_1w_2 | = | w_1 | + | w_2 | = | w_1 ^ R | + | w_2 ^ R | = | w_2 ^ Rw_1 ^ R |
这里需要证明的是L(w * ^ R)= L(w ^ R *)和L ^ R(w_1w_2)= L(w ^ ^ Rw_1 ^ R)。