Problème de décision
Un problème de décision est un problème, portant sur un domaine d'entrées, et dont la réponse est « oui » ou « non ».
Une instance d'un problème de décision est représentée par une entrée donnée, avec sa solution attendue qui est une valeur booléenne.
Fonction calculable
Une fonction calculable $f$ est une fonction qui peut être implémentée par un algorithme. On dit que l'algorithme permet de calculer la fonction, ce qui implique pour toute valeur du domaine d'entrées $x$, l'algorithme produit un résultat y (« oui » ou « non ») tel que $y = f(x)$.
Un problème de décision peut être résolu si l'on peut construire un algorithme (et donc une fonction calculable) qui pour toute instance du problème en entrée produit le résultat attendu.
Illustration
Exemples de problèmes de décision
Problème de satisfiabilité SAT : Étant donnée une formule booléenne, existe-t-il une affectation des variables qui rend la formule vraie ?
Problème de la clique : Étant donné un graphe et un entier k, existe-t-il une clique de taille au moins k dans le graphe ?
Contre-exemples
Problème du voyageur de commerce : Étant donné un ensemble de villes et les distances entre elles, trouver le plus court chemin visitant chaque ville exactement une fois. Ici, la réponse attendue est une route optimale et non une réponse booléenne.
Multiplication de deux entiers : Étant donné deux nombres entiers, le problème consiste à calculer leur produit. La réponse attendue est un nombre et non un simple « oui » ou « non ».
Transformation d'un problème d'optimisation en problème de décision
Un problème d'optimisation peut être converti en problème de décision en introduisant un seuil.
Exemple : Problème du voyageur de commerce
- Problème d'optimisation : Trouver le plus court chemin visitant chaque ville exactement une fois.
- Transformation en problème de décision : Étant donné un entier k, existe-t-il un chemin pour traverser toutes les villes dont la longueur est inférieure ou égale à k ?