J'ai lu plusieurs fois qu'il n'est pas possible de retourner la réponse d'un NDTM efficacement. Cependant, je ne comprends pas pourquoi. Par exemple, étant donné un MTND qui fonctionne en O ( n ) , ce texte (section 3.3) indique qu'il ne sait pas comment une autre MTND T peut déterminer dans O ( n 100 ) temps comment retourner M réponse s.
Mon problème est le suivant: un NDTM produit ssil existe une séquence de choix non déterministes qui mène à l'état d'acceptation. De plus, il existe un NDTM N U universel qui peut simuler chaque NDTM avec seulement une petite surcharge (logarithmique). Alors pourquoi ne pouvons-nous pas construire T comme suit: Premièrement, simulons M avec le NDTM universel qui devrait être possible dans le temps O ( n log n ) . Puis sortez 1 - la réponse de M. Cela signifierait que nous pouvons inverser la réponse de n'importe quel NDTM linéaire dans le temps O ( n log n ) .
la source
Réponses:
Une machine de Turing non déterministe accepte si au moins un chemin accepte; il rejette uniquement si tous les chemins rejettent. Cette asymétrie rend difficile le «retournement des réponses».
Une machine non déterministe ne peut pas regarder tous ses chemins simultanément et agir en fonction de ce que font tous ces chemins. Si vous le souhaitez, vous pouvez le considérer comme une forme de parallélisme où les fils sont interdits de communiquer entre eux. Lorsque tous les threads sont terminés, le programme doit se poser la question suivante: "Est-ce qu'au moins un de mes threads a accepté?" Si la réponse est oui, il est légalement obligé d'accepter; si la réponse est non, il est légalement obligé de rejeter. Il ne peut rien faire d'autre.
La seule façon de savoir si une machine non déterministe rejette son entrée est d'essayer tous les chemins possibles et de vérifier qu'ils rejettent tous. Après tout, si même l'un d'entre eux acceptait, la machine accepterait l'entrée. Mais essayer tous les chemins possibles est exponentiellement plus lent que d'essayer un seul.
la source
la source
la source