Algorithme de Bernstein-Vazirani

De testwiki
Aller à la navigation Aller à la recherche

Modèle:Voir homonymes

L'algorithme de Bernstein–Vazirani, qui résout le problème de Bernstein–Vazirani est un algorithme quantique inventé par Ethan Bernstein et Umesh Vazirani en 1992[1].

C'est une version restreinte de l'algorithme de Deutsch-Jozsa dans laquelle, au lieu de distinguer deux classes de fonctions, on essaie de retrouver une chaîne secrète encodée dans une fonction[2]. Il a été conçu pour prouver la distinction entre les classes de complexité BQP et BPP[1].

Enoncé du problème

Soit un oracle qui implémente une fonction f:{0,1}n{0,1} dans laquelle f(x) est un produit scalaire entre x et une chaîne secrète s{0,1}n modulo 2, f(x)=xs=x1s1x2s2xnsn. Quelle est la valeur de s ?

Algorithme

En informatique "classique", la méthode la plus efficace pour retrouver la chaîne secrète consiste à évaluer la fonction n fois avec comme valeurs d'entrée x=2i pour tout i{0,1,...,n1}[2] :

f(10000n)=s1f(01000n)=s2f(00100n)=s3f(00001n)=sn

Avec un calculateur quantique, une seule requête sera suffisante[2] :

Appliquer une transformée de Hadamard aux n qubits |0n pour obtenir :

12nx=02n1|x.

Ensuite, appliquer l'oracle Uf qui transforme |x(1)f(x)|x. Cela peut être simulé au moyen de l'oracle standard qui transforme |b|x|bf(x)|x en appliquant l'oracle à |0|12|x ( représente une addition modulo 2).

Cela transforme la superposition en :

12nx=02n1(1)f(x)|x.

Une nouvelle transformée de Hadamard est appliquée à chaque qubit, de telle sorte que :

  • pour les qubits où si=1, l'état est converti de | à |1
  • pour les qubits où si=0, l'état est converti de |+ à |0

Pour obtenir s, une mesure selon la base standard ({|0,|1}) est effectuée sur les qubits.

L'algorithme peut donc être représenté ainsi, où Hn représente la transformée de Hadamard sur n qubits :

|0nHn12nx{0,1}n|xUf12nx{0,1}n(1)f(x)|xHn12nx,y{0,1}n(1)f(x)+xy|y=|s

La raison pour laquelle l'état final est |s est que, pour un y donné :

12nx{0,1}n(1)f(x)+xy=12nx{0,1}n(1)xs+xy=12nx{0,1}n(1)x(sy)=1 si sy=0,0 sinon.

Puisque sy=0 est vrai seulement quand s=y, cela signifie que la seule amplitude non nulle correspond à |s.

Références

Modèle:TradRef Modèle:Références

Modèle:Portail