Aller au contenu
Wikipédia l'encyclopédie libre

P/poly

Un article de Wikipédia, l'encyclopédie libre.

En informatique théorique, plus précisément en théorie de la complexité, P/poly est la classe de problèmes de décision décidés par une famille de circuits booléens de tailles polynomiales. Cette classe a été introduite par Karp et Lipton en 1980[1] . Cette classe est importante, car comme P est incluse dans P/poly, si on démontre que NPP/poly, alors on résout le problème ouvert P est différent de NP [2] .

Définitions

[modifier | modifier le code ]

Il y a deux définitions équivalentes, la première donnée avec le modèle de calcul des circuits booléens[3] , l'autre avec des machines de Turing[4] .

Définition par circuits

[modifier | modifier le code ]

Une famille de circuits C {\displaystyle {\mathcal {C}}} {\displaystyle {\mathcal {C}}} est une suite infinie C 0 {\displaystyle {\mathcal {C}}_{0}} {\displaystyle {\mathcal {C}}_{0}}, C 1 {\displaystyle {\mathcal {C}}_{1}} {\displaystyle {\mathcal {C}}_{1}}, ..., C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}}, ... où C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}} est un circuit booléen n {\displaystyle n} {\displaystyle n} bits d'entrée. Lorsque x {\displaystyle x} {\displaystyle x} est une chaîne de bits de longueur n {\displaystyle n} {\displaystyle n}, on notera C n [ x ] {\displaystyle {\mathcal {C}}_{n}\left[x\right]} {\displaystyle {\mathcal {C}}_{n}\left[x\right]} le résultat de l'évaluation du circuit C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}} lorsque le i {\displaystyle i} {\displaystyle i}ème bit d'entrée de C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}} est affecté à la valeur du i {\displaystyle i} {\displaystyle i}ème bit de x {\displaystyle x} {\displaystyle x}, pour tout i { 1 , 2 , . . . , n } {\displaystyle i\in \{1,2,...,n\}} {\displaystyle i\in \{1,2,...,n\}}.

La classe P/poly est la classe des langages L { 0 , 1 } {\displaystyle L\subseteq \{0,1\}^{*}} {\displaystyle L\subseteq \{0,1\}^{*}} tels qu'il existe une famille de circuits C {\displaystyle {\mathcal {C}}} {\displaystyle {\mathcal {C}}} et un polynôme p {\displaystyle p} {\displaystyle p} tels que :

  • la taille de C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}} est au plus p ( n ) {\displaystyle p(n)} {\displaystyle p(n)} ;
  • pour tout x { 0 , 1 } {\displaystyle x\in \left\{0,1\right\}^{*}} {\displaystyle x\in \left\{0,1\right\}^{*}}, x L {\displaystyle x\in L} {\displaystyle x\in L} si et seulement si C n [ x ] {\displaystyle {\mathcal {C}}_{n}[x]} {\displaystyle {\mathcal {C}}_{n}[x]} est vrai, où n {\displaystyle n} {\displaystyle n} est la taille de x {\displaystyle x} {\displaystyle x}.

On dit d'un langage satisfaisant cette propriété qu'il a des circuits polynomiaux.

Définition par machine de Turing avec conseils

[modifier | modifier le code ]

On peut définir P/poly de manière équivalente en utilisant des machines de Turing déterministes qui prennent conseil. Une telle machine, a le droit d'utiliser un mot fini cn, qui sert de conseil pour traiter toutes les instances x de taille n. Un problème est dans P/poly s'il existe une machine de Turing M en temps polynomial et une suite de mots finis c0, c1, c2,... où cn est de taille polynomiale en n, tels que pour tout mot x de longueur n, x est une instance positive ssi M(x, cn) = 1. Les mots finis c0, c1, c2,... s'appellent des conseils.

Propriétés

[modifier | modifier le code ]

P/poly et P

[modifier | modifier le code ]

La classe P est incluse dans la classe P/poly (P peut être définie comme P/poly sauf avec des familles de circuits uniformes en temps polynomial). P/poly contient des problèmes décidables et hors de P[réf. nécessaire] .

P/poly contient des langages indécidables

[modifier | modifier le code ]

Remarquons qu'il n'est pas nécessaire que le circuit correspondant à une entrée de taille n {\displaystyle n} {\displaystyle n} puisse être construit en temps polynomial, ni même de façon déterministe. Cela a une conséquence étrange : il existe des langages indécidables qui ont des circuits polynomiaux. En effet, soit L {\displaystyle L} {\displaystyle L} un langage indécidable sur l'alphabet { 0 , 1 } {\displaystyle \{0,1\}} {\displaystyle \{0,1\}}, et U {\displaystyle U} {\displaystyle U} le langage des mots 1 n {\displaystyle 1^{n}} {\displaystyle 1^{n}} (autrement dit, n {\displaystyle n} {\displaystyle n} écrit en unaire) tels que n {\displaystyle n} {\displaystyle n}, écrit en binaire, est dans L {\displaystyle L} {\displaystyle L}. Il est clair que U {\displaystyle U} {\displaystyle U} est indécidable, pourtant il a des circuits polynomiaux : si n {\displaystyle n} {\displaystyle n} est dans L {\displaystyle L} {\displaystyle L}, alors C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}} est la conjonction des n {\displaystyle n} {\displaystyle n} bits d'entrée ; sinon C n {\displaystyle {\mathcal {C}}_{n}} {\displaystyle {\mathcal {C}}_{n}} est juste le booléen faux.

Théorème d'Adleman

[modifier | modifier le code ]

Le théorème d'Adleman, démontré par Leonard Adleman (Adleman 1978), énonce que BPP est inclus dans P/poly[5] .

Importance de P/poly

[modifier | modifier le code ]

P/poly a une place importante en théorie de la complexité : plusieurs propriétés importantes s'expriment à l'aide de P/poly :

Caractérisation

[modifier | modifier le code ]

Il y a équivalence[6] entre :

  1. Un langage A est dans P/poly
  2. il existe un langage creux S tel que A est réductible au sens de Turing en temps polynomial à S,
  3. il existe un langage unaire T tel que A est réductible au sens de Turing en temps polynomial à T.

L'équivalence entre 1 et 2 est attribué à A. Meyer selon [7] (comme indiqué dans [6] ) et l'équivalence entre 2 et 3 est montré dans [8] .

Références

[modifier | modifier le code ]
  1. Richard M. Karp et Richard J. Lipton, « Some Connections Between Nonuniform and Uniform Complexity Classes », Proceedings of the Twelfth Annual ACM Symposium on Theory of Computing, ACM, sTOC '80,‎ , p. 302–309 (ISBN 9780897910170, DOI 10.1145/800141.804678 , lire en ligne, consulté le )
  2. (en) Sanjeev Arora et Boaz Barak, Computational Complexity : A Modern Approach, Cambridge University Press, (ISBN 0-521-42426-7), chap. 6 (« Boolean circuits »), p. 6.5
  3. (en) Sanjeev Arora et Boaz Barak, Computational Complexity : A Modern Approach, Cambridge University Press, (ISBN 0-521-42426-7), chap. 6 (« Boolean circuits »), p. 108, Def. 6.5
  4. (en) Sanjeev Arora et Boaz Barak, Computational Complexity : A Modern Approach, Cambridge University Press, (ISBN 0-521-42426-7), chap. 6 (« Boolean circuits »), p. 6.3, Th. 6.18
  5. Sylvain Perifel, Complexité algorithmique, Ellipses, , 432 p. (ISBN 9782729886929, lire en ligne), chap. 625 (« Circuits et algorithmes probabilistes »), p. 163
  6. a et b (en) Ronald V. Book, « On Sets with Small Information Content », dans Kolmogorov Complexity and Computational Complexity, Springer Berlin Heidelberg, coll. « EATCS Monographs on Theoretical Computer Science », (ISBN 9783642777356, DOI 10.1007/978-3-642-77735-6_3 , lire en ligne), p. 23–42
  7. L. Berman et J. Hartmanis, « On Isomorphisms and Density of $NP$ and Other Complete Sets », SIAM Journal on Computing, vol. 6, no 2,‎ , p. 305–322 (ISSN 0097-5397 , DOI 10.1137/0206023 , lire en ligne, consulté le )
  8. (en-GB) José Luis Balcázar, Josep Díaz et Joaquim Gabarró, Structural Complexity I, coll. « EATCS Monographs on Theoretical Computer Science Series », (DOI 10.1007/978-3-642-97062-7 , lire en ligne)

Bibliographie

[modifier | modifier le code ]
  • Jean Goubault-Larrecq, Classes de complexité randomisées, [(fr) lire en ligne]
  • (en) Leonard M. Adleman, « Two theorems on random polynomial time », dans Proceedings of the Nineteenth Annual IEEE Symposium on Foundations of Computer Science, , 75–83 p. (DOI 10.1109/SFCS.1978.37 )
  • (en) Richard M. Karp et Richard J. Lipton, « Some Connections between Nonuniform and Uniform Complexity Classes », dans Proceedings of the 12th Annual ACM Symposium on Theory of Computing, April 28-30, 1980, Los Angeles, California, USA, , 302-309 p.

Lien externe

[modifier | modifier le code ]
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « P/poly » (voir la liste des auteurs).

(en) La classe P/poly sur le Complexity Zoo


v · m
Classes de complexité
(liste)
Classes classiques
Classes randomisées et quantiques
Autres
Classes de fonctions calculables
Hiérarchies
Familles de classes
Théorèmes et outils
Théorèmes structurels
Outils et réductions
Approches non-standard

AltStyle によって変換されたページ (->オリジナル) /