Usando expresiones regulares, demuestre que si es un lenguaje regular, entonces \ emph {inversión} de L , L R = { w R : w ∈ L } , también es regular. En particular, dada una expresión regular que describe L , mostrar por inducción cómo convertir en una expresión regular que describe L R . Su prueba no debe recurrir a los NFA. LLLR={wR:w∈L}LLR
Vamos a suponer que se nos da una expresión regular que describe . Veamos primero el operador de concatenación ( ∘ ), y luego podemos pasar a operadores más avanzados. Entonces, nuestros casos de concatenación tienen que ver con la longitud de lo que se concatena. Entonces, primero romperemos todas las concatenaciones de a b a a ∘ b . Al tratar con estos, separe los componentes tanto como sea posible: ( a b ∪ a ) b → ( a b ∪ a ) ∘ bL∘aba∘b(ab∪a)b→(ab∪a)∘b, pero no puede romper el orden asociativo entre diferentes comprensiones, por supuesto.
Cuando ∅R→∅
Cuando , tenemos la cadena vacía que ya está invertida, por lo que el mecanismo no cambias=ϵ
Cuando es solo una letra, como en s ∈ Σ , la inversión es solo esa letra, sss∈Σs
Cuando , tenemos un solo componente, por lo que simplemente invertimos ese componente y, por lo tanto, σ Rs=σσR
Cuando donde k es impar, tenemos una expresión regular que se puede escribir como ( σ 0 ∘ σ 1 . . . Σ k - 1 ∘ σ k )s=(σ0σ1...σk−1σk)(σ0∘σ1...σk−1∘σk). La inversión de estas cadenas de longitud uniforme es simple. Simplemente cambie el índice 0 con el índice k. Luego cambie el índice 1 con el índice k-1. Continúe hasta que cada elemento se haya cambiado una vez. Por lo tanto, el último elemento es ahora el primero en el registro, y el primero es el último. El penúltimo es el segundo y el segundo es el penúltimo. Por lo tanto, tenemos un registro inverso que aceptará la cadena invertida (la primera letra es la última, etc.) Y, por supuesto, invertimos cada componente. De esta manera obtendríamos (σRkσRk−1...σR1σR0)
Cuando donde k es par, tenemos una expresión regular en general que se puede escribir como ( σ 0 ∘ σ 1 . . . σ k - 1 ∘ σ k )s=(σ0σ1...σk/2...σk−1σk)(σ0∘σ1...σk−1∘σk). La inversión de estas cadenas de longitud uniforme es simple. Simplemente cambie el índice 0 con el índice k. Luego cambie el índice 1 con el índice k-1. Continúe hasta que cada elemento se haya cambiado una vez, pero el elemento k / 2 (un entero porque k es par). Por lo tanto, el último elemento es ahora el primero en el registro, y el primero es el último. El penúltimo es el segundo y el segundo es el penúltimo. Por lo tanto, tenemos un registro inverso que acepta la cadena invertida (la primera letra es la última, etc.). Y esa letra del medio. Y, por supuesto, revertimos cada componente. De esta manera obtendríamos (σRkσRk−1...σRk/2...σR1σR0)
De acuerdo, la parte difícil está hecha. Miremos al operador . Esto es simplemente una unión de conjuntos. Entonces, dadas dos cadenas, s 1 , s 2 , el reverso de s 1 ∪ s 2 es solo s R 1 ∪ s R 2 . La unión no cambiará. Y esto tiene sentido. Esto solo agregará cadenas a un conjunto. No importa en qué orden se agreguen al conjunto, lo único que importa es que lo sean.∪s1,s2s1∪s2sR1∪sR2
El operador estrella de kleene es el mismo. Simplemente está agregando cadenas a un conjunto, sin decirnos cómo debemos interpretar el análisis de cadenas. Entonces, revertir una estrella kleene de una cadena , es solo ( ( s R ) ∗ ) . La inversión solo puede moverse a través de ellos.s((sR)∗)
Por lo tanto, para revertir esto simplemente seguimos las reglas. Para invertir la unión externa, simplemente invertimos sus dos componentes. Para revertir esto: ( ( a ∪ b ) ∘ ( a ) ) ∗ estrella de kleene, simplemente invertimos lo que está dentro de ella → ( ( ( a(((a∪b)∘(a))∗∪((a∪b)∘(b))∗)R((a∪b)∘(a))∗ . Luego, para revertir una concatenación, indexamos y luego cambiamos de mayor a menor. Entonces comenzamos con ( ( a ∪ b ) ∘ ( a ) ) R y obtenemos ( ( a ) R ∘ ( a ∪ b ) R ) . Para revertir esa letra única, llegamos a nuestro caso base y obtenemos ( a ) R → ( a )→(((a∪b)∘(a))R)∗((a∪b)∘(a))R((a)R∘(a∪b)R)(a)R→(a). Este proceso descrito anteriormente describe una descripción inductiva de este cambio.