Une réduction polynomiale est une transformation d’un problème vers un autre qui préserve les réponses et s’exécute en temps polynomial.
Types de réductions
Réduction de Karp ()
Transformation d’instance en temps polynomial :
Réduction de Cook-Turing ()
Autorise des appels multiples à un oracle pour résoudre le problème.
Propriétés fondamentales
Transitivité
Préservation de la difficulté
Si alors :
Application : NP-complétude
Pour prouver qu’un problème est NP-difficile, il suffit de :
- Choisir un problème déjà connu comme NP-complet
- Construire une réduction
Théorème
Si est NP-complet et avec NP, alors est NP-complet.
Preuve : Soit NP quelconque.
- NP-complet
- (par hypothèse)
- Par transitivité :
Donc est NP-difficile, et comme NP, est NP-complet.