Introduction : pourquoi classer les problĂšmes ?
En informatique, certains problĂšmes sont faciles Ă rĂ©soudre par un ordinateur, d'autres sont trĂšs difficiles, voire impossibles Ă rĂ©soudre rapidement mĂȘme avec les meilleurs ordinateurs du monde.
Pour organiser cette idĂ©e, les informaticiens ont créé des classes de complexitĂ© : des familles de problĂšmes qui ont le mĂȘme niveau de difficultĂ©.
Instance et Vérificateur
Avant de parler de P et NP, deux mots clés à retenir :
Exemple : Le problÚme général est « Ce graphe G contient-il un chemin hamiltonien ? »
Une instance serait : « Est-ce que ce graphe prĂ©cis (5 sommets, ces arĂȘtes) contient un chemin hamiltonien ? »
Il ne cherche pas la solution lui-mĂȘme, il vĂ©rifie seulement si la solution qu'on lui propose est valide, et le fait rapidement.
đ Exemple concret :
- ProblĂšme : Ce tableau contient-il un sous-ensemble dont la somme vaut 0 ?
- Instance : Tableau = [3, â2, 7, â5, 4, â3]
- Solution candidate : {3, â2, â5, 4} → somme = 3 â 2 â 5 + 4 = 0
- VĂ©rificateur : Additionne les nombres et vĂ©rifie que la somme vaut 0. â Simple et rapide !
Classe P â Les problĂšmes « faciles »
Temps polynomial = le temps de calcul ne s'emballe pas. Si la taille de l'entrĂ©e double, le temps augmente d'un facteur raisonnable (nÂČ, nÂłâŠ), pas de maniĂšre explosive comme 2n.
â Exemples de problĂšmes dans P :
- Trier une liste de n nombres (tri fusion : O(n log n))
- Chercher un élément dans une liste
- Savoir si un graphe est connexe
- Savoir si un nombre est premier (algorithme AKS, 2002)
- Plus court chemin dans un graphe (algorithme de Dijkstra)
Classe NP â Facile Ă vĂ©rifier, difficile Ă rĂ©soudre ?
Trouver la solution peut ĂȘtre trĂšs long, mais vĂ©rifier qu'une solution est correcte est rapide.
â Exemples de problĂšmes dans NP :
- ProblÚme du voyageur de commerce (version décision) : existe-t-il un tour de longueur †k passant par toutes les villes ? Vérifier un tour proposé est facile.
- ProblÚme de la clique : ce graphe contient-il un groupe de k sommets tous reliés entre eux ? Vérifier une clique proposée est facile.
- SAT (satisfaisabilitĂ© boolĂ©enne) : cette formule logique peut-elle ĂȘtre rendue vraie ?
- ProblĂšme du sac Ă dos : peut-on remplir ce sac avec des objets de valeur totale â„ V ?
NP-complet â Les problĂšmes les plus durs de NP
- Il est dans NP (une solution peut ĂȘtre vĂ©rifiĂ©e en temps polynomial).
- Il est NP-difficile (tous les problÚmes de NP se réduisent à lui en temps polynomial).
Le premier problÚme prouvé NP-complet est SAT (satisfaisabilité booléenne), par Stephen Cook en 1971. Depuis, on en connaßt des milliers.
â Exemples de problĂšmes NP-complets :
- SAT (satisfaisabilité d'une formule booléenne)
- 3-SAT (SAT avec des clauses de 3 variables)
- ProblĂšme de la clique
- Coloration de graphe (avec k couleurs, k â„ 3)
- Circuit hamiltonien
- ProblÚme du sac à dos (version décision)
NP-difficile â Au moins aussi dur que NP-complet
Il n'est pas nĂ©cessairement dans NP lui-mĂȘme : la solution n'est pas forcĂ©ment vĂ©rifiable rapidement.
Difference NP-complet vs NP-difficile :
- NP-complet = dans NP ET NP-difficile. On peut vérifier une solution rapidement.
- NP-difficile = NP-difficile mais pas forcément dans NP. La verification peut aussi etre difficile.
â Exemples de problĂšmes NP-difficiles hors NP-complets :
- ProblĂšme de l'arrĂȘt (Halting Problem) â pas du tout dĂ©cidable !
- Version optimisation du problÚme du voyageur de commerce (trouver le tour le plus court, sans borne fixée)
- Jeu d'echecs generalisé (position gagnante en k coups)
RĂ©duction polynomiale â A se rĂ©duit Ă B
x est une instance OUI de A si et seulement si f(x) est une instance OUI de B.
instance x
f(x) en temps polynomial
instance f(x)
Ce que cela implique : Si A â€P B, alors B est au moins aussi difficile que A. Savoir resoudre B suffit a resoudre A.
đ Exemple :
- 3-SAT se réduit au problÚme de la Clique.
- Cela signifie : si tu sais resoudre Clique rapidement, tu sais aussi resoudre 3-SAT rapidement.
- Donc Clique est au moins aussi difficile que 3-SAT.
- Elles permettent de prouver qu'un problĂšme est NP-complet.
- Methode : on prend un NP-complet connu (ex : SAT), on le reduit au nouveau probleme. Donc le nouveau probleme est aussi NP-complet.
- La relation â€P est transitive : si A â€P B et B â€P C, alors A â€P C.
đ Diagramme des classes de complexitĂ©
ReprĂ©sentation dans le cas supposĂ© P â NP
đ Tableau rĂ©capitulatif des classes
| Classe | Résolution rapide ? | Vérification rapide ? | Dans NP ? | Exemple |
|---|---|---|---|---|
| P | â Oui | â Oui | â Oui | Tri, recherche |
| NP | â Peut-etre non | â Oui | â Oui | SAT, Clique |
| NP-complet | â Inconnu (probablement non) | â Oui | â Oui | SAT, Hamiltonien |
| NP-difficile | â Probablement non | â Pas necessairement | â Pas necessairement | Probleme de l'arret |
🧠 Quiz – Vérifie ta compréhension !
1. Un problème est dans P si…
2. Quelle est la différence entre NP et NP-complet ?
3. Si A ≤P B (A se réduit polynomialement à B), alors…
4. Parmi ces affirmations, laquelle est vraie concernant NP-difficile ?
5. Quel est le rôle d'un vérificateur ?