Quelles sont les différences entre les machines de Turing déterministes et non déterministes? Modèles différents mais équivalents de NDTM. En particulier, quelle est cette expression fréquemment utilisée "devinez de façon non déterministe"? Comment l'utiliser correctement et exemples d'utilisation incorrecte. Mon objectif est de créer une question de référence.
turing-machines
nondeterminism
fade2black
la source
la source
Réponses:
Voici plusieurs façons de penser le non-déterminisme (copié de cette réponse ).
Le génie. Chaque fois que la machine a le choix, un génie lui indique la direction à suivre. Si l'entrée est dans la langue, alors le génie peut diriger la machine de telle manière qu'il accepte finalement. Inversement, si l'entrée n'est pas dans la langue, quoi que le génie demande à la machine de faire, elle sera toujours rejetée.
Conseils. La machine calcule une fonction bivariée. La première entrée est un mot et la deuxième entrée est un "indice" . Chaque fois que la machine fait face à un choix non déterministe, elle consulte le symbole de conseil suivant et fonctionne en conséquence. On nous promet ce qui suit:w x
Accepter les calculs. Un calcul acceptant est un calcul légal (dans lequel la machine fonctionne toujours selon l'un des choix auxquels elle est confrontée) qui se termine à un état acceptant. Un mot est dans la langue ssi il a un calcul acceptant.
Nous pouvons formaliser la notion d'acceptation de calcul à l'aide de configurations . Une configuration est une description instantanée de l'état complet de la machine. On peut définir une relationσ⊢σ′ , où σ,σ′ sont des configurations, qui tient lorsque σ peut mener à σ′ en une seule étape. Dans une machine déterministe, il y a au plus unσ′ chacun σ , alors que dans une machine non déterministe, il pourrait y en avoir plusieurs. Un calcul acceptant pour un motw est celui qui commence à la configuration initiale (la bande contient w , la tête pointe au début de w , l'état est l'état initial) et se termine par une configuration d'acceptation.
Une autre description équivalente est en termes d'accessibilité. Considérons un graphe orienté dans lequel les sommets sont des configurations et il y a un bordσ à σ′ si σ⊢σ′ . Un calcul acceptant est un chemin de la configuration initiale à une configuration acceptante.
la source
La différence entre les machines de Turing déterministes et non déterministes réside dans la fonction de transition. Dans les machines déterministes de Turingδ la fonction de transition est une fonction partielle:
ce qui signifie que, étant donné un état et un symbole de bande, vous avez un ou aucun état, entrez le symbole à droite et la direction à déplacer. Cependant, dans les machines de Turing non déterministes, cela ressemble (iciP est l'ensemble des sous-ensembles d'un ensemble):
ce qui signifie que vous n'avez aucun ou plusieurs états, des symboles de bande à écrire ou une direction vers laquelle vous déplacer. Cela donne à votre machine la possibilité de choisir efficacement dans un tel état et symbole de bande entre les différentes "branches" de calcul possibles.
En pratique, cela signifie que nous pouvons calculer différentes sorties pour la même entrée. Par conséquent, le langage d'une machine de Turing non déterministe est l'ensemble des mots pour lesquels nous trouvons une dérivation dans les transitions définies. Une exécution spécifique peut ne pas trouver une telle dérivation mais l'important est qu'elle puisse se produire. Ainsi, lorsque vous "devinez", vous choisissez simplement l'une des branches de calcul possibles.
Exemple d'utilisation
Dans ce cas, on pourrait simplement "deviner" un motw et exécuter M1 et M2 sur w vérifier que si les deux acceptent, ils acceptent en même temps. La supposition pourrait fonctionner en introduisant un étatq avec des transitions qui écrivent sur une bande 0 s et / ou 1 s et qui sort en lisant n'importe quel symbole sur la machine générale.
Pour être honnête, je n'ai trouvé aucun exemple de mauvaise utilisation de cette "supposition", mais vérifier que chaque fois que cette phrase est utilisée est correctement effectuée, cela réduit pour vérifier que vous pouvez créer des automates avec cette structure qui simule la devinette.
la source
Acceptation de la chaîne d'entrée dans NTM
permettez-moi d'ajouter plus sur les machines de Turing déterministes et non déterministes. Considérons que pour une langueL , nous concevons respectivement une machine de Turing déterministe et non déterministe. Sur une entréex , il n'y aura qu'un seul chemin de configurations dans le cas de la machine de Turing déterministe, à savoir c0⟶c1⟶⋯⟶ck (où chaque ci représente une configuration à i e étape). Maintenant sur la base de la configurationck , nous pouvons facilement accepter et rejeter la chaîne d'entrée x .
Voir l'image ci-dessous pour une meilleure compréhension:
Dans le cas de NTM, nous devons être prudents, car il peut arriver que sur certains chemins de configuration, nous entrions dans un état de rejet. Ainsi, pour les machines de Turing non déterministes, nous disons qu'une chaîne est acceptée si au moins l'un des chemins de configuration conduit à accepter l'état . Nous rejetterons la chaîne d'entrée si tous les chemins de configuration conduisent à un état de rejet.
Par exemple, considérons l'arborescence de configuration ci-dessus pour la machine de Turing non déterministe sur une chaîne d'entrée, par exemplex Dans ce cas, nous accepterons la chaîne d'entrée car il existe un seul chemin d'acceptation.
Référence : http://cs.umw.edu/~finlayson/class/fall14/cpsc326/notes/24-complexity2.html
la source
Augmentation avec un module de devinettes.
J'ai trouvé ce modèle dans " Computers and Intractability " de MR Garey et DS Johnson.
Comment ça fonctionne.
. . .
la source