Calcul quantique et algorithme de Deutsch
Ordinateur classique vs ordinateur quantique
On peut schématiser un ordinateur classique à l'aide de 3 composants :
- des registres (qui contiennent les données à traiter) ;
- une unité de calcul (qui transforme les données suivant un algorithme défini en actionnant des portes logiques) ;
- une unité d'entrées/sorties (qui initialise les registres au début du traitement et lit les résultats à la fin).
Les registres
- Un registre classique est un ensemble de bits permettant de stocker l'un des entiers compris entre 0 et .
- Un registre quantique est un système quantique de qubits dont les états sont les éléments d'un espace des états de dimension . On définit dans cet espace la base .
Chaque vecteur de base peut être désigné :
- par la liste des états de chaque qubit, éléments de : ;
- par le nombre entier , , dont constitue la décomposition binaire : .
est l'ensemble des entiers modulo ; avec :
Spécificité des registres quantiques
Les registres quantiques peuvent se trouver non seulement dans un des états de la base (comme le registre classique), mais aussi dans un état de superposition :
Les algorithmes quantiques sont représentés par l'évolution d'un ou plusieurs registres sous l'effet de l'application d'opérateurs unitaires. L'état de l'ordinateur peut comprendre plusieurs registres.
Les entrées / sorties
L'entrée consiste à mettre le système quantique, constitué par les registres, dans un état initial : on dit qu'on prépare le système. Le plus souvent, les différents registres sont initialement dans l'état , et la préparation consiste à faire agir différents opérateurs, comme la transformation de Hadamard.
La sortie correspond à la lecture d'un registre, c'est-à-dire à la mesure de l'état quantique final du registre. D'après le postulat de la mesure, celle-ci modifie de façon irréversible l'état du registre, qui est projeté sur l'un des états de la base. En général, les algorithmes quantiques utilisent des mesures partielles de l'état final (mesure d'un seul des registres, voire de quelques qubits d'un registre).
Parallélisme quantique
Souvent, on a besoin d'évaluer une fonction
qu'on ne peut pas toujours représenter directement par un opérateur unitaire (elle n'est pas forcément injective). Pour associer un opérateur unitaire à l'évaluation d'une fonction, on définit :
- un registre de données à qubits, , qui contient la valeur de la variable ;
- un registre de résultats à qubits, , qui contient le résultat ;
- un opérateur unitaire .
Le parallélisme est un trait de beaucoup d'algorithmes quantiques : une fonction peut être évaluée simultanément en plusieurs valeurs de (conséquence de la superposition des états de qubits).
Exemple
Soit un registre de données et un registre de résultats, chacun à 1 qubit. La valeur initiale de chaque registre est .

Exercice : calculer les états et .
On applique la porte de Hadamard au seul qubit de données :
L'état de sortie est
Il contient à la fois et , obtenus par une seule application de la porte .
Généralisation
Soit un registre à qubits (registre de données). La transformation de Hadamard appliquée à chaque qubit de l'état donne pour le registre de données

L'état de sortie est
Cela fait apparaître toutes les valeurs de en une seule opération : c'est le parallélisme quantique. Une mesure ne permet cependant d'en lire qu'une seule ; tout l'enjeu des algorithmes quantiques est d'exploiter les interférences pour extraire une propriété globale de .
Algorithme de Deutsch (1985) et problème de Deutsch-Jozsa (1992)
L'algorithme de Deutsch (1985) traite le cas d'une fonction ; l'algorithme de Deutsch-Jozsa, proposé par David Deutsch et Richard Jozsa en 1992, le généralise. Dans le problème de Deutsch-Jozsa, nous disposons d'une boîte noire quantique, appelée oracle, qui implémente une fonction mathématique . Nous savons que cette fonction est soit constante (la sortie est 0 pour toutes les entrées, ou 1 pour toutes les entrées), soit équilibrée (la sortie est 0 pour la moitié des entrées et 1 pour l'autre moitié). Le but est de déterminer si la fonction est constante ou équilibrée à l'aide de l'oracle.
Un algorithme classique déterministe nécessite, dans le pire cas, appels à l'oracle ; l'algorithme de Deutsch-Jozsa conclut avec certitude en un seul appel à .