Complexité des problèmes
Progression
#title: "Complexité des problèmes" description: "Classes P, NP, NP-complet et réductions polynomiales"
#Complexité des problèmes
Au-delà de l'analyse des algorithmes individuels, la théorie de la complexité classifie les problèmes eux-mêmes selon leur difficulté intrinsèque. Cette classification permet de comprendre les limites fondamentales du calcul.
#Problèmes de décision
Un problème de décision est un problème dont la réponse est OUI ou NON.
Exemples :
- SAT : Existe-t-il une affectation satisfaisant une formule booléenne ?
- CLIQUE : Le graphe G contient-il une clique de taille k ?
- CIRCUIT-HAM : Le graphe G contient-il un circuit hamiltonien ?
Tout problème d'optimisation peut être transformé en problème de décision (« Existe-t-il une solution de coût ≤ k ? »).
#Classe P
La classe P contient les problèmes de décision résolubles en temps polynomial par une machine de Turing déterministe.
Exemples de problèmes dans P :
- Tri d'un tableau
- Plus court chemin dans un graphe
- Test de primalité (AKS)
- Programmation linéaire
Les problèmes de P sont considérés comme efficacement résolubles.
#Classe NP
La classe NP (Non-deterministic Polynomial) contient les problèmes dont une solution peut être vérifiée en temps polynomial.
Formellement : un problème est dans NP s'il existe un certificat de taille polynomiale et un vérificateur polynomial.
Exemples :
- SAT : le certificat est une affectation, la vérification est en
- CLIQUE : le certificat est un ensemble de k sommets
- FACTORISATION : le certificat sont les facteurs premiers
Propriété fondamentale :
La question « P = NP ? » est l'un des problèmes du millénaire (prix d'un million de dollars).
#Réductions polynomiales
Une réduction polynomiale de A vers B, notée , est une fonction calculable en temps polynomial qui transforme toute instance de A en instance de B préservant la réponse.
Conséquence : Si et , alors .
#NP-complétude
Un problème est NP-complet si :
- Pour tout ,
Théorème de Cook-Levin (1971) : SAT est NP-complet.
#Problèmes NP-complets classiques
| Problème | Description | |----------|-------------| | SAT | Satisfaisabilité de formules booléennes | | 3-SAT | SAT avec clauses de 3 littéraux | | CLIQUE | Sous-graphe complet de taille k | | VERTEX-COVER | Couverture par sommets | | SUBSET-SUM | Sous-ensemble de somme s | | TSP | Voyageur de commerce (version décision) | | HAMPATH | Chemin hamiltonien | | GRAPH-COLORING | Coloration de graphe en k couleurs |
#Prouver la NP-complétude
Pour montrer qu'un problème L est NP-complet :
- Montrer que (donner un certificat et un vérificateur polynomial)
- Montrer qu'un problème NP-complet connu se réduit à L
#Classe coNP
La classe coNP contient les complémentaires des problèmes de NP.
Exemple : TAUTOLOGIE (une formule est-elle toujours vraie ?) est dans coNP.
#Classes intractables
#NP-difficile
Un problème est NP-difficile si tout problème de NP s'y réduit, sans nécessairement être dans NP.
Exemple : Le problème d'arrêt est NP-difficile mais pas dans NP (il est indécidable).
#PSPACE et EXPTIME
D'autres classes capturent des ressources différentes :
#Implications pratiques
#Face à un problème NP-complet
- Algorithmes exacts exponentiels pour les petites instances
- Heuristiques sans garantie (recuit simulé, algorithmes génétiques)
- Approximations avec ratio garanti
- Parameterized complexity : FPT si le paramètre est petit
- Cas particuliers : certaines restrictions rendent le problème polynomial
Exemple : 2-SAT est dans P, alors que 3-SAT est NP-complet.
#Exercices
- Montrez que VERTEX-COVER se réduit à INDEPENDENT-SET.
- Prouvez que si SAT ∈ P, alors P = NP.
- Donnez un algorithme de vérification polynomial pour le problème HAMPATH.