P (complexité)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Classe P.

La classe P est une classe très importante de la théorie de la complexité, un domaine de l'informatique théorique et des mathématiques. Par définition, un problème de décision est dans P s'il peut être décidé par une machine de Turing déterministe en temps polynomial par rapport à la taille de l'entrée. On dit que le problème peut être décidé en temps polynomial.

Les problèmes dans P sont considérés comme « faisables » (feasible en anglais), faciles à résoudre (dans le sens où on peut le faire relativement rapidement). C'est la thèse de Cobham émise par le scientifique américain Alan Cobham[1],[2]. René Lalement attribue cette thèse à Cook.[3] La classe P est incluse dans la classe NP, conduisant à l'un des grands problèmes ouverts de la théorie de la complexité, à savoir : P est-il égal à NP ?

Exemples de problèmes dans P[modifier | modifier le code]

Un problème est dans P s'il existe un algorithme qui le décide en temps polynomial. Citons :

  • les restrictions 2SAT et HORNSAT problème SAT sont dans P.
  • Connexité dans un graphe : Un exemple de problème polynomial est celui de la connexité dans un graphe. Étant donné un graphe à n sommets (on considère que la taille de la donnée, donc du graphe, est son nombre de sommets), il s'agit de savoir si toutes les paires de sommets sont reliées par un chemin. Un algorithme de parcours en profondeur construit un arbre couvrant du graphe à partir d'un sommet. Si cet arbre contient tous les sommets du graphe, alors le graphe est connexe. Le temps nécessaire pour construire cet arbre est au plus c.n² (où c est une constante et n le nombre de sommets du graphe), donc le problème est dans la classe P.

Aussi, parfois la preuve de l'appartenance à P, qui se fait généralement par la découverte d'un algorithme polynomial, a demandé des années de recherche :

  • Le test de primalité AKS est un algorithme qui montre que le problème de savoir si un entier est premier ou non peut être résolu par un algorithme polynomial.

Définitions formelles[modifier | modifier le code]

Définition classique à l'aide de machines de Turing[modifier | modifier le code]

On note TIME(t(n)) la classe des problèmes de décision qui peuvent être décidés en temps de l'ordre de grandeur de t(n) sur une machine déterministe (où n est la taille de l'entrée). Alors par définition

Définition avec des circuits[modifier | modifier le code]

P peut aussi être défini à l'aide de familles uniformes de circuits booléens. Un langage L est dans P si, et seulement si, il existe une famille de circuits booléens , uniforme en temps polynomial (c'est-à-dire qu'il existe une machine de Turing déterministe qui produit sur l'entrée 1n) telle que

  • pour tout , prend n bits en entrée et retourne un bit de sortie
  • Pour tout x dans L,
  • Pour tout x qui n'est pas dans L,

La définition par circuits peut être affaiblie en utilisant une famille uniforme en espace logarithme et donne toujours une définition équivalente pour la classe P.[réf. nécessaire] Si, on relâche l'hypothèse d'uniformité, on définit la classe P/poly.

Relations avec les autres classes[modifier | modifier le code]

Représentations des inclusions des classes usuelles.

On a l'inclusion évidente P NP, mais l'une des grandes questions ouvertes de l'informatique théorique est le problème de savoir si P = NP ou pas.

On peut placer P dans la hiérarchie des langages, classés selon l'espace requis : elle contient NL (la classe des problèmes pouvant être résolus sur une machine non-déterministe en espace logarithmique) et est contenu par PSPACE (la classe des problèmes pouvant être résolus en espace polynomial). Les inclusions sont les suivantes (on ne sait pas si elles sont strictes) :

LNLNCPNPPSPACEEXPTIMENEXPTIMEEXPSPACE
PEXPTIME (d'après le théorème de hiérarchie en temps déterministe)

Par ailleurs, P est le premier niveau de la hiérarchie polynomiale. Et P est incluse dans les classes polynomiales sur des machines plus puissantes (quantiques ou utilisant du hasard par exemple), comme ZPP, BPP et BQP.

Problèmes P-complets[modifier | modifier le code]

Un problème de décision A est dit P-complet, ou complet pour la classe P, s'il est dans la classe P et si tout problème de la classe P peut être réduit à A en espace logarithmique (c'est-à-dire que la traduction d'une instance x du problème à une instance de A peut s'effectuer en utilisant un espace O(log |x|)). Les problèmes suivant sont P-complets.

  • Horn-SAT : le problème SAT général est NP-complet, mais sa restriction aux ensembles de clauses de Horn est dans P. Il est P-complet.
  • Problème de la valeur d'un circuit (circuit value) : ce problème, en anglais circuit value problem ou CVP (en), consiste à déterminer si, pour un circuit booléen donné, le résultat de la fonction réalisée sur une entrée donnée correspond à une valeur donnée.
  • Le problème qui consiste à savoir si une grammaire algébrique est vide ou pas[4].
  • Le problème de vérification de modèles (model checking en anglais) d'une formule de la logique temporelle CTL est P-complet[5]. Plus précisément, la démonstration[5] montre que le model checking d'une formule du fragment syntaxique de CTL avec les opérateurs AX (pour tout successeur) et EX (il existe un successeur) est P-difficile. Ainsi, le model checking d'une formule de la logique modale K est P-complet.

Propriétés supplémentaires[modifier | modifier le code]

On parle dans certains cas, d'algorithmes en temps fortement ou faiblement polynomial. Cette distinction existe pour les problèmes dont l'entrée contient des entiers. On parle de temps faiblement polynomial si les entiers doivent être donnés en écriture unaire (c'est-à-dire que le nombre n compte pour une taille n) pour avoir un temps polynomial, et on parle de temps fortement polynomial si même l'écriture compacte (n a taille log(n)) donne une complexité polynomiale.

Voir aussi[modifier | modifier le code]

Classe NP

P/poly

Bibliographie[modifier | modifier le code]

(en) Sanjeev Arora et Boaz Barak, Computational Complexity : A Modern Approach, Cambridge University Press, (ISBN 0-521-42426-7), chap. 1 (« The computational model —and why it doesn’t matter »)

Lien externe[modifier | modifier le code]

(en) La classe P sur le Complexity Zoo

Notes et références[modifier | modifier le code]

  1. (en) Sanjeev Arora et Boaz Barak, Computational Complexity : A Modern Approach, Cambridge University Press, (ISBN 0-521-42426-7), chap. 1 dans les notes historiques.
  2. Alan Cobham, « The intrinsic computational difficulty of functions », Proceedings of the 1964 International Congress for Logic, Methodology, and Philosophy of Science, North Holland,‎ .
  3. René Lalement, logique réduction résolution, Masson, p. 344
  4. Neil D. Jones et William T. Laaser, « Complete Problems for Deterministic Polynomial Time », Theor. Comput. Sci., vol. 3, no 1,‎ , p. 105-117.
  5. a et b Philippe Schnoebelen, The Complexity of Temporal Logic Model Checking, (lire en ligne).