Réduction (complexité)

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 27 janvier 2019 à 23:25 et modifiée en dernier par KolbertBot (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

En calculabilité et en théorie de la complexité, une réduction est un algorithme transformant un problème en un autre.

Cet outil sert à montrer qu'un problème est au moins aussi difficile (i.e. plus difficile ou aussi difficile) qu'un autre : si un problème A peut être réduit à (i.e. transformé en) un problème B, et que le problème A est difficile alors le problème B est au moins aussi difficile. On écrit alors AB.

Les réductions permettent entre autres de prouver que des problèmes sont indécidables ou bien sont complets pour une certaine classe de complexité. Dans certains cas, une réduction peut aussi permettre de montrer qu'un problème est facile, par exemple AB avec ≤ une réduction en temps polynomial avec B appartenant à P assure que A est aussi dans P[1].

Exemple introductif

Supposons que l'on veuille faire des calculs sur les entiers et que l'addition, la soustraction et la division soient des opérations autorisées. On veut savoir si faire une multiplication (problème M) est plus ou moins difficile que d'élever un nombre au carré (problème C). Un sens est facile : si l'on sait faire une multiplication, on peut élever un nombre au carré en le multipliant par lui-même, donc CM. Mais l'autre inégalité (MC) est vraie aussi, grâce à la formule :

Les deux problèmes sont aussi difficiles l'un que l'autre (ils peuvent être réduits l'un à l'autre).

Définitions

Les définitions qui suivent mettent en jeu des entiers car les instances des problèmes sont codées dans ℕ.

Étant donnés deux ensembles d'entiers naturels A et B, et un ensemble de fonctions F de ℕ dans ℕ, clos par composition, A est dit réductible à B par F si :

On écrit : .

Soit S un sous-ensemble de P(ℕ) et ≤ une réduction, alors S est dit clos par ≤, si

Un sous-ensemble A de ℕ est dit difficile pour S, si

Enfin un sous-ensemble A de N est dit complet pour S, si A est difficile pour S et A appartient à S.

Exemples

Pour prouver qu'un problème est NP-complet, on peut réduire un problème NP-complet connu (comme le problème SAT) à ce problème, à l'aide d'une réduction polynomiale.

Dans le domaine de la calculabilité, on peut par exemple prouver le théorème de Rice par réduction du problème de l'arrêt.

Types de réduction

Il existe plusieurs types de réduction.

  • Réduction de Turing
  • Réduction de Cook
  • Réduction en temps polynomial
  • Réduction en espace logarithmique
  • Réduction du premier ordre[2]
  • Les réductions de Levin sont des fonctions polynomiales, qui en plusieurs transforment les certificats[3]
  • Réduction en temps polynomial par table de vérité : un problème A se réduit en temps polynomial par table de vérité si on peut décider si x appartient à A, en précalculant plusieurs questions d'appartenance de mots à B et décrire une formule booléenne sur les réponses à ses questions pour décider l'appartenance de x à A[4]. Plus précisément, Buss et Hay introduisent des variantes selon que la formule booléenne est représenté par son arbre syntaxique, un circuit ou la table de vérité[5].

Voir aussi

Gadget

Notes et références

  1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Introduction à l'algorithmique, Dunod, [détail de l’édition] chap 34, NP-completude
  2. (en) Immerman, Descriptive complexity
  3. (en) Arora, Barak, Computational complexity - A modern approach, p. 55
  4. (en) « A comparison of polynomial time reducibilities », Theoretical Computer Science, vol. 1, no 2,‎ , p. 103–123 (ISSN 0304-3975, DOI 10.1016/0304-3975(75)90016-X, lire en ligne, consulté le )
  5. Samuel R. Buss et Louise Hay, « On Truth-table Reducibility to SAT », Inf. Comput., vol. 91, no 1,‎ , p. 86–102 (ISSN 0890-5401, DOI 10.1016/0890-5401(91)90075-D, lire en ligne, consulté le )