Dans un DFA, chaque état a-t-il une transition sur chaque symbole de l'alphabet?


12

Sinon, qu'est-ce que cela signifie quand pour un état et un symbole , n'existe pas?a δ ( q , a )qaδ(q,a)


J'appellerais un automate non déterministe qui n'a jamais plus d'une transition sur le même état et le symbole d'entrée déterministe. Cela ne correspond tout simplement pas à la définition DFA.
reinierpost

1
Si les règles d'un DFA sont disposées de manière à ce qu'il ne puisse jamais être dans l'état q lorsque le symbole sur la bande est a , devons-nous vraiment définir δ (q, a) ?
Peter Shor

4
La réponse est clairement que cela dépend de la façon dont on définit "automate fini déterministe". En tant que tel, je ne suis pas sûr que cette question soit entièrement constructive, car il n'y a pas de réponse correcte universellement acceptée - c'est-à-dire que cette question sollicite l'opinion et le débat.
Patrick87

1
Si est supposé être une fonction , il doit être défini pour toutes les paires . δq,a
vonbrand

Dans ma notion de DFA, il s'agit d'une condition "abandon", ou si vous préférez un saut implicite vers un état "rejet".
Yves Daoust

Réponses:


22

Vous semblez être tombé sur une question litigieuse. Apparemment, les informaticiens aiment discuter. J'aime certainement discuter, alors voilà!

Ma réponse est sans équivoque: Non. Un automate fini déterministe n'a pas besoin d'une transition de chaque état pour chaque symbole. La signification lorsque n'existe pas est simplement que le DFA n'accepte pas la chaîne d'entrée.δ(q,a)

Bien que vous puissiez créer une définition de DFA qui nécessite que existe, il n'est tout simplement pas le cas qu'une transition manquante rende la structure résultante (quel que soit votre nom) de quelque manière non déterministe que la plupart des commentateurs. réclament. Si vous suivez un cours sur la théorie des automates, le sujet suivant sera les langages sans contexte et les automates déroulants où la distinction entre automates non déterministes et déterministes est critique, et vous devez utiliser la définition correcte du non-déterminisme.δ(q,a)

Le non-déterminisme est associé à plus d'une transition juridique.

Je pense que nous sommes tous d'accord avec la définition de Wikipédia suivante (que je montrerai dans une seconde est légèrement ambiguë):

Un automate fini déterministe est un tuple 5 ( , , , , ), composé deMQΣδq0F

  1. un ensemble fini d'états ( )Q
  2. un ensemble fini de symboles d'entrée appelé l'alphabet ( )Σ
  3. une fonction de transition ( )δ:Q×ΣQ
  4. un état de départ (q0Q)
  5. un ensemble d'états d'acceptation ( ).FQ

Soit une chaîne sur l'alphabet . L'automate accepte la chaîne si une séquence d'états, , existe dans avec les conditions suivantes:w=a1a2anΣMwr0,r1,,rnQ

  1. r0=q0
  2. ri+1=δ(ri,ai+1) , pouri=0,,n1
  3. rnF .

L'ambiguïté et la controverse portent sur la définition de la fonction de transition, (numéro "3" dans la première liste à puces.) Nous convenons tous que ce qui différencie un DFA d'un NFA est que est une fonction plutôt qu'un relation . Mais une fonction partielle ou une fonction totale ?δδ δδδ

La définition du DFA fonctionne très bien si est une fonction partielle. Étant donné une chaîne d'entrée, si vous atteignez un état avec un symbole d'entrée où il n'y a pas d'état suivant, les automates n'acceptent tout simplement pas.δqiaj

De plus, lorsque vous étendez cette définition pour créer la définition des automates déroulants, vous devrez faire la distinction que les automates déroulants avec des fonctions de transition qui sont des fonctions partielles sont classés comme déterministes, non non déterministes.

Si la fonction partielle vous dérange alors voici une transformation triviale qui fait de une fonction totale. (Cette transformation n'est pas comme l'algorithme de construction de sous-ensemble, elle ajoute au plus des états O (1), est linéaire dans le nombre d'états d'origine et peut être étendue pour fonctionner avec des PDA. Aucun de ces faits n'est vrai de l'algorithme de construction de sous-ensemble .)δ

  1. ajouter un étatqerror
  2. pour chaque paire où n'est pas défini, définissez .(qi,sj)δδ(qi,sj)=qerror

Ces automates ont un qui est une fonction totale et accepte et rejette exactement le même ensemble d'états que vos automates originaux ont accepté et rejeté.δ

Edit, janvier 2019

Le commentateur @Alex Smart me critique à juste titre pour ne pas avoir donné de références, ni pour expliquer pourquoi nous devrions nous en soucier. Alors voilà:

La raison pour laquelle nous nous soucions de la définition exacte du déterminisme par rapport au non-déterminisme, est que certaines classes d'automates non déterministes sont plus puissantes que leurs cousines déterministes, et certaines classes d'automates non déterministes ne sont pas plus puissantes que leurs cousines déterministes. Pour les automates finis et les machines de Turing, les variantes déterministes et non déterministes ont une puissance équivalente. Pour les automates à refoulement, il existe des langues où la distinction est importante: il existe des NPDA qui acceptent la langue et aucun DPDA n'accepte la langue. Pour les automates délimités linéaires, la question est (ou était la dernière fois que j'ai vérifié) ouverte. L'augmentation de la puissance de NPDA par rapport à DPDA vient de permettre à plusieurs transitions, pas de transformer la fonction de transition d'une fonction totale à une fonction partielle.

Livres de la communauté des compilateurs:

Aho et Ullman, Principles of Compiler Design , 1977: définit d'abord NFA (page 88) avec une relation de transition, puis (p. 90-91):

On dit qu'un automate fini est déterministe si 1. Il n'a pas de transitions sur input . 2. Pour chaque état et symbole d'entrée , il y a au plus un bord étiqueté sortant .ϵsaas

Aho, Sethi et Ullman, Compilers, principes, techniques et outils , réimpression de 1988, est similaire, il définit d'abord NFA avec une relation de transition, puis (p. 115-116):

Un automate déterministe fini (DFA, pour faire court) est un cas particulier d'un automate non déterministe finitie dans lequel ... il y a tout au plus une arête marquée laissant .as

(Notez que dans les commentaires @Alex Smart dit, "le dragon mentionne spécifiquement que la fonction est totale." Je suppose qu'il parle de la dernière édition avec le co-auteur Lam, à laquelle je n'ai pas accès pour le moment. )

Appel, Modern Compiler Implementation in Java , 1988 (p. 22):

Dans un déterministe automate fini (DFA), pas deux bords laissant du même état sont étiquetés avec le même symbole.

Appel poursuit en expliquant que lorsque vous utilisez DFA pour reconnaître les correspondances les plus longues, nous utilisons explicitement les transitions manquantes pour décider du moment de l'arrêt (p. 23):

lorsqu'un état mort (un état non final sans transition de sortie) est atteint, les variables [qui enregistrent la plus longue correspondance que nous ayons vue jusqu'à présent] indiquent quel jeton a été mis en correspondance et où il s'est terminé.

Livres de la communauté de la théorie de la commutation:

Kohavi, Switching and Finite Automata Theory, 2 / e , 1978, p. 611 dit:

Étant donné qu'un diagramme d'état décrit une machine déterministe , la transition d'état suivante doit être déterminée uniquement par l'état actuel et le symbole d'entrée actuellement balayé.

J'interprète généralement de manière unique comme signifiant "exactement un", pas "pas plus d'un". (C'est-à-dire que Kohavi semble dire que le déterminisme nécessite une fonction totale)

Livres issus de la communauté de la théorie du calcul:

Ici, il semble plus courant de définir les DFA avant les NFA et d'exiger que les DFA aient une fonction de transition totale, mais ensuite de définir les NPDA avant les DPDA et de définir le «déterminisme» comme étant une restriction de la relation de transition à ne pas avoir plus de -une entrée pour chaque paire état / symbole.

C'est le cas de Hopcroft et Ullman, 1979, Lewis et Papadimitriou, 1981, et, en particulier de Sipser, 2006, qui utilise la définition de DFA de manière pédagogique pour introduire des définitions formelles précises, expliquer leur importance et dire explicitement (p.36):

la fonction de transition, , spécifie exactement un état suivant pour chaque combinaison possible d'un état et d'un symbole d'entrée.δ

Cela semble suivre l'évolution historique. Des automates finis déterministes ont été introduits dans les années 40 et 50. Les automates finis non déterministes ont été introduits dans l'article de Rabin et Scott, "Automates finis et leurs problèmes de décision, IBM J. Rsrch et Dvpt , 3 (2): 114-125, 1959. Suivant les auteurs antérieurs, Rabin et Scott définissent déterministe les automates finis (qu'ils appellent automates ordinaires ) comme ayant une fonction de transition "définie sur le produit cartésien de toutes les paires d'états et de symboles" (que j'interpréterais comme signifiant une fonction totale).s×Σ

Fait intéressant, Rabin et Scott définissent également des automates finis non déterministes en termes de fonction totale! Page 120, définition 9:

Un automate non déterministe (de fini) ... est un système où ... est une fonction [!] De avec des valeurs dans l'ensemble de tous les sous - ensembles de .MS×ΣS

C'est-à-dire que la fonction de transition étant totale ne rend pas le système déterministe!

Sipser 2006 suit Rabin et Scott et utilise une fonction de transition totale des états / symboles vers l'ensemble d'états de puissance pour ses définitions des automates finis non déterministes, des PDA non déterministes et des machines de Turing non déterministes, mais saute le sujet déterministe PDA.

Hopcroft et Ullman, 1979, et Lewis et Papadimitriou, 1981 utilisent tous deux des fonctions partielles dans leurs définitions des PDA déterministes. Ils définissent d'abord les NPDA avec une relation de transition, puis lorsqu'ils arrivent aux PDA, Lewis et Papadimitriou disent (p. 135),

Un automate déroulant est déterministe , intuitivement parlant, s'il y a au plus une transition applicable à chaque configuration.

Alors que Hopcroft et Ullman disent (p. 112):

Le PDA ... est déterministe dans le sens où au plus un mouvement est possible à partir de n'importe quel ID.


Vous rendez l'automate déterministe lorsque vous ajoutez l'état . Nous pouvons toujours convertir un NFA en DFA. Vous avez raison sur une chose: fonction partielle ou fonction totale? La plupart des mathématiciens voudraient dire fonction totale quand ils disent fonction. Ils disent fonction partielle quand ils ne signifient pas fonction totale. C'est pourquoi je pense que nous devons inclure une définition formelle de la question. qerror
scaaahu

2
La version de fonction partielle est celle donnée dans Hopcroft et Ullman, si cela fait une différence. Ainsi, l'idée qu'une fonction partielle est intrinsèquement non déterministe n'est en aucun cas standard.
jmite

1
@jmite Ce n'est pas que les fonctions partielles impliquent le non-déterminisme; c'est que les fonctions totales impliquent un déterminisme qui fait des fonctions totales le meilleur choix. Bien sûr, c'est une question plus ou moins arbitraire des définitions que vous utilisez.
Patrick87

3
Il est appelé automate fini déterministe incomplet lorsque est une fonction partielle. δ
scaaahu

1
Comme vous l'avez montré, la version de fonction partielle a une traduction facile en version de fonction totale, et autant que je sache, vous ne gagnez absolument rien, pédagogiquement ou autrement, en permettant à la fonction de traduction d'être partielle. Le dragon mentionne spécifiquement que la fonction est totale. Pourquoi diable créons-nous un argument sur quelque chose qui a été clairement défini dans un manuel standard que la plupart des gens suivent alors qu'il n'y a absolument rien à gagner à choisir une définition non standard?
Alex Smart

8

Comme le note scaaahu dans les commentaires, selon une définition commune, un automate fini déterministe (DFA) doit avoir une transition de chaque état sur chaque symbole de l'alphabet, c'est-à-dire que la fonction de transition est définie pour tout et où est l'ensemble des états et est l'alphabet.δ(q,a)qQaΣQΣ

Une fois que vous commencez à exclure les transitions ou à ajouter plusieurs transitions sur le même symbole à partir du même état, vous disposez d'un automate fini non déterministe (NFA). Les NFA ont également une possibilité supplémentaire, -transitions, où ils peuvent passer d'un état à un autre sans lire de symbole dans l'entrée.ε

En termes de calcul, les NFA sont équivalents aux DFA - il existe un algorithme pour convertir d'un NFA en DFA, et un DFA est simplement un NFA qui n'utilise aucun non-déterminisme, ils définissent donc tous deux l'ensemble des langages réguliers.


2
Cela dépend de la définition; il y en a plusieurs de puissance équivalente.
Raphael

3
+1 Il vaut mieux s'en tenir à cette définition, à mon humble avis, car tout le monde conviendrait qu'un FA qui définit exactement une transition pour chaque paire (état, symbole) constitue un DFA valide.
Patrick87

1
Et cette définition est complètement fausse lorsque vous essayez de l'étendre pour décider si un langage sans contexte est déterministe ou non déterministe. Un automate de refoulement avec des transitions manquantes peut toujours être transformé en automate de refoulement avec exactement une transition par état / symbole d'entrée / symbole de pile. Un automate de refoulement non déterministe avec plusieurs transitions possibles par état / symbole d'entrée / symbole de pile ne peut pas nécessairement être transformé en automate de refoulement déterministe. (Par exemple: dans le cas où la langue reconnue est libre de tout contexte non déterministe.)
Wandering Logic

2
@jmite Définissez simplement les automates de trim indépendamment des DFA. Je pense qu'il est beaucoup plus important que les DFA minimaux aient le bon nombre d'états selon le théorème de Myhill-Nerode, que vous obtenez uniquement avec les états morts.
Patrick87

4
Cela devient idiot. Les fonctions partielles ne créent jamais de non-déterminisme tandis que les transitions créent du non-déterminisme dans tous les cas sauf très particuliers (par exemple, chaque état transitions vers lui-même, ou les états qui ont des transitions n'ont pas de transitions sur les symboles réguliers (c'est-à-dire que les états ont des fonctions de transition) qui sont partielles! )) Je parle des limites les plus strictes que nous pouvons fournir sur le comportement du pire des cas sur toutes les entrées, pas des cas spéciaux (comme vos sortes "parfois linéaires".)ϵϵϵ
Wandering Logic

6

Il existe des définitions de DFA dans le sens de

Si est NFA et pour tous les et (et si , alors pour tous les ) alors est DFA.| δ ( q ,Aq a δ ( q , ε ) δ ( q , a ) = a Σ A|δ(q,a)|1qaδ(q,ε)δ(q,a)=aΣA

Dans ce cas, vous n'avez pas besoin de toutes les transitions. Si l'automate n'a pas de transition correspondant au symbole d'entrée suivant, il rejette.

C'est un bon exercice de montrer que les deux définitions sont équivalentes en termes de langues pouvant être acceptées.


Je pense que la question du PO doit être modifiée pour inclure la définition officielle de DFA.
scaaahu

0

Dans la définition de DFA, tous les États doivent avoir tout l'alphabet en £. Par exemple, si les £ = {a, b, c} et Q = {q0, q1, q2}, tous ces états doivent avoir tous les symboles a, b, c qui passent à un autre état ou au même état.


1
Quelle est la différence avec les réponses existantes pour que vous puissiez poster une nouvelle réponse?
xskxzr

0

La réponse la plus simple à cela est que vous ajoutez l' état mort pour le symbole de gauche . Comme lors de la conversion de NFA en DFA, nous obtenons la transion Φ pour certains symboles, ce qui signifie que nous créons pour elle l'état mort.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.