Я застрял в следующем вопросе:
«Регулярные языки - это как раз те, которые принимаются конечными автоматами. Учитывая этот факт, покажите, что если язык принят некоторым конечным автоматом, то также будет принят некоторым конечным; состоит из всех слов». из необратима «.L R L R L
Ответы:
Таким образом, учитывая регулярный язык , мы знаем (по существу по определению), что он принят некоторыми конечными автоматами, поэтому существует конечный набор состояний с соответствующими переходами, которые переносят нас из исходного состояния в принимающее состояние тогда и только тогда, когда это строка в L . Мы можем даже настаивать на том, что есть только одно принимающее государство, чтобы упростить вещи. Чтобы принять обратный язык, все, что нам нужно сделать, это изменить направление переходов, изменить начальное состояние на состояние принятия и принять состояние на начальное состояние. Тогда у нас есть машина, которая «назад» по сравнению с оригиналом, и принимает язык L R .L L LR
источник
Вы должны показать , что всегда можно построить конечный автомат , который принимает строки вLR задан конечный автомат , который принимает строки в L . Вот процедура, чтобы сделать это.
Давайте формализуем все это; мы начнем с формулировки теоремы.
Теорема. ЕслиL является регулярным языком, то и LR .
ПустьA=(QA,ΣA,δA,qA,FA) NFA и L=L(A) . ϵ -NFA R определено ниже принимает язык L R .AR LR
Доказательство. Сначала докажем следующее утверждение:∃ путь от q до p в A помеченный буквой w том и только в том случае, если ∃ путь от p до q в AR помеченный буквой wR (обратная w ) для q,p∈QA . Доказательством служит индукция по длине w .
Имеет место по определению
Пусть
Мы знаем, что
Полагаяq=qA и p=s для некоторых s∈FA и заменяя wR для axR гарантирует , что q∈δ∗AR(s,wR) ∀s∈FA . Поскольку существует путь, помеченный ϵ из qs во все состояния в FA (3. в определении AR ) И путь от каждого состояния в FA в состоянии qA , меченного wR , то есть путь метил ϵwR=wR от qs к qA . Это доказывает теорему.
Обратите внимание, что это доказывает, что(LR)R=L также.
Пожалуйста, измените, если в моем доказательстве есть ошибки форматирования или недостатки ...
источник
Для того, чтобы добавить к преобразованиям на основе автоматных , описанных выше, вы можете также доказать , что регулярные языки замкнуты при обращении, показывая , как преобразовать регулярное выражение для в регулярное выражение для L R . Для этого мы определим функцию R E V на регулярных выражениях , который принимает в качестве входных данных регулярного выражения R для некоторого языка L , а затем производит регулярное выражение R ' для языка L R . Это определяется индуктивно на структуре регулярных выражений:L LR REV R L R′ LR
Вы можете формально доказать эту конструкцию правильно в качестве упражнения.
Надеюсь это поможет!
источник
rev()
обозначения. :) Я тоже положилREV(R1&R2) = REV(R1)&REV(R2)
; У меня есть реализация регулярного выражения, которая имеет пересечение. Да; Я думаю о добавлении оператора для обращения, возможноR\r
(обратный предшествующий элемент регулярного выражения).REV(~R)
является обратным множеству всех строк вне R. Это то же самое, что~REV(R)
: множество всех строк вне обратного множества, обозначенного R? Это не совсем понятно, потому что все палиндромыR
вREV(R)
.Используя регулярные выражения, докажите, что если регулярный язык, то \ emph {обращение} в L , L R = { w R : w ∈ L } , также регулярно. В частности, учитывая регулярное выражение , которое описывает L , показать по индукции , как превратить его в регулярное выражение , которое описывает L R . Ваше доказательство не должно прибегать к NFAs.L L LR={wR:w∈L} L LR
Мы будем предполагать , что задано регулярное выражение , которое описывает . Давайте сначала посмотрим на оператор конкатенации ( ∘ ), а затем мы можем перейти к более сложным операторам. Таким образом, наши случаи конкатенации имеют дело с длиной того, что конкатенируется. Итак, сначала мы разберем все конкатенации от a b до a ∘ b . При работе с ними разбейте компоненты как можно больше: ( a b ∪ a ) b → ( a b ∪ a ) ∘ bL ∘ ab a∘b (ab∪a)b→(ab∪a)∘b , но вы, конечно, не можете нарушить ассоциативный порядок между различными представлениями.
Когда∅R→∅
Когда , у нас есть пустая строка, которая уже перевернута, поэтому механизм не меняетсяs=ϵ
Когда это просто буква, как в s ∈ Σ , обращение это только эта буква, ss s∈Σ 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)
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.
источник