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

modifier

Étant donnés une fonction f:ℕ→ℕ et une classe de complexité 𝖢, la classe 𝖢/f(n) est l'ensemble des langages A tels qu'il existe un langage B∈𝖢 et une suite de conseils (an) de taille f(n) tels que pour toute entrée x de taille n, x∈A si et seulement si (x,an)∈B.

Étant donnés un ensemble ℱ de fonctions f:ℕ→ℕ et une classe de complexité 𝖢, on définit :

𝖢/ℱ=⋃f∈ℱ𝖢/f(n)

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

modifier

Quelques exemples de résultats sur les classes de complexité définies par machines de Turing avec conseils :

  • si 𝖭𝖯⊆𝖯/𝗅𝗈𝗀 alors 𝖯=𝖭𝖯 ;
  • 𝖼𝗈𝖭𝖤𝖷𝖯𝖳𝖨𝖬𝖤⊆𝖭𝖤𝖷𝖯𝖳𝖨𝖬𝖤/𝗅𝗂𝗇 ;

Notes et références

modifier

Références

modifier
  1. ↑ (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

modifier