Conseil (informatique théorique)
En théorie de la complexité, un conseil est une entrée supplémentaire passée à une machine de Turing qui dépend de la taille de l'entrée, afin d'aider la machine à reconnaître un langage. Cette notion est introduite par Richard Karp et Richard J. Lipton en 1982[1].
Définitions
Étant donnés une fonction et une classe de complexité , la classe est l'ensemble des langages tels qu'il existe un langage et une suite de conseils de taille tels que pour toute entrée de taille , si et seulement si .
Étant donnés un ensemble de fonctions et une classe de complexité , on définit :
Une classe importante est la classe P/poly, qui est donc l'ensemble des problèmes de décision décidés en temps polynomial avec un conseil de taille polynomiale. P/poly est en fait également la classe des problèmes de décision décidés par une famille de circuits booléens de tailles polynomiales.
Résultats
Quelques exemples de résultats sur les classes de complexité définies par machines de Turing avec conseils :
- si alors ;
- ;
- d'après le théorème de Karp-Lipton, si alors : la hiérarchie polynomiale s'effondre au second niveau.
Notes et références
Références
- (en) Richard Karp et Richard J. Lipton, « Turing machines that take advice », L'Enseignement mathématique, vol. 28,‎ , p. 191-209 (lire en ligne)
Bibliographie
- (en) Sanjeev Arora et Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, , 579 p. (ISBN 978-0-521-42426-4, lire en ligne).
- Sylvain Perifel, Complexité algorithmique, Éditions Ellipses, , 432 p. (ISBN 978-2-729-88692-9, lire en ligne).