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 :

  1. Choisir un problème déjà connu comme NP-complet
  2. 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.

Exemples de chaînes de réductions