L'algorithme utilise deux registres quantiques : un registre de n bits initialisé à
, c'est lui qui contiendra la valeur de la phase en sortie de l'algorithme, et un registre de m bits initialisé avec le vecteur propre
.
Concernant l'opérateur unitaire U, il est uniquement requis de pouvoir l'appliquer plusieurs fois de manière contrôlée, plus exactement nous devons être capables d'appliquer les portes contrôle-
, contrôle-
, contrôle-
et ainsi de suite jusqu'à contrôle-
.
La première étape consiste à appliquer une porte de Hadamard aux n qubits du premier registre, donnant ainsi l'état
.
Ensuite, on applique au second registre les portes
contrôlées par le jème qubit du premier registre (j variant de 0 à n-1). On obtient alors l'état
.
La dernière étape consiste à appliquer une transformée de Fourier quantique inverse aux n qubits du premier registre, ce qui nous donne
.
En appelant
la meilleure approximation, à n bits, de
, on obtient
avec
. Et l'état précédent peut se réécrire
.
Si
alors on obtient à coup sûr la phase, sinon on obtient son approximation a avec une probabilité
.
Il n'est pas nécessaire de connaitre un vecteur propre à l'avance pour réaliser cet algorithme.
En effet tout état
peut être décomposé dans la base
des vecteurs propres de U :

Auquel cas au lieu d'obtenir l'état
à la fin de l'algorithme, nous obtenons l'état

où
représente ici l'approximation de la phase
de la valeur propre
associée au vecteur propre
Après mesure, on obtient donc (toujours avec une certaine probabilité supérieure à
) une des valeurs propres, ainsi que le vecteur propre associé. Le choix de la valeur propre est aléatoire et suit la règle de Born.