Est-il obligatoire de définir des transitions sur chaque alphabet possible dans les automates finis déterministes?

13

Demain c'est ma présentation et je veux clarifier mes concepts…

J'ai lu que dans DFA, "Pour chaque état, la transition sur tous les symboles possibles (alphabet) devrait être définie."

La définition de la transition sur tous les symboles possibles est-elle obligatoire pour chaque état dans DFA? Si ce n'est pas le cas, veuillez donner des exemples?

HQuser
la source
1
Bienvenue sur CS.SE! Nous préférons que vous posiez une seule question par article. Cela ressemble à deux questions distinctes. Il serait préférable de publier le deuxième (sur les NFA) séparément. De plus, avez-vous effectué une recherche approfondie sur ce site et vérifié la définition formelle de votre manuel? Sinon, vous devriez le faire avant de demander; et vous devriez nous montrer dans la question ce que vous avez trouvé lorsque vous avez fait cela.
DW
Merci pour votre accueil chaleureux, j'ai effectivement cherché sur ce site et sur google également, mais je reçois des opinions contraires qui me
déroutent en
La deuxième question a été supprimée, mais vous pouvez la trouver dans l'historique des modifications et la publier séparément en tant que question distincte en utilisant le bouton «Poser une question» en haut à droite. Cependant, avant de demander, assurez-vous de faire les recherches suggérées et dites-nous dans la question quelles recherches vous avez faites, y compris en nous disant quel (s) manuel (s) vous avez lu. En ce qui concerne cette question, vous pouvez toujours modifier cette question pour répondre aux commentaires que j'ai donnés ici en recherchant la définition formelle dans votre manuel, en l'incluant dans la question, et en montrant votre interprétation de cette définition.
DW
9
Quoi qu'il en soit, cela semble couvert par cs.stackexchange.com/q/12587/755 . Votes de la communauté, s'il vous plaît: est-ce un double?
DW
1
Je ne comprends pas vraiment votre question. Il semble que "j'ai lu que la définition est X. La définition est-elle X?"
David Richerby

Réponses:

12

Un DFA est spécifié par les données suivantes:

  • Un alphabet .Σ
  • Un ensemble d'états .Q
  • Un état initial .q0Q
  • Un ensemble d'états finaux .FQ
  • Une fonction de transition .δ:Q×ΣQ

Comme vous pouvez le voir sur la signature de , il spécifie une transition à chaque état pour chaque symbole.δ

Yuval Filmus
la source
7
Sauf que les DFA sont parfois définis avec une fonction de transition partielle.
Gilles 'SO- arrête d'être méchant'
6
Vous avez raison, il n'y a pas de définition "officielle" d'un DFA. Mais la lecture du PO trahit l'influence de cette définition particulière.
Yuval Filmus
Devrait dire explicitement que la fonction de transition est totale.
Ryan
24

Supposons qu'un DFA ait été autorisé à avoir des transitions manquantes. Que se passe-t-il si vous rencontrez un symbole qui n'a pas de transtion défini pour lui? Le résultat n'est pas défini. Cela semblerait violer la caractéristique "déterministe" d'un DFA.

Cependant, il est trivial de transformer un DFA aussi incomplet en un DFA complet. Ajoutez simplement un nouvel état, illegalet mappez toutes les transitions non définies à l' illegalétat. Enfin, ajoutez des transitions pour chaque symbole de l' illegalétat à lui-même. Cet illegalétat est souvent appelé état récepteur , car une fois que les données tombent dans le récepteur, il n'y a aucun moyen de sortir.

Donc, d'un point de vue pratique, c'est un peu théorique, tant que vous avez une façon bien définie de gérer les transitions manquantes.

Nathan Davis
la source
10
Attention: une transition non définie ne rend pas l'automate non déterministe, juste incomplet. Il existe certaines définitions de DFA qui permettent de telles transitions non définies précisément parce qu'il est trivial de le compléter systématiquement.
Darkhogg
1
@Darkhogg, je ne suis pas nécessairement en désaccord, mais le déterminisme d'un DFA incomplet ne dépendrait-il pas de la manière dont une implémentation particulière gère ces transitions non définies / manquantes? Et une telle implémentation ne complèterait-elle pas implicitement le DFA?
Nathan Davis
1
Non, cela ne dépend pas de l'implémentation, cela dépend de la définition. Si vous définissez les DFA comme ayant une fonction de transition totale, puis utilisez une fonction partielle, vous avez un comportement indéfini et vous risquez de vous retrouver avec du non-déterminisme, mais ce n'est pas acquis. Cependant, les DFA sont parfois explicitement définis pour utiliser une fonction partielle, et lorsqu'ils rencontrent une transition non définie, le comportement est "n'accepte pas", point. Pas de non-déterminisme ni rien de funky là-bas, pour toute implémentation car le résultat est défini même si la transition ne l'est pas.
Darkhogg
BTW: vous pouvez également effectuer la transformation inverse. Prenez un "automate total" et supprimez un état de puits pour obtenir un "automate incomplet". En fin de compte, la seule différence est qu'un automate total est toujours capable de lire un mot jusqu'à la fin, et après cela, il décide s'il accepte le mot ou non, tandis qu'un automate partiel est capable de rejeter certains mots avant de lire tous leurs mots. personnages.
Bakuriu
5

ΣQρQ×Σ×Qδ:(Q×Σ)2Q|δ(q,σ)|1qQσΣδ(q,σ)qQσΣ

Un mot est accepté par un NFA s'il a un cycle d'acceptation. Un automate déterministe a au plus un cycle. Un automate complet a au moins un cycle.

Certains auteurs définissent les automates de trim comme ceux dans lesquels chaque état se trouve sur un chemin allant d'un état initial à un état final. Pour certaines langues, vous ne pouvez pas avoir d'automates à la fois ajustés et complets. Dans ces cas, il est commode de garder l'exigence d'exhaustivité hors de la définition de l'automate déterministe.

Fabio Somenzi
la source