Je suis coincé sur la question suivante:
"Les langages réguliers sont précisément ceux acceptés par les automates finis. Étant donné ce fait, montrez que si le langage est accepté par un automate fini, alors est également accepté par un certain fini; compose de tous les mots de inversé. "
Réponses:
Donc, étant donné un langage régulier , nous savons (essentiellement par définition) qu'il est accepté par certains automates finis, il y a donc un ensemble fini d'états avec des transitions appropriées qui nous amènent de l'état de départ à l'état d'acceptation si et seulement si l'entrée est une chaîne en L . On peut même insister sur le fait qu'il n'y a qu'un seul État acceptant, pour simplifier les choses. Pour accepter le langage inverse, tout ce que nous devons faire est d'inverser le sens des transitions, de changer l'état de départ en état d'acceptation et l'état d'acceptation en état de départ. Ensuite , nous avons une machine qui est « en arrière » par rapport à l'original, et accepte la langue L R .L L LR
la source
Vous devez montrer que vous pouvez toujours construire un automate fini qui accepte des chaînes dansLR donné un automate fini qui accepte des chaînes en L . Voici une procédure pour le faire.
Formalisons tout cela; nous commençons par énoncer le théorème.
Théorème. SiL est une langue régulière, alors LR .
SoitA = ( QUNE, ΣUNE, δUNE, qUNE, FUNE) un NFA et soit L=L(A) . Le ϵ -NFA AR défini ci - dessous accepte la langue LR .
Preuve. Tout d'abord, nous prouvons l'énoncé suivant:∃ un chemin de q à p dans A étiqueté avec w si et seulement si ∃ un chemin de p à q dans AR étiqueté avec wR (l'inverse de w ) pour q,p∈QA . La preuve est par induction sur la longueur de w .
Contient par définition de
Soit
Nous savons que
Laisserq=qA et p=s pour certains s∈FA et en remplaçant wR pour axR garantit que q∈δ∗AR(s,wR) ∀s∈FA . Puisqu'il y a un chemin étiqueté avec ϵ de qs à chaque état dans FA (3. dans la définition de AR ) Et un trajet à partir de chaque état FA à l'état qA marqué avec wR , alors il existe un chemin marqué avec ϵwR=wR de qs à qA . Cela prouve le théorème.
Notez que cela prouve que(LR)R=L également.
Veuillez modifier s'il y a des erreurs de formatage ou des défauts dans ma preuve ....
la source
Pour ajouter aux transformations à base d' automates décrits ci - dessus, vous pouvez également prouver que les langues régulières sont fermées sous l' inversion en montrant comment convertir une expression régulière pour dans une expression régulière pour L R . Pour ce faire, nous allons définir une fonction R E V sur les expressions régulières qui accepte en entrée une expression régulière R pour un langage L , produit alors une expression régulière R ' pour la langue L R . Ceci est défini de manière inductive sur la structure des expressions régulières:L LR REV R L R′ LR
You can formally prove this construction correct as an exercise.
Hope this helps!
la source
rev()
notation. :) I also put downREV(R1&R2) = REV(R1)&REV(R2)
; I have a regex implementation which has intersection. Yes; I'm thinking of adding an operator for reversal perhapsR\r
(reverse preceding regex element).REV(~R)
is the reverse of the set of all strings outside of R. Is that the same as~REV(R)
: the set of all strings outside of the reverse of the set denoted by R? This is not clear at all because any palindromes inR
are also inREV(R)
.Using regular expressions, prove that ifL is a regular language then the \emph{reversal} of L , LR={wR:w∈L} , is also regular. In particular, given a regular expression that describes L , show by induction how to convert it into a regular expression that describes LR . Your proof should not make recourse to NFAs.
We will assume that we are given a regular expression that describesL . Let us first look at the concatination operator (∘ ), and then we can move onto more advanced operators. So our cases of concatenation deal with the length of what is being concatenated. So first we will break all concatenations from ab to a∘b . When dealing with these break the components up as much as possible: (ab∪a)b→(ab∪a)∘b , but you cannot break associative order between different comprehensions of course.
Whens=(σ0σ1...σk/2...σk−1σk) where k is even, we have a regular expression generally which can be written as (σ0∘σ1...σk−1∘σk) . The reversal of these even length strings is simple. Merely switch the 0 index with the k index. Then Switch the 1 index with k-1 index. Continue till the each element was switched once, but the k/2 element (an integer because k is even). Thus the last element is now the first in the reg ex, and the first is the last. The second to last is the second and the second is the second to last. Thus we have a reversed reg ex which will accept the reversed string (first letter is the last etc.). And that middle letter. And of course we reverse each constituent. Thus we would get (σRkσRk−1...σRk/2...σR1σR0)
Okay the hard part is done. Let us look to the∪ operator. This is merely a union of sets. So given two strings, s1,s2 , the reverse of s1∪s2 is only sR1∪sR2 . The union will not change. And this makes sense. This will only add strings to a set. It does not matter which order they are added to the set, all that matters is that they are.
The kleene star operator is the same. It is merely adding strings to a set, not telling us how we should construt the string persay. So to reverse a kleene star of a strings , is only ((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.
la source