• Aucun résultat trouvé

bipartis et capacité de correction

3.2.1 Système d’équations et graphe de Rook

On a vu jusqu’ici qu’il était possible de représenter le décodage de notre code, comme tout code linéaire, par son graphe de Tanner. La figure 3.9 ci-dessous représente le graphe de Tanner de notre code ayant pour paramètre P = [2, 3] et k = 12.

Figure 3.9 – Graphe de Tanner de notre code pour P=[2,3] et k=6

On remarque que même pour des valeurs de P relativement petites, et P n’ayant que deux éléments, le graphe de Tanner devient rapidement difficile à lire. Dans le cas ou P ne contient que deux éléments, il est cependant possible de représenter son graphe de Tanner de manière plus lisible.

Chapitre 3 : Optimisation, graphes et calcul modulaire

3.2 Enumération de forêts dans les graphes bipartis et capacité de correction

Figure 3.10 – Graphe de Tanner réarrangé de notre code pour P=[2,3] et k=6

Ces deux graphes sont le même graphe de Tanner correspondant à P = [2, 3] et k = 6. Le graphe de gauche est le graphe de Tanner tel que nous l’avons présenté jusqu’à présent. Celui de droite a été réarrangé, et nous avons enlevé les arêtrs pour plus de clareté. Les noeuds symboles sources sont des représentés par des carrés, les noeuds symboles codes par des ronds, et les noeuds contraintes par des triangles.

On peut même représenter ce graphe de Tanner de manière encore plus simplifiée, en retirant du graphe les noeuds contraintes, comme nous le faisons dans la figure 3.11. Ainsi, pour qu’un paquet soit décodable à une itération donnée de l’algorithme de décodage, il suffit qu’il soit seul sur sa ligne ou sur sa colonne.

Figure 3.11 – Graphe de Tanner réarrangé de notre code pour P=[2,3] et k=6, auquel on a enlevé les noeuds contraintes. Un paquet est décodable si il est seul sur sa ligne ou sa colonne.

Lors du décodage itératif, un paquet (noeud symbole) est décodable si il est relié à un noeud contrainte n’ayant qu’un seul voisin. Par conséquent avec cette représentation, un paquet est décodable si il est le seul paquet sur sa ligne ou sur sa colonne. Les figures 3.12 et 3.13 représentent respectivement un graphe de Tanner possédant un cycle et un graphe de Tanner sans cycle : on voit apparaître ou non un "cycle" dans le graphe réarrangé correspondant. Nous mettons le terme "cycle" entre guillemets car en réalité, 3 sommets sur la même ligne (ou la même colonne) forment un cycle, et sont pourtant décodables. Quand nous parlons de "cycle" dans le graphe de Rook, nous parlons donc en réalité de cycle dans son graphe de Tanner.

Chapitre 3 : Optimisation, graphes et calcul modulaire

3.2 Enumération de forêts dans les graphes bipartis et capacité de correction

Figure 3.12 – Le graphe de Tanner contient un cycle, les paquets réarrangés en graphe de Rook forment eux aussi un "cycle" et ne peuvent pas être décodés.

Figure 3.13 – Le graphe de Tanner ne contient pas de cycle, les paquets réarrangés en graphe de Rook ne forment pas de "cycle" et sont donc décodables : on va décoder C2,0 et C3,2, puis X0 et C3,1, et enfin X3 et X1.

Dans le cas ou on a comme paramètre |P | = 2 et k = P0∗ P1 on peut donc représenter notre système d’équations par un graphe de Rook. Pour P = [P0, P1], on devra prendre considérer le graphe de Rook de dimensions (m = P0+ 1, m = P1+ 1). Dans la prochaine section nous nous servons de cette représentation pour représenter le graphe de Tanner de notre code là-aussi de façon plus lisible.

Graphe de Rook et probabilité exacte d’erreur du décodage - démonstrations for-melles pour e <= 6

On a vu précédemment qu’on pouvait représenter le système d’équations de notre code, quand celui-ci est paramétré avec P possédant deux éléments, par un graphe de Rook. On va ici présenter une façon de calculer la probabilité exacte de décoder totalement e effacements, pour P = [P0, P1] et k = P0∗ P1 fixé.

Pour ce faire, nous allons devoir dénombrer l’ensemble des sous-graphes d’un graphe de taille e de Rook de dimension (m = P0+ 1, n = P1+ 1) qui contiennent au moins un "cycle" (là-encore, le terme cycle n’est pas exact, il faut plutôt parler de cycle dans son graphe de Tanner).

Notons F orets(m, n, e) le nombre de sous-graphes de taille e d’un graphe de Rook de dimensions (m, n) ne contenant pas de "cycle" (ceux sont donc des forêts décodables), et Cycles(m, n, e) le nombre de sous-graphes de taille e d’un graphe de Rook de dimensions (m, n) contenant au moins un cycles (donc des graphes non-décodables).

Chapitre 3 : Optimisation, graphes et calcul modulaire

3.2 Enumération de forêts dans les graphes bipartis et capacité de correction

Remarquons que l’ensemble des sous-graphes d’un graphe de Rook de dimension (m, n) a pour cardinal m∗ne , et que par conséquent F orets(m, n, e) + Cycles(m, n, e) = m∗n

e .

Si les effacements se font de manière équiprobable, la probabilité d’échec du décodage en fonction du nombre d’effacements e sera exactement de

Pechec(m, n, e) = Cycles(m, n, e)/ mne .

Dans un premier temps, essayons de calculer cette valeur pour des petites valeurs de e, allant de 0 à 6.

Demonstration pour e<4

Le graphe de Tanner d’unn graphe de Rook étant un graphe biparti, il ne possède pas de cycle de longueur inférieure à 4. C’est d’ailleurs pour cette raison que notre code a une distance minimale δ = 4. Par conséquent, il n’existe pas d’ensemble de 0, 1, 2, ou 3 paquets qui ne soit pas décodable.

Ainsi, on peut dire que

Cycles(m, n, e ≤ 3) = 0 F orets(m, n, e ≤ 3) = m∗ne 

Démonstration pour e=4

Dans le cas ou e = 4, les sous-graphes "cycliques" de taille 4 d’un graphe de Rook de dimensions (m, n) forment un rectangle.

Ainsi, il faut compter le nombre de rectangles présent dans ce graphe de Rook.

Pour produire un rectangle dans ce graphe de Rook, il faut choisir 2 lignes aléatoirement parmi les n lignes du graphe de Rook (il y en a n ∗ (n − 1)/2 possibilités), et 2 colonnes aléatoirement parmis les n colonnes du graphe de Rook (il y en a m ∗ (m − 1)/2.

On obtient alors

Cycles(m, n, 4) = m ∗ n ∗ (m − 1) ∗ (n − 1)/4

F orets(m, n, 4) = m∗n4  − m ∗ n ∗ (m − 1) ∗ (n − 1)/4

Démonstration pour e=5

Dans le cas ou e = 5, les graphes "cycliques" de taille 5 d’un graphe de Rook de dimensions (m, n) forment un rectangle, auquel on aurait ajouté un sommet n’importe ou qui, lui, sera décodable. La figure 3.14 représente quelques exemples de graphes de taille 5 contenant un cycle de taille 4.

Figure 3.14 – Exemples de sous-graphes de taille 5 contenant un cycle.

Ainsi, pour calculer ce nombre, il nous suffit de reprendre la valeur

Cycles(m, n, 4) = m ∗ n ∗ (m − 1) ∗ (n − 1)/4, et de la multiplier par le nombre de sommets restants, m ∗ n − 4.

Chapitre 3 : Optimisation, graphes et calcul modulaire

3.2 Enumération de forêts dans les graphes bipartis et capacité de correction

On obtient alors

Cycles(m, n, 5) = m ∗ n ∗ (m − 1) ∗ (n − 1)/4 ∗ (m ∗ n − 4)

F orets(m, n, 5) = m∗n5  − m ∗ n ∗ (m − 1) ∗ (n − 1)/4 ∗ (m ∗ n − 4)

Démonstration pour e=6

Pour e = 6, le calcul est légèrement plus complexe.

La figure 3.15 ci-dessous représente les différents types de graphes "cycliques" de taille 6 d’un graphe de Rook.

Figure 3.15 – Les différentes manières d’obtenir un sous-graphe de taille 6 contenant un cycle.

En étudiant séparément les 3 cas (A), (B) et (C) de la figure 3.15, on peut déterminer Cycles(m, n, 6) :

— (A) nous devons choisir 3 lignes et 3 colonnes parmi les n lignes et m colonnes, ce qui nous donne m(m − 1)(m − 2)n(n − 1)(n − 2)/36, puis multiplier par les 6 différentes façons d’agencer les effacements à l’intersection de ces 3 lignes et 3 colonnes. On obtient donc m(m − 1)(m − 2)n(n − 1)(n − 2)/6 pour les graphes de la catégorie (A).

— (B) Nous devons choisir 3 lignes et 2 colonnes, ou bien 2 lignes et 3 colonnes, ce qui nous donne m(m − 1)n(n − 1)(m + n − 4)/12.

— (C) Pour la catégorie (C), nous partons du fait qu’il existe un "cycle" de taille 4 auquel nous ajoutons 2 sommets n’importe ou, à l’exception des combinaisons qui nous donnent un graphe de catégorie (B).

Ainsi, on a mn(m − 1)(n − 1)/4 cycles de taille 4, qu’on doit multiplier par le nombre de combinaisons de 2 symboles n’importe ou sur les cases restantes (mn − 4)(mn − 5)/2, auquel on retranche les (m + n − 2) couples qui nous donneraient un graphe de catégorie (B). On obtient alors mn(m − 1)(n − 1)/4 ∗ ((mn − 4)(mn − 5) − (m + n − 2)).

En additionnant les 3 équations que nous avons obtenues pour les 3 différentes catégories (A), (B) et (C) puis en les factorisant, on obtient le polynôme suivant :

Cycles(m, n, 6) = 1/24 ∗ mn(m − 1)(n − 1)(3m2n2− 23mn − 12m − 12n + 92)

F orets(m, n, 6) = mn6  − 1/24 ∗ mn(m − 1)(n − 1)(3m2n2− 23mn − 12m − 12n + 92)

3.2.2 Graphe de Rook et probabilité exacte d’erreur du décodage