title: Code stabilisateur
text: # Code stabilisateur
  
  Un code stabilisateur (n, k) est un code quantique autocorrecteur qui protège k qubits en les encodant dans n qubits (avec nécessairement n > k).
  
  ## Théorie
  
  La mise en œuvre d'ordinateurs quantiques se heurte aux difficultés introduites par la présence de bruits, d'origine externe ou interne au système quantique construit, et qui perturbent les distributions probabilistes des états intriqués mesurés en fin de calcul. Puisque ce bruit peut fausser le résultat obtenu par un algorithme quantique, il est nécessaire de pouvoir déterminer, avec une marge de probabilité suffisante, si le résultat obtenu est entaché d'erreurs ou non, ou a subi des altérations, et ensuite de pouvoir les corriger.
  
      Dans un ordinateur binaire classique, les erreurs obtenues sur les bits individuels sont d'un seul type : l'inversion du bit mesuré. Pour la pallier, on dispose de méthodes comme l'amplification des bits initiaux avant leur traitement par combinaison, puis la mesure et la correction du résultat par échantillonnage à travers là aussi une réamplification, où le bruit sera réparti pour moitié entre les deux états possibles du bit final. Le bit final est correct si le bruit introduit dans le système reste inférieur à un seuil de 50 % de la mesure permettant de le discriminer. Cependant des seuils de discriminations avec des incertitudes inférieures sont utilisés pour corriger certains effets comme les hystérésis. Ce procédé agit comme un système stabilisateur, mais en règle plus générale, les codes stabilisateurs sont une classe particulière de codes correcteurs permettant de détecter et corriger de vastes ensembles de bits (par exemple dans un circuit de mémoire, un support d'enregistrement ou de transmission de données).
  
  Dans un ordinateur quantique, un qubit peut non seulement être entaché par une erreur d'inversion :
  
  $(a+e)|0\rangle +(b+f)|1\rangle ,$
  
  où a et b sont les probabilités complémentaires des qubits élémentaires sans erreur avec (a, b) unitaire, elles-mêmes entachées de bruit rompant l'intrication unitaire), mais aussi par une erreur de changement de signe sur la probabilité complémentaire, ces deux types d'inversions étant orthogonaux et pouvant exister en combinaisons linéaires quelconques.
  
  Un codeur simple a été d'abord décrit utilisant 9 qubits pour corriger les deux types d'inversions sur un même qubit, avant que des codes plus efficaces soient trouvés utilisant 7 qubits, puis seulement 5.
  
  On a montré que pour pouvoir corriger les deux types d'erreurs pouvant affecter un seul qubit, un code correcteur formé par une combinaison de plusieurs qubits nécessitait un codage comprenant au minimum 5 qubits. Capables de corriger 1 qubit à l'aide de 5, ils sont un type particulier de code stabilisateur (5,1), permettant de conserver et transmettre de façon efficace un seul qubit d'information de façon fiable (et avec un taux résiduel d'erreur qui peut être ensuite réduit de façon arbitraire, selon des principes similaires au fameux théorème d'échantillonnage de Nyquist-Shannon pour les bits d'information des ordinateurs classiques).
  
  Toutefois, la difficulté actuelle de construction des ordinateurs quantiques est largement liée à la difficulté d'isoler ces qubits des sources de bruit (y compris celles inhérentes à l'ordinateur lui-même, qui rompt partiellement l'intrication parfaite des états de chaque qubit utilisé par les algorithmes quantiques). Les inversions sont donc inévitables en pratique et doivent pouvoir être détectées et corrigées, d'autant plus qu'il devient difficile d'isoler les qubits dans des états de probabilités parfaitement orthogonales. Plus on augmente le nombre de qubits dans un même système système, plus ils s'influencent mutuellement (c'est-à-dire que leurs états deviennent liés entre eux, les qubits ne s'ajoutant pas aussi simplement par juxtaposition que les bits d'un ordinateur classique) : cette influence interne est en fait une des principales sources de bruit au sein d'un ordinateur quantique.
  
  D'une façon plus générale, le processus de correction d'erreur est basé sur la mesure d’un syndrome, c’est-à-dire d’un vecteur dans $F_{2}^{n-k}$. Ceci s’utilise ensuite pour discriminer (en partie) l’erreur réelle de toutes les erreurs possibles, et en déduire k qubits dans des états intriqués avec des probabilités comparables avec les k qubits initiaux, même si les états effectivement mesurés ne sont pas identiques.
  
  Appliqués à des ensembles plus vastes de k qubits au lieu d'un seul avec les codes (5,1) plus simples, pour détecter et corriger toute inversion de 1 qubit parmi les n transmis, ils pourraient nécessiter moins de n=5k qubits, que si on utilisait k ensembles distincts de stabilisateurs (5,1), c'est-à-dire que parmi codes stabilisateurs (n, k) il est possible d'en trouver au moins un avec n ≤ 5.k : ainsi des codes encore plus efficaces sont activement recherchés pour réduire le nombre de qubits nécessaires à la résolution fiable de problèmes nécessitant de nombreux qubits, sans en multiplier trop le nombre.
  
  Les codes stabilisateurs sont une des sous-catégories certainement les plus importantes de codes correcteurs quantiques nécessaires à la construction de tout calculateur quantique, dans le cas idéal où ils ne sont pas soumis à d'autres sources de bruit externes. Toutefois, lorsqu'ils sont soumis à des perturbations plus importantes, dans des conditions où le niveau de bruit dépasse les seuils autorisés dans un même ordinateur quantique (par exemple lors du stockage ou la transmission d'information, ou en cas d'altération malveillante ou d'intrusion), il peut être nécessaire de pouvoir non seulement détecter mais aussi pouvoir corriger davantage de qubits affectés par le bruit, et d'autres codes correcteurs que les codes stabilisateurs doivent être mis en œuvre, au prix d'une réduction de l'efficacité du codage (c'est-à-dire qu'on aura éventuellement n > 5.k).
  
  