Problème de comptage
En théorie de la complexité et en théorie de la calculabilité, un problème de comptage est un type particulier de problème algorithmique. Étant donné un problème algorithmique consistant à trouver une solution, on peut définir le problème de comptage associé, qui consiste à calculer le nombre de solutions. Des classes de complexité spécifiques existent pour les problèmes de comptage, dont la plus connue #P qui est l'analogue de la classe NP pour les problèmes de décision.
Exemple introductif
[modifier | modifier le code]Un exemple classique de problème de décision est le problème 3-SAT qui consiste à décider si une formule en forme normale conjonctive où les clauses ont au plus 3 littéraux est satisfiable ou non. Le problème de recherche associé consiste à trouver une solution si elle existe. Le problème de comptage, appelé #3SAT, consiste à calculer le nombre de solutions[1].
Définition formelle
[modifier | modifier le code]Si R est un problème de recherche, alors
est la fonction de comptage correspondante ; elle compte le nombre de solutions en y du problème pour une valeur de x donnée.
désigne le problème de décision correspondant.
On distingue comme d'usage c R qui est un problème de recherche de #R qui est un problème de décision ; cependant c R peut être réduit au sens de Cook à # R (pour une réduction C appropriée) en utilisant une recherche dichotomique. C'est la définition de # R donnée ci-dessus, plutôt que comme graphe de c R, qui rend possible la recherche binaire.
Réductions
[modifier | modifier le code]Les réductions utilisées pour les problèmes de décision ne peuvent pas être directement utilisées pour les problèmes de comptage. À la place on introduit la notion de réduction parcimonieuse et la notion plus générale de réduction de comptage[1].
Soient deux fonctions. On dit que se réduit à par une réduction parcimonieuse s’il existe une fonction calculable en temps polynomial telle que, pour tout , on ait .
Une définition plus générale est : Soient deux fonctions. On dit que se réduit à par une réduction de comptage s’il existe deux fonctions calculables en temps polynomial telle que, pour tout , on ait .
La fonction de sortie s fait de cette réduction de comptage l’analogue d’une réduction de Turing.
Classe de complexité de comptage
[modifier | modifier le code]Si NX est une classe de complexité associée à des machines non déterministes, alors #X = { #R | R ∈ NX } est l'ensemble des problèmes de comptage associés à chaque problème de recherche dans NX . En particulier, #P est la classe des problèmes de comptage associés aux problèmes de recherche NP. Tout comme la classe NP a des problèmes NP-complets via des réductions many-one appropriées, la classe #P a des problèmes complets via des réductions parcimonieuses, qui sont des transformations de problèmes qui préservent le nombre de solutions. Par exemple le problème #3SAT cité plus haut est #P-complet[1]. Un autre exemple est #CLIQUE, qui consiste étant donné un graphe G, et un entier k, à calculer le nombre de cliques de taille k dans le graphe G[1].
Le problème #P-complet le plus connu est le calcul du permanent[2].
Théorème de Toda
[modifier | modifier le code]Un théorème remarquable à propos des problèmes de comptage est le théorème de Toda. Intuitivement, ce théorème dit que la classe #P est aussi puissante que toute la hiérarchie polynomiale[1]. Plus formellement, la hiérarchie polynomiale PH, est incluse dans la classe P muni d'un oracle #P: PH ⊆ P#P.
Notes et références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Counting problem (complexity) » (voir la liste des auteurs).
- Sylvain Périfel, « Complexité algorithmique », (consulté le ), p. 216-217.
- (en) Leslie G. Valiant, « The Complexity of Computing the Permanent », Theoretical Computer Science, Elsevier, vol. 8, no 2, , p. 189-201 (DOI 10.1016/0304-3975(79)90044-6).
Voir aussi
[modifier | modifier le code]- GapP
Liens externes
[modifier | modifier le code]- « counting problem » sur Planetmath
- « counting complexity class » sur Planetmath