Trouver le complément d'un DFA?
Je suis a demandé de présenter des DFA diagramme et de RegEx pour le complément de la RegEx (00 + 1)*
. Dans le problème précédent, j'ai dû prouver que le complément d'un DFA est fermé et est une expression régulière également, donc je sais que pour convertir un DFA, M pour le compléter, M`, j'ai juste besoin de swap initial d'accepter les états et finale d'accepter les états.
Cependant, il semble que la première d'accepter les états pour les RegEx sont {00, 1, ^}
et la finale d'accepter les états sont {00, 1, ^}
. Si la permutation entre eux sera juste exactement de la même RegEx et DFA qui semble contradictoire.
Je fais quelque chose de mal ou est-ce RegEx supposé ne pas avoir un réel complément?
Merci
source d'informationauteur Matt Hintzke
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez dit dans la question:
Son pas complétermais vous faites quelque chose comme inverse d'une langue et langages réguliers sont de fermeture en vertu de l'inversion.
Renversement de DFA
Qu'est-ce que le Renversement de la Langue ?
La reprise d'une langue L (notée LR) est le langage composé de
le renversement de toutes les chaînes dans L.
Étant donné que L est L(A) pour certains, FA A, on peut construire un automate pour LR:
Note: En renversant tous ses flèches et d'échanger les rôles de la formation initiale et l'acceptation des etats de DFA que vous pouvez obtenir un ADN à la place.
c'est pourquoi j'ai écrit FA(pas DFA)
Compléter DFA
Defination:
Le complément d'une langue est définie en termes de différence de Σ* (sigma star). c'est L' = Σ* - L.Et le complément de la langue (L') de L a toutes les chaînes de Σ* (sigma star) à l'exception des chaînes de L. Σ* tout est possible chaînes sur l'alphabet Σ.
Σ = Ensemble de symboles de langue
est DFA de L, D est pour compléter
Note: construire compléter les DFA, ancien DFA doit être complète signifie qu'il devrait tout est possible, va au bord de chaque état(ou en d'autres termes
δ
doit être une fonction complète).Complément: référence à l'exemple
ci-dessous est DFA nommé Un:
Mais pas cette DFA n'est pas complète DFA. la transition de la fonction
δ
est partiellement défini, mais pas pour le domaine completQ×Σ
(manquant, va au bord de t1 pour lable1
).Sa DFA peut être comme suit (Un):
Ci-dessus DFA, toutes les transactions sont définies (*pour chaque paire de
Q,Σ
*) etδ
est une fonction complète dans ce cas.Reff: apprendre ce qu'est une Fonction Partielle.
En complément du DFA D peut être construit en changeant tous les états finaux
q0
de ne pas les états finaux et vice-versa.Donc en complément
q0
devenir non-final etq1, q2
sont les états finaux.Maintenant, vous pouvez écrire une expression Régulière pour compléter la langue à l'aide de ARDEN THÉORÈME et DFA j'ai donné.
Ici, je suis en train d'écrire une Expression Régulière pour compléter directement:
(00 + 1)*
0
(^ + 1(1 + 0)*)
où
^
est null symbole.quelques liens utiles:
De ici et par le biais de mon profil, vous pouvez en trouver d'autres réponses utiles sur FA. Aussi, deux bons liens sur les propriétés de langage régulier: un, deuxième
Je n'ai pas pris le temps de lire tous Grijesh réponse, mais ici, c'est la manière la plus simple d'obtenir un DFA accepter le complément d'une langue, étant donné un DFA acceptant la langue: utiliser le même DFA, mais le changement d'accepter les états à ne pas les accepter, et vice-versa.
Chaînes précédemment accepté sera rejetée, et les chaînes de caractères précédemment rejeté sera accepté. Depuis toutes les transitions doit être défini dans un valide DFA, et depuis toutes les chaînes d'entrée conduit exactement un état, cela fonctionne toujours.
Pour obtenir un DFA pour la reprise, vous pouvez d'abord construire une NFA par l'ajout d'un nouvel état initial que les branches non-déterministe à tous les acceptant les états de l'original de la TFD. Inverser toutes les transitions de l'original DFA, et de faire le seul état qui a accepté d'être l'état initial de l'original de la TFD.