Pourquoi est-il important de prouver qu'un problème est NP-complet?

Réponses:

26

Ali, bonne question.

Supposons que vous vouliez montrer qu'un problème P est difficile à calculer. Maintenant, vous pourriez conjecturer que P est difficile simplement parce que nous n'avons pas encore d'algorithmes efficaces pour cela. Mais ce sont des preuves plutôt fragiles, non? Il se pourrait que nous ayons manqué une belle façon de voir P qui serait très facile à résoudre. Donc, afin de conjecturer que P est difficile, nous voudrions accumuler plus de preuves. Les réductions fournissent un outil pour faire exactement cela! Si nous pouvons réduire un autre problème naturel Q en P, alors nous avons montré que P est au moins aussi difficile que Q. Mais Q pourrait être un problème provenant d'un domaine mathématique complètement différent, et les gens peuvent avoir lutté pendant des décennies pour résoudre Q également. . Ainsi, nous pouvons voir notre échec à trouver un algorithme efficace pour que Q soit la preuve que P est difficile. Si nous avons beaucoup de tels Q '

C'est exactement ce que fournit la théorie de l'exhaustivité de NP. Si vous prouvez que votre problème est NP-complet, alors vous avez lié sa dureté à la dureté de centaines d'autres problèmes, chacun présentant un intérêt significatif pour diverses communautés. Ainsi, moralement parlant, vous pouvez être assuré que votre problème est effectivement difficile.

Arnab
la source
Donc, le but initial est de trouver un algorithme efficace pour P, mais comme cela semble irréalisable, on suppose que P est difficile à calculer et vos réponses expliquent le reste?
Ali
Nous voulons montrer que notre problème P est difficile à calculer, mais nous ne voulons pas supposer que P est difficile à prouver que P est difficile :) Au lieu de cela, si vous prouvez que P est NP-complet (ou même NP-dur mais ignorons la distinction ici), vous avez montré que si l'un des centaines de problèmes déjà bien examinés est difficile, alors P est également difficile. En effet, s'il existait un algorithme efficace pour P, il y aurait également des algorithmes efficaces pour chacun des centaines de problèmes.
arnab
4
@Ali: Je vous suggère fortement de regarder un manuel d'introduction à la théorie de la complexité. Ce site Web n'est pas vraiment un forum pour de telles questions, mais plutôt pour des questions de niveau recherche.
arnab
5
@Ali: Je vous recommande vraiment de lire Garey et Johnson . Le célèbre dessin animé du livre est à voir absolument!
Tsuyoshi Ito
9

Prouver un problème NP-Complete est un succès de recherche car il vous évite d'avoir à rechercher une solution efficace et exacte pour le problème général que vous étudiez. Cela prouve que votre problème appartient à une classe de problèmes si difficile que personne n'a pu trouver d'algorithme efficace et exact pour aucun des problèmes, et une telle solution pour l'un des problèmes impliquerait une solution pour tous les problèmes. problèmes.

Il s'agit généralement d'un tremplin, car votre problème est toujours là - vous devez simplement assouplir vos exigences. Habituellement, les gens essaient de trouver un moyen de relâcher une ou plusieurs méthodes «efficaces», «exactes» ou «générales». Inefficace-et-exact-et-général est la tentative de trouver de meilleures constantes dans l'exposant pour ces algorithmes. Efficace et inexacte et générale est l'étude des algorithmes d'approximation. Efficace et exacte mais non générale est l'étude de la tractabilité à paramètres fixes et la recherche de sous-classes d'entrée pour lesquelles des algorithmes efficaces peuvent être trouvés.

Peter Boothe
la source
Joli point pour trois façons de détendre le problème! Je suppose que les algorithmes randomisés entrent dans la catégorie "efficace et inexacte et générale".
Hsien-Chih Chang 張顯 之
Vraiment? Tous les algorithmes randomisés ne sont pas inexacts.
Jeffε
Et bien sûr, vous avez raison, JeffE. De plus, je comprends que vous enseignez (ou étiez) à un de mes anciens élèves des algorithmes! Quant au point de Hsien-Chih, je ne pense pas que les algorithmes randomisés s'intègrent bien dans ce schéma. Certes, certains algorithmes randomisés (les algorithmes génétiques et les réseaux de neurones viennent à l'esprit) sont inexacts mais efficaces et généraux, mais certains algorithmes randomisés sont assez exacts - considérez que l'algorithme de vérification d'un nombre est premier! C'est un algorithme aléatoire, mais je suis tout à fait convaincu que personne n'a jamais obtenu un non-prime d'une implémentation raisonnable.
Peter Boothe
5

Voyons deux cas différents pour lesquels deux personnes différentes voudraient prouver un problème NP-complete

a) Vous travaillez sur un projet logiciel. Après avoir spécifié votre système, vous commencez à définir l'architecture de votre application. Cela comprend la décomposition du problème / besoin important que l'application sert à des problèmes plus petits. Disons que vous avez été chargé de trouver un algorithme efficace (nous ne voulons pas que notre application soit lente!) Pour l'un de ces petits problèmes. Après avoir lutté pendant un certain temps, vous ne pouvez pas trouver d'algorithme polynomial. Alors vous pourriez penser: peut-être que ce problème est très difficile, il est donc très difficile (voire impossible) de trouver un algorithme efficace. En prouvant que le problème estNP-complete, vous avez des preuves de votre conjecture et vous devriez commencer à envisager une approche alternative (par exemple, en modifiant le problème afin qu'il devienne plus facile).

NP-complete

NP-complete

P=NP3-SUNET

NP-completeCLjeQUE

Résumer, caractériser un problème vous permet d'utiliser des techniques courantes. En étudiant la classe à laquelle il est lié, vous pouvez penser à un niveau abstrait, sans vous soucier des spécificités de ce problème particulier, courant en mathématiques et en sciences en général. Travailler avec des classes au lieu de membres individuels vous permet d'utiliser des techniques connues et, en outre, d'appliquer vos connaissances à un plus grand nombre d'objets, au lieu d'un seul.

chazisop
la source
2
Beaucoup de gens résolvent des problèmes NP-complets dans la pratique, même s'ils sont NP-difficiles à estimer. Dans le cas moyen, de nombreux problèmes s'avèrent beaucoup plus faciles, bien que cela puisse être difficile à montrer; il est encore plus difficile de prouver quoi que ce soit sur les algorithmes heuristiques qui fonctionnent bien dans la pratique. Je suggère à l'architecte logiciel de demander à quelqu'un si le problème est "vraiment" difficile avant d'abandonner et de modifier sa conception.
Yuval Filmus
Je ne dis pas que la conception doit changer. Utiliser un algorithme heuristique ou d'approximation me semble (faussement?) Comme changer le problème ... car sachez que vous demandez des solutions moins précises (sont-elles acceptables? Cela dépend de l'application!).
chazisop
3

Chaque problème a plusieurs connexions avec d'autres problèmes. De plus, il existe des relations entre un problème et des classes de complexité.

Par conséquent, classer un problème en tant que NPC nous donne généralement un aperçu d'autres problèmes, ainsi que des classes de complexité.

Par exemple, prenons le problème de l' isomorphisme graphique (GI). Dans l'article suivant:

Uwe Schöning, l' isomorphisme graphique est dans la basse hiérarchie , Actes du 4e Symposium annuel sur les aspects théoriques de l'informatique , 1987, 114–124; aussi: Journal of Computer and System Sciences, vol. 37 (1988), 312–323.

il est prouvé que si GI ∈ NPC, alors la hiérarchie polynomiale (PH) s'effondre à son deuxième niveau; qui sera une percée majeure dans la théorie de la complexité structurelle.

MS Dousti
la source
3

pppp

Radu GRIGore
la source
1
J'ai entendu dire qu'à un moment donné, vous aviez prouvé que certains problèmes étaient NP-complets, vous auriez votre thèse de doctorat. Est-ce vrai?
Hsien-Chih Chang 張顯 之
@ Hsien-ChihChang 張顯 之: Je ne peux pas en parler, mais ces résultats étaient certainement beaucoup plus populaires il y a quelques décennies. Il semble de plus en plus difficile de nos jours de publier un article dans lequel vous ne prouvez "que" un résultat de dureté (à l'exception des "problèmes célèbres" bien sûr), alors que cela n'aurait pas été un problème dans les années 70-80, à en juger par la abondance de ce type de papiers pendant cette période.
Anthony Labarre