🔒 ComplexitĂ© algorithmique

Comprendre les classes P, NP, NP-complet, NP-difficile et les réductions

← Retour à l'accueil
🎯

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Ă©.

Imagine un jeu de puzzle. Assembler les piĂšces peut ĂȘtre trĂšs long. Mais vĂ©rifier qu'un puzzle est fini prend 2 secondes. C'est exactement l'idĂ©e derriĂšre P et NP !
Sur cette page, on ne parle que de problÚmes de décision : des problÚmes dont la réponse est toujours OUI ou NON.
📄

Instance et Vérificateur

Avant de parler de P et NP, deux mots clés à retenir :

📌 Instance (d'un problĂšme) Une instance est un exemple concret d'un problĂšme gĂ©nĂ©ral. C'est les donnĂ©es spĂ©cifiques que l'on donne Ă  l'algorithme.

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 ? »
📌 VĂ©rificateur Un vĂ©rificateur est un algorithme qui, Ă  partir d'une instance et d'une solution candidate, rĂ©pond OUI ou NON : la solution proposĂ©e est-elle correcte ?

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.
Le vérificateur, c'est le professeur qui corrige ta copie. Il ne refait pas l'exercice : il vérifie simplement si ta réponse est juste.

🔎 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 !
P

Classe P – Les problĂšmes « faciles »

📌 DĂ©finition P est l'ensemble des problĂšmes de dĂ©cision qui peuvent ĂȘtre rĂ©solus par un algorithme en temps polynomial (c'est-Ă -dire en O(nk) opĂ©rations pour une certaine constante k).
Multiplier deux nombres Ă  n chiffres : plus n est grand, plus c'est long, mais le temps reste raisonnable. C'est un problĂšme dans P.

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)
P ⊆ NP : tout problĂšme dans P est aussi dans NP, car si on peut rĂ©soudre rapidement, on peut aussi vĂ©rifier rapidement.
NP

Classe NP – Facile Ă  vĂ©rifier, difficile Ă  rĂ©soudre ?

📌 DĂ©finition NP (Non-dĂ©terministe Polynomial) est l'ensemble des problĂšmes de dĂ©cision pour lesquels une solution candidate peut ĂȘtre vĂ©rifiĂ©e en temps polynomial.

Trouver la solution peut ĂȘtre trĂšs long, mais vĂ©rifier qu'une solution est correcte est rapide.
Imagine un cadenas à code à 10 chiffres. Trouver le bon code par force brute est trÚs long (10 milliards de combinaisons). Mais si quelqu'un te donne le code, tu le vérifies en 2 secondes !

✅ 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 ?
La grande question ouverte en informatique : P = NP ? Tout ce qu'on peut vĂ©rifier rapidement peut-il aussi ĂȘtre trouvĂ© rapidement ? On ne sait pas encore ! C'est un problĂšme du millĂ©naire (rĂ©compense : 1 million de dollars).
NP-C

NP-complet – Les problùmes les plus durs de NP

📌 DĂ©finition Un problĂšme est NP-complet s'il satisfait deux conditions :
  1. Il est dans NP (une solution peut ĂȘtre vĂ©rifiĂ©e en temps polynomial).
  2. Il est NP-difficile (tous les problÚmes de NP se réduisent à lui en temps polynomial).
Imagine un problĂšme universel, un roi des problĂšmes. Si tu trouves un algorithme rapide pour ce roi, tu en trouves automatiquement un pour tous les problĂšmes de NP. Les NP-complets sont ces rois.

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-complet ⊂ NP : tout problùme NP-complet est aussi dans NP. Mais en plus, il est parmi les plus difficiles de NP.
NP-D

NP-difficile – Au moins aussi dur que NP-complet

📌 DĂ©finition Un problĂšme est NP-difficile (ou NP-hard) si tous les problĂšmes de NP peuvent lui ĂȘtre rĂ©duits en temps polynomial.

Il n'est pas nĂ©cessairement dans NP lui-mĂȘme : la solution n'est pas forcĂ©ment vĂ©rifiable rapidement.
C'est un problÚme encore plus exigeant que les rois : au moins aussi difficile que tout problÚme NP-complet, mais pas forcément un problÚme de décision avec vérification rapide.

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)
Tout problĂšme NP-complet est NP-difficile. Mais tout problĂšme NP-difficile n'est pas NP-complet (il peut ĂȘtre encore plus dur, ou hors de NP).
≀ₚ

RĂ©duction polynomiale – A se rĂ©duit Ă  B

📌 DĂ©finition On dit que le problĂšme A se rĂ©duit polynomialement Ă  B (notĂ© A ≀P B) s'il existe une fonction f, calculable en temps polynomial, qui transforme toute instance de A en instance de B, telle que :

x est une instance OUI de A si et seulement si f(x) est une instance OUI de B.
ProblĂšme A
instance x

f(x) en temps polynomial
ProblĂšme B
instance f(x)
Imagine que tu sais deja resoudre B. La reduction te dit : pour resoudre A, il suffit de traduire ton probleme A en probleme B, puis d'utiliser le solveur de B. Si B est facile et que la traduction est rapide, alors A est aussi facile.

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.
📌 Pourquoi les rĂ©ductions sont importantes ?
  • 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

NP NP-complet = NP ∩ NP-difficile P NP-difficile tri, recherche Dijkstra connexité nb premier problèmes NP non connus dans P (si P ≠ NP) SAT, 3-SAT Clique Sac à dos Hamiltonien Coloration Pb de l'arrêt TSP optim. échecs généralisés P : résolution rapide NP : vérification rapide NP-complet (= NP ∩ NP-difficile) NP-difficile : contient NP-complet et des problèmes hors 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 ?