Pourquoi les problèmes NP sont-ils appelés de cette façon (et NP-dur et NP-complet)?
vraiment.. J'ai le dernier test pour la remise des diplômes ce mardi, et c'est une des choses que je n'ai jamais pu comprendre.
Je me rends compte qu'une solution au problème NP peut être vérifiée en temps polynomial. Mais quel est le déterminisme a à voir avec cela?
Et si vous pouviez m'expliquer où NP-complete et NP-hard ont eu leurs noms, ce serait génial (je suis presque sûr que je comprends leur sens, Je ne vois pas ce que leurs noms ont à voir avec ce qu'ils sont).
Désolé si c'est trivial, Je ne semble pas pouvoir l'obtenir ( - :
Merci à tous!
5 réponses
P
classe de tous les problèmes qui peuvent être résolus par une machine déterministe Turing en temps polynomial.
NP
classe de tous les problèmes qui peuvent être résolus par une machine non déterministe Turing en temps polynomial (ils peuvent également être vérifiés par une machine déterministe Turing en temps polynomial.)
NP-dur
Une classe de problèmes qui sont "au moins aussi difficile que le plus difficile des problèmes dans NP". Formellement, un problème est dans NP-Hard iff il y a un NP-complete problème qui est polynomial time Turing-réductible à elle; (aussi: iff il peut être résolu en temps polynomial par une machine oracle avec un oracle pour le problème). Il est assez évident, d'où son nom.
NPC
la classe de problèmes qui sont à la fois NP et NP-dur. En ce qui concerne le nom, même wikipedia n'est pas sûr pourquoi il est nommé comme il est.
commençons par"non déterministe". Une machine déterministe peut être dans un état à la fois. Nous pouvons les réaliser. Une machine non déterministe est une construction théorique qui peut être dans plus d'un état à un moment. (Il y a des similitudes avec l'informatique quantique ici, mais pour notre propos ici, elles sont trompeuses. De les ignorer.)
si nous voulons résoudre un problème avec une machine déterministe, nous le démarrons, et il passe par une série d'étapes pour essayer pour trouver un problème. Si nous modélisons en utilisant une machine non déterministe, elle peut passer par toutes les séries possibles d'étapes en même temps.
l'ensemble des problèmes que nous allons être concernés par est des problèmes de décision: étant donné un énoncé de problème, soit Il ya une solution ou pas. Trouver une solution ou signaler qu'il n'y en a pas. Par exemple, supposons que vous avez un ensemble d'énoncés logiques: A ou non-B, B ou C ou D, Non-D ou A ou B,.... Étant donné un ensemble arbitraire, pouvez-vous trouver la vérité les valeurs de toutes les variables telles que toutes les déclarations sont vraies?
maintenant, considérons le P. supposons que nous représentons la taille d'un problème par N. La taille pourrait être le nombre de villes dans un problème de vendeur itinérant, le nombre d'énoncés logiques dans le problème ci-dessus, peu importe. Étant donné un certain n, le problème exigera un certain montant de ressources pour résoudre sur un système donné. Maintenant, si nous doublons les ressources ou la capacité de calcul, ce qui se passe à la taille le problème que nous pouvons résoudre? Si le problème est de complexité polynomiale, ce qui signifie En P, la taille augmente d'une certaine fraction. Il peut doubler, ou augmenter de 40%, ou de 10%. En revanche, s'il est de complexité exponentielle, la taille augmente d'un certain nombre. Nous pensons généralement que les problèmes de P peuvent être résolus et les problèmes exponentiels aussi insolubles que les problèmes grandissent, bien que ce soit une simplification. D'un point de vue informel, la complexité polynomiale est capable de comprendre les choses sur le problème séquentiellement, alors que exponential doit examiner toutes les combinaisons possibles.
Supposons que nous pouvons résoudre le problème en temps polynomial sur une machine déterministe. Le problème est en P. supposons que nous pouvons le résoudre en temps polynomial sur une machine non-déterministe, ce qui est la même chose que de pouvoir vérifier une solution proposée en temps polynomial sur une machine déterministe. Alors le problème est en NP. L'astuce ici est que nous ne pouvons pas faire de vrai machines non déterministes, de sorte que le fait qu'un problème est en NP ne signifie pas qu'il est pratique à résoudre.
en route vers NP-complete. Tous les problèmes en P sont en NP. Pour les problèmes A et B dans NP, nous pourrions être en mesure de dire que si A est dans P, il en est de même B. Ceci est fait en trouvant un moyen de reformuler B comme une sorte de problème. Un NP-problème complet est un tel que, si elle est en P, chaque problème en NP est en P. comme vous pourriez deviner, trouver un moyen de reformuler chaque problème possible comme un celui en particulier n'était pas facile, et je vais juste dire que le problème avec les énoncés logiques ci-dessus (le problème de Satisfiabilité) a été le premier NP-complet prouvé. Après cela, c'était plus facile, puisqu'il fallait seulement prouver que si le problème C était en P, Il était satisfaisant.
il est généralement considéré qu'il ya des problèmes qui sont en PN mais pas P, et une preuve a été récemment publié (qui peut se révéler être valide ou non). Dans ce cas, les programmes complets D'an sont les suivants: les problèmes les plus difficiles à NP.
Il y a des problèmes qui ne rentrent pas dans ce moule. Le problème du vendeur itinérant, tel qu'il se pose normalement, est de trouver l'itinéraire le moins cher reliant toutes les villes. Ce n'est pas un problème de décision, et nous ne pouvons vérifier aucune solution proposée directement. Nous pouvons le reformuler comme un problème de décision: étant donné un coût C, y a-t-il une route qui est moins chère que C? Ce problème est NP-complet, et avec un peu de travail, nous pouvons résoudre le TSP d'origine aussi facilement que la modification de l', NP-complet, de la forme. Par conséquent, le TSP est NP-dur, car il est au moins aussi dur qu'un NP-problème complet.
NP est appelé NP (non-deterministic polynomial time) parce qu'un problème de NP peut être résolu en temps polynomial par une machine de turing non-deterministic.
commençons par NP: dans NP, N est pour "non-deterministic" et P est pour "polynomial time". C'est la classe de problèmes qui peut être résolue en temps polynomial si vous avez une machine de Turing non déterministe qui peut se ramifier à chaque cycle pour explorer les possibilités en parallèle (la définition alternative de "vérifier la solution" est devenue populaire récemment, mais elle ne précise pas ce que "N" signifie). La machine non déterministe peut être comparé à un ordinateur parallèle avec un nombre infini de la capacité de fork()
à chaque instruction.
dire qu'un problème Q est "NP-hard" signifie que n'importe quel problème dans NP peut être réduit au problème Q (dans le temps polynomial). Puisque la relation "peut être réduite à" entre les problèmes est une relation d'ordre, vous pouvez penser à "NP-hard" comme signifiant "au moins aussi dur que tous les problèmes NP".
un problème "NP-complete" est simplement un des problèmes dans NP qui est NP-hard. Je suppose que cette classe de les problèmes nécessitaient un nom, mais je ne sais pas comment expliquer le choix du mot "complet".
Mais qu'est-déterminisme a à voir avec cela?
À Partir De Wikipedia :
NP est l'ensemble de tous les problèmes de décision pour lesquels le " oui "-les réponses ont des preuves efficacement vérifiables du fait que la réponse est en effet "Oui". Plus précisément, ces preuves doivent être vérifiables en temps polynomial par une déterministe Turing machine
Not assurez-vous de l'histoire de la noms de. EDIT:j'ai des suppositions. Ce qui suit est une spéculation, mais je ne pense pas que ce soit déraisonnable.
NP-Dur est tout le problème qui est au moins aussi difficile que le plus difficile des problèmes dans NP. On pourrait donc dire que le problème en question aurait une dureté NP., d'où NP-Hard.
si un seul problème dans NP-complete peut être résolu rapidement, alors chaque problème dans NP peut également être résolu rapidement. Par conséquent, l' un ensemble complet de problèmes NP pourrait être résolu.
EDIT2 : Wikipédia est Complète (Complexité) l'article indique:
un problème de calcul est complet pour une classe de complexité si c'est, dans un sens formel, l'un des problèmes" les plus difficiles "ou" les plus expressifs "de la classe de complexité