Используя регулярные выражения, докажите, что если регулярный язык, то \ emph {обращение} в L , L R = { w R : w ∈ L } , также регулярно. В частности, учитывая регулярное выражение , которое описывает L , показать по индукции , как превратить его в регулярное выражение , которое описывает L R . Ваше доказательство не должно прибегать к NFAs. LLLR={wR:w∈L}LLR
Мы будем предполагать , что задано регулярное выражение , которое описывает . Давайте сначала посмотрим на оператор конкатенации ( ∘ ), а затем мы можем перейти к более сложным операторам. Таким образом, наши случаи конкатенации имеют дело с длиной того, что конкатенируется. Итак, сначала мы разберем все конкатенации от a b до a ∘ b . При работе с ними разбейте компоненты как можно больше: ( a b ∪ a ) b → ( a b ∪ a ) ∘ bL∘aba∘b(ab∪a)b→(ab∪a)∘b, но вы, конечно, не можете нарушить ассоциативный порядок между различными представлениями.
Когда ∅R→∅
Когда , у нас есть пустая строка, которая уже перевернута, поэтому механизм не меняетсяs=ϵ
Когда это просто буква, как в s ∈ Σ , обращение это только эта буква, sss∈Σs
Когда , у нас есть одна составляющая, поэтому мы просто обращаем эту составляющую в обратном направлении и, следовательно, σ Rs=σσR
При , где к нечетно, мы имеем регулярное выражение , которое может быть записано в виде ( сг 0 ∘ сг 1 . . . Сг к - 1 ∘ сг к )s=(σ0σ1...σk−1σk)(σ0∘σ1...σk−1∘σk), Перестановка этих строк четной длины проста. Просто переключите индекс 0 с индексом k. Затем поменяйте индекс 1 с помощью индекса k-1. Продолжайте, пока каждый элемент не будет переключен один раз. Таким образом, последний элемент теперь является первым в регистре, а первый - последним. Второе - это второе, а второе - второе. Таким образом, у нас есть обратный регистр ex ex, который будет принимать обратную строку (первая буква является последней и т. Д.) И, конечно, мы обращаем каждую составляющую. Таким образом , мы получим (σRkσRk−1...σR1σR0)
При , где к четно, мы имеем регулярное выражение как правило , которое может быть записано в виде ( сг 0 ∘ сг 1 . . . σ к - 1 ∘ σ к )s=(σ0σ1...σk/2...σk−1σk)(σ0∘σ1...σk−1∘σk), Перестановка этих строк четной длины проста. Просто переключите индекс 0 с индексом k. Затем поменяйте индекс 1 с помощью индекса k-1. Продолжайте, пока каждый элемент не был переключен один раз, но элемент k / 2 (целое число, потому что k четное). Таким образом, последний элемент теперь является первым в регистре, а первый - последним. Второе - это второе, а второе - второе. Таким образом, у нас есть обратный регистр ex ex, который будет принимать обратную строку (первая буква является последней и т. Д.) И эта средняя буква. И, конечно, мы меняем каждую составляющую. Таким образом , мы получим (σRkσRk−1...σRk/2...σR1σR0)
∪s1,s2s1∪s2sR1∪sR2
s((sR)∗). Reversal can just move through them.
Thus to reverse this (((a∪b)∘(a))∗∪((a∪b)∘(b))∗)R we simply follow the rules. To reverse the outer union we simply reverse its two components. To reverse this: ((a∪b)∘(a))∗ kleene star, we simply reverse what is inside it →(((a∪b)∘(a))R)∗. Then to reverse a concatenation, we index and then switch greatest with least. So we start with ((a∪b)∘(a))R and get ((a)R∘(a∪b)R). To reverse that single letter, we reach our base case and get (a)R→(a). This process outlined above describes an inductive description of this change.