Codes stabilisateurs
Nous allons maintenant définir les codes stabilisateurs de manière générale. Nous aborderons également certaines de leurs propriétés fondamentales et leur fonctionnement, notamment comment les états peuvent être encodés et comment les erreurs sont détectées et corrigées à l'aide de ces codes.
Définition des codes stabilisateurs
Un code stabilisateur à qubits est spécifié par une liste d'opérations de Pauli à qubits, Ces opérations sont appelées générateurs stabilisateurs dans ce contexte, et elles doivent satisfaire les trois propriétés suivantes.
-
Les générateurs stabilisateurs commutent tous entre eux.
-
Les générateurs stabilisateurs forment un ensemble générateur minimal.
-
Au moins un vecteur d'état quantique est fixé par tous les générateurs stabilisateurs.
(Il n'est pas évident que l'existence d'un vecteur d'état quantique fixé par tous les générateurs stabilisateurs, c'est-à-dire tel que soit équivalente à mais c'est bien le cas, et nous verrons pourquoi un peu plus loin dans la leçon.)
En supposant que nous disposons d'une telle liste l'espace de code défini par ces générateurs stabilisateurs est le sous-espace contenant tous les vecteurs d'état quantique à qubits fixés par les générateurs stabilisateurs.
Les vecteurs d'état quantique dans ce sous-espace sont précisément ceux qui peuvent être considérés comme des encodages valides d'états quantiques. Nous aborderons le processus d'encodage proprement dit plus tard.
Enfin, le stabilisateur du code défini par les générateurs stabilisateurs est l'ensemble engendré par ces opérations :
Une façon naturelle de concevoir un code stabilisateur est de voir les générateurs stabilisateurs comme des observables, et d'interpréter collectivement les résultats des mesures associées à ces observables comme un syndrome d'erreur. Les encodages valides sont des vecteurs d'état quantique à qubits pour lesquels les résultats de mesure, en tant que valeurs propres, sont tous garantis être Tout autre syndrome, où au moins un résultat de mesure se produit, signale qu'une erreur a été détectée.
Nous allons examiner plusieurs exemples sous peu, mais voici d'abord quelques remarques sur les trois conditions imposées aux générateurs stabilisateurs.
La première condition est naturelle, à la lumière de l'interprétation des générateurs stabilisateurs comme des observables, car elle implique que l'ordre dans lequel les mesures sont effectuées n'a pas d'importance : les observables commutent, donc les mesures commutent. Cela impose naturellement certaines contraintes algébriques sur les codes stabilisateurs, qui sont importantes pour leur fonctionnement.
La deuxième condition exige que les générateurs stabilisateurs forment un ensemble générateur minimal, ce qui signifie que la suppression de l'un d'entre eux donnerait un stabilisateur plus petit. À strictement parler, cette condition n'est pas vraiment essentielle au fonctionnement des codes stabilisateurs dans un sens opérationnel — et, comme nous le verrons dans la prochaine leçon, il est parfois utile de considérer des ensembles de générateurs stabilisateurs pour des codes qui ne satisfont pas réellement cette condition. Pour analyser les codes stabilisateurs et expliquer leurs propriétés, cependant, nous supposerons que cette condition est en vigueur. En résumé, cette condition garantit que chaque observable que nous mesurons pour obtenir le syndrome d'erreur apporte des informations sur les erreurs possibles, plutôt que d'être redondante et de produire des résultats qui pourraient être déduits des autres mesures des générateurs stabilisateurs.
La troisième condition exige qu'au moins un vecteur non nul soit fixé par tous les générateurs stabilisateurs, ce qui est équivalent à n'étant pas contenu dans le stabilisateur. La nécessité de cette condition vient du fait qu'il est effectivement possible de choisir un ensemble générateur minimal d'opérations de Pauli à qubits qui commutent toutes entre elles, et pourtant aucun vecteur non nul n'est fixé par chacune de ces opérations. Nous ne nous intéressons pas aux « codes » pour lesquels il n'y a pas d'encodages valides, donc nous excluons cette possibilité en imposant cette condition dans la définition.
Exemples
Voici quelques exemples de codes stabilisateurs pour de petites valeurs de Nous verrons d'autres exemples, y compris des cas où peut être beaucoup plus grand, dans la prochaine leçon.
Code à répétition 3 bits
Le code à répétition 3 bits est un exemple de code stabilisateur, dont les générateurs stabilisateurs sont et
On peut vérifier facilement que ces deux générateurs stabilisateurs satisfont les conditions requises. Premièrement, les deux générateurs stabilisateurs et commutent entre eux.
Deuxièmement, nous avons un ensemble générateur minimal (de façon assez triviale dans ce cas).
Et troisièmement, nous savons déjà que et ainsi que toute combinaison linéaire de ces vecteurs, sont fixés par et On peut aussi en conclure en utilisant la condition équivalente de la définition.
Ces conditions peuvent être beaucoup plus difficiles à vérifier pour des codes stabilisateurs plus complexes.
Code à répétition 3 bits modifié
Dans la leçon précédente, nous avons vu qu'il est possible de modifier le code à répétition 3 bits pour le rendre capable de protéger contre les erreurs de déphasage plutôt que contre les erreurs de retournement de bit. En tant que code stabilisateur, ce nouveau code est facile à décrire : ses générateurs stabilisateurs sont et
Cette fois, les générateurs stabilisateurs représentent des observables plutôt que , il s'agit donc essentiellement de contrôles de parité dans la base plus/moins plutôt que dans la base standard. Les trois conditions requises sur les générateurs stabilisateurs sont facilement vérifiées, de façon similaire au code à répétition 3 bits ordinaire.
Code de Shor à 9 qubits
Voici le code de Shor à 9 qubits, qui est également un code stabilisateur, exprimé par ses générateurs stabilisateurs.
Dans ce cas, nous avons essentiellement trois copies du code à répétition 3 bits, une pour chacun des trois blocs de trois qubits, ainsi que les deux derniers générateurs stabilisateurs, qui prennent une forme rappelant le circuit de détection des déphasages pour ce code.
Une autre façon de concevoir les deux derniers générateurs stabilisateurs est qu'ils prennent la même forme que pour le code à répétition 3 bits contre les déphasages, sauf que est substitué à ce qui est cohérent avec le fait que correspond à une opération sur des qubits logiques encodés à l'aide du code à répétition 3 bits.
Avant de passer à d'autres exemples, il convient de noter que les symboles de produit tensoriel sont souvent omis lors de la description des codes stabilisateurs par des listes de générateurs stabilisateurs, car cela les rend généralement plus faciles à lire et à comprendre leurs structures. Par exemple, les mêmes générateurs stabilisateurs que ci-dessus pour le code de Shor à 9 qubits ressemblent à ceci sans les symboles de produit tensoriel écrits explicitement.
Code de Steane à 7 qubits
Voici un autre exemple de code stabilisateur, connu sous le nom de code de Steane à 7 qubits. Il présente des caractéristiques remarquables, et nous reviendrons sur ce code à plusieurs reprises dans les leçons restantes du cours.
Pour l'instant, observons simplement qu'il s'agit d'un code stabilisateur valide. Les trois premiers générateurs stabilisateurs commutent clairement entre eux, car commute avec lui-même et l'identité commute avec tout, et la situation est similaire pour les trois derniers générateurs stabilisateurs. Il reste à vérifier que si l'on prend un générateur stabilisateur de type (c'est-à-dire l'un des trois premiers) et un générateur stabilisateur de type (c'est-à-dire l'un des trois derniers), ces deux générateurs commutent, et on peut passer en revue les 9 pairages possibles pour le vérifier. Dans tous ces cas, une matrice de Pauli et une matrice de Pauli se retrouvent toujours au même emplacement un nombre pair de fois, de sorte que les deux générateurs commutent, tout comme et commutent. Il s'agit également d'un ensemble générateur minimal, et il définit un espace de code non trivial, ce sont des faits que nous te laissons méditer.
Le code de Steane à 7 qubits est similaire au code de Shor à 9 qubits en ce sens qu'il encode un seul qubit et permet la correction d'une erreur arbitraire sur un qubit, mais il ne nécessite que 7 qubits au lieu de 9.
Code à 5 qubits
Sept n'est pas le nombre minimal de qubits nécessaires pour encoder un qubit et le protéger contre une erreur arbitraire sur un qubit — voici un code stabilisateur qui y parvient en utilisant seulement 5 qubits.
Ce code est généralement appelé le code à 5 qubits. C'est le nombre minimal de qubits dans un code correcteur d'erreurs quantiques capable de corriger une erreur arbitraire sur un seul qubit.
Codes stabilisateurs unidimensionnels
Voici un autre exemple de code stabilisateur, bien qu'il n'encode en réalité aucun qubit : l'espace de code est unidimensionnel. Il s'agit cependant toujours d'un code stabilisateur valide selon la définition.
Plus précisément, l'espace de code est l'espace unidimensionnel engendré par un e-bit
Voici un exemple connexe d'un code stabilisateur dont l'espace de code est l'espace unidimensionnel engendré par un état GHZ
Dimension de l'espace de code
Supposons que nous ayons un code stabilisateur, décrit par des générateurs stabilisateurs à qubits La toute première question qui vient à l'esprit à propos de ce code est peut-être : « Combien de qubits encode-t-il ? »
Cette question a une réponse simple. En supposant que les générateurs stabilisateurs à qubits satisfassent les trois exigences de la définition (à savoir que les générateurs stabilisateurs commutent tous entre eux, que c'est un ensemble générateur minimal, et que l'espace de code est non vide), il doit alors s'ensuivre que l'espace de code pour ce code stabilisateur a la dimension de sorte que qubits peuvent être encodés à l'aide de ce code.
Intuitivement, nous disposons de qubits pour cet encodage, et chaque générateur stabilisateur « retire effectivement un qubit » en termes de nombre de qubits que nous pouvons encoder. Note que cela ne concerne pas quelles erreurs ni combien d'erreurs peuvent être détectées ou corrigées, c'est uniquement une affirmation sur la dimension de l'espace de code.
Par exemple, pour le code à répétition 3 bits et sa version modifiée pour les erreurs de déphasage, nous avons qubits et générateurs stabilisateurs, et donc ces codes peuvent chacun encoder 1 qubit. Pour un autre exemple, considère le code à 5 qubits : nous avons 5 qubits et 4 générateurs stabilisateurs, donc une fois de plus l'espace de code a la dimension 2, ce qui signifie qu'un qubit peut être encodé à l'aide de ce code. Pour un dernier exemple, le code dont les générateurs stabilisateurs sont et a un espace de code unidimensionnel, engendré par l'état ce qui est cohérent avec qubits et générateurs stabilisateurs.
Voyons maintenant comment ce résultat peut être prouvé. La première étape consiste à observer que, puisque les générateurs stabilisateurs commutent, et puisque chaque opération de Pauli est son propre inverse, tout élément du stabilisateur peut s'exprimer comme un produit
où De manière équivalente, chaque élément du stabilisateur s'obtient en multipliant ensemble un sous-ensemble des générateurs stabilisateurs. En effet, chaque élément du stabilisateur peut s'exprimer de manière unique de cette façon, grâce à la condition que est un ensemble générateur minimal.
Ensuite, définissons comme la projection sur l'espace des vecteurs propres de valeur propre de pour chaque Ces projections peuvent être obtenues en faisant la moyenne des opérations de Pauli correspondantes avec l'opération identité comme suit.
L'espace de code est le sous-espace de tous les vecteurs fixés par les générateurs stabilisateurs ou de manière équivalente, par les projections
Étant donné que les générateurs stabilisateurs commutent tous entre eux, les projections doivent également commuter. Cela nous permet d'utiliser un résultat d'algèbre linéaire, à savoir que le produit de ces projections est la projection sur l'intersection des sous-espaces correspondant aux projections individuelles. Autrement dit, le produit est la projection sur l'espace de code
Nous pouvons maintenant développer le produit à l'aide des formules de ces projections pour obtenir l'expression suivante.
En d'autres termes, la projection sur l'espace de code d'un code stabilisateur est égale, en tant que matrice, à la moyenne sur tous les éléments du stabilisateur de ce code.
Enfin, nous pouvons calculer la dimension de l'espace de code en utilisant le fait que la dimension de tout sous-espace est égale à la trace de la projection sur ce sous-espace. Ainsi, la dimension de l'espace de code est donnée par la formule suivante.