• Aucun résultat trouvé

7.2 Codes LDPC

7.2.2 Décodage des codes LDPC

Plaçons-nous, dans un premier temps, dans le cas où Claude envoie une modulation binaire, transmise par un canal bruité.

Les deux types de canaux bruités les plus usuels en télécommunications classiques sont :

• le canal binaire symétrique (BSC), qui intervertit la valeur des bits avec une pro- babilité p. C’est la version classique du canal considéré en cryptographie quan- tique à variables discrètes (par ex. BB84) ;

• le canal AWGN (Additive white Gaussian noise) qui ajoute au signal un bruit gaussien blanc de variance σ2, indépendant du message. C’est une version clas-

sique de notre modèle du canal gaussien, présenté dans la section 3.3.1.

Le processus de réconciliation est indépendant des considérations quantiques liées à la sécurité. Il n’existe donc aucune différence, de ce point de vue, entre les versions classiques et quantiques des canaux.

Rapport de vraisemblance (LLR)

Après le passage par le canal bruité, Dominique obtient une chaîne de valeurs, qui sont discrètes si le canal ajoute un bruit discret (de type BSC), et réelles si le canal ajoute un bruit continu (de type AWGN).

7.2. Codes LDPC 121 Les algorithmes de décodage dur, tels que Cascade ou Winnow, binarisent direc- tement le signal reçu par Dominique, et corrigent les erreurs binaires entre Claude et Dominique. Dans le cas d’un détecteur discret (tel qu’un détecteur de photons uniques), ou d’une modulation binaire passant par un canal BSC, l’information reçue par Bob est déjà binaire, et ces algorithmes sont donc bien adaptés.

En revanche, si le résultat de mesure prend des valeurs continues, ce type d’algo- rithme n’est pas optimal, puisqu’il nous fait perdre une partie de l’information. Prenons le cas d’une modulation binaire t1,1u traversant un canal AWGN. Si le résultat de

mesure de Bob est 3,2 ou4,3on peut dire avec une bonne confiance que le bit envoyé

était respectivement 1 ou1. En revanche, si le résultat est proche de 0, il est difficile

de conclure.

Le rapport de vraisemblance (LLR, pour log-likelihood ratio) permet de formaliser cette considération. Soit une variable aléatoire binaire X, on définit :

LLRln  Prpx1q Prpx0q (7.2) L’expression s’interprète comme suit :

• si le LLR est très positif, Prpx1q eLLR 1 eLLR Ñ1

• si le LLR est nul, Prpx1qPrpx0q1{2

• si le LLR est très négatif, Prpx1qÑ0.

Le LLR est donc une expression de la certitude sur la valeur d’une variable binaire. À partir de ces LLR, on peut définir un autre type de décodeur, dit mou par opposition aux décodeurs durs, qui utilise le caractère continu des données pour optimiser le décodage. Décodage mou LLR intrinsèque Parités Décodage itératif LLR a posteriori Mesures Bits corrigés

Figure 7.3 :Schéma de principe d’un décodeur mou.

Un décodeur mou peut être décrit par la figure 7.3. Il possède deux entrées : l’information intrinsèque, c’est-à-dire le degré de certitude sur la valeur du bit donné uniquement par le résultat des mesures, et l’information auxiliaire de décodage (les parités). En combinant ces deux entrées, le décodeur fournit une nouvelle information

a posteriori, qui en principe améliore la certitude de Dominique sur la valeur des bits

122 Chapitre 7 : Réconciliation des données expérimentales

Un décodeur mou fonctionne en général sur un principe itératif. Dominique utilise tout d’abord ses résultats de mesure tyiu pour déterminer l’information intrinsèque

sur les bits txiu, qui s’exprime sous la forme de LLR conditionnels :

LLRintrinsèquei ln

Prpxi 1|yiq

Prpxi 0|yiq

(7.3) Ces LLR a priori sont ensuite combinés avec les parités fournies par Claude dans un sous-algorithme, qui fournit une nouvelle valeur affinée des LLR. Récursivement, ces LLR a posteriori sont réinjectés dans le sous-algorithme en tant que LLR a priori, combinés de nouveau avec les parités, etc.

Après un certain nombre d’itérations, les LLR a posteriori sont suffisamment grands en valeur absolue pour que Dominique puisse attribuer une valeur à chacun des bits, avec une bonne certitude. Les erreurs sont alors corrigées avec une bonne probabilité. Néanmoins, du fait même de la nature des LLR, un décodeur mou ne peut corriger les erreurs avec une efficacité de 100 %. Nous verrons dans la partie 7.3.2 comment prendre en compte les échecs de décodage.

Parités et LDPC systématiques

Dans l’interprétation non-systématique des codes LDPC, les mots-code M sont conçus de façon à ce que toutes leurs parités soient nulles : ils vérifient HM 0, où

H est la matrice de parités. Après une transmission bruitée, le mot-code peut avoir été modifié, auquel cas certaines des parités valent 1. Bob sait alors que le message a été corrompu, et il s’agit pour lui de retrouver le mot-code original, sachant que toutes les parités doivent valoir 0.

Dans notre cas (interprétation systématique), les parités ne sont pas modifiées par la transmission, puisqu’elles ont été transmises par un canal sans bruit. En revanche, les parités du message peuvent valoir 0 ou 1. Pour prendre en compte ce fait dans le décodage, nous devons introduire un nouveau nœud de variable xk 1, auquel nous

attribuons la valeur 1 avec une probabilité de 1 (c’est-à-dire un LLR  8), et nous

le relions à tous les nœuds de parité qui sont impairs. Ce nœud va donc « forcer », lors du décodage, la parité de tous les nœuds de parité auxquels il est relié.

Algorithme de décodage : belief propagation

Dans le cas des matrices LDPC, où la densité de 1 est suffisamment petite, Gallager a proposé en 1962 [66] un algorithme de décodage particulièrement efficace, fondé sur la représentation en graphe de Tanner. Cet algorithme est appelé indifféremment belief

propagation ou message passing.

Introduisons d’abord quelques notations :

• qij est un message envoyé par le nœud de variable xi au nœud de parité bj. Ce

message est un rapport de vraisemblance, exprimant la certitude du nœud xi sur

sa valeur, compte tenu de toutes les informations qu’il possède.

• rji est un message envoyé par le nœud de parité bj au nœud de variable xi. Ce

message est un rapport de vraisemblance, exprimant la certitude du nœud bj sur

la valeur de xi, compte tenu de toutes les informations qu’il possède.

7.2. Codes LDPC 123 Mesure Valeur du bit Initialisation : BN BN CN CN BN BN Messages Messages Décodage : Attribution :

Figure 7.4 : Vision schématique de l’algorithme Belief Propagation. BN et CN représentent

respectivement les nœuds de variable (bit nodes) et de parité (check nodes).

• Initialisation : Nous initialisons les variables avec les informations dont nous disposons : les LLR des nœuds de variable xi sont initialisés avec la valeur des

LLR intrinsèques correspondants. Les messages qij et rji sont eux tous mis à

zéro.

• Etape 1 : Message variable Ñparité. Dans un premier temps, chaque nœud

de variable envoie aux nœuds de parité connectés son message qij.

qij loomoon mis à jour LLRpxiq qij loomoon original

• Etape 2 : Mise à jour des parités. Chaque nœud de parité bj a reçu plusieurs

messages des variables. En les comparant, il calcule une valeur intermédiaire Lj :

Lj  ¹ nœudsi reliés à j signpqijq ϕ  ¸ nœudsi reliés à j ϕp|qij|q 

• Etape 3 : Message paritéÑ variable. A partir de cette valeur intermédiaire,

le nœud de parité bj peut calculer les messages rji à renvoyer aux nœuds de

variable :

rji signpLjqsignprjiqϕrϕpLj ϕprjiqs

• Etape 4 : Mise à jour des LLR de variable. Enfin, chaque nœud de variable peut calculer son LLR a posteriori, à partir du LLR a priori ainsi que de tous les messages qu’il a reçus :

LLRa posterioripxiqLLR a priori pxiq ¸ nœudsj reliés à i rji • On réitère (1),(2),(3),(4).

124 Chapitre 7 : Réconciliation des données expérimentales et s’écrit généralement ϕpxqln  tanh  x 2 

Après chaque itération, nous attribuons à chacun des nœuds de variable la valeur la plus probable compte tenu de son LLR a posteriori. A partir de ces valeurs de bit, nous calculons les valeurs des parités. Deux cas peuvent se produire :

• Les parités correspondent à celles envoyées par Claude. Nous sommes alors cer- tains que les erreurs ont été corrigées, et arrêtons l’algorithme.

• Au moins une parité ne correspond pas. Il est alors impossible de savoir si nous sommes « loin » ou non de la correction totale : il peut arriver qu’une seule parité soit fausse mais que le mot-code corrigé soit très différent du mot-code original. Nous définissons donc un nombre maximal d’itérations : une fois ce nombre at- teint, nous arrêtons l’algorithme. Le mot-code n’est pas parfaitement corrigé, mais si le code est bien conçu, il y a une bonne probabilité pour que le taux d’er- reur résiduel soit très faible. Néanmoins, il y a toujours une probabilité, comme nous l’avons dit plus haut, que l’algorithme ait largement échoué à corriger le mot-code, auquel cas il peut rester beaucoup d’erreurs.