Je suis en quelque sorte nouveau, mais très intéressé par le domaine de l'informatique et de la théorie de la complexité, et je veux clarifier ma compréhension de la façon de classer les problèmes et de la façon dont les problèmes sont liés à la machine utilisée pour les résoudre.
Ma compréhension
- Machine de Turing standard - une machine de Turing qui a un alphabet fini, un nombre fini d'états et une seule bande infinie à droite
- Turing-Equivalent Machine - une machine de Turing qui peut émuler et être émulée par une machine de Turing standard (assez souvent avec un compromis entre l'espace et le temps réalisé par l'émulation)
P
- la classe de problèmes qui peuvent être résolus en temps polynomial en utilisant une machine de Turing standard (définie ci-dessus)NP
- la classe de problèmes qui peuvent être vérifiés en temps polynomial à l'aide d'une machine de Turing standardNP-complete
- les problèmes les plus difficiles qui sont encore en placeNP
, dans lesquels tous lesNP
problèmes peuvent être convertis en temps polynomial
Ma question
Les classes de complexité ( P
, NP
, NP-complete
, etc.) liés à l'algorithme, ou l'algorithme et la machine?
Autrement dit, si vous pouviez créer une machine équivalente de Turing (qui peut résoudre tous les problèmes qu'une norme TM peut, mais dans une quantité de temps / espace différente) et cette nouvelle machine pourrait résoudre un NP-complete
problème dans le temps qui se développe en tant que polynôme par rapport à l'entrée, cela impliquerait-il P=NP
?
Ou le NP-complete
problème doit-il être résolu sur toutes les machines de Turing possibles en temps polynomial pour être pris en compte P
?
Ou est-ce que je comprends mal quelque chose de fondamental ci-dessus?
J'ai jeté un coup d'œil (peut-être pas avec les termes de recherche corrects, je ne connais pas très bien tout le jargon) mais il semble que la plupart des conférences / notes etc. se concentrent sur les machines standard mais disent que les machines personnalisées ont souvent une certaine vitesse temps / espace au détriment de l'espace / temps, sans dire comment cela se répercute sur les classes de complexité. Je ne connais pas encore assez le jargon dans ce domaine pour trouver des articles qui expliquent cela.
Réponses:
Les algorithmes et les machines ne sont pas définis dans votre question et je ne pense pas qu'ils soient nécessaires pour demander ce que vous voulez demander.
Les classes de complexité sont définies à l'aide de machines Turing. Telle est leur définition. Si vous voulez prouver quelque chose, vous devez utiliser ces définitions. Tout ce qui concerne un autre modèle n'est pas lié à moins que vous ne prouviez une correspondance entre ce modèle et les machines Turing.
la source
Juste une note banale pour souligner que la simulation efficace d'une machine de Turing signifie non seulement qu'elle peut simuler le calcul d'une machine de Turing et vice versa efficacement (ralentissement polynomial); mais aussi que ses entrées / sorties doivent être converties efficacement d'un modèle à l'autre.
Un exemple trivial: si vous trouvez un appareil équivalent Turing qui peut résoudre un problème SAT en temps constant, mais utilise en entrée un tas de billes (unaire), alors vous ne pouvez rien conclure. De même si votre appareil utilise une entrée binaire mais qu'il a fallu un nombre exponentiel d'étapes pour convertir une instance de SAT au format d'entrée utilisé par lui.
la source
Votre compréhension est très bonne! Vous pouvez également trouver plus d'informations dans un texte si vous êtes intéressé, par exemple l'introduction de Sipser à la théorie du calcul.
Il y a cette idée appelée la thèse de Church-Turing qui dit que tout ce qui peut être calculé d'une manière ou d'une autre peut être calculé à l'aide d'une machine de Turing. (Ce n'est pas prouvable, mais juste une idée ou une sorte de loi de la nature que nous pensons être vraie).
Je mentionne cela parce qu'il y a aussi la "Thèse de Turing de l'Église étendue" qui dit que tout ce qui peut être calculé en temps polynomial peut être calculé en temps polynomial en utilisant une machine de Turing.
Il y a de bonnes raisons de douter de cette conjecture car nous connaissons des algorithmes de calcul quantique qui obtiennent une accélération meilleure que polynomiale par rapport aux algorithmes classiques les plus connus. Cependant, à part cela, on pense que toute machine classique que vous pouvez construire (certainement toute variante sur une machine de Turing) ne peut pas être exponentiellement plus rapide qu'une machine de Turing. Donc, si votre "machine équivalente de Turing" pouvait exécuter un algorithme qui a résolu un problème NP-complet en temps polynomial, alors P = NP parce que je pouvais le convertir en un algorithme polynomial pour le même problème sur une MT.
Mais si vous avez pensé à une sorte de machine équivalente de Turing, probablement l'une des premières choses que vous feriez serait de comprendre comment la simuler avec une MT classique, et cela vous dirait si vous avez une conversion en temps polynomial ou ne pas. Et la réponse serait presque certainement oui, sauf que peut-être votre pourrait être exponentiellement plus lent (mais pas plus vite - nous pensons, à moins que ce soit quantique, alors peut-être).
la source