En informatique théorique, un certificat est, de façon simplifiée, une information permettant de trouver plus facilement le résultat d'un calcul. Cette notion apparait dans notamment deux aspects de l'étude de complexité en informatique : l'étude des classes de complexités et la complexité d'évaluation de fonction booléen .
Étant donné un problème de décision, un certificat est une information que l'on ajoute à une donnée du problème, pour certifier (au sens où la vérification devient «facile»), que la réponse au problème pour cette donnée soit «oui» ou «non».
Nombre composé :
Pour certifier qu'un nombre est composé (i.e. n'est pas premier), il suffit d'exhiber un facteur. Par exemple, pour certifier que 15 est un nombre composé, le nombre 5 est un certificat: il suffit alors de vérifier que 5 divise 15.
Coloration de graphe
Pour vérifier qu'un graphe non orienté est colorable avec trois couleurs, c'est-à-dire que l'on peut colorier chaque sommet d'une couleur de façon que deux sommets voisins ne soient pas de la même couleur, il suffit d'exhiber une telle coloration. Pour certifier qu'un graphe est colorable, une coloration est un certificat: il suffit alors de vérifier que la coloration attribue bien des couleurs différents à deux sommets voisins.
Sur un alphabet , un langage est dans NP s'il existe un polynôme et un langage dans P, tels que pour un mot de taille : .
L'interprétation est la suivante: est dans le langage L si et seulement il existe un certificat de taille polynomiale.
On se place dans le contexte d'une fonction booléen, c'est-à-dire . Le but est d'estimer la complexité de l'évaluation d'une telle fonction.
On a en notre entrée , est la complexité est le nombre de variables à évaluer dans le pire cas.
Voir Arbre de décision
Pour évaluer aucune évaluation est nécessaire.
À l'opposé nécessite d'évaluer toutes ces variables.
Pour la fonction , la fonction sur bits. Le fait de dire que cela permet de décider que .
Pour la fonction . Pour savoir que il suffit de connaitre un "bloc" où tous les entiers valent 0. Pour savoir que il suffit de connaitre un 1 pour chaque "bloc".
Un assignement partiel est un élément de . On désigne par le nombre de 0 et de 1.
Par exemple .
Si le ième élément vaut 0 (resp. 1) alors on va étudier les entrée lorsque (resp. 1). Lorsque cette propriété est toujours vrai, on notera
Définition : est un 0-certificat si et seulement si pour tous x tels que , alors . De même on définit la notion de -certificat.
On définis la complexité de certificat : et on étend cela pour tous éléments en prenant 'les pires cas' :
.
Exemple: car pour tous , le certificat qui vaut 1 seulement sur l'un des bit auquel vaut 1.
A l'opposé pour l'entrée , le seul certificat possible est de taille . Ainsi .
Si on note la complexité déterministe et la complexité aléatoire sans erreur, on a les inégalités suivantes :