• Aucun résultat trouvé

Partie I Introduction à la cryptologie partagée 23

1.2 Rappels de complexité

1.2.3 Classes de complexité

On peut définir de manière formelle les classes de complexité P, N P, et BPP. On considère ici uniquement la complexité en temps. La complexité est analysée en terme de comportement asymptotique.

Cette convention permet d’éliminer certaines entrées de petite taille sur lesquelles la machine pourrait se comporter exceptionnellement bien et nous pouvons alors nous focaliser sur le comportement “général”

de la machine.

La classe de complexitéP

On dit qu’une machine de Turing s’exécute en temps polynomial s’il existe un polynômeP, tel que le nombre d’instructions est inférieur àP(n)oùnest la taille de l’entréew(le nombre de bits du motw par exemple). La classe de complexitéP(Polynomial) représente l’ensemble des langagesLqui peuvent être reconnus de manière “efficace”, i.e., par une machine de Turing déterministe en temps polynomial.

9. En effet, on peut simuler tout calcul sur une TM par un calcul sur une RAM et réciproquement. De plus, cette simulation est réalisée en temps polynomial en fonction de la taille de l’entrée.

10. Ce n’est pas une thèse au sens d’un résultat prouvé, mais plutôt une thèse au sens philosophique de ce terme.

Une telle machine n’a qu’un seul prochain état qui dépend de contenu de l’état couranteet du symbole ssous la tête de lecture. Un langageLest dansP si et seulement s’il existe une machine de TuringM et un polynômeQ(.)tel que pour toutwsuffisamment grand,

1. w∈Lssi la machineM reconnaît le motw: on noteM(w) = 1, 2. M termine après au plusQ(|w|)étapes.

On dit que alors la machineM reconnaît ou décide le langageL.

La classe de complexitéN P

La classe de complexité N P (Non-déterministe en temps Polynomial) représente l’ensemble des langages qui peuvent être acceptés11de manière “efficace” par une machine de Turing non-déterministe.

Une machine de Turing non déterministe est une machine de Turing où la fonctionδdéfinie à la section précédente peut prendre un ensemble de valeurs en fonction de l’état eet du symbole s. Dans l’arbre de calcul, il y a au moins une branche qui mène à un état final acceptant si le mot d’entrée est dans le langage.

Algorithme deterministe

Arbre de calcul d’un Arbre de calcul d’un

Algorithme non deterministe

FIG. 1.1: Arbres de calculs.

Cependant, la découverte de cette branche n’est pas toujours facile à trouver car le nombre de branches dans l’arbre des calculs peut être exponentiel. Ainsi, en temps polynomial, la machine ne peut pas explorer toutes les branches.

De manière informelle, on peut aussi voirN P comme la classe de tous les langages qui admettent un “court” certificat d’appartenance à un langage. Ce certificat est par exemple, la représentation de la branche qui mène à un état acceptant. Étant donné ce certificat, appelé aussi un témoin, l’appartenance à un langage peut être efficacement vérifiée, i.e., en temps polynomial.

Définition 2 La classe de complexitéN P est la classe de tous les langagesLpour lesquels il existe une relationR⊆ {0,1}× {0,1}, telle que

1. Rest décidable en temps polynomial,

11. Quand une machine de Turing “reconnaît” ou “décide” un langage, elle atteint toujours l’état final. Si elle “accepte” un langage et que le mot n’est pas dans le langage, alors la machine peut ne jamais finir.

2. il existe un polynôme ptel quew ∈ Lsi et seulement s’il existe un témoint,|t| ≤ p(|w|)pour lequel(w, t)∈R

Il est clair que P ⊆ N P. La question que tente de résoudre la théorie de la complexité depuis le début des années 70 est “est-ce queP =? N P”.

SiN Pest la classe des langages qui ont des certificats de “petite” taille, alors co-N P12doit contenir les problèmes qui ont des disqualifications de petite taille. C’est-à-dire qu’un langageLest dans co-N P, si les mots qui n’appartiennent pas àLont des preuves courtes qu’ils ne sont pas dansL; et seules les mots qui n’appartiennent pas àLont de telles preuves.

Considérons le problème PRIMES qui consiste à déterminer si un entier N codé en binaire (un mot donné) est un nombre premier. Ce problème est dans co-N P. En effet, un diviseur propre de N (différent de 1 et de N) suffit pour disqualifierN de l’ensemble des nombres premiers. Enfin, on peut prouver quePRIMES∈ N P∩co-N P. En effet, le théorème suivant permet de construire récursivement des certificats de primalité pour n’importe quel nombre premier. Ces certificats sont de taille polynomiale et le temps pour les vérifier est polynomial (cf. [142], 10.2, pages 222–223).

Théorème 1. Un entier p > 1 est premier ssi il existe r (1 < r < p)tel que rp−1 = 1 mod petr

p−1

qi 6= 1 modppour tout diviseurqidep−1.

AlorsC(r;q1, . . . , qk)oùqiparcours l’ensemble des diviseurs dep−1est un certificat de primalité de pet par conséquentPRIMES∈ N P.

La classe de complexitéBPP

Une machine de Turing probabiliste en temps polynomial PPTM est une TM13qui possède en plus un ruban de bits aléatoires, et qui, sur l’entréewde taillen, s’exécute en un nombre polynomialP(n) d’étapes. La plupart des algorithmes en cryptographie sont représentés par des machines de Turing pro-babilistes s’exécutant en temps polynomial (PPTM). La classe de problèmeBPP contient les problèmes qui sont décidables par un algorithme probabiliste. Il s’agit de machines de Turing qui ont accès à un ruban aléatoire. Ce ruban aléatoire permet à la machine d’indiquer la branche choisie dans l’arbre des calculs. La machine n’est donc pas déterministe car à chaque étape, elle peut prendre un ensemble fini d’états différents en fonction du ruban aléatoire.

Un langageLest dansBPP (Probabilité d’erreur Bornée en temps Polynomial) si et seulement s’il existe une TM,M(w, r)oùrest le contenu du ruban aléatoire, et des polynômespet`tels que ssur le mot d’entréew,

1. w∈L⇒ Pr

|r|<`(|w|)[M(w, r)accepte]≥ 23. 2. w6∈L⇒ Pr

|r|<`(|w|)[M(w, r)accepte]≤ 13.

3. M(w, r)termine toujours après au plusp(|w|)étapes.

Il est clair queBPP =co-BPP car la définition est symétrique. Nous savons aussi queP ⊆ BPP car il suffit d’ignorer le ruban aléatoire. Cependant, nous ne savons pas si cette inclusion est stricte ou

12. SoitCune classe de problèmes, alors co-Cest l’ensemble des problèmesLtels queL¯CL¯représente l’ensemble des mots qui ne sont pas dans le langageL. Autrement dit, on réfléchit sur les mots qui ne sont pas dans le langage et non plus sur les mots qui sont dans le langage.

13. On rappelle que les machines de Turing peuvent avoir plusieurs rubans.

non, bien qu’une telle séparation soit conjecturée. Un exemple de langage connu pour être dans BPP et conjecturé non dans P est le langage PRIMES. Le test de primalité de Miller-Rabin présente un algorithme probabiliste en temps polynomial prouvant que PRIMES∈ BPP. Mais, aucun algorithme connu à ce jour permet de décider en temps polynomial si un mot est un nombre premier. On ne sait pas non plus siBPP est un sous-ensemble strict deN P.

P

NP co−NP

NP−complet co−NP complet

BPP PRIMES

FIG. 1.2: Conjecture entre les classes de complexité.

Remarque 1 (Motivation pour étudier asymptotiquement les algorithmes lorsque les entrées ont une taille non majorée) La complexité d’un algorithme prend tout son sens quand on considère des entrées de taille infiniment grande. En effet, dans le cas contraire, si l’ensembleE des valeurs d’entrée est fini (il existektel queE ⊂ {0,1}k), alors sur cet ensemble, l’algorithmeAs’arrête en un tempsT au plus.

Par conséquent, il existe toujours un polynômeP tel queP(k)> T. En effet, un algorithme dansP se termine toujours, et dans ce cas, tout algorithme qui s’exécute en temps au plusT appartiendrait àP.