Adloun

Lire une réduction dans le bon sens

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 31 — Décidabilité et classes de complexité

Énoncé

Un élève veut montrer qu'un problème est difficile. Il écrit : « je réduis à sat : à toute instance de , j'associe en temps polynomial une formule équivalente. Donc est aussi difficile que sat, donc est np-difficile. » Où est la faute ? Qu'a-t-il démontré en réalité ?

Corrigé

La faute est le sens de la réduction. Il a construit , et cela signifie : sat est au moins aussi difficile que . Rien sur la difficulté de .

Ce qu'il a démontré, et ce n'est pas rien : . Car si l'on sait traduire toute instance de en une formule équivalente en temps polynomial, alors le certificat de est la valuation qui satisfait la formule traduite : on la vérifie en temps polynomial en traduisant puis en évaluant. Il a donc prouvé l'appartenance, pas la difficulté.

Ce qu'il aurait fallu écrire : . C'est-à-dire traduire toute formule en une instance de , de sorte que la formule soit satisfiable si et seulement si l'instance est positive. Alors, savoir résoudre vite donnerait un algorithme rapide pour sat, donc pour tout .

Deux formulations à retenir, et elles disent la même chose :

Et le moyen mnémotechnique le plus sûr : la réduction transporte l'algorithme de la cible vers la source, et la difficulté de la source vers la cible. Elles vont en sens inverse, ce qui est la raison même de la confusion.

Ainsi, un problème np-complet est celui pour lequel les deux réductions existent : (il est difficile) et (il est dans ).

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.