Sarah Raphaël

Radhouène, Pierrick, Loic, Goeffrey Nicola Matha

Asma Elie Patrick

l'issue de la rédaction de cette recherche, je suis convaincue que la thèse est loin d'être un travail solitaire. En effet, je n'aurais jamais pu réaliser ce travail doctoral sans le soutien d'un grand nombre de personnes dont la générosité, la bonne humeur et l'intérêt manifesté à l'égard de ma recherche m'ont permis de progresser dans cette phase délicate de l'apprenti-chercheur. En premier lieu, je tiens à remercier mon directeur de thèse, le Professeur Joseph J. Boutros, pour la confiance qu'il m'a accordé en acceptant d'encadrer ce travail doctoral. Sa capacité d'analyse et son enthousiasme m'ont montré que le monde de la recherche pouvait être un univers passionnant. Il a su, par sa fine maîtrise de l'encadrement, sa grande expertise professionnelle, ses multiples conseils, son expérience et son humanité, me transmettre les fondamentaux qui font au fur et à mesure d'un doctorant, un docteur. Je souhaite également remercier le Docteur Mireille Sarkiss, qui a encadré cette thèse. J'aimerais lui dire à quel point j'ai apprécié sa grande disponibilité et ses conseils scientifiques. J'ai aussi été extrêmement sensible à ses qualités humaines d'écoute et de compréhension tout au long de ce travail doctoral. Je remercie aussi le Professeur Ghaya Rekaya pour m'avoir donné l'opportunité et l'envie de commencer ces travaux de recherches, ainsi que pour toutes nos discussions et ses conseils qui m'ont accompagnée tout au long de mon cursus. Également, je tiens à remercier tous les membres de mon jury de thèse. Je remercie tout particulièrement le Professeur Jérôme Lacan et le Professeur Ramesh Pyndiah qui, en leur qualité de rapporteurs de ma thèse, sont les évaluateurs de ce travail de recherche. Je remercie les Professeurs Daniel Augot, Jean-Claude Belfiore, Nicolas Sendrier et Rüdiger Urbanke d'avoir participé à ce jury de thèse en tant qu'examinateurs. Leurs expertises seront aussi très précieuses pour m'aider à ouvrir de nouvelles perspectives dans la suite de mon travail de recherche.

Cette thèse est le résultat de trois années de travail passées au CEA et à Télécom ParisTech. J'adresse toute ma gratitude à Christophe Janneteau pour m'avoir accueillie au sein du laboratoire LSC, ainsi qu'à tous mes collègues avec qui j'ai pu échanger et auprès de qui je me suis enrichie. Je souhaite remercier tous ceux qui, de près

q , no edge coloring. Word and symbol error rate performance for iterative decoding versus its union bound and ML decoding.122 4.12. Product code [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] q ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] q , no edge coloring. Word and symbol error rate performance for iterative decoding versus its union bound and ML decoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.13. Product code [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 q with double-diversity edge coloring. Word error rate performance versus 4 , for iterative decoding on the SEC(q, { i } [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] q ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] q product code. The value of in the third column is given for P ew = 10 -2 at all rows. . . . . . 4.4. Table of rectangular sizes for the special case where the first component L es technologies électroniques et logicielles actuelles combinées aux outils mathématiques et motivées par la théorie du codage, la théorie de l'information et de la communication sont en train de radicalement changer notre société. Ces outils ont aidé les technologies des réseaux sans fil à faire des progrès spectaculaires et à devenir une composante presque omniprésente de la vie moderne en révolutionnant l'éducation, la culture et l'échange d'information en général. De nouvelles techniques très efficaces sont apparues récemment pour les communications point à point et pour la transmission et le traitement de l'information au sein d'un réseau, à savoir: le codage de réseaux, le codage pour le stockage distribué, les codes basés sur les graphes spatialement couplés et les réseaux de points de grandes dimensions pour le décodage itératif.

De nos jours, au sein des systèmes d'information, le Cloud Computing est un concept commun où la plupart des ressources sont disponibles en ligne. L'intérêt du cloud computing réside dans le fait que les ressources évoluent d'une manière instantanée et automatique. Il existe dans les systèmes de communication une sous-classe du cloud computing connue sous le nom de calcul distribué. Dans ce cas particulier, plusieurs noeuds du réseau travaillent conjointement pour résoudre un problème ou pour répondre à une demande. Le stockage distribué est aussi un cas particulier du calcul distribué, où un fichier est stocké en fragments sur plusieurs noeuds du réseau.

Cette thèse est dédiée à l'étude du stockage distribué dans les centres de données en interaction avec les ressources du cloud computing, au service des clients ou des utilisateurs mobiles. Un scénario type est illustré Figure 1 où une source, demandant les services du cloud, disperse un fichier sur n noeuds. Les codes correcteurs d'erreurs sont les outils principaux utilisés dans le contexte du calcul/stockage distribué. Outre le trivial codage à répétition, un code Reed-Solomon ou tout autre code code à distance maximale séparable (MDS) est capable de reconstruire le fichier source [START_REF] Kubiatowicz | Oceanstore: An architecture for global-scale persistent storage[END_REF]. L'objectif principal du codage distribué pour le stockage est d'augmenter la fiabilité de la reconstruction et de minimiser la bande passante requise pour cette reconstruction. Le codage peut être utilisé pour offrir différents niveaux de protection contre les erreurs tout en assurant la qualité de service et les contraintes de puissance requises. Ces contraintes dépendent de l'état du canal sans fil entre les k noeuds et le terminal. De tels schémas de codage pour protéger de façon inégale la donnée contre les erreurs (UEP) ont été étudiés pour les réseaux sans fil et sont basés sur les codes de contrôle de parité à faible densité (LDPC), voir par exemple [START_REF] Pishro-Nik | Nonuniform error correction using lowdensity parity-check codes[END_REF]. D'autre part, en cas de défaillance de noeuds au sein du réseau, le codage peut également être utilisé pour régénérer ces noeuds perdus. Au cours du processus de réparation, le noeud de remplacement peut contenir les mêmes informations ou il peut contenir une information équivalente. La bande passante requise pour ce processus de réparation doit être minimisée, c'est-à-dire réduire au minimum le nombre de téléchargements à effectuer au sein du réseau pour remplacer le noeud défaillant.

De nombreux codes sont des candidats potentiels pour le stockage distribué, la plupart d'entre eux sont des codes concaténés. Nous considérerons dans cette thèse les codes LDPC et les codes produits. Un code LDPC est la concaténation d'un grand nombre de petits noeuds de contrôle. Nous nous intéresserons plus particulièrement au couplage spatial des codes LDPC, impliquant de multiples copies du même ensemble LDPC. La connexion entre ces différentes copies est effectuée par des arêtes de couplage. Un code produit, quant à lui, est un code bidimensionnel construit à partir de codes élémentaires lignes et colonnes. Sa représentation matricielle équivaut à un graphe bipartite complet. Les codes produits sont également des codes concaténés, ils peuvent être considérés comme des cousins des codes LDPC de par leur décodage itératif ligne-colonne.

Ce résumé détaillé est composé de quatre parties principales. Le contenu et les contributions de chaque partie sont résumés ci-dessous.

Le premier chapitre est dédié à l'étude des codes existant pour les systèmes de stockage distribué. Dans un premier temps, nous étudierons le cas particulier des centres de données Facebook afin de pouvoir mettre en avant les principales contraintes liées au xxii R ÉSUM É D ÉTAILL É DE LA TH ÈSE stockage distribué. Dans les systèmes de stockage actuels, le codage des données est effectué via deux approches: la réplication et les codes à effacement MDS. Ces deux méthodes seront analysées et discutées dans ce chapitre. Dans la littérature, d'autres techniques de codage ont été proposées pour remédier aux inconvénients du processus de réparation des codes à effacement MDS, plus précisément les codes à régénération et les codes localement réparables. Dans le contexte du stockage distribué, les codes basés sur les graphes à faible densité, tels que les codes Fontaine et les codes LDPC, peuvent également être utilisés après quelques arrangements pratiques. Une étude de ces différents codes sera effectuée dans ce chapitre.

Dans le deuxième chapitre, nous nous focalisons sur le couplage spatial des codes LDPC et Root-LDPC. Une nouvelle méthode de couplage spatiale des ensembles LDPC sera proposée. Cette méthode est inspirée du codage par couches superposées. Les arêtes des ensembles locaux et celles définissant le couplage spatial sont construites séparément. Cette nouvelle technique permet la construction de chaînes de couplage non uniforme assurant un seuil variant en fonction de la position spatiale et dont la saturation se fait pratiquement au seuil de Shannon. Les seuils de ces chaînes de couplage s'obtiennent avec un décodage itératif. Le couplage spatialement variant est effectué en collant des ensembles LDPC de rendements différents. Le canal à effacement binaire (BEC) est le canal de transmission par défaut, cependant, tous les résultats sont extensibles aux canaux sans mémoires symétriques binaires. Les codes LDPC n'atteignent pas une diversité pleine sur les canaux non ergodiques. Pour faire face aux effacements par blocs et aux évanouissements quasi-statiques, nous considérons dans la suite une structure spéciale appelée code Root-LDPC. Un ensemble Root-LDPC garantit que tous les bits d'information reçoivent les messages de tous les états du canal. Les résultats dans la littérature montrent que l'écart entre la frontière de coupure du code Root-LDPC et celle de la capacité n'est pas assez petit dans le plan à évanouissement. Nous proposons de saturer l'ensemble de la frontière de coupure du code Root-LDPC à l'aide du couplage spatial non uniforme. Par souci de simplicité, nous adoptons un modèle équivalent de canal à effacement par blocs plutôt qu'un modèle à évanouissements par blocs. Il est aussi démontré que le couplage spatial des bits de parité uniquement est suffisant pour saturer le seuil de coupure du code Root-LDPC dans le plan à effacement. Dans la dernière partie de ce chapitre, nous appliquons ce couplage spatial partiel à un code Root-LDPC conçu pour un canal à effacement à quatre états, ayant un rendement de 3/4 et atteignant une double diversité. L'avantage du couplage spatial est représenté dans le plan à effacement comme une amélioration du seuil de coupure du code, sous effacements indépendants. Le couplage spatial maintient la double diversité car uniquement les bits de parité sont couplés. L'inconvénient de ce couplage partiel est une faible saturation du seuil de coupure du code à la frontière de coupure de la capacité. Cette méthode est proposée dans le cadre de la conception de schémas de codage pour les systèmes de stockage distribué. xxiii R ÉSUM É D ÉTAILL É DE LA TH ÈSE Dans le troisième chapitre, nous considérons les codes produits non binaires à codes élémentaires MDS et leur décodage algébrique itératif ligne-colonne sur le canal à effacement. Les effacements indépendants et par blocs sont considérés dans cette partie. Une représentation graphique compacte des codes produits est introduite sur laquelle nous définissons la notion de coloration d'arêtes à double diversité via le concept de rootcheck. Une borne supérieure du nombre d'itérations de décodage est donnée en fonction de la taille du graphe et de la taille M de la palette de couleurs considérées. Une couleur correspond, dans notre modèle, à un état du canal. Les ensembles d'arrêt sont définis dans le contexte de codes produits à codes élémentaires MDS et une relation est établie avec la représentation graphique. Une caractérisation complète de ces ensembles d'arrêt est donnée jusqu'à une taille (d 1 + 1)(d 2 + 1), où d 1 et d 2 sont respectivement les distances de Hamming minimales des codes élémentaires MDS lignes et colonnes. Un algorithme de coloration d'arêtes à évolution différentielle est ensuite proposé. Cet algorithme produit des colorations du graphe compact avec un grand nombre de symboles rootcheck d'ordre minimal. La complexité de cet algorithme par itération est o(M ℵ ), pour un paramètre d'évolution différentielle ℵ donné, où M ℵ est petit par rapport au grand cardinal de l'ensemble de colorations possibles sur le graphe. Les performances des codes produits à codes élémentaires MDS avec et sans coloration à double diversité sont analysées en présence d'effacements par blocs et d'effacements indépendants. Dans ce dernier cas, nous avons prouvé que les performances des décodeurs ML et itératif coïncident à faible probabilité d'effacement. De plus, les résultats numériques montrent une excellente performance en présence de effacements à probabilité inégale en raison de la coloration à double diversité.

Enfin, les résultats de ces travaux et les futures perspectives de recherche sont résumés dans une conclusion générale.

Chapitre 1: Codage pour le stockage distribué

Les codes correcteurs d'erreurs sont un des outils les plus utilisés pour le calcul et le stockage distribué. Outre la technique triviale du codage à répétition, un code Reed-Solomon ou tout autre code MDS, est capable de reconstruire le fichier source [START_REF] Kubiatowicz | Oceanstore: An architecture for global-scale persistent storage[END_REF]. Plus récemment, de nouveaux schémas de codage concus pour les systèmes de stockage distribué ont été développés [START_REF] Dimakis | A survey on network codes for distributed storage[END_REF][25] [START_REF] Oggier | Coding techniques for repairability in networked distributed storage systems[END_REF]. Nous visons dans ce chapitre à présenter les contraintes du stockage distribué et un aperçu des codes existants.

Paramètres et contraintes du stockage distribué

Dans cette thèse, seuls les réseaux de stockage avec un grand nombre de serveurs sont considérés. Avant de définir les enjeux et paramètres des systèmes de stockage distribué, nous allons étudier le cas particulier d'un centre de données Facebook. Ce cas pratique nous permettra de mieux comprendre et cibler les enjeux du stockage distribué. Une xxiv R ÉSUM É D ÉTAILL É DE LA TH ÈSE description complète est disponible dans [START_REF] Rashmi | A solution to the network challenges of data recovery in erasure-coded distributed storage systems: A study on the Facebook warehouse cluster[END_REF]. Un cluster de stockage est divisé en deux clusters Hadoop (HDFS). Hadoop est un framework libre et open source écrit en Java, destiné à faciliter la création d'applications distribuées et échelonnables, permettant aux applications de travailler avec des milliers de noeuds et des pétaoctets de données. Ainsi, chaque noeud est constitué de machines standards regroupées en grappes (clusters). Dans l'exemple d'un centre de données Facebook, chaque appareil stocke jusqu'à 36 téraoctets de données. Les données les plus fréquemment consultées sont stockées sous la forme de trois répliques. Les données qui n'ont pas été consultées pendant plus de trois mois sont codées avec un code Reed-Solomon [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF]. Les différents blocs d'un mot de code sont répartis aléatoirement sur les machines. Dans la suite, une machine peut aussi être désignée comme un noeud du réseau de stockage. Au sein du centre de données, une médiane de 50 machines sont indisponibles pour plus de 15 minutes par jour. Lorsque les blocs sont manquants dans un mot de code, en moyenne 98.08% ont exactement un bloc manquant, 1.87% ont deux blocs manquants et seulement 0.05% ont trois ou plusieurs blocs manquants. Basé sur l'étude des clusters Facebook, nous pouvons résumer les cinq points principaux de la conception de bons codes pour les systèmes de stockage distribué.

• Codage. Cette contrainte est directement liée à l'optimisation de l'espace de stockage dans les centres de données. Le service vendu par le fournisseur de cloud à un utilisateur final est un niveau de fiabilité. L'un des principaux défis pour les fournisseurs de cloud est de faire un compromis entre un niveau de fiabilité proposé au client et l'espace de stockage dédié aux données. En effet, le niveau de la fiabilité dépend de la quantité de redondance dans la structure du code alors que l'espace de stockage dans un cluster doit être optimisé. Par conséquent, le choix des paramètres du code, définissant son rendement, est crucial. De plus, un codeur systématique est plus approprié aux systèmes de stockage distribué. En effet, le temps nécessaire pour lire les données d'information est ainsi minimisé.

• Allocation. Le problème de l'allocation peut être défini en une question. Comment distribuer les symboles codés à travers le réseau afin d'être robuste face aux effacements?

• Mise à jour. La structure du code doit éviter un ré-encodage complet des données lors de leur mise à jour. Certaines applications ne nécessitent pas de mettre à jour les données une fois stockées.

• Reconstruction. Dans un système de stockage distribué, lorsqu'une défaillance de noeuds se produit, l'objectif principal est de reconstruire ces noeuds défaillants de manière à ce que le client/collecteur soit toujours en mesure de récupérer ses données, en communiquant avec un sous-ensemble des noeuds du réseau. Deux méthodes différentes existent pour régénérer un noeud défaillant. Lorsque le noeud défaillant est régénéré à l'identique, le processus est appelé la réparation exacte. Toutefois, cette contrainte peut être relaxée: la réparation est dite fonctionnelle. Dans ce cas, les blocs régénérés peuvent contenir des données différentes de celles xxv R ÉSUM É D ÉTAILL É DE LA TH ÈSE initialement contenues dans noeud défaillant. Toutefois, le système réparé doit conserver les propriétés du code. De l'étude du cas Facebook, nous pouvons déduire que la défaillance d'un noeud est le scénario le plus courant.

• Le téléchargement de données. Pour les applications de stockage distribué, le choix de la méthode de décodage est un autre challenge critique. La conception du code doit permettre un processus de décodage itératif, afin d'éviter la grande complexité du décodage à maximum de vraisemblance (ML). Avec un décodeur ML, tous les noeuds doivent être contactés afin de réparer le noeud défaillant. Il en résulte donc une grande complexité de décodage et une consommation élevée de la bande passante au sein du réseau.

Le principal objectif du codage pour le stockage est d'augmenter la fiabilité de la reconstruction des données, tout en réduisant la bande passante de réparation requise et le nombre de noeuds à contacter par réparation. En effet, le trafic au sein du réseau ne doit pas être accaparé par le trafic inter-rack en raison des opérations de reconstruction. Les codes optimisant cette contrainte en bande passante sont appelés les codes à régénération (regenerating codes) [START_REF] Dimakis | Network coding for distributed storage system[END_REF]. Dans un même temps, au cours d'un processus de réparation, le nombre de noeuds à être contactés doit être réduit, c'est-à-dire le code doit être à localité faible. Le concept de code à localité a été défini par Gopalan et al. comme la localité de l'information [START_REF] Gopalan | On the locality of codeword symbols[END_REF]. La localité d'un code est donnée par la définition ci-dessous dans le contexte classique d'effacements indépendants. Considérons un code linéaire C[n, k, d] q . Un mot de code de C est écrit comme un vecteur à n symboles (c 1 , c 2 , . . . , c n ). La localité de l'information, Loc(C), de C est définie comme:

Loc(C) = max i Loc(c i ),
où un symbole du code c i a une localité Loc(c i ) = r si il peut être reconstruit en accédant seulement à r autres symboles, i.e. c i = r j=1 λ j c j , où λ j ∈ F q .

La localité d'un symbole est le nombre d'autres symboles à contacter dans le pire cas afin de réparer un symbole effacé. Une réparation rapide est assurée par une faible localité des symboles. Une nouvelle classe de codes minimisant la localité est apparue dans la littérature. Ces codes sont appelés codes localement réparables (Locally Repairable Codes) et ont été introduits dans [START_REF] Katz | On the efficiency of local decoding procedures for errorcorrecting codes[END_REF] et développés dans [START_REF] Yekhanin | Locally decodable codes[END_REF], [3] et [START_REF] Oggier | Coding techniques for repairability in networked distributed storage systems[END_REF].

Toutes les contraintes du codage pour le stockage distribué ont été présentées. Les différents schémas de codage mis en oeuvre dans les centres de données actuels sont maintenant examinés.

Les méthodes d'aujourd'hui: réplication et codes à effacement

De nos jours, le codage pour les systèmes de stockage distribué est réalisé en utilisant principalement deux approches: les codes à réplication et les codes à effacement. La xxvi R ÉSUM É D ÉTAILL É DE LA TH ÈSE réplication, qui est la méthode la plus largement utilisée, consiste à stocker une copie de la totalité des données sur plusieurs noeuds de stockage. En pratique, les données des utilisateurs sont répliquées/copiées sur trois noeuds de stockage différents. Ceci permet de restaurer facilement les données en cas de défaillance d'un noeud. En effet, les données sont récupérées à partir de l'un des deux autres noeuds disponibles et stockées sur un nouveau noeud sain. Du point de vue du codage, la réplication est un code à répétition. Cette technique est simple à mettre en oeuvre, mais est inefficace en termes d'optimisation de l'espace de stockage.

Afin de remédier à ce problème, une approche utilisant les codes à effacement MDS a été mise en place dans certains systèmes de stockage tels que Facebook. Dans ce cas, les données initiales sont divisées en k morceaux et de la redondance est ajoutée pour créer n blocs codés, qui sont ensuite distribués sur n noeuds du réseau. Ainsi, chaque noeud stocke seulement une partie des données codées. Cela permet à un utilisateur final de reconstruire l'ensemble des données en téléchargeant des morceaux codés de tout k (ou plus) noeud voisin. Quand un noeud est effacé, il est remplacé par un nouveau noeud vide qui télécharge l'ensemble des données de ses k voisins pour reconstruire l'information stockée avant la panne. Par conséquent, au moins k noeuds doivent être accessibles à tout moment. Les codes à effacement sont inefficaces dans le sens où le noeud de remplacement doit reconstruire la donnée entière pour finalement n'en stocker qu'une petite partie. Ils souffrent d'un processus de réparation très lent, en particulier dans le cas de la réparation d'un seul noeud, ce qui est le scénario le plus commun. Néanmoins, les codes à effacement fournissent un meilleur compromis fiabilité-redondance que les codes à répétition. Par conséquent, une tâche importante dans la conception des codes à effacement est de réaliser une réparation rapide et de pouyoir supporter un grand nombre de pertes.

En dépit de leurs caractéristiques mal adaptés pour les contraintes du stockage distribué, les codes à effacement MDS (les codes Reed-Solomon) sont largement utilisés. La principale raison est historique: lorsque les premiers réseaux de stockage de données sont apparus, les recherches concernant les autres codes à effacement n'étaient pas aussi avancées. De plus, les codes Reed-Solomon ont été mis en oeuvre dans les systèmes RAID pendant une longue période, et pendant longtemps les différents niveaux de RAID répondaient aux besoins des utilisateurs. Avec l'émergence des grands réseaux de stockage, i.e. avec un grand nombre de serveurs/noeuds, de nouveaux systèmes de codage basés sur les codes Reed-Solomon ont été développés [START_REF] Sathiamoorthy | XORing Elephants: Novel Erasure Codes for Big Data[END_REF] [78] [START_REF] Esmaili | CORE: Cross-object redundancy for efficient data repair in storage systems[END_REF]. Ces codes ont été conçus afin d'améliorer la localité des codes Reed-Solomon et d'améliorer le processus de réparation des codes à effacement MDS.

Récemment, dans la littérature, d'autres techniques de codage ont été proposées pour surmonter les inconvénients du processus de réparation des codes à effacement MDS: les codes à régénération et les codes localement réparables.

xxvii

Codes à régénération

Les codes à régénération ont été introduits par Dimakis et al. dans [START_REF] Dimakis | Network coding for distributed storage system[END_REF] comme une nouvelle classe de codes à réparation exacte. D'une manière similaire aux codes à effacement, chaque noeud stocke de petits morceaux de données codées et l'utilisateur final peut récupérer les données d'origine à partir de k noeuds. Cependant, dans cette classe de codes, en cas de défaillance d'un noeud, le noeud de remplacement est capable de récupérer les données antérieures à l'échec en téléchargeant uniquement une partie des données stockées sur d ≥ k noeuds et non plus l'ensemble des données stockées sur ces noeuds [START_REF] Rashmi | Optimal exact-regenerating codes for distributed storage at the MSR and MBR points via a product-matrix construction[END_REF] [80] [START_REF] Dimakis | A survey on network codes for distributed storage[END_REF]. Ainsi, ils permettent une réduction drastique de la quantité de données à télécharger pour une réparation.

Dans la littérature, deux classes de codes à régénération ont émergé, principalement les codes à régénération minimisant la bande passante de réparation (les codes MBR) et la classe des codes à régénération minimisant l'espace stockage (les codes MSR). Les codes MSR sont des codes à efficacité optimale pour le stockage. Ils ont besoin d'un espace de stockage minimal par noeud. Les codes MBR sont des codes à efficacité optimale du point de vue de la bande passante. Ils ont besoin du minimum de bande passante de réparation, en d'autres termes, lors de la réparation le noeud télécharge précisément la quantité de données qu'il souhaite stocker.

Codes localement réparables

Les codes localement réparables sont une autre approche de codage qui exploite le concept de localité. Ces codes sont conçus de telle sorte que le nombre d de noeuds à contacter pour la réparation d'un noeud défaillant est plus petit que k: d ≤ k. Gopalan et al. ont proposé dans [START_REF] Gopalan | On the locality of codeword symbols[END_REF] une version modifiée de la borne du Singleton pour les codes localement réparables. Considérons un code linéaire C[n, k, d] q avec une localité Loc(C), la relation entre la localité du code et ses paramètres est donnée par

d ≤ n -k - k Loc(C) + 2. ( 1
)
Une nouvelle classe de codes localement réparables, présentée par Oggier et al. dans [START_REF] Oggier | Self-repairing homomorphic codes for distributed storage systems[END_REF], comprend les codes auto-réparables (Self-repairing codes). Les codes autoréparables ne sont pas MDS et suivent le même processus de codage que les codes à régénération. Ils minimisent le nombre de noeuds à être contactés pour réparer une défaillance. Les fragments codés peuvent être réparés directement à partir d'autres sous-ensembles de fragments codés, sans avoir à reconstruire la donnée originale entière. Le nombre de fragments codés contactés pour la réparation est fixe et ne dépend que du nombre de blocs codés manquants et non pas de quel bloc spécifique est manquant.

xxviii R ÉSUM É D ÉTAILL É DE LA TH ÈSE

Conclusions

Nous pouvons maintenant énumérer les critères nécessaires à la conception d'algorithmes de réparation efficaces dans le cadre du stockage distribué:

• Le processus de réparation ne doit pas être un décodage complet. En effet, un décodage itératif permettant une réparation locale est privilégié.

• Le nombre de noeuds voisins à contacter durant le processus doit être minimisé.

Les codes décrits précédemment sont des codes en blocs. Dans le contexte du stockage distribué, les codes en graphes clairsemés, tels que les codes Fontaine, les codes Raptor et les codes LDPC, peuvent également être utilisés après quelques arrangements pratiques. En effet, une localité faible peut être obtenue via la conception de matrices de contrôle de parité creuses. Motivés par ce résultat, nous nous sommes intéressés aux codes LDPC spatialement couplés. Ces codes peuvent atteindre les performances d'un décodage (Maximum-à-posteriori) MAP avec un décodage itératif. De plus, jusqu'à maintenant, les codes existant dans la littérature ont été développés dans le cas où seulement un petit nombre de noeuds seraient effacés. Aucun schéma de codage permettant de faire face à une perte de cluster n'a été proposé. Dans les prochains chapitres, nous utiliserons le critère de la diversité afin de concevoir de nouveaux schémas de codage permettant d'être efficace dans le cas où un cluster est effacé (en plus des effacements de symboles uniformes).

Chapitre 2: Couplage spatial pour la diversité

Dans ce chapitre, nous proposons une nouvelle méthode de couplage spatial. Notre méthode de couplage, contrairement à celle proposée dans la littérature [START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF], ajoute de nouvelles arêtes d'un seul côté seulement pour coupler un ensemble LDPC à son voisin. Cette méthode, appelée couplage spatial multicouches à sens direct des codes LDPC, est inspirée de la protection inégale de l'information face aux erreurs (UEP) [START_REF] Calderbank | Multilevel codes for unequal error protection[END_REF] [START_REF] Henkel | UEP concepts in modulation and coding[END_REF].

Construction du couplage spatial multicouches à sens direct des codes LDPC

Le codage en couches est généralement fait par binning ou superposition [START_REF] Chandrashekhar Thejaswi | Layered coding for interference channels with partial transmitter side information[END_REF]. Une autre méthode simple pour construire des codes en couches pour l'UEP est le chevauchement. C'est-à-dire, que la sortie du premier codeur est partiellement ou totalement appliquée à l'entrée du second codeur. Le processus est répété pour un groupe de L c codeurs. Un exemple de codage par couches superposées est représenté sur la Figure 2.

Tout d'abord, une somme directe de L c codes LDPC réguliers (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] est construite en copiant un ensemble (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] sur la diagonale principale de la matrice de contrôle de parité. Ensuite, chaque matrice de contrôle de parité, des ensembles LDPC (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] non couplés, est connectée à son voisin par une matrice creuse (1, 2) (matrice binaire aléatoire creuse avec un poids de un par colonne et un poids de deux par ligne). Une autre illustration de la performance du couplage spatiale multicouches à sens direct est donnée Figure 4. Les seuils BEC sont tracés en fonction de la position spatiale i/L c , pour i = 1 . . . L c , pour l'ensemble (3, 6; 1, 2; L c ). Les performances de l'ensemble couplé avec terminaison dépassent largement celles d'un ensemble LDPC (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] non couplé, mais aussi celles d'un ensemble (4, 8) équivalent non couplé. En fait, l'ensemble couplé avec terminaison sature à 0.49741, i.e. très près du seuil MAP du code LDPC (4,[START_REF] Berrou | Near optimum error correcting coding and decoding: Turbo-codes[END_REF], se référer à la ligne du (4, 8) dans la Table 1. Sans terminaison de la chaîne, le couplage multicouches à sens direct améliore le seuil, mais celui-ci reste bloqué à une valeur relativement faible de 0.44695. Les résultats Figure 4 Un escalier pour la protection inégale de l'information est tracé Figure 5. Les cinq ensembles LDPC non couplés sont, de gauche à droite, (3,[START_REF] Bose | On a class of error correcting binary group codes[END_REF], (3,[START_REF] Biglieri | Coding for Wireless Channels[END_REF], (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF], (3,[START_REF] Arıkan | Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels[END_REF] et (3,4). Les ensembles de couplage correspondant sont (1,4), (1,3) Couplage spatial des ensembles Root-LDPC: Dopage des bits de parité LDPC aléatoire afin de permettre aux noeuds d'information de recevoir les messages de tous les états du canal. Par conséquent, un ensemble Root-LDPC atteint une diversité qui est égale au nombre de degrés de liberté du canal à effacement par blocs. Définissions maintenant la notion de diversité.

xxix R ÉSUM É D ÉTAILL É DE LA TH ÈSE (3,6) (3,6) (3,6) (1,2) (1,2) (1,2) (1,2) (1,2)
L c q i-1 q i p i-1 p i
p i = • f d bs i+1 • 1 -(1 -p i ) dc-1 (1 -q i-1 ) dcs d b -1 , q i = • f d bs -1 i+1 • 1 -(1 -p i ) dc-1 (1 -q i-1 ) dcs d b , f i+1 = 1 -(1 -p i+1 ) dc (1 -q i ) dcs-1 , pour i = 1 . . . L c ,
Definition La diversité est rencontrée dans différents systèmes de communication selon deux aspects principaux:

• La diversité d'un point de vue des codes correcteurs d'erreurs. Elle consiste à créer plusieurs répliques de la même information.

• La diversité d'un point de vue du canal. Il correspond au nombre de degrés de liberté disponibles pour transmettre l'information.

Les codes Root-LDPC sont également MDS du point de vue de la borne du Singleton pour les évanouissements par blocs [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF] et peuvent atteindre le plus grand rendement possible permettant d'obtenir une double diversité. Sous un décodage ML, une borne supérieure de l'ordre de diversité L est donnée par la borne du Singleton pour les xxxv R ÉSUM É D ÉTAILL É DE LA TH ÈSE évanouissements par blocs: Pour le modèle du canal décrit ci-dessus, nous divisons la première classe de bits (couleur verte) en bits d'information et en bits de parité, 1i et 1p respectivement. Une division similaire est faite pour les trois couleurs restant, menant à un total de huit classes de noeuds variables comme cela est illustré Figure 8 (sur la gauche du graphe de Tanner). Quatre classes de noeuds de contraintes sont établies sur la droite du graphe de Tanner puisque le canal possède M = 4 couleurs/évanouissements. Les noeuds contraintes 1c, 2c et 3c sont des rootchecks pour les bits d'informations de type 1i. En effet, nous pouvons constater Figure 8, que sur les noeuds contraintes 1c, 2c et 3c uniquement les noeuds variables de type 1i appartiennent au premier évanouissement (les bits de parité 1p ne sont pas reliés à ces noeuds contraintes). On dit alors, que 1c, 2c et 3c sont des rootchecks pour les bits d'informations de type 1i. Les noeuds variables 1p sont connectés au non rootcheck 4c. Le nombre d'arêtes allant des bits d'information et des bits de parité au noeud contrainte non rootcheck est ∆ i et ∆ p respectivement. La structure du code Root-LDPC est cyclique-symétrique. Les connexions des arêtes sont faites de manière identique pour les trois autres couleurs. L'ensemble illustré Figure 8 a un rendement 3/4 (rendement maximal atteignable pour garantir une diversité de deux). Ce code à double-diversité de rendement maximal avec quatre couleurs peut remplir des effacements indépendants. Cette capacité à manipuler à la fois les effacements indépendants et par blocs/couleurs est maintenant étudiée dans le plan ( 1 , 2 ). Afin d'étudier les performances de l'ensemble Root-LDPC dans le plan à effacement bidimensionnel, nous utilisons la propriété cyclique-symétrique du code en supposant que Les performances de l'ensemble Root-LDPC, dont le graphe de Tanner est représenté Figure 8, sont tracées Figure 9. On peut observer la double diversité en présence d'effacements par blocs sur la Figure 9. En effet, lorsque 1 = 1 (la couleur 1 est complètement effacée) et 2 = 0 (aucun effacement sur les trois autres sous-canaux), nous pouvons reconstruire intégralement les données d'information contenues sur le premier évanouissement. Nous proposons maintenant un couplage spatial partiel de cet ensemble Root-LDPC permettant d'améliorer la saturation du seuil à la frontière de coupure de la capacité. L'ensemble non couplé est copié L c fois. En pratique, la longueur de la chaîne doit être assez grande, par exemple L c = 100. Pour le schéma de couplage illustré Figure 10, la taille de la fenêtre de couplage est w = 2, chaque ensemble en position est couplé seulement à son voisin en position + 1. Dans le cas des codes Root-LDPC, seuls les bits de parité sont couplés au noeud contrainte non rootcheck en position spatiale suivante. En effet, la double diversité des bits d'information nous oblige à coupler uniquement les bits de parité. La chaîne est terminée à droite par un noeud contrainte supplémentaire. Dans le cas général, la taille de la fenêtre de couplage est w, les noeuds de parité en position sont couplés aux ensembles en position spatiale + 1, + 2, ..., + (w -1). Dans ce cas, la chaîne est terminée en ajoutant w-1 noeuds contraintes qui correspondent à w -1 positions spatiales supplémentaires à droite de la chaîne. Le nombre d'arêtes par noeud variable impliqué dans le couplage des bits de parité vers les w -1 noeuds contraintes futures est ∆ c . La frontière de coupure pour un ensemble Root-LDPC couplé est représentée Figure 11 pour une fenêtre de couplage de taille w = 2,3 et 5. Néanmoins, nous n'observons pas une saturation assez forte des codes Root-LDPC couplés. Ceci est dû au couplage spatial partiel des bits de parité uniquement.

L ≤ 1 + M (1 -R) , (4)
4c 1i 4c 4c 1i 4c 1i 1i 4c ℓ ... 1p 1p 1p 1p q ℓ f 1 q ℓ+1 b1 ℓ + 1

Conclusions

Nous avons proposé dans ce chapitre une nouvelle méthode de couplage spatial, le couplage multicouches à sens direct. Cette technique donne des résultats impressionnants avec une taille minimale de la fenêtre de couplage et permet de réaliser un couplage spatialement variant. Le couplage spatialement variant est réalisé en collant des protographes LDPC de paramètres différents, ce qui conduit à un seuil BP spatialement variable. Le code produit a une longueur N = n 1 n 2 et une dimension K = k 1 k 2 . Nous nous limiterons à l'étude des codes produits réguliers.

C P = C 1 [n 1 , k 1 ] q ⊗ C 2 [n 2 , k 2 ] q , où C 1 est

Représentation d'un code produit

Un code produit peut être représenté par un graphe bipartite complet non compact

(V 1 , V
n 2 check nodes n 1 check nodes C 1 C 2 C 2 C 2 C 2 C 1 C 1 C 1 E V 2 V 1 Figure 12: Graphe non compact bipartite G = (V 1 , V 2 , E) d'un code produit [4, 2] ⊗2 , i.e. n 1 = n 2 = 4, k 1 = k 2 = 2, |V 1 | = |V 2 | = 4 et |E| = N = n 1 n 2 =
N c = |E c | = n 1 n 1 -k 1 × n 2 n 2 -k 2 . (6)
|Φ(E)| = N ! ((N/M )!) M , (7)
et sur le graphe compact

|Φ(E c )| = N c ! ((N c /M )!) M . ( 8
) xlii R ÉSUM É D ÉTAILL É DE LA TH ÈSE 2 supernodes 2 supernodes V c 2 V c 1 E c Figure 13: Graphe compact bipartite G c = (V c 1 , V c 2 , E c
) avec deux supernoeuds de chaque côté pour les codes produits de la forme [n, n/2] ⊗2 , par exemple

|V c 1 | = |V c 2 | = 2 et |E c | = N c =
G c = (V c 1 , V c 2 , E c
), le nombre de colorations possibles du graphe étant réduit.

Propriétés et décodage d'un code produit

D'une manière similaire aux codes Root-LDPC, nous introduisons la notion de symboles racines (root symboles, similaire à la notion de rootchecks) pour les codes produits.

Definition Soit G c le graphe compact du code produit, φ une coloration donnée, et e ∈ E c un super-symbole. e est un root super-symbole (super-symbole racine) avec le respect de φ(e), si il admet un sommet voisin υ, υ ∈ V c 1 ou υ ∈ V c 2 , tel que toutes les arêtes adjacentes f dans υ satisfassent φ(f ) = φ(e).

Tous les symboles d'un code produit ne sont pas des symboles racines. En effet, sous un décodage itératif ligne-colonne, sur un canal à effacement par blocs, certains symboles peuvent être résolus en deux itérations de décodage ou plus. Certains ensembles de symboles ne peuvent jamais être résolus et sont appelés des ensembles d'arrêt [START_REF] Di | Finite-length analysis of low-density parity-check codes on the binary erasure channel[END_REF][93] [START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF]. Notre étude est limitée à une double diversité, L = 2, i.e. à effacer tous les symboles d'une couleur parmi les M . Une absence de diversité équivaut à L = 1. Nous établissons maintenant la définition de l'ordre racine (root-order) ρ d'un symbole. Pour les symboles racines, satisfaisant la définition précédente, l'ordre racine est ρ = 1. L'ordre racine d'un symbole pouvant être résolu après deux itérations de décodage est ρ = 2. L'ordre racine peut être défini très simplement comme le nombre minimum d'itérations de décodage nécessaire à la résolution d'un symbole. La définition de l'ordre racine ρ peut aussi être formulée de la manière récursive suivante (pour ρ ≥ 2). La définition précédente implique que ρ(e) = 1 si il n'existe pas d'arête adjacente de la même couleur arrivant au même sommet. De plus, pour une arête e n'admettant pas un ordre fini ρ(e), nous fixons ρ(e) = ∞. Dans le cas où ρ(e) = ∞, ce symbole ne pourra jamais être décodé même après un nombre infini d'itérations de décodage. On dit que ce symbole appartient à un ensemble d'arrêt.

Nous pouvons maintenant définir l'ordre racine maximal d'un code produit. Le paramètre ρ max est important en pratique afin de donner une borne supérieure de la quantité d'information transmise dans un réseau.

Corollaire Soit C P un code produit [n 1 , k 1 ] ⊗ [n 2 , k 2 ] avec un graphe compact G c . Soit φ ∈ Φ(E c ) une coloration d'arêtes. Nous définissions ρ max (φ) = max e∈E c ρ(e). (9)

Définition, propriétés et énumération des ensembles d'arrêt

Cette section est consacrée à la définition des notions primordiales pour comprendre et interpréter ce qu'est un ensemble d'arrêt. Nous commençons par définir le support d'un code linéaire. Cette notion de support X est appliquée aux codes élémentaires lignes et colonnes du code produit.

Définition Soit C un q-aire code linéaire de longueur n, i.e. C est un sous-espace de F n q de dimension k. Le support de C, noté X (C), est l'ensemble des positions distinctes {i 1 , i 2 , . . . , i } = {i j } j=1 , 1 ≤ i j ≤ n, tel que pour tout j, il existe un mot de code

c = (c 1 . . . c n ) ∈ C avec c i j = 0.
Définissons maintenant le support rectangulaire qui est utilisé pour représenter un ensemble d'arrêt dans un code produit à deux dimensions.

Définition Soit S ⊆ {1, . . . , n 1 } × {1, . . . , n 2 } un ensemble de positions des symboles dans le code produit. L'ensemble des positions des lignes associé à

S est R 1 (S) = {i 1 , . . . , i 1 } où |R 1 (S)| = 1 et pour tout i ∈ R 1 (S) il existe (i, ) ∈ S. L'ensemble des xlv R ÉSUM É D ÉTAILL É DE LA TH ÈSE positions des colonnes associé à S est R 2 (S) = {j 1 , . . . , j 2 } où |R 2 (S)| = 2 et pour tout j ∈ R 2 (S) il existe ( , j) ∈ S. Le support rectangulaire de S est R(S) = R 1 (S) × R 2 (S), (11) i
(j) c ⊆ C 1 et C (i) r ⊆ C 2 tel que X (C (j) c ) = S (j) c et X (C (i) r ) = S (i) r pour tout i ∈ R 1 (S) et pour tout j ∈ R 2 (S).
La cardinalité de |S| est appelée la taille de l'ensemble d'arrêt et sera aussi référencée dans la suite comme le poids de l'ensemble d'arrêt.

Les ensembles d'arrêt pour les décodeurs de types II-IV peuvent être caractérisés par quatre propriétés principales:

• Les ensembles d'arrêt évidents (obvious) ou non évidents (not-obvious), aussi connus comme ensembles de rang 1. Un ensemble d'arrêt S est évident si S = R(S).

• Les ensembles d'arrêt primitifs ou non primitif. Un ensemble d'arrêt est primitif si il ne peut pas être partitionné en deux ou plusieurs ensembles d'arrêt plus petits.

• Les ensembles d'arrêt mot de code ou non mot de code. Un ensemble d'arrêt S est dit être un mot de code si il existe un mot de code c dans C P tel que X (c) = S. La population des mauvaises arêtes est définie par l'ensemble suivant

B = {e ∈ E c : ρ(e) > 1}. ( 12
)
Le nombre de bonnes arêtes est donné par

η(φ) = |E c \ B| = |{e ∈ E c : ρ(e) = 1}| . ( 13
)
Parmi les |B| mauvaises arêtes, la couleur d'une fraction ℵ des arêtes est modifiée dans le but de maximiser η(φ), ℵ ∈ N. La fraction ℵ/|B| doit être suffisamment large pour permettre une évolution de la population mais elle doit rester suffisamment petite dans le but de limiter la complexité de l'algorithme. Le fonctionnement de l'algorithme DECA est décrit par l'organigramme Figure 14.

La complexité de DECA est majoritairement due à la boucle à évolution différentielle. La complexité est proportionnelle au nombre total de permutations Λ(γ 1 , . . . , γ M ) par itération associées à chaque composition faible Γ : γ 1 + . . . + γ M = ℵ. Par conséquent, le nombre d'opérations dans DECA se comporte comme

Λ ≤ Λ max (ℵ, M ) = ℵ! ((ℵ/M )!) M . ( 14
)
Lorsque ℵ n'est pas un multiple de M , le dénominateur dans le terme de droite doit être re-écrit comme i 0 i=1 ℵ/M × M i=i 0 +1 ℵ/M , où i 0 est choisi tel que la somme de tous les éléments impliqués dans les deux produits soit égale à ℵ. Toutes les compositions Γ de ℵ ne sont pas considérées dans cet algorithme. En fait, le nombre total de permutations pour toutes les compositions faibles est

Γ j=1 (γ 1 (j) + . . . + γ M (j))! M i=1 γ i (j)! = M ℵ . ( 15
)
Heureusement, la complexité par itération de DECA donnée dans [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] est bien plus petite que M ℵ , i.e. Λ max = o(M ℵ ). Dans la conception pratique des codes produits, nous avons Λ max M ℵ M N c . Le but de l'algorithme proposé est de maximiser η(φ) mais il ne peut pas garantir que ∀e ∈ E c , ρ(e) < ∞. Dans certains cas, l'algorithme termine toutes ses itérations et il xlvii R ÉSUM É D ÉTAILL É DE LA TH ÈSE

φ 0 = φ 1 Subroutine (optional) Max Diversity NO iter = 0 M, ℵ, MaxIter (V c 1 , V c 2 , E c ) φ 0 ∈ Φ(E c )
Precompute Γ weak compositions For each composition γ 1 + . . . + γ M = ℵ precompute the Λ color permutations Ceci apparaît lorsque l'on essaie de concevoir un code produit de rendement très proche ou égal à 1 -1/M . Pour remédier à cette faiblesse, DECA possède une sous-routine appelée Max Diversity, voir Figure 14. De même que pour la seconde étape de la boucle à évolution différentielle, cette sous-routine applique une permutation de couleurs sur les arêtes du sous-ensemble

λ < Λ φ(B ℵ ) ← π λ (φ 0 (B ℵ )) η(φ) > η max YES YES NO Select B ℵ ⊂ B η max = η(φ) φ 1 = φ λ ← λ + 1 φ = φ 0 , η max = 0, λ = 1 Build B = {e ∈ E c : ρ(e) = 1}
B ℵ 1 , |B ℵ 1 | = ℵ 1 , B ℵ 1 ⊂ B ∞ , et B ∞ = {e ∈ E c : ρ(e) = ∞}. ( 16
)
Appliquons maintenant DECA pour concevoir un code produit à codes élémentaires MDS ayant une double diversité. Les valeurs numériques ont été sélectionnées de façon à rendre ces codes appropriés pour les applications de stockage distribué et les systèmes à diversité dans les réseaux sans fil. Le paramètre M axIter est fixé à 100. DECA avec une centaine d'itérations trouve une solution en une petite fraction de seconde sur un ordinateur standard.

Exemple DECA est appliqué à la coloration d'arêtes du graphe compact d'un code produit

C P 1 = [n, k, d] ⊗2
q , où n = 12, k = 10, d = 3, et la taille de l'alphabet du corps fini est q > 12. Le rendement de C P 1 est R(C P 1 ) = 25/36 < 1-1/M = 3/4, i.e. l'écart à (4) est de 1/18. Ce petit écart est suffisant pour rendre une conception à double diversité simple. La coloration dans Φ(E c ) peut facilement être convertie en son homologue dans Φ(E) en remplaçant chaque super-symbole par quatre symboles. De [START_REF] Berrou | Near Shannon limit error-correcting coding and decoding: turbo codes[END_REF] Un autre moyen de démontrer l'efficacité de l'algorithme DECA est de comparer le résultat obtenu à une sélection aléatoire de Φ(E) et Φ(E c ) et d'obtenir une estimation des distributions de η(φ) et ρ max (φ). En effet, une permutation uniformément répartie dans le groupe symétrique d'ordre N donne une coloration des arêtes uniformément distribuée. Ceci est également vrai pour Φ(E c ) lorsque le groupe symétrique est d'ordre N c . Ainsi, nous avons sélectionné de manière uniforme 2 milliards de colorations d'arêtes dans Φ(E) et Φ(E c ) respectivement. Pour chaque coloration, les ordres racines des arêtes ont été calculés. Seul les colorations de graphes à double diversité ont été comptées pour la comparaison. Comme illustration, les caractéristiques de colorations de graphes aléatoires à double diversité pour C P 1 sont tracées Figure 16 où les estimations numériques des distributions de probabilités sont comparées à la coloration obtenue avec DECA.

G B R G B Y Y G R B B R Y Y G B Y B G G R R Y R R Y G G R G B Y B Y B R (a)
(q, ), pour un rendement R satisfaisant 1 - 2 M < R ≤ 1 - 1 M , (17)
nous avons

2 ≤ P M L ew ≤ P G ew ≤ M i=2 M i i (1 -) M -i . ( 18
)
Comme φ a une double diversité, il existe deux couleurs parmi les M couleurs telles que le décodeur itératif va échouer si ces deux couleurs sont effacées. Ceci explique la borne supérieure de P G ew dans [START_REF] Boutros | The anti-diversity concept for secure communication on a two-link compound channel[END_REF]. Cette borne supérieure est valide pour tout rendement inférieur au rendement maximal atteignable pour obtenir une double diversité, i.e. 1-1 M . Si nous choisissons un rendement R ≤ 1-2 M , le décodeur ML peut atteindre une diversité L = 3. Or nous limitons cette étude à une diversité L = 2, il n'est donc pas judicieux de choisir un rendement R ≤ 1 -2 M . Par conséquent, si le rendement est choisi dans l'intervalle 1 -2 M < R ≤ 1 -1 M , le décodeur ML de C P peut seulement atteindre une diversité L = 2 et donc il existe une paire de couleurs qui une fois effacée ne peut pas être retrouvée par le décodeur ML.

Effacements indépendants

Considérons maintenant le canal à effacement i.i.d. SEC(q, ). Les N symboles d'un mot de code sont indépendamment effacés par le canal. Un symbole est effacé avec une probabilité et est correctement reçu avec une probabilité 1 -. Sur le canal SEC(q, ), la coloration d'arêtes n'a pas d'effet sur les performances de C P . Avant d'étudier les li R ÉSUM É D ÉTAILL É DE LA TH ÈSE performances du SEC(q, ), nous formulons la proposition suivante et son corollaire. q , sans coloration d'arêtes. Performances des probabilités d'erreur par mot et par symbole pour un décodage itératif versus sa borne de l'union et le décodage ML. performance d'un canal à effacement multiple, nous définissons le SEC(q, { i } M i=1 ). Sur ce canal, les effacements de symboles sont indépendants mais la probabilité d'effacer un symbole est i si il est associé à une arête dans G de couleur φ(e) = i. La borne de l'union peut facilement être modifiée pour obtenir

Proposition Soit C P = C 1 ⊗ C 2 un
P G ew ≤ P U ( 1 , . . . , M ), (20)
où

P U ( 1 , . . . , M ) = N w=d 1 d 2 w 1 , . . . , w M : i w i = w τ (w 1 , . . . , w M ) M i=1 w i i . (21)
(q, { i } 4 i=1 ) avec 1 = 2 = 3 .
Par conséquent, le code produit devrait être performant si l'un des i est proche de 1 et si le reste des i sont suffisamment petits. Ce cas extrême est vrai grâce à la double diversité qui donne P U (0 M -1 , 1 1 ) = 0, où (0 M -1 , 1 1 ) représente tous les vecteurs avec toutes les composantes à 0 sauf en une position fixée à 1. La Figure 18 montre la performance du code produit [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 q sur le canal SEC(q, { i } M i=1 ) avec M = 4 couleurs. La coloration d'arêtes considérée est celle produite par l'algorithme DECA de la Figure 15

Conclusions

Les travaux de cette thèse sont centrés sur le stockage distribué dans les centres de données en interaction avec les ressources du cloud computing. Pour le stockage distribué, le modèle du canal à effacement est combiné aux structures de codes particulières. Nous avons largement utilisé le modèle du canal à effacement dans ces travaux de recherche. Le canal à effacement est un modèle simple, adapté à la fois aux longueurs finies et à l'analyse de codes de longueurs infinies. Malgré sa simplicité, il permet une bonne compréhension du comportement des codes et aide à leur conception.

La première partie de ce travail est consacrée à l'étude des performances des codes spatialement couplés sur le canal à effacement. Le couplage spatial des codes en graphe, principalement les codes LDPC, est une méthode récemment développée pour atteindre la capacité sur tout canal symétrique sans mémoire à entrée binaire. La capacité de Shannon est approchée en laissant trois paramètres devenir suffisamment grands: la distribution de degrés, la taille de la fenêtre de couplage et la longueur de la chaîne. Dans notre travail, nous avons montré qu'une petite fenêtre de couplage donne des résultats impressionnants en termes de seuils du décodage itératif. Cette nouvelle méthode est appelée couplage spatial multicouches à sens direct. Cette méthode est inspirée du codage par couches et a la mémoire la plus courte possible, i.e. w = 2. Les arêtes des ensembles locaux et ceux définissant le couplage spatial sont construites séparément. Cette nouvelle méthode permet ainsi la construction de chaînes de couplage non uniformes et spatialement variantes. Ensuite, nous avons appliqué le couplage spatial multicouches à sens direct aux codes Root-LDPC. Dans ce cas, seuls les bits de parité ont été couplés. Le couplage spatial des bits de parité joue le rôle de dopage pour les codes à diversité pleine. L'étude des performances sur canal à effacement a montré une amélioration de la saturation de la frontière de coupure de code par rapport aux codes non couplés. Les ensembles Root-LDPC spatialement couplés atteignent des seuils très proches de la limite de capacité dans le plan à effacement. Ce comportement dans le plan à effacement entraîne automatiquement une saturation de la frontière de coupure du code Root-LDPC sur un canal à évanouissements par blocs avec un bruit additif.

Introduction

C

urrent technology in both software and hardware, combined to mathematical tools driven by Coding Theory, Information Theory, and Communication Theory, is dramatically changing our society. These tools helped wireless networking technologies to make a spectacular progress and in turn to become an almost ubiquitous component of modern life revolutionizing education, culture and the exchange of information in general. New efficient techniques appeared recently for point-to-point communications and for information transmission and processing in networks, namely: network coding, coding for distributed storage, spatially-coupled graph codes, and lattices in high dimension for iterative decoding.

In nowadays information systems, Cloud Computing is a common concept where most of the resources are available online. Such a concept is of great interest because resources are evolving in an instantaneous and automatic manner. There exists in communication systems a sub-class of Cloud Computing referred to as Distributed Computing. In the latter, many network nodes proceed jointly for solving a problem or for answering a request. Distributed Storage is yet another case of Distributed Computing, where a file is stored in parts on multiple network nodes. This Ph.D research work investigates distributed storage over data centers interacting with cloud computing resources, serving clients or mobile users. This case can be represented by the canonical scenario depicted in Figure 19 where a source, requesting cloud services, disperses a file across n nodes with enhanced computing and storage capabilities. Error-control codes are the main tool for distributive computing/storage. Besides trivial repetition coding, a Reed-Solomon code or any Maximum Distance Separable (MDS) code is capable of reconstructing the source file [START_REF] Kubiatowicz | Oceanstore: An architecture for global-scale persistent storage[END_REF]. The main objective of distributed coding for storage is to increase the reliability of reconstruction and minimize the required bandwidth.

Coding can be used to offer different levels of error protection for the requested quality of service and power constraints depending on the wireless channel state between the k nodes and the terminal. Such unequal error protection (UEP) coding schemes have been studied for wireless networks based on Low-Density Parity-Check (LDPC) codes, e.g. see [START_REF] Pishro-Nik | Nonuniform error correction using lowdensity parity-check codes[END_REF]. On the other hand, upon failure of a node within the network, coding can also be used to regenerate the failed nodes. During the repair process, the replacement node can contain the same information or it may contain a functionally equivalent information, while minimizing the repair bandwidth, i.e. minimizing the number of network downloads to replace the failing node.

Many coding families are potential candidates for distributed storage, most of them are concatenated codes. This thesis consider LDPC structures and product codes structures. An LDPC is the concatenation of a high number of small check nodes. On top of this concatenation, spatial coupling involves multiple copies of the same LDPC ensemble where spatial edges connect one copy to another. On the other hand, a product code is a bi-dimensional code built from row and column code components. Its matrix representation has a complete graph equivalent. Product codes are also concatenated codes and they may be considered as cousins to LDPC thanks to their iterative row-column decoding.

Thesis Outline and Contributions

This dissertation is composed of four main chapters. The contents and the contributions of each one of them are summarized in the following.

Chapter 1:

Chapter 1 lists important error-correcting codes as found in the current literature. First, the basic properties of the binary erasure channel are given. Then, a review of the fundamental features is given for Reed-Solomon codes, Product codes, LDPC, Fountain codes, spatially-coupled codes, Polar codes, and finally Reed-Muller Codes. Readers who are experts in coding theory may skip this chapter.

Fanny Jardel

INTRODUCTION

Chapter 2:

We aim in this chapter to present distributed storage constraints and make an overview of existing codes for such storage systems. Based on the study of a practical case of a Facebook data center, the constraints of coding for distributive storage are presented in Section 2.1. In nowadays systems, coding for distributed storage systems is achieved using two main approaches: Replication and Erasure codes. These two methods are analyzed and discussed in Section 2.2. In the literature, other coding techniques have been proposed to overcome the repair process drawbacks of MDS erasure codes, namely regenerating codes and locally repairable codes. They are described in Sections 2.3 & 2.4. In the context of distributed storage, sparse-graph codes, such as Fountain codes and LDPC codes, can also be used after a convenient arrangement. Section 2.5 is dedicated to the study of Fountain codes. In this last section, we have examined the properties of repairable Fountain codes in order to determine the necessary criteria to design efficient repair codes for distributed storage systems.

Chapter 3: Chapter 3 reviews in first Section 3.1 uniform spatial coupling as known in the literature. Then, a new method for spatial coupling of low-density parity-check ensembles is proposed in Section 3.2. The method is inspired from overlapped layered coding. Edges of local ensembles and those defining the spatial coupling are separately built. The new method allows, in Section 3.2, the construction of non-uniform coupling chains with near-Shannon spatially-varying thresholds under iterative decoding. The space-varying coupling is formed by gluing non-identical LDPC ensembles. The binary erasure channel (BEC) is the default transmission channel, however, all results are extendable to binary memoryless symmetric (BMS) channels.

Random low-density parity-check (LDPC) ensembles do not achieve full diversity on non-ergodic channels. To cope with block erasures and quasi-static fading, a special Root-LDPC structure is considered. A Root-LDPC ensemble guarantees that any information bit receives messages from all channel states. Results in the literature show that the gap between the Root-LDPC boundary and the capacity boundary in the fading plane is not small enough. We propose in Section 3.3 to saturate the whole Root-LDPC boundary via spatial coupling. For simplicity, we adopt an equivalent erasure channel model rather than a block fading model. It is shown that spatial coupling of parity bits is sufficient to saturate the Root-LDPC threshold boundary in the erasure plane.

Finally, in Section 3.4, spatial coupling is applied on parity bits of a Root-LDPC ensemble designed for a channel with 4 block-erasure states and a maximal design rate of 3/4 attaining double diversity. The advantage of spatial coupling is shown in the erasure plane as an improvement of a threshold boundary, under independent erasures. The spatial coupling maintains the double diversity because it connects parity bits only. The drawback of this partial coupling is a weak saturation of the threshold boundary towards the capacity boundary. This method is proposed as the design of distributed coding repair schemes.

INTRODUCTION

Chapter 4: We consider non-binary product codes with MDS components and their iterative row-column algebraic decoding on the erasure channel. Both independent and block erasures are considered in this chapter. A compact graph representation is introduced on which we define double-diversity edge colorings via the rootcheck concept. An upper bound of the number of decoding iterations is given as a function of the graph size and the color palette size M . Stopping sets are defined in the context of MDS components and a relationship is established with the graph representation. A full characterization of these stopping sets is given up to a size (d 1 + 1)(d 2 + 1), where d 1 and d 2 are the minimum Hamming distances of the column and row MDS components respectively. Then, we propose a differential evolution edge coloring algorithm that produces colorings with a large population of minimal rootcheck order symbols. The complexity of this algorithm per iteration is o(M ℵ ), for a given differential evolution parameter ℵ, where M ℵ itself is small with respect to the huge cardinality of the coloring ensemble. The performance of MDS-based product codes with and without double-diversity coloring is analyzed in presence of both block and independent erasures. In the latter case, ML and iterative decoding are proven to coincide at small channel erasure probability. Furthermore, numerical results show excellent performance in presence of unequal erasure probability due to double-diversity colorings. The main results in this chapter are:

• Establishing a new compact graph for product codes. The compact graph has many advantages, the main one being its ability to imitate a Tanner graph with paritycheck nodes. The compact graph is also the basis for the differential evolution edge coloring. See Section 4.2.2.

• Iterative decoding analysis of finite-length product codes, mainly the proof of new bounds on the number of decoding iterations. See Theorem 4.1 and Corollary 4.1.

• • A new edge coloring algorithm (DECA) capable of producing double-diversity colorings despite the huge size of the coloring ensembles. See Section 4.4.2.

• Construction via the DECA algorithm of product codes maximizing the number of edges with root order 1, i.e. minimizing the locality when the process of repairing nodes is considered. See Section 4.4.3.

• First numerical results for MDS-based product codes on erasure channels showing how close iterative decoding is to ML decoding, mainly for small . We proved INTRODUCTION that iterative decoding perform as well as ML decoding (the ratio of error probabilities tends to 1) for MDS-based product codes at small . See Proposition 4.3, Corollary 4.5, and other performance results in Section 4.5.2.

• Great advantage of double-diversity colorings of product codes (with respect to codes without coloring) in presence of unequal probability erasures. Thus, doublediversity colorings are efficient on both ergodic and non-ergodic erasure channels. See Section 4.5.3.

Finally, the results of this work and some future research perspectives are summarized in a general conclusion.

Fanny Jardel

INTRODUCTION

Fanny Jardel 6 Chapter 1

Channel Coding Background and Recent Advances I n the last decade, coding theory evolved from algebraic doing to modern coding. Nowadays, in recent coding, all areas are interconnected and any separation between algebraic-based and graph-based codes is senseless. Besides the algebraic description of Reed-Solomon codes (and BCH codes in general), the multi-facet description of Reed-Muller codes, and the graph representation of low-density parity-check codes, polar codes have a new description importing its tools from information theory. This chapter briefly describes some important error-correcting codes that are directly related to our main chapters in this report dealing with spatial coupling of LDPC codes and RS-based product codes. In addition, some codes are quickly reviewed as they correspond to some hot areas in current research.

Erasure channel essential

Erasure channel is the simplest non-trivial channel model. This model has for each transmitted input two possible outcomes: either it is correctly received or it is known to be lost, no corruption is possible. The decoding problem is to find the values of the information erased given the locations of erasures and the non-erased part of the codeword. The transmitter and the receiver know the time t, i.e. they are both synchronized. The channel input at time t is denoted by X t and the corresponding output Y t .

The Binary Erasure Channel (BEC) was introduced by Peter Elias in 1954 as a toy example. In the case of the binary erasure channel the channel input is binary and X t ∈ {0, 1}. The corresponding output Y t is ternary and takes on values in the alphabet {X t , ?}, where ? indicates an erasure. One transmitted bit is erased with probability , i.e. P (Y t =?) = and P (Y t = 0) = P (Y t = 1) = 1 -. Erasure occurs for each t independently, therefore the channel is said to be memoryless. The Binary Erasure Channel, BEC( ) is illustrated in Figure 1 In this thesis, we consider also non-binary erasure channel. For this channel model, the input X t is q-ary and belongs to the finite field F q . The integer q is the number of elements of the finite field F q . Respectively, Y t belongs to F q ∪ {?}. We can notice that binary erasure channel is a particular case where q = 2.

.1. CHAPTER 1. CHANNEL CODING BACKGROUND 1 -ǫ ǫ ǫ 1 0 ? 1 0 X t Y t 1 -ǫ
Our interest is focused on three erasure channels:

• The symbol erasure channel: SEC(q, ). The N symbols of a codeword are independently erased. A symbol is erased with a probability and is correctly received with a probability 1 -. The erasure events are independent from one symbol to another. This channel is said to be ergodic. Ergodicity of a channel is defined as follows:

Definition 1.1. A channel is said to be ergodic if the time average of the signal is equal to the collective average. In other words, the randomness of the channel gain can be averaged out over time.

In a similar way we can define a non-ergodic channel: Corollary 1.1. A channel is non-ergodic if its channel gain is a random variable and is assumed to be invariant for some time period. The channel gain process is stationary but not ergodic, i.e., the time average is not equal to the ensemble average. In other words, the randomness of the channel gain cannot be averaged out over time. So long-term constant bit rates cannot be supported.

• The block erasure channel: CEC(q, ). The N symbols of a codeword are partitioned into M blocks, each block contain symbols. M is the number of degrees of freedom of the channel. The channel erases a block with a probability . The block is correctly received with a probability 1 -. The erasure events are independent from one block to another. From Corollary 1.1, the block erasure channel is a non-ergodic channel. In this context, non-ergodicity means that the transmitted codeword spans only a finite number M of independent realizations of the channel independently from its length. Block erasure channel is a particular case of non-ergodic (quasi-static) fading channels, where the fading coefficient α belongs to {0, +∞}.

LINEAR BLOCK CODES

• The unequal probability symbol erasure channel: SEC(q, { i } M i=1 ). As in the previous case, the N symbols of a codeword are partitioned into M blocks. The particularity of this channel is that the symbol erasures are independent but their probability varies from one block to another. Symbol erasures occur independently, consequently Defini-tion1.1 leads to conclude that this channel is ergodic.

In the case of ergodic erasure channel, we can define the channel capacity as follows:

C BEC (q, { i } M i=1 ) = log(q) × (1 - 1 M M i=1 i ) bits per channel use. (1.1)

Linear block codes

The aim of this section is to present briefly the main properties of linear block codes.

A block code [n, k, d] q encodes the input data stream by dividing it into k blocks of data symbols. The encoder takes each k information word and adds parity symbols to make an n symbol codeword which is transmitted over the channel. There are nk parity symbols. k is known as the code dimension and n is known as the block-length.

Definition 1.2. An [n, k, d] q q-ary block code C is a set of q k q-ary sequences of length n, called codewords.

Definition 1.3. The coding rate R of a block code is the ratio between its dimension k and its block-length n. It is defined as

R = k n (1.2)
Let x and y be two codewords of C.

Linear block codes are subject to the additional constraint that any linear combination of the codewords is also a codeword. In the q-ary case, the addition and the scalar multiplication are component-wise modulo q. Definition 1.6. For a linear block code [n, k, d] q , the code dimension k is a vector subspace of F n q .

Definition 1.7. The minimum Hamming distance d of any linear block code satisfies the Singleton bound:

d ≤ 1 + n -k. ( 1
d = 1 + n -k, (1.5)
is called a Maximum-Distance Separable (MDS) code.

In the following sections of this chapter, linear block codes are briefly presented. Linear block codes can be introduced in three different ways:

• Polynomial representation, e.g. generator polynomial, check polynomial.

• Matrix representation, e.g. generator matrix, parity-check matrix.

• Graphical representation, e.g. Tanner graph, factor graph.

A convenient representation will be chosen according to the mathematical tool needed for the introduction of the code.

Reed-Solomon codes

Reed-Solomon (RS) codes are block-based error-correcting codes that were introduced by Irving S. Reed and Gustave Solomon in 1960 [START_REF] Reed | Polynomial codes over certain finite fields[END_REF]. They are applied in all areas requiring reliable data. The most prominent applications are in digital communications and storage. These codes were defined for noisy channel where errors, i.e. the data transmitted is modified during the transmission, occur during transmission. Reed-Solomon codes can also be used to correct burst of errors. A burst of errors is a series of bits in the codeword which are received in error.

RS codes are linear block codes and belong to the family of BCH (Bose, Ray-Chaudhuri et Hocquenghem) codes, which are a class of cyclic error-correcting codes constructed using finite fields. For more details see [START_REF] Hocquenghem | Codes correcteurs d'erreurs[END_REF], [START_REF] Bose | On a class of error correcting binary group codes[END_REF], [START_REF] Blahut | Algebraic codes for data transmission[END_REF], [START_REF] Macwilliams | The theory of error-correcting codes[END_REF]. An RS code is a cyclic linear block code over the finite field F q of length n, with n a divisor of q -1. When n = q -1 the RS code is said to be primitive. Reed-Solomon codes are maximum distance separable codes as they attain the Singleton bound in Definition 1.8. In the sequel of this thesis, we only consider non-trivial non-binary RS codes where q > n > 2.

Let ν be the number of errors and µ the number of erasures occurred during the transmission. In presence of errors only, any pattern of ν errors can be decoded, provided that

ν ≤ d -1 2 . (1.6)
Similarly, in presence of erasures only, any pattern of µ erasures can be decoded, provided that µ ≤ d -1.

(1.7) Fanny Jardel

REED-SOLOMON CODES

In presence of both errors and erasures the condition of successful decoding is given by:

2ν + µ ≤ d -1 (1.8)
The following list sums up several advantages of Reed-Solomon codes:

• RS codes are useful when a code is required of length less that the size of the field.

• They have the highest possible minimum distance, i.e. they are MDS.

• They allow to correct a burst of errors.

• They are convenient for constructing other codes, as we shall see in Section 1.4.

Reed-Solomon encoder

The BCH view: The codeword as a sequence of coefficients

Consider an [n, k, d] q Reed-Solomon code. A codeword c(x) is generated using a special polynomial called generator polynomial and denoted g(x). Codewords are valid if they are exactly divisible by the generator polynomial. Let α be a primitive root of F(q). The general form of the generator polynomial is given by:

g(x) = (x -α b )(x -α b+1 ) . . . (x -α b+d-2 ).
(1.9)

Usually, but not always, b = 1. Reed-Solomon encoder can be systematic or non-systematic.

Definition 1.9. Let C be a [n, k, d] q linear or non-linear code. The encoder is called systematic if the information data is embedded in the encoded output. An non-systematic encoder scrambles the message, i.e. the encoded message does not contain the input symbols.

In the case of non-systematic encoder, further computations are necessary to recover the information data. A non-systematic codeword is constructed using:

c(x) = g(x)i(x), (1.10)
where i(x) is the information polynomial. In the case of systematic codeword, the previous equation is modified as follows:

c(x) = i(x)x n-k + [i(x)x n-k ] mod(g(x)), (1.11)
where [i(x)x n-k ] mod(g(x)) denotes the parity polynomial.

CHAPTER 1. CHANNEL CODING BACKGROUND

Reed & Solomon's original view: The codeword as a sequence of values

This method is the original one proposed by Reed and Solomon. Let i = (i 0 , i 1 , . . . , i k-1 ), i j ∈ F q , be the message to be encoded. Let define i(x) such as:

i(z) = k-1 j=0 i j z j .
(1.12)

The codeword is obtained by evaluating i at n different points α 0 , α 1 , . . . , α n-1 of the finite field F q . Thus, c = (i(1), i(α), . . . , i(α n-1 )).

(1.13)

We show that c is a RS codeword by verifying that c(x) = n-1 j=0 c j x j has α, α 2 , . . . , α n-1 as zeros.

Reed-Solomon decoder

Another advantage of RS codes is the ease with which they can be decoded, namely, via an algebraic method known as syndrome decoding. Consider an RS code of parameters [n, k, d] q . Let c(x) be the transmitted codeword and r(x) be the received codeword. The received codeword for an error-only channel can be expressed as

r(x) = c(x) + e(x), (1.14)
where e(x) is an unknown error polynomial. The error polynomial e(x) is

e(x) = e n-1 x n-1 + e n-2 x n-2 + . . . + e 1 x 1 + e 0 , (1.15)
where at most d-1 2 coefficients are nonzero. Suppose that ν errors occur at unknown position i 1 , i 2 , . . . , i ν , then e(x) can be written

e(x) = e i 1 x i 1 + e i 2 x i 2 + . . . + e iν x iν , (1.16)
where e i l is the unknown magnitude of the lth error. Note that the number ν of errors is also unknown. A Reed-Solomon decoder attempts to identify the number of errors, their positions and their values (magnitudes). Based on this, e(x) can be calculated and subtracted from r(x) to get the original message c(x).

RS codes can be decoded either in time domain or in frequency domain. Decoding in the frequency domain, using Fourier transform techniques, can offer computational and implementation advantages. For this reason, decoding algorithms are presented in the frequency domain in the sequel and they are considered for channels with algebraic errors which is the most general case.

For erasures-only channels, the positions of erased symbols are known. Thus, the erasure-locator polynomial and its roots are already determined. In this case, one way Fanny Jardel to decode is to guess the erased symbols and then apply any error-correction procedure. Reed-Solomon codes over erasures-only channels can be decoded via Maximum-Likelihood (ML) decoder. This is a non-iterative decoder based on a Gaussian reduction of the parity-check matrix of the RS code. For a channel making both errors and erasures, the procedure is similar to the one with errors but erasure filling is incorporated into the algorithm. The reader should refer to chapter 7 in [START_REF] Blahut | Algebraic codes for data transmission[END_REF] for more details about these algorithms. In presence of errors, the most common ones follow this general outline:

1. Calculate the syndromes S j for the received vector.

2. Determine the number of errors and the error-locator polynomial Λ(x).

3. Calculate the roots of the error-locator polynomial to find the error locations.

4. Determine the error-evaluator polynomial Γ(x) and the error values.

Correct the errors.

Calculate the syndromes

The syndrome values are formed by evaluating r(x) at α i 1 , . . . , α iν . Thus the syndromes are S j = r(α j ) = c(α j ) + e(α j ) = e(α j ).

(1.17

)
If there is no error, S j = 0 for all j = 1, . . . , d -1. If the syndromes are all zero, then the decoding is achieved. We define the lth error values by Y l = e i l , and the lth error location numbers by X l = α i l , for l = 1, . . . , ν. With these notations the syndrome values are given by

S 1 = Y 1 X 1 + Y 2 X 2 + . . . + Y ν X ν S 2 = Y 1 X 2 1 + Y 2 X 2 2 + . . . + Y ν X 2 ν . . . S d-1 = Y 1 X d-1 1 + Y 2 X d-1 2 + . . . + Y ν X d-1 ν
The decoding problem is now reduced to solve a system of non-linear equations. The solution to this system is unique. The set of non-linear equations is too difficult to solve directly, therefore a process called locator decoding is computed.

Find the symbol error locations

This step consists in determining the error-locator polynomial Λ(x) in order to find the error locations. Λ(x) is defined as

Λ(x) = ν l=1 (1 -xX l ) = 1 + Λ 1 x + Λ 2 x 2 + . . . + Λ ν x ν (1.18)

Fanny Jardel 13 CHAPTER 1. CHANNEL CODING BACKGROUND

The zeros of Λ(x) are the reciprocals X -1 l :

Λ(X -1 l ) = 0 (1.19)
If the coefficients of Λ(x) are known, then we can find its zeros to obtain the error locations.

We multiply Equation (1.18) by Y l X j+ν l for j = 1, . . . , d -1 and set x = X -1 l :

Y l (X j+ν l + Λ 1 X j+ν-1 l + . . . + Λ ν X j l ) = 0. (1.20)
Equation (1.20) is true for all l. Then we sum these equations from l = 1 to l = ν. For each j, j = 1, . . . , d -1, we have:

ν l=1 Y l (X j+ν l + Λ 1 X j+ν-1 l + . . . + Λ ν X j l ) = 0, (1.21)
from which we can deduce:

S j+ν + Λ 1 S j+ν-1 + Λ 2 S j+ν-2 + . . . + Λ ν S j = 0. (1.22) Finally, as ν ≤ d-1 2 if 1 ≤ j ≤ d-1-ν
, the subscripts always specify known syndromes. The set of linear equations relating the syndromes to the coefficients is:

Λ 1 S j+ν-1 + Λ 2 S j+ν-2 + . . . + Λ ν S j = -S j+ν , j = 1, . . . , d -1 -ν. (1.23)
This system can be written as

S k = - ν j=1 Λ j S k-j , k = ν + 1, . . . , d -1. (1.24)
The connection weights (Λ 1 , Λ 2 , . . . , Λ ν ) for the smallest ν ≤ d-1 2 for which the system (1.24) has a solution can be found with different algorithms. The most known are:

• Peterson algorithm.

• Berlekamp-Massey algorithm. and are explained in chapters 6 and 7 in [START_REF] Blahut | Algebraic codes for data transmission[END_REF]. Peterson algorithm has a complexity proportional to ν 3 due to the inversion of a ν × ν matrix. Consequently, when ν is large another method should be used to find the polynomial Λ. The Berlekamp-Massey algorithm is an alternative procedure. It allows to solve the system of equations (1.24) but in a modified version. In this case, the system of equations has to be solved for the smallest ν ≤ d -1. This algorithm is iterative and has to create the minimum-length linear recursion (Λ(x), ν). At each iteration r = 1, . . . , d -1, a discrepancy polynomial 1.3. REED-SOLOMON CODES ∆(x) based on a current instance of Λ (r) (x) with an assumed number of errors L r is calculated. The discrepancy polynomial is defined as ∆(x) = Λ(x)S(x).

(1.25)

At iteration r, in order to compute the shortest linear recursion (Λ (r) , L r ) the earlier iterations are used in the discrepancy polynomial which is defined as,

∆ r = L r-1 j=1 Λ (r-1) j S r-j . (1.26)
Then, Λ (r) (x) and L r are adjusted until ∆ r attains zero and then the next iteration is computed until r = d -1.

At this point of the procedure the polynomial Λ(x) is known, we have to determine its roots in order to find the error positions. Usually, because there is only a finite number of field elements to check, the simplest way to find the roots is by trial and error, for example by using the Chien search algorithm [START_REF] Blahut | Algebraic codes for data transmission[END_REF]. At the end of this step the error-locator polynomial can be written as:

Λ(x) = (1 -α i 1 x)(1 -α i 2 x) . . . (1 -α iν x), (1.27)
where the error positions i 1 , i 2 , . . . , i ν are now known.

Calculate error magnitudes

In order to correct the errors the next step is to find the error values. One method is to compute the Gorenstein-Zierler algorithm after the Peterson procedure to find the error magnitudes. This algorithm is based on matrix inversions. The whole procedure is known as Peterson-Gorenstein-Zierler algorithm.

Another process depends on the error-evaluator polynomial Γ(x). This polynomial is defined as:

Γ(x) = [Λ(x)S(x)] mod(x d ).
(1.28)

Using that

S(x) = d-1 j=1 S j x j = d-1 j=1 ν l=1 Y l X j l x j , Equation (1.28) becomes Γ(x) = ν i=1 xY i X i j =i (1 -X j x). (1.29)
The Forney algorithm, built on Γ(x), can be used to find the error values. The lth error value is given by

Y l = -X l Γ(X -1 l ) Λ (X -1 l )
.

(1.30)

CHAPTER 1. CHANNEL CODING BACKGROUND

Using the error values and their locations, errors can be corrected by subtracting error values at error locations.

Another iterative method to find the error-locator polynomial and calculate error magnitudes is based on the Extended Euclidean algorithm. This algorithm computes the polynomial greatest common divisor of two univariate polynomials for locating least common divisor of polynomials Λ(x)S(x) and x d-1 . The key idea of this algorithm is based on the following equation

Λ(x)S(x) = Q(x)x d-1 + Γ(x).
(1.31)

The goal is not to find the least common divisor. The extended Euclidean algorithm can find a series of polynomials of the form

A r (x)S(x) + B r (x)x d-1 = R r (x). (1.32)
At each iteration r until the degree of R r is greater than d-1 2 the polynomials are updated for the next iteration as follows:

Q = R r-2 R r-1 , R r = R r-2 -QR r-1 , A r = A r-2 -QA r-1 .
Once the degree of R r (x)

< d-1 2 , then A r (x) = Λ(x) and R r (x) = Γ(x).
As in the previous algorithm, an exhaustive method is applied to find the roots of Λ(x). These roots correspond to the error locations. The Forney algorithm is computed to calculate the error magnitudes from Γ(x). Then the error can be subtracted in the received codeword. Extended Euclidean algorithm tends to be more used in practice because it is easier to implement, but the Berlekamp-Massey algorithm tends to lead to more efficient hardware and software implementations.

Product codes

Product codes have been invented in 1954 by Peter Elias in [START_REF] Elias | Error-free coding[END_REF]. They are twodimensional linear codes and in the general case are referred to as multidimensional codes. Product codes are obtained by tensor product of two (or more) linear codes with a structure that is well-suited to iterative decoding via its graphical description.

Given two linear codes C 1 and C 2 of parameters [n 1 , k 1 , d 1 ] q and [n 2 , k 2 , d 2 ] q respectively. Let G 1 and G 2 be two matrices of size k 1 ×n 1 and k 2 ×n 2 , containing in their rows a basis for the subspaces C 1 and C 2 respectively. G 1 and G 2 are called the generator matrices of C 1 and C 2 .

PRODUCT CODES

Definition 1.10. The product of C 1 and C 2 is the linear code C p consisting of all n 1 ×n 2 matrices with the property that each matrix column is a codeword of C 1 and each matrix row is a codeword of C 2 .

From the two generator matrices G 1 and G 2 a product code C p is constructed as a subspace of F N q with a generator matrix G p = G 1 ⊗ G 2 , where N = n 1 n 2 and ⊗ denotes the Kronecker product. In concatenated codes terminology, C 1 and C 2 are called component codes. The parameters of a such product code C P are defined by:

• Block-length: N = n 1 n 2 , • Dimension: K = k 1 k 2 , • Minimum Hamming distance: d = d 1 d 2 , • Coding rate: R = k 1 n 1 • k 2 n 2 .
More specifications and proofs are available in [START_REF] Blahut | Algebraic codes for data transmission[END_REF], [START_REF] Kschischang | Wiley encyclopedia of telecommunications[END_REF], [START_REF] Lin | Error control coding[END_REF] and [START_REF] Macwilliams | The theory of error-correcting codes[END_REF].

The structure of a systematic [N, K, d] q product code is illustrated in Figure 1.2.

Information

n 1 k 2 n 2 k 1 Figure 1.2: Structure of a systematic [N, K, d p ] q product codeword.
A product code can also be represented by graphs. A complete study of graph representations for product code will be presented later in Chapter 4 Section 4.2.

CHAPTER 1. CHANNEL CODING BACKGROUND

Product codes received a great attention due to their capability of correcting multiple burst errors [START_REF] Van Overveld | Multiple-burst error-correcting cyclic product codes (Corresp.)[END_REF] [START_REF] Wolf | On codes derivable from the tensor product of check matrices[END_REF], the availability of erasure-error bounded-distance decoding algorithms [START_REF] Wainberg | Error-erasure decoding of product codes (Corresp.)[END_REF], their ability of correcting many errors beyond the guaranteed correction capacity [1], and their efficient implementation with a variable rate [START_REF] Weng | Variable redundancy product codes[END_REF]. The excellent performance of iterative (turbo) decoding of product codes on the Gaussian channel [START_REF] Pyndiah | Near-optimum decoding of product codes: Block turbo codes[END_REF] made them compete with Turbo codes and LDPC codes for short and moderate blocklength. The class of product codes in which the row and the column code are both Reed-Solomon codes was extensively used since more than two decades in DVD storage media and in mobile cellular networks [START_REF]Reed-Solomon Codes and their Applications[END_REF]. In these systems, the channel is modeled as a symbolerror channel without soft information, i.e. suited to algebraic decoding. Improvements were suggested for these RS-based product codes such as soft information provided by list decoding [START_REF] Sarwate | Soft decision decoding of Reed-Solomon product codes[END_REF] within the iterative process in a Reddy-Robinson framework [START_REF] Reddy | Random Error and Burst Correction by Iterated Codes[END_REF]. Reed-Solomon based product codes were directly decoded via a Guruswami-Sudan list decoder [START_REF] Guruswami | Improved decoding of Reed-Solomon and algebraicgeometry codes[END_REF] after being generalized to bivariate polynomials [4]. For general tensor products of codes and interleaved, a recent efficient list decoding algorithm was published [START_REF] Gopalan | List decoding tensor products and interleaved codes[END_REF], with an improved list size in the binary case. On channels with soft information, RS-based product codes may be row-column decoded with soft-decision constituent decoders [START_REF] El-Khamy | Iterative algebraic soft-decision list decoding of Reed-Solomon codes[END_REF], [START_REF] Jiang | Iterative soft decoding of Reed-Solomon codes[END_REF].

In this thesis, product codes are studied in the context of distributed storage. Therefore, channels with independent erasures or block multiple erasures are considered. Four decoding methods are known for product codes over erasure channels:

• ML decoder. This is a non-iterative decoder. It is based on a Gaussian reduction of the parity-check matrix of the product code.

• Iterative algebraic decoder. At odd decoding iterations, component codes C 1 on each column are decoded via an algebraic decoder (bounded-distance) that fills up to d -1 erasures. At even decoding iterations, component codes C 2 on each row are decoded via a similar algebraic decoder. An example of algebraic decoder for Reed-Solomon component codes is the Berlekamp-Massey decoder presented in Section 1.3.

• Iterative ML-per-component decoder. This decoder was considered by Rosnes in [START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF] for binary product codes. At odd decoding iterations, column codes C 1 are decoded via an optimal decoder (ML for C 1 ). At even decoding iterations, row codes C 2 via a similar optimal decoder (ML for C 2 ).

Low-density parity-check codes

Low-Density Parity-Check (LDPC) codes are linear error-correcting codes based on parity-check matrices. LDPC codes were developed by Robert G. Gallager in his doctoral dissertation in 1963 [START_REF] Gallager | Low-density parity-check codes[END_REF], hence so-called Gallager codes. In [START_REF] Tanner | A recursive approach to low complexity codes[END_REF], Tanner proposed a bipartite graph representation of LDPC codes. Moreover, LDPC codes belong to the family of sparse graph codes, which are not MDS codes. However, some existing practical constructions of sparse graph codes allow to approach very closely the Shannon limit over a symmetric memoryless channel, in particular over the BEC. Thus, they are named capacity-approaching codes. Using iterative belief propagation techniques, LDPC codes can be decoded in time linear to their block-length. All these advantages explain that LDPC codes are widely used in applications requiring reliable and highly efficient information transfer over noisy channels.

Graph representation of codes

Any linear code can be represented as a graph. We start by giving the general definition of a graph [START_REF] Bollobás | Modern graph theory[END_REF].

Definition 1.11. A graph G is an ordered pair of disjoint sets (V, E) such that E is a subset of the set of unordered pairs of V . The set V is the set of vertices and the set E is the set of edges.

LDPC codes are represented by a bipartite graph also called Tanner graph [START_REF] Tanner | A recursive approach to low complexity codes[END_REF]. It is defined as follows.

Definition 1.12. A graph G is a bipartite graph with vertex classes V 1 and

V 2 if V (G) = V 1 ∪ V 2 , V 1 ∩ V 2 = ∅ and every edge joins a vertex of V 1 to a vertex of V 2 , i.e. G has a bipartition (V 1 , V 2 ).
An LDPC code shall be represented by a bipartite graph G = (V 1 , V 2 , E). V 1 is the set representing the symbols from the finite field F q , V 2 is the set representing the constraints to be applied on these symbols, and E is the set of edges. We adopt the following representation:

• Symbols also called variable nodes are represented by circles on the left of the bipartite graph.

• Constraints on symbols also called check nodes are represented by squares on the right of the bipartite graph.

The incident matrix of G is a matrix that shows the relationship between the two sets of nodes. The matrix has one row for each element of V 2 and one column for each element of V 1 . The entry in row i and column j is 1 if i and j are linked by one edge in the graph and 0 if they are not. The incident matrix of G is a parity-check matrix H of the LDPC code. A check node in the Tanner graph corresponds to a row in H, i.e. it represents a parity-check equation (SPC) code such as c 1 + c 2 + c 3 = 0 shown in Figure 1.

LDPC codes construction

An LDPC of length N and dimension K is defined by a binary sparse (N -K) × N parity-check matrix H. The LDPC code is represented by a bipartite graph, depicted in Figure 1.5, with N variable nodes and N -K check nodes. An example of LDPC code protograph and its corresponding compact Tanner graph is given in Figure 1 To choose a random graph, consider the sockets on each side of the bipartite graph. A socket is a place where an edge is attached. So, each variable node has d b sockets and each check node has d c sockets. A random graph is formed by matching up the variable node sockets and the check node sockets, using a random permutation. One right socket is linked to one left socket by one edge. Therefore, there exists |E|! matching between right and left sockets. A (d b , d c ) LDPC ensemble is defined as one random permutation among the |E|!. The coding rate of a regular (d b , d c ) LDPC code, assuming that all these check equations are linearly independent, is defined as:

R = K N ≥ 1 - d b d c . (1.33)

Irregular LDPC codes

The idea of irregular LDPC codes was first introduced by Luby et al. in [START_REF] Luby | Practical loss-resilient codes[END_REF]. An LDPC code is said to be irregular if graph nodes of the same kind do not have equal degree. Thereby, variable nodes have different degrees. The fraction of edges emanating from variable nodes of degree i is denoted λ i . The degree distribution is defined by

λ(x) = d b i=2 λ i x i-1 , (1.34)
where d b is now defined as the maximal degree of variable nodes, λ(1) = 1, and 0 ≤ λ i ≤ 1 for all i. Assume the code has N variable nodes. The number N i of variable nodes of degree i is then

N i = N λ i /i d b j=2 λ j /j . (1.35)
Similarly, check nodes have different degrees. The fraction of edges connected to check Fanny Jardel 21 CHAPTER 1. CHANNEL CODING BACKGROUND nodes of degree j is ρ j . The degree distribution is defined by

ρ(x) = dc j=2 ρ j x j-1 , (1.36)
where d c is now defined as the maximal degree of check nodes, ρ(1) = 1, and 0 ≤ ρ j ≤ 1 for all j. Assume the code has L check nodes. The total number of edges |E| is given by

|E| = N d b i=2 λ i /i = L dc i=2 ρ i /i . (1.37)
From this equation, the number of check nodes is:

L = N • dc i=2 ρ i /i d b i=2 λ i /i (1.38)
Let db and dc be the average degree of variable nodes and check nodes respectively. They can be expressed as

db = |E| N = 1 d b i=2 λ i /i (1.39) dc = |E| L = 1 dc i=2 ρ i /i (1.40)
The coding rate of an irregular LDPC code, assuming that all these check equations are linearly independent, is equal to

R = K N = 1 - L N = 1 - db dc (1.41)

Multi-edge type LDPC codes

Another group of LDPC codes, presented by Tom Richardson in 2002 in [START_REF] Richardson | Multi-Edge Type LDPC Codes[END_REF], is multiedge type LDPC codes. Multi-edge type LDPC codes are a generalization of regular and irregular LDPC codes. A multi-edge type LDPC ensemble is constituted of a finite number of edge types. Multiple classes of variable nodes and check nodes are created. Different node types may have different received distributions, i.e, the associated bits may go through different channels. Multiple-edge type LDPC structures are proposed in [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF] and [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. In Chapter 3.3.1, the properties of Root-LDPC codes, which are multi-edge type LDPC codes, are discussed and detailed.

Decoding LDPC codes

The decoding process of an LDPC code is based on its graph representation. Operations are made on variable nodes and check nodes.

In presence of a uniform source encoded by an [N, K] LDPC code whose codewords are transmitted on an i.i.d. binary erasure channel, the iterative non-probabilistic decoding algorithm is given by the following steps:

1.5. LOW-DENSITY PARITY-CHECK CODES 1. Initialize Iter = 0 and j = 1.

2. Count the number µ of erased bits connected to check node j.

3. If µ = 1 then fill the erased bit by summing other bits modulo 2.

4. Increment j. If j > N -K then increment Iter and set j = 1.

if

Iter > M axiter then Stop else Goto Step 2. Now let us analyze the asymptotic performance of the iterative decoding of LDPC codes over the BEC. This asymptotic analysis is made via density evolution (DE). Assume an infinite length code with a graph representation without cycles. Let x i denote the erasure probability at iteration i. By looking to the tree neighborhood of a graph node, it is easy to show that erasure probability x i , after LDPC decoding at iteration i, on the binary erasure channel satisfies:

x i+1 = λ(1 -ρ(1 -x i )), (1.42)
where is the channel erasure probability.

Theorem 1.1. Let f ( , x) = λ(1 -ρ(1 -x)) where 0 ≤ ≤ 1.
There exists a threshold w BP such that

1. BP =sup{ ∈ [0, 1] : x = f ( , x) has no solution in [0, 1]} 2. BP =inf{ ∈ [0, 1] : x = f ( , x) has a solution in [0, 1]}
For a degree distribution (λ, ρ) with a BP threshold BP , x BP is a critical point iff

f ( BP , x BP ) = x BP and ∂f ( BP , x) ∂x | x=x BP = 1.
Now let us investigate the stability condition. The stability condition gives an upper bound on the BP threshold. The stability condition of the fixed-point at the origin for a function f (x) is obtained by writing that f (0) ≤ 1. Thus, the necessary and sufficient condition for stability of 0 is

BP ≤ 1 λ (0)ρ (1) . (1.43)
This bound is also true for a Maximum-A-Posteriori (MAP) decoding. Another method to visualize the asymptotic performance under BP decoding is Extrinsic Information Transfer (EXIT) chart. The definition of EXIT function is given below.

Definition 1.13. Given an [N, K] linear code of rate R = K N and X chosen with uniform probability from [N, K], let Y denote the result of letting X be transmitted over a BEC( ). The EXIT function h i ( ) is defined as [START_REF] Richardson | Modern coding theory[END_REF]

h i ( ) = H(X i | Y -i ).
(1.44)

CHAPTER 1. CHANNEL CODING BACKGROUND

The average EXIT function is

h( ) = 1 N N i=1 h i ( ). (1.45)
The most relevant property of EXIT function is the Area theorem which can be expressed as follows,

Theorem 1.2. Let [N, K] be a linear code, then 0 h(x)dx = 1 N H(X | Y ), (1.46)
where H(X | Y ) is the conditional entropy of the codeword X given the observation Y at the receiver.

1 0 h(x)d(x) = R = K N . ( 1
h BP ( ) = ( , 0), ∈ [0, BP [ x (1-(1-x dc-1 )) d b -1 , (1 -(1 -x dc-1 )) d b , ∈] BP , 1[. (1.48)
Therefore, we can visualize non-trivial fixed-point by plotting the following pairs:

x (1 -(1 -x dc-1 )) d b -1 , (1 -(1 -x dc-1 )) d b , (1.49) in the unit box [0, 1] × [0, 1]
. Beyond the BP threshold, two non trivial fixed-points can be observed (stable and unstable).

In a similar way, let us defined h A , h M AP and h S , the entropy-wise channel parameters for a (λ, ρ) LDPC code: Definition 1.14. Consider a code with a coding rate R = 1-d b dc , the Shannon threshold is

h S = d b d c . (1.50)
Definition 1.15. Under MAP decoding and after a large number of iterations, the bit error probability of the ensemble is vanishing for h < h M AP , where h is the channel parameter.

Definition 1.16. The area under the EXIT curve in the range [h A , 1] is equal to the ensemble coding rate.

FOUNTAIN CODES

We can notice that:

h BP ≤ h M AP ≤ h A ≤ h S . (1.51)
On the binary erasure channel, the area threshold h A and the MAP threshold h M AP are equal.

For decoding LDPC codes over binary symmetric channels, a well known algorithm is the sum-product decoding. This decoding technique is sub-optimal. However it is based on iterative belief propagation decoding and gives excellent results when practically implemented. The sum-product decoding techniques view each parity check as an independent SPC code. Each SPC code is separately decoded using soft-in soft-out (SISO) decoder which is capable of determining the a-posteriori probability. The soft decision information from each SISO decoding is cross-checked and updated with other redundant SPC decodings of the same information bit. Each SPC code is then decoded one more time using the updated soft decision information. This process is iterated until a valid codeword is obtained or decoding is exhausted.

Fountain codes

Fountain codes are a class of erasure codes which can generate a potentially limitless sequence of encoded symbols from a given set of k source symbols. Therefore, Fountain codes are rateless and can be encoded on the fly. At the decoder side, the original source symbols can be ideally recovered from any subset of the encoded symbols. The size k of this subset is equal to or only slightly larger than the number of source symbols, i.e. k ≥ (1 + κ)k with κ arbitrarily small. A Fountain code is optimal if the original k source symbols can be recovered from any k encoded symbols. Contrary to LDPC codes, the Fountain codes construction ensures the sparsity of the generator matrix.

The first practical realization of Fountain codes was proposed in 1998 by Michael Luby in [START_REF] Luby | LT codes[END_REF]. Hence, these codes were called Luby Transform (LT) codes . These near-optimal erasure codes suffer from encoding and decoding complexities that grow as O(log( k δ )) per symbol, where δ is the target error probability. In order to ensure efficient LT encoders and decoders, Raptor codes were subsequently introduced by Shokrollahi in [START_REF] Shokrollahi | Raptor codes[END_REF]. They achieve linear time encoding and decoding complexity as O(log( 1 κ )) (per symbol) through a precoding stage of the input symbols.

Fountain codes encoder

The encoding process of Fountain codes is defined by a sparse bipartite graph connecting coded symbols to information symbols. Symbols shall also be called nodes in this section. For each encoded node, we associate a degree d, randomly chosen from a specific degree distribution ρ(d) defining the Fountain code, the reader should refer to chapter 50 in [START_REF] David | Information theory, inference, and learning algorithms[END_REF].

The degree d of an encoded symbol is the number of its connections to data symbols. For LT codes, the degree of each encoded nodes is uniformly drawn from robust Soliton CHAPTER 1. CHANNEL CODING BACKGROUND distribution [START_REF] Luby | LT codes[END_REF]. The degree of data symbols may be left without any control (Poisson distributed). The edges between encoded nodes and input nodes are drawn following an independent and identically distributed random variable.

Fountain codes are fully determined by a sparse k × n generator matrix G. A column j of the generator matrix corresponds to the construction of one encoded node and has some Hamming weight d j . For binary codes, if the jth encoded node is linked with the ith source node, then a 1 is in position i in the jth column, otherwise it is a 0. A codeword v 1×n can be written as: v = uG where u 1×k is an input vector. The original source data is divided into k chunks. These k symbols correspond to the left k nodes of the bipartite graph illustrated on Figure 1 The encoding process of one output node can be summarized as following:

1. Randomly choose the degree d j of the encoding jth symbol from a degree distribution ρ(d).

2. Choose, uniformly at random, d j distinct input symbols as neighbors of the encoding symbols.

Fanny Jardel

Fountain codes decoder

Fountain's decoder is an iterative process using message-passing algorithm over a binary erasure channel. In the first step of Fountain decoding, we look for one output node of degree one. In Figure 1.7, the only node of degree one is the last output node. Then, in a second step, we take out this output node from its neighboring input node after propagating the symbol value from right to left. Now, as the information node is discovered, its value is propagated from left to right to all its neighboring output nodes. This is shown in step 3 in Figure 1.7. This input node is finally disconnected from the graph. These operations are repeated by looking again for a new output node of degree one. The decoding process stops when all input nodes are discovered or when there are no more output nodes of degree one. The decoding process fails if it stops while some of the data nodes are not determined yet. The steps of the decoding process are summarized below:

1. Find an encoded symbol with degree 1.

2. Set its appropriate data symbol.

3. Extract data symbol from all its neighbors.

4. Repeat until all data nodes are determined.

Spatially coupled codes

Convolutional LDPC codes were first introduced by Felstrom and Zigangirov [START_REF] Felström | Time-varying periodic convolutional codes with low-density parity-check matrix[END_REF]. Exceptional thresholds of LDPC convolutional codes [START_REF] Lentmaier | Terminated LDPC convolutional codes with thresholds close to capacity[END_REF][60] led to the discovery of threshold saturation [START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF] and to the general concept of spatial coupling by Kudekar et al. in 2013 [START_REF] Kudekar | Spatially coupled ensembles universally achieve capacity under belief propagation[END_REF]. Spatial coupling is currently applied in many areas in coding and information theory. A spatially-coupled LDPC ensemble is formed by multiple LDPC ensembles sharing common edges. For asymptotic coding schemes, the advantages of spatially-coupled ensembles can be recapitulated in three main points: regular degree distributions substituting for complex irregular distributions, iterative belief propagation decoding achieving CHAPTER 1. CHANNEL CODING BACKGROUND maximum-a-posteriori performance, and a universal spatial coupling concept that can be applied in many areas beyond LDPC coding.

Consider a regular (d b , d c ) LDPC ensemble. The design coding rate is R = 1 -d b dc , assume R is fixed. A code in the ensemble has N variable nodes and d b dc N check nodes. Let N be very large (N → +∞). Call one code in this ensemble as one copy. Imagine that all variable nodes and all check nodes of a copy are located on a vertical line. Put a copy on each position i, i = -L c , • • • , +L c . There is no interaction between the copies , not yet. We have a total of (2L c + 1) spatial positions. The construction of the coupled (d b , d c , L c , w) ensemble is illustrated in Figure 1 • For a given variable node at position i, its d b connections are chosen uniformly and independently from check nodes in the range [i, i + w -1]. The positive integer w is a smoothing parameter. In convolutional codes terminology, it is equivalent to the code memory.

• The d c connections of a check node at position i are uniformly and independently chosen from variable nodes in the range [iw + 1, i].

• Extra check nodes are added on both size to terminate the coupled chain. Now the coupled chain is terminated on both left and right ends. The ultimate goal of spatial coupling is for a given design coding rate R, on any BMS channel, is to have [START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF] lim

d b →∞ lim w→∞ lim L→∞ h BP = h S . (1.52)
This goal is achieved into two steps (refer to Equation (1.51)) [START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF]:

• Step 1-Spatial coupling, h BP (d b , d c , L c , w) → h A (d b , d c ). • Step 2-Increasing the node degree, h A (d b , d c ) → h S .
Asymptotic analysis of a (d b , d c , L c , w) coupled LDPC ensemble over a BEC( ) is made via density evolution. Density evolution for a uniformly coupled ensemble is expressed as

p i =   1 - 1 w w-1 j=0 1 - 1 w w-1 k=0 p i+j-k dc-1   d b -1 , (1.53)
where p i is the probability of erasure on BEC at spatial position i, i = 1

• • • L c .
A new method for spatial coupling of LDPC ensembles is proposed in Chapter 3.1. The method is inspired from overlapped layered coding. Edges of local ensembles and those defining the spatial coupling are separately built. Moreover, we restrict our study to spatial coupling with a short memory w = 2.

Polar codes

A polar code is a linear block error-correcting code invented by Erdal Arikan in 2008 [START_REF] Arıkan | Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels[END_REF]. It is the first code with an explicit construction to demonstrably achieve the channel capacity for symmetric binary-input, discrete, memoryless channels with polynomial dependence on the gap to capacity. Before polar codes, no capacity achieving coding schemes are known for general channels. Thereafter, spatially-coupled codes appear as an alternative to polar codes. Polar codes concept is based on channel polarization. Channel polarization is a method to convert any binary input channel into multiple extremal channels. The extremal channels are:

• Perfect Channel: the output Y perfectly determines the input X, i.e. the channel capacity is one.

• Worst (useless) channel: the output Y is independent of the input X, i.e. the channel capacity is zero.

Channel polarization is information lossless. Encoding and decoding polar codes is low complexity, both are O(n log(n)) which makes them practical for many applications. Assume a binary input alphabet F 2 . Consider two copies of a BMS channel W : F 2 → Y.

The channel splitting is done as follows and is illustrated in Figure 1.9:

X 1 = U 1 + U 2 , X 2 = U 2 , (1.54)
where information bits U 1 and U 2 are i.i.d. and uniform on F 2 . This transformation corresponds to the 2 × 2 kernel given by the matrix G 2 :

G 2 = 1 0 1 1 (1.55)
Channel splitting via G 2 yields two new channels:

W -: F 2 → Y 2 and W + : F 2 → Y 2 × F 2 . (1.56) U 1 U 2 X 1 X 2 W W Y 1 Y 2 Figure 1.9: Channel splitting into two channels. Assume W is a BEC( ). Let us introduce W -which has input U 1 and output (Y 1 , Y 2 ). W -is equivalent to a BEC( 1 ). U 1 is determined if and only if both outputs Y 1 and Y 2 are not erased. So (1 -1 ) = (1 -) 2 , i.e. W -= BEC(2 -2 ).
( What are the properties of the split W → (W -, W + )? Let us study the average mutual information. Let I(W ) = I(X; Y ) where the input distribution is uniform. The quantity I(W ) is known as the symmetric capacity of the channel W . Mutual informations of both bad channel W -and good channel W + can be expressed as

I(W -) = I(U 1 ; Y 1 , Y 2 ) and I(W + ) = I(U 2 ; Y 1 , Y 2 , U 1 ). (1.59)
An obvious property is

I(W -) ≤ I(W ) ≤ I(W + ). (1.60)
From the independence of U 1 and U 2 , and the chain rule we can deduce that

1 2 I(W -) + 1 2 I(W + ) = I(W ). (1.61)
We can conclude from this equation that the mutual information is preserved via the polar transform. Now, we provide a simple example. Let W be a BEC( )

∆ BEC (I) = I(W + ) -I(W -) = 2(I(W ) -I 2 (W )), (1.62)
1.9. REED-MULLER CODES where I(W ) = 1for 0 ≤ ≤ 1.

In the same way, for the BSC(p),

∆ BSC (I) = I(W + ) -I(W -) = 2[H 2 (2p(1 -p)) -H 2 (p)], (1.63)
where H 2 (p) is the binary entropy function, for 0 ≤ p ≤ 1 2 . For any BMS channel, by information combining arguments, we have

∆ BSC (I) ≤ ∆ BM S (I) ≤ ∆ BEC (I).
(1.64)

Now let us repeat the splitting l times. For a 2 × 2 kernel, the transformation is given by G ⊗l 2 , where ⊗ is the Kronecker product. The channel is splitted into n = 2 l channels. The mutual information of channel number i is

I(U i ; Y n 1 , U i-1 1 ), for i = 1, . . . , n.
Definition 1.17. The channel polarization as stated in [START_REF] Arıkan | Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels[END_REF] refers to the phenomenon defined by

lim n→∞ 1 n #{i : I(U i ; Y n 1 , U i-1 1 ) ∈] , 1 -[} → 0, (1.65)
i.e., almost all channels are extremal when n = 2 l gets large.

When polarization happens, good channels are used to transmit uncoded bits. The input to bad channels can be frozen to a fixed value. Since polarization is information lossless, the data rate which is equal to the fraction of good channels must be I(W ).

The decoding process is a successive decoding. The decoder can decode U 1 , U 2 , . . . , U n successively. This decoder is also called successive cancellation. Alternative to successive decoding are:

• Belief propagation decoding of a polar code [START_REF] Korada | Polar codes: Characterization of exponent, bounds, and constructions[END_REF]. Roughly, improvement of error rate by a factor of 10 on all channels.

• List decoding of a polar code [START_REF] Tal | List Decoding of Polar Codes[END_REF]. Gain in signal-to-noise ratio is about 0.5 dB.

Reed-Muller codes

Reed-Muller (RM) codes are a family of linear error-correcting codes. They are named after Irving Reed and David Muller. Muller discovered the codes [START_REF] Muller | Application of Boolean algebra to switching circuit design and to error detection[END_REF], and Reed proposed the majority logic decoding [START_REF] Reed | A class of multiple-error-correcting codes and the decoding scheme[END_REF]. They are among the oldest and simplest codes to construct. Reed-Muller codes are extended cyclic codes. RM codes can be considered as a special case of Polar codes where bits are frozen in order to maximize the minimum Hamming distance. More recently, it has been proved that RM codes achieve capacity on the BEC under MAP decoding [58] [57].

Let us give a brief description of Reed-Muller codes. For any m and any r, 0 ≤ r ≤ m, there is a binary rth order RM code R(r, m) with the following properties: [START_REF] Macwilliams | The theory of error-correcting codes[END_REF] • Block-length: n = 2 m ,

• Dimension: k = r l=0 m l , • Minimum Hamming distance: d = 2 m-r .
RM codes are related to binary functions on the field F 2 m over the elements {0, 1}. R(r, m) consists of all polynomials in the binary variable v 1 , • • • , v m of degree equal to, or less than r. Consider an R(r, m) Reed-Muller code, its dual is the RM code of parameters R(mr -1, m) for 0 ≤ r ≤ m -1. Another property of RM codes is that a Reed-Muller codes of length 2 m+1 can be easily constructed from Reed-Muller codes of length 2 m using the (u | u + v) construction:

R(r + 1, m + 1) = {(u | u + v) : u ∈ R(r + 1, m), v ∈ R(r, m)} (1.66)
The generator matrix of a R(r, m) code is denoted G(r, m). The equivalent statement of Equation (1.66) is:

G(r, m) = G(r+1,m) G(r+1,m) 0 G(r,m) (1.67)
Some special cases of Reed-Muller codes are listed below:

• R(0, m) code is the repetition code of block-length n = 2 m .

• R(m, m) code is the universal code of block-length n = 2 m , i.e. the set of all binary words of length 2 m .

• R(m -1; m) code is the parity check code of length n = 2 m .

Another advantage of RM codes is the ease with which they can be decoded via majority logic decoder. This technique was proposed by Irving Reed [START_REF] Reed | A class of multiple-error-correcting codes and the decoding scheme[END_REF]. A majority logic decoding is a method to decode repetition codes, based on the assumption that the largest number of occurrences of a symbol was the transmitted symbol. Applied to RM decoding, the key idea of majority logic decoder is to build several check-sums for each received symbol. All the different check-sums for one received symbol must have the same value: the weight of the information symbol. Consequently the majority logic decoder can be used to decode the value of the received symbol. Once each order of the polynomial is decoded, the received symbol is modified accordingly by removing the corresponding check-sums, up to the present iteration. For an R(r, m) code, the decoding is iterated r + 1 times before reaching the final received symbol. This method allows to calculate the values of information bits. Then, the received symbol can be reconstructed by multiplying the information symbol with the generator matrix. If the symbol is successfully decoded via majority logic decoding, at the end of the r + 1 decoding iterations, the modified received symbol should be all-zero. This decoding method can be applied to other finite geometry codes. More recently, list decoding of Reed-Muller codes were also proposed [START_REF] Pellikaan | List decoding of q-ary Reed-Muller codes[END_REF] [START_REF] Gopalan | List-decoding Reed-Muller codes over small fields[END_REF].

1.10. CONCLUSIONS

Conclusions

This chapter is a brief overview of erasure codes. Coding theory is in constant development. Codes have to be designed for different channel models. In this thesis, we focus on erasure channels. The erasure channel is currently a major area of research in coding theory [START_REF] Kudekar | Reed-Muller codes achieve capacity on the binary erasure channel under MAP decoding[END_REF][58] because of strong connections with theoretical computer science and its mathematical simplicity that easily allow to understand the behavior of codes such as LDPC codes [START_REF] Di | Finite-length analysis of low-density parity-check codes on the binary erasure channel[END_REF] and general linear block codes [START_REF] Schwartz | On the stopping distance and the stopping redundancy of codes[END_REF]. In the past three years there has been a lot of innovations in the field of modern coding theory [START_REF] Richardson | Modern coding theory[END_REF] [START_REF] Ryan | Channel codes: Classical and modern[END_REF]. In parallel to coding theory, a part of information theory is focusing on finite length regime where information rate and code performance are studied at finite block length instead of asymptotic length.

Coding theory has applications in many areas such as data compression, cryptography, classic error-correction for noisy channels, network coding, and more recently distributed storage. In the next chapter, an overview of codes for distributed storage is made. Constraints for distributed coding are slightly different than classic coding theory. They are studied and discussed in the sequel.

Chapter 2

Coding for Distributed Storage E rror-control codes are one of the main tools for distributive computing/storage.

Besides trivial repetition coding, a Reed-Solomon code or any MDS code is capable of reconstructing the source file [START_REF] Kubiatowicz | Oceanstore: An architecture for global-scale persistent storage[END_REF]. More recently, new coding schemes specifically designed for distributed storage applications have been developed [START_REF] Dimakis | A survey on network codes for distributed storage[END_REF][25] [START_REF] Oggier | Coding techniques for repairability in networked distributed storage systems[END_REF]. We aim in this chapter to present distributed storage constraints and overview existing codes.

Distributed storage parameters and constraints

In this thesis, only storage networks with a large number of servers are considered. Before defining distributed storage systems parameters and issues, let us take a look at the description of Facebook warehouse cluster organization. This practical case will allow us to better understand and target the stakes of distributed storage. The whole description is available in [START_REF] Rashmi | A solution to the network challenges of data recovery in erasure-coded distributed storage systems: A study on the Facebook warehouse cluster[END_REF]. A warehouse cluster is divided into two Hadoop Distributed File System (HDFS) clusters. HDFS is an open-source software framework written in Java for distributed storage and distributed processing of very large data sets on computer clusters built from commodity hardware. These HDFS clusters store hundreds of petabytes of data. Each cluster contains a few thousand of machines. Each machine stores up to 36 terabytes of data. The most frequently accessed data is stored as three replicas. Data which has not been accessed for more than three months are coded with a [14, 10] Reed-Solomon code. The different blocks of a codeword are placed on different randomly-chosen machines. In the following a machine can be referred to as a node of the storage network. A median of 50 machines are unavailable for more than 15 minutes in a day in the warehouse cluster. When blocks are missing in a codeword, on average 98.08% have exactly one block missing, 1.87% have two blocks missing and only 0.05% have three or more blocks missing. From the study of Facebook warehouse cluster, we can abstract the five main points of the design of good codes for distributed storage systems.

• Encoding. This constraint is directly linked to storage space utilization in data centers. The service sold by the cloud provider to an end-user has a level of reliability. One of the main challenges for cloud providers is to make a tradeoff between a level of reliability proposed to the client and the storage space dedicated to the data. Indeed, the level of reliability depends on the amount of redundancy in the code structure while the storage space in a warehouse cluster has to be optimized. Therefore, the choice of the code parameters defining the coding rate is crucial. In addition, systematic encoders, referred to in Definition 1.9, are more suitable for distributed storage since the time needed to read the information data is minimized.

• Allocation. The allocation problem can be stated in one question. How to distribute the coded symbols across the network in order to be robust against failures?

• Updating. The code structure has to avoid a complete re-encoding of data when updating them. Some applications do not need to update the data once stored.

• Reconstruction. In a distributed storage system when nodes failures occur, the main objective is to reconstruct the failed nodes such that the client/collector is always able of recovering its data by contacting any subset of the storing nodes. Two different methods exist to regenerate the failed node. When the failed node is exactly regenerated by restoring the lost encoded data with their exact replicas the process is called exact repair. However, this requirement can be relaxed and functional repair is another way to regenerate a node. The newly generated blocks may contain data which is different from that of the failed node as long as the repaired system maintains the code properties. From Facebook warehouse cluster statistics, one node failure is the most common scenario.

• Data downloading. For distributed storage applications, the choice of the decoding method is yet another critical challenge. Code design should allow for an iterative decoding process in order to avoid the high complexity of Maximum Likelihood (ML) decoding. When using an ML decoder, all nodes have to be contacted in order to repair the failed node resulting in a high decoding complexity and a high consumption of network bandwidth.

The main objectives of coding for storage are to increase the reliability of data reconstruction, while minimizing the required repair bandwidth and the number of nodes to be contacted per repair. Indeed, the general network traffic should not be hogged by the cross-rack traffic due to the recovery operations. Codes dealing with this constraint are called regenerating codes [START_REF] Dimakis | Network coding for distributed storage system[END_REF].

At the same time, during a repair process, the number of nodes to be contacted per repair has to be reduced, i.e. code locality has to be low. The concept of code locality was first defined by Gopalan et al. as the locality of information [START_REF] Gopalan | On the locality of codeword symbols[END_REF]. The code locality is given by Definition 2.1 in the standard context of independent failures (independent erasures). The locality of a symbol is the number of symbols that need to be accessed in order to reconstruct this symbol. Fast reparation is ensured by a low locality of symbols. A new class of codes minimizing locality appeared in the literature. These codes 2.2. TODAY'S METHODS: REPLICATION AND ERASURE CODES are called Locally Repairable Codes and were introduced in [START_REF] Katz | On the efficiency of local decoding procedures for errorcorrecting codes[END_REF] and developed in, e.g. [START_REF] Yekhanin | Locally decodable codes[END_REF], [3], and [START_REF] Oggier | Coding techniques for repairability in networked distributed storage systems[END_REF].

Definition 2.1. Consider a C[n, k, d] q linear code over a finite field F q . A codeword in C is written as a vector of n symbols (c 1 , c 2 , . . . , c n ). Information locality, Loc(C), of C is defined as:

Loc(C) = max i Loc(c i ),
where a code symbol c i has locality Loc(c i ) = r if it can be recovered from accessing only r other code symbols, i.e. c i = r j=1 λ j c j , where λ j ∈ F q .

All the constraints of coding for distributive storage have been presented. The different coding schemes implemented in today's data centers are now reviewed.

Today's methods: Replication and erasure codes

Nowadays, coding for distributed storage systems is achieved using two main approaches: Replication and Erasure codes. Replication, which is the most widely used method, consists in storing a copy of the entire data on several storage nodes. In data centers for instance, users' data is replicated on three different storage nodes. This allows to restore data easily in case of node failure. Indeed, the data is recovered from one of the other available nodes, and stored on a new healthy node. From error-correcting coding perspective, replication is a repetition code. It is simple to implement but is inefficient in terms of storage space utilization.

In order to overcome this problem, an MDS erasure codes approach is used in some storage systems such as Facebook. In this case, initial data is divided into k chunks and redundancy is added to create n blocks which are distributed across n nodes on the network. Thus, each node stores only a part of the encoded data. This allows an end user to recover the entire data by downloading coded chunks from any k or more neighboring nodes. When a storage node fails, it is replaced by a new empty node which downloads the entire data from its k neighbors to recover the data stored prior to failure. Consequently, at least k nodes have to be reachable at any time. Erasure codes are inefficient because the replacement node is required to download the whole data of k coded nodes and then reconstruct the entire data, although it eventually stores only a small part of it. They suffer from a very slow recovery process, in particular, a slow repairing of a single node failure, which is the common failure scenario. Nevertheless, erasure codes provide a better reliability-redundancy tradeoff than repetition codes. Hence, an important task in the design of erasure codes is to accomplish fast recovery and yet support a large number of node failures.

CHAPTER 2. CODING FOR DISTRIBUTED STORAGE

Despite their ill-suited characteristics for distributed storage constraints, MDS erasure codes, namely Reed-Solomon codes, are widely used. The main reason is historical: When the first data storage networks appeared, the research concerning the other erasure-correcting codes was not so advanced. Moreover, RS codes have been implemented in RAID systems and for a long time, the different RAID levels met the needs of users. With the emergence of big storage networks, i.e. with a large number of servers/nodes, new coding schemes based on RS modifications have been developed [START_REF] Sathiamoorthy | XORing Elephants: Novel Erasure Codes for Big Data[END_REF][78] [START_REF] Esmaili | CORE: Cross-object redundancy for efficient data repair in storage systems[END_REF]. These codes are designed in order to enhance RS code locality and overcome the repair process of MDS erasure codes.

Recently, in the literature, other coding techniques have been proposed to overcome the repair process drawbacks of MDS erasure codes, namely regenerating codes and locally repairable codes. They are described in the next sections.

Regenerating codes

Regenerating codes were introduced by Dimakis et al. in [START_REF] Dimakis | Network coding for distributed storage system[END_REF] as a new class of exact repair codes. In a way similar to erasure codes, each node stores small chunks of the encoded data and the end user can recover the original data from any k nodes. However, in regenerating codes, upon failure of a node, the replacement node is able to download a portion of the data stored in any d ≥ k nodes in order to recover the data prior to failure, and not the entire data as in erasure codes [START_REF] Rashmi | Optimal exact-regenerating codes for distributed storage at the MSR and MBR points via a product-matrix construction[END_REF][80] [START_REF] Dimakis | A survey on network codes for distributed storage[END_REF]. Thus, they allow a drastic reduction in the amount of data downloaded for repair.

In the current literature, two classes of regenerating codes have emerged, mainly the class of minimum bandwidth regenerating (MBR) codes and the class of minimum storage regenerating (MSR) codes. MSR codes are optimal storage efficiency codes. They require a minimal storage space per node. These codes attain the MSR point of the optimal storage-bandwidth tradeoff curve. The MSR point is an extremal point of this curve as described in Figure 2.1. MBR codes are optimal bandwidth efficiency codes. They require minimum repair-bandwidth, i.e. a replacement node downloads precisely the data that it wants to store. These codes attain the MBR point of the storage-bandwidth tradeoff curve. The MBR point is the second extremal point of the optimal storage-bandwidth tradeoff illustrated in Figure 2.1. This tradeoff is determined using a network coding inspired analysis, assuming that each new coming node contacts at least k live nodes for each repair.

In Figure 2.1, α is the amount of storage space per node, γ is the amount of bandwidth needed to regenerate a lost node and t represents the multiple repairs carried out simultaneously. Node repair is required to be accomplished by connecting to any d nodes and downloading β ≤ α symbols from each node. The repair bandwidth is defined by the product d × β. In [START_REF] Rashmi | Optimal exact-regenerating codes for distributed storage at the MSR and MBR points via a product-matrix construction[END_REF], an explicit construction of MBR codes is proposed for all feasible values of parameters [n, k, d] and MSR codes for all [n, k, d ≥ 2k -2], using a product-matrix framework. Explicit codes of parameters [n = d + 1, k, d] are also pre-

LOCALLY REPAIRABLE CODES

sented in [START_REF] Rashmi | Optimal exact-regenerating codes for distributed storage at the MSR and MBR points via a product-matrix construction[END_REF]. These codes involve copying of data without any computation, they are uncoded-repair codes.

Locally repairable codes

Locally repairable codes are another coding approach that exploits the locality concept of codes. This concept was first defined by Gopalan et al. in [START_REF] Gopalan | On the locality of codeword symbols[END_REF], as the locality of information. It led to the introduction of codes with locality. These codes are designed such that the number d of nodes to be contacted for repairing a failed node is smaller than k, d ≤ k. Gopalan et al. proposed in [START_REF] Gopalan | On the locality of codeword symbols[END_REF] a modified version of the Singleton bond for locally reparable codes. Consider a linear code C[n, k, d] q with locality Loc(C), the relation between the code locality and its parameters is given by

d ≤ n -k - k Loc(C) + 2. ( 2.1)
A new class of codes with locality, presented by Oggier et al. in [START_REF] Oggier | Self-repairing homomorphic codes for distributed storage systems[END_REF], includes selfrepairing codes. Self-repairing codes are not maximum distance separable codes and follow the same encoding process as regenerating codes. They minimize the number of nodes to be contacted for repairing one node failure. Encoded fragments can be repaired directly from other subsets of encoded fragments without having to reconstruct first the original data. The number of encoded fragments contacted for repairing is fixed and depends only on how many encoded blocks are missing and not on which specific block is missing.

The previously described codes are block codes. In the context of distributed storage, sparse-graph codes, such as Fountain codes, Raptor codes and LDPC codes can also be used after a convenient arrangement. The next section is dedicated to review Repairable Foutain codes.

Repairable Fountain codes

Recently, Mackay was the first to suggest Fountain codes for storage and broadcast applications in [START_REF] David | Information theory, inference, and learning algorithms[END_REF] chapter 50. Thereafter, Asteris and Dimakis proposed distributed Fountain codes in node failure scenarios [3] as a new family of Fountain codes to satisfy efficient repairing in distributed storage. The so-called Repairable Foutain codes are near-optimal erasure correcting codes (near-MDS codes). They are used with a finite number of output nodes in distributed storage context.

In the sequel, we consider repairable Fountain code with k source nodes and n output nodes. The n output nodes represent the n servers where the data is stored. These codes have some desired properties for these applications such as: they are systematic and have logarithmic locality, i.e. an erased output node can be reconstructed by accessing only O(log(k)) other coded symbols. Let us discuss the main properties and the structure of these codes in order to give some insights on the key properties for designing efficient distributed repair codes.

The main properties of repairable Fountain codes are:

• Systematic. The input data is embedded in the encoded output. Consequently, original data can be reconstructed without decoding. From graph theory perspective, k encoded symbols are degree-one. These symbols are called systematic symbols.

• Logarithmic sparsity for parity symbols. Among the n output nodes, k are systematic and the nk others are parity symbols. Let G denote the generator matrix of repairable Fountain codes. It can be written as G k×n = I k×k | P k×n-k , where P k×n-k is the parity matrix and I k×k the identity matrix which denotes the systematic property. Parity symbols have logarithmic sparsity meaning that P k×n-k is a sparse matrix,with on average weight log(k) per column. Therefore, the degree of an encoded symbol is on average log(k), so each parity symbol is a random linear combination of up to d(k) = Ω(log(k)) source symbols. It can be demonstrated that log(k) is the minimal threshold to ensure a successful ML decoding process with a subset of (1 + )k output symbols.

• Rateless property. This property means that each column is created independently. The number n of columns of G does not have to be specified for the encoder a priori.

• Near MDS codes. MDS codes have the property that any subset of k output symbols allows to reconstruct the original data. It means that any subset of k columns of G has rank k. For repairable Fountain codes, MDS property is relaxed. Indeed, MDS codes have minimum distance d = nk + 1 that is the minimum number of positions in which any two distinct codewords differ. If the considered MDS code is systematic, then the parity matrix P has to be one-matrix, to satisfy the minimum distance.

G sys M DS = I k×k | P k×n-k =      1 0 • • • 0 0 1 • • • 0 . . . . . . 0 • • • 0 1 1 1 • • • 1 1 1 • • • 1 . . . . . . 1 • • • 1 1      (2.2)
Consequently, in order to satisfy sparse parities, repairable Fountain codes cannot be systematic. These codes are near systematic, i.e. a subset of (1 + )k encoded symbols is needed to reconstruct the original data.

• Edges with coefficients over F q . Repairable Fountain codes are non-binary codes, i.e. symbols are considered over F q . A weight f ij is associated to each edge linking an encoded node to an input node, where f ij ∈ F q . Note that to achieve small probability of failure as k grows, the size of the field q must grow accordingly.

• ML decoding process. The ML decoding is processed on (1 + )k encoded symbols. It corresponds to solve a linear system of (1 + )k equations in F q . Consequently, decoding probability increases as q increases. The complexity of such decoding is O(k 3 ).

• Logarithmic locality. The locality of repairable Fountain codes is d(k) = log(k). Indeed, if a failure occurs among parity symbols, it can be repaired by accessing d(k) = log(k) systematic symbols. Respectively, if one systematic node is erased, by accessing one parity symbol and d(k)-1 systematic symbols it can be repaired. The repair process of one failed node is similar to solving a parity equation. Thus, it is an iterative process.

For more than one erasure, the complexity of the repair process is still log(k) for large value of k.

Conclusions

In this last section, we have examined the properties of repairable Fountain codes in order to determine the necessary criteria to design efficient repair codes for distributed storage systems. An efficient repair algorithm has to satisfy the following conditions:

• The repair algorithm should not be a complete decoding process. It should be an iterative algorithm.

• The number of neighbors to be contacted should be minimized during the process.

Thus, the key idea is to achieve a compromise between obtaining good locality and iterative decoding process. In fact, good locality can be obtained through the design of sparse parity-check matrix. On the other hand, the code design should allow for an iterative decoding process in order to reduce the high complexity of ML decoding. For these reasons, others codes presented in Chapter 1 as polar codes and Reed-Muller codes are not suitable for distributed storage applications. In fact, the repair process of a polar code is a complete decoding and their locality is too high though they are capacity achieving codes. The locality of Reed-Muller codes is adapted to distributed storage applications. Consider an R(r, m) code, its locality is 2 r+1 -1 [START_REF] Huang | Cyclic linear binary locally repairable codes[END_REF]. RM codes achieve capacity on the BEC under MAP decoding [57][58]. Unfortunately, a MAP decoding is too complex for distributive storage applications.

This issue has motivated us to study spatially coupled LDPC codes, that can achieve maximum-a-posteriori decoding threshold under iterative Belief Propagation (BP) decoding. This study is the subject of Chapter 3. On the other hand, existing codes in the literature have been developed to deal only with a few number of machines (nodes) erased or unavailable. No coding scheme is proposed to handle a cluster failure. Chapters 3 & 4 use the diversity criterion in order to design new coding schemes that are resilient to cluster erasure in addition to i.i.d. symbol erasures.

Chapter 3

Spatial Coupling for Codes and Diversity L inear block codes and convolutional codes were developed by two separate communities as witnessed in the history of channel coding. Viterbi and Omura reported a higher error exponent for time-varying convolutional codes, see section 5.2 in [START_REF] Viterbi | Principles of Digital Communication and Coding[END_REF]. Another major success of convolutional codes is found in the construction of parallel turbo codes [START_REF] Berrou | Near optimum error correcting coding and decoding: Turbo-codes[END_REF] and its counterpart is found in [START_REF] Gallager | Low-density parity-check codes[END_REF] for LDPC codes. In recent coding theory, both linear block codes and convolutional codes are studied or represented in similar ways leading to new structures such as LDPC convolutional codes [START_REF] Felström | Time-varying periodic convolutional codes with low-density parity-check matrix[END_REF], Tanner convolutional codes [START_REF] Vialle | A Gallager-Tanner construction based on convolutional codes[END_REF], and quasi-cyclic block and convolutional codes [START_REF] Tanner | LDPC block and convolutional codes based on circulant matrices[END_REF]. Exceptional thresholds of LDPC convolutional codes [START_REF] Lentmaier | Terminated LDPC convolutional codes with thresholds close to capacity[END_REF][60] led to the discovery of threshold saturation [START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF] and to the general concept of spatial coupling [START_REF] Kudekar | Spatially coupled ensembles universally achieve capacity under belief propagation[END_REF]. Spatial coupling is currently applied in many areas in coding and information theory. The wide application of spatial coupling ranges from coding for the wiretap channel [START_REF] Rathi | Rate-equivocation optimal spatially coupled LDPC codes for the BEC wiretap channel[END_REF] to coding for the multiple access channel [START_REF] Yedla | Universal codes for the gaussian MAC via spatial coupling[END_REF]. Generally coupled structures including multiple chains and loops have been proposed by Truhachev et al. [START_REF] Truhachev | New codes on graphs constructed by connecting spatially coupled chains[END_REF] [START_REF] Truhachev | New codes on graphs constructed by connecting spatially coupled chains[END_REF]. Their connected spatiallycoupled chains aim at improving the iterative decoding threshold and minimizing the decoding complexity. A spatially-coupled LDPC ensemble is formed by multiple LDPC ensembles sharing common edges. The whole coupled structure resembles a convolutional code with extra check nodes on both extremal sides [START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF] playing the role of a trellis termination. The parity-check description of a coupled ensemble is similar to LDPC convolutional codes originally proposed by Felström and Zigangirov [START_REF] Felström | Time-varying periodic convolutional codes with low-density parity-check matrix[END_REF]. Trellis termination for a chain of coupled ensembles has a direct impact on the threshold saturation and on the finitelength performance. Chain loops is another way of improving the threshold instead of terminating the chain on both sides [START_REF] Truhachev | New codes on graphs constructed by connecting spatially coupled chains[END_REF]. For asymptotic coding schemes, the advantages of spatially-coupled ensembles can be recapitulated in three main points: regular degree distributions substituting for complex irregular distributions, iterative belief propagation decoding achieving maximum-a-posteriori performance, and a universal spatial coupling concept that can be applied in many areas beyond LDPC coding [START_REF] Gallager | Low-density parity-check codes[END_REF].

The theory of error-correcting codes was limited to channels with errors and erasures that are independently located inside a codeword [START_REF] Macwilliams | The theory of error-correcting codes[END_REF], i.e. ergodic channels. Similarly, all channels considered in modern coding theory are also ergodic in nature [START_REF] Gallager | Low-density parity-check codes[END_REF][7] [START_REF] Richardson | Modern coding theory[END_REF]. The non-ergodic fading channel encountered in wireless communications requires a special coding approach [START_REF] Tse | Fundamentals of Wireless Communication[END_REF] [START_REF] Biglieri | Coding for Wireless Channels[END_REF]. Root-LDPC codes were designed to deal with non-ergodic (quasi-static) fading and attain a maximal diversity order allowed by the number of degrees of freedom in the block-fading channel and authorized by the Root-LDPC coding rate. The interest in applying spatial coupling to Root-LDPC codes is motivated by the use of anti-Root LDPC ensembles for secure communications on multiple-link channels [START_REF] Dedeoglu | Diversity-Security tradeoff for compound channels[END_REF] [START_REF] Boutros | The anti-diversity concept for secure communication on a two-link compound channel[END_REF].

The chapter is structured as follows. Section 3.1 gives a brief overview of uniform spatial coupling as known in the literature. The forward-layered LDPC coupling method is presented in Section 3.2. Non-uniform chains of spatial coupling and spatially-variant spatial coupling are also introduced in section 3.2. To improve the threshold boundary of Root-LDPC, we propose a new spatial coupling structure based on parity bits doping in Section 3.3. Finally, in Section 3.4, spatially-coupled Root-LDPC is applied to distributed storage and diversity applications.

State of the art: uniform spatial coupling

This section gives a very brief overview of uniform spatial coupling, i.e. the standard coupling as known in the literature. More details have been presented in Chapter 1. The smoothing parameter w can be seen as the memory of LDPC convolutional codes built from the (d b , d c , L c , w) coupled ensemble. Such coupling is called uniform for two reasons, connections are uniform in [i, i + w -1] and the L c uncoupled ensembles are all regular with identical degrees.

FORWARD-LAYERED LDPC COUPLING

in Theorem 41 in [START_REF] Kudekar | Spatially coupled ensembles universally achieve capacity under belief propagation[END_REF] is

lim w→∞ lim Lc→∞ h BP coupled = h A uncoupled , (3.1)
where h BP is the threshold under belief propagation BP decoding and h A is the area threshold (h A = h M AP for the BEC). The second result stated in Lemma 29 in [START_REF] Kudekar | Spatially coupled ensembles universally achieve capacity under belief propagation[END_REF] is, for a given design rate, lim

d b →∞ h A uncoupled = h S . (3.2)
In the next section, we restrict our study to spatial coupling with a short memory w = 2 and the BEC is the default transmission channel. All results are extendable to binary memoryless symmetric (BMS) channels.

Forward-layered LDPC coupling

In this section, we propose a new method for spatial coupling. Firstly, our method considers a chain of uncoupled LDPC ensembles, then new edges are added to the chain to couple an ensemble with its neighbor on one side. This method, referred to as forwardlayered LDPC coupling, is inspired from unequal error protection UEP [START_REF] Calderbank | Multilevel codes for unequal error protection[END_REF] [START_REF] Henkel | UEP concepts in modulation and coding[END_REF]. Indeed, our initial objective is to create a limited number of classes for UEP [START_REF] Calderbank | Multilevel codes for unequal error protection[END_REF][45], e.g. three classes of digits with decreasing error rate performance to imitate graceful degradation encountered in analog systems. UEP can be carried out via layered coding. Layered coding has been recently proposed for the Gaussian interference channel [START_REF] Chandrashekhar Thejaswi | Layered coding for interference channels with partial transmitter side information[END_REF]. Introducing a large number of levels in layered coding yields our method of forward-layered LDPC coupling. Another novelty is the definition of a degree distribution for the spatial coupling. Edges connecting two neighboring ensembles are not part of their protographs, these spatial coupling edges are defined by an extra degree distribution.

Construction of the forward-layered LDPC coupling

Layered coding is usually made out via binning or superposition [START_REF] Chandrashekhar Thejaswi | Layered coding for interference channels with partial transmitter side information[END_REF]. Another simple method to build layered codes for UEP is overlapping. The output of a first encoder is partially or fully fed to the input of a second encoder. The process is repeated for a bunch of L c encoders. An example of overlapped layered coding is shown in Figure 3.1.

Firstly, a direct sum of L c regular (3, 6) LDPC codes is constructed by copying the (3, 6) parity-check matrix on the main diagonal. LDPC codes properties are detailed in Chapter 1.5. Then, each (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] parity-check matrix is connected to its next neighbor via a (1, 2) sparse matrix, i.e. a random sparse binary matrix with weight one per column and weight two per row. The parity-check structure in Figure 3.1 is very similar to a coupled (4, 8, L c , w = 2) ensemble but it differs in how edges connect neighboring copies. More precisely, for a window length w = 2, forward-layered coupling allows us to introduce a new non-uniformly coupled ensemble denoted by its parameters

(3,6) (3,6) (3,6) (1,2) (1,2) (1,2) (1,2) (1,2)

Position i 1

L c q i-1 q i p i-1 p i
p i =   1 - 1 w w-1 j=0 1 - 1 w w-1 k=0 p i+j-k dc-1   d b -1 (3.
p i = • f d bs i+1 • 1 -(1 -p i ) dc-1 (1 -q i-1 ) dcs d b -1 , q i = • f d bs -1 i+1 • 1 -(1 -p i ) dc-1 (1 -q i-1 ) dcs d b , f i+1 = 1 -(1 -p i+1 ) dc (1 -q i ) dcs-1 , for i = 1 . . . L c
, where f i+1 is a check-to-bit message propagating backward from position i + 1 to position i.

Proof: From the compact graph representing the coupled chain in Figure 3.2, a reader who is familiar with modern coding theory [START_REF] Richardson | Modern coding theory[END_REF] can quickly check that DE equations for the (3, 6; 1, 2; L c ) ensemble are

p i = • f i+1 • 1 -(1 -p i ) 5 (1 -q i-1 ) 2 2 , q i = • 1 -(1 -p i ) 5 (1 -q i-1 ) 2 3 , f i+1 = 1 -(1 -p i+1 ) 6 (1 -q i ) .
Then, it is straightforward to generalize to any integer parameters defining the coupled ensemble. The equal ratios between the degrees of the local ensemble and the degrees of the spatial coupling forces variable nodes and check nodes to have equal number of sockets for connecting edges. QED.

Using (3.3) and Proposition 3.1, belief propagation thresholds are computed on the BEC for different rate-1/2 ensembles. Thresholds are listed in Table 3.1 for d bs = 1 and d cs = 2. A uniform spatially coupled (d b , d c , L c , w = 2) ensemble (column 4) is compared to a forward-layered (d b -1, d c -2; 1, 2; L c ) ensemble (column 5). For both ensembles, right chain termination is made by p Lc+1 = 0. Any chain length L c sufficiently large yields same threshold results, typical values are L c = 60 or L c = 100. Table 3 Another illustration of the forward spatial coupling performance is given in 3.1. The small value L c = 10 is used for the purpose of illustration, its rate loss makes it unacceptable in practice. Without chain termination, forward-layered coupling improves the threshold but stays blocked at a relatively small value of 0.44695. Uniform coupling is capable of saturating the threshold without chain termination but unfortunately, in the case of w = 2, it may need up to 6 spatial positions to push up the threshold from right to left starting at i = L c . This loss in local thresholds cannot be tolerated for finite L c . Hence, we compare both coupled ensembles under right termination for a typical finite value of chain length L c .

Results in Figure 3.3 are found for 10000 decoding iterations. In order to make the threshold flat with respect to the spatial position i/L c , the number of decoding iterations increases with L c . Furthermore, the w = 2 forward spatial coupling lets a (d b , d c ) ensemble at position i strengthen its neighbor at position i -1, i.e. variable nodes protection propagates from right to left due to the structure of the (d bs , d cs ) spatial coupling. Indeed, coupling edges leave a check node at position i to reach a variable node at position i -1. where the new chain has length

FORWARD-LAYERED LDPC COUPLING

Non-uniform chain of spatial coupling

L c = L c 1 + L c 2 .
In general, a chain of length L c = ℵL c 1 is built by gluing ℵ sub-chains. The new coupled ensemble can be written as Density evolution fixed-point equations of Proposition 3.1 are now updated by incorporating polynomials from (3.5) and (3.6). As a well-known rule, alike polynomials used in DE equations for Root-LDPC ensembles [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF] [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF], edge perspective is applied on messages located on edges at the same side from a node generating the DE message. Node perspective is applied on messages located on edges at the other side from that node. In the chain defined by (3.4), DE equations at spatial position i are given by the following proposition. Proposition 3.2. For i = 1 . . . L c , we have

p i = • • λ s (f i+1 ) • 1 -(1 -p i ) dc-1 • • ρ s (1 -q i-1 ) d b -1 , q i = • λ s (f i+1 ) • 1 -(1 -p i ) dc-1 • • ρ s (1 -q i-1 ) d b , f i+1 = 1 -(1 -p i+1 ) dc • ρ s (1 -q i ),
where A stair for unequal error protection is plotted on Figure 3.5. The five uncoupled LDPC ensembles are, from left to right, (3,[START_REF] Bose | On a class of error correcting binary group codes[END_REF], (3,[START_REF] Biglieri | Coding for Wireless Channels[END_REF], (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF], (3,[START_REF] Arıkan | Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels[END_REF], and (3,4). The corresponding spatial coupling is (1,4), (1,3), (1, 2), (1.2, 2), and (1.5, 2). The threshold stair is saturating up on Shannon stair defined by the five local Shannon thresholds.

d b = d b,i ∈ N, d c = d c,i ∈ N, d bs = d bs,i ∈ R + ,

Spatially-variant spatial coupling

Let us consider the highest number of sub-chains inside a non-uniform chain. This extremal situation corresponds to ℵ = L c . The local LDPC ensemble has real average degrees d b,i and d c,i varying with respect to i, for i = 1 . . . L c . The irregularity of left and right degree distributions is taken into account by • λ(x), λ(x),

• ρ(x), and ρ(x). These polynomials are defined in a similar fashion as in (3.5) and (3.6). For example, we have (3.7)

Proposition 3.3. Let d b,i ∈ R + , d c,i ∈ R, d bs,i ∈ R, d cs,i ∈ R, satisfy d bs,i d cs,i = d b,i+1
d c,i+1 , for i = 1 . . . L c . DE equations for this spatially-variant ensemble are Threshold results for a spatially-variant chain are plotted in Figure 3.6 for the binary erasure channel and L c = 200.

p i = • • λ s,i (f i+1 ) • λ i 1 -ρ i (1 -p i ) • • ρ s,i-1 (1 -q i-1 ) , q i = • λ s,i (f i+1 ) • • λ i 1 -ρ i (1 -p i ) • • ρ s,i-1 (1 -q i-1 ) , f i+1 = 1 - • ρ i+1 (1 -p i+1 )ρ s,i (1 -q i ).

Spatial coupling of Root-LDPC ensembles: Parity bits doping

In this section, we propose to apply forward-layered coupling to Root-LDPC codes and study the effect of spatial coupling on their outage boundary in the fading plane. Root-LDPC codes are low-density parity-check codes specifically designed to tackle with nonergodic (quasi-static) fading [17][16]. The key idea is to bring more structure to a random LDPC ensemble in order to let information variable nodes receive BP messages including all available fading states. Hence, a Root-LDPC ensemble attains a diversity order which is equal to the number of degrees of freedom in the block-fading channel.

Main properties of Root-LDPC ensembles

Let us recall the Root-LDPC construction and introduce the notion of diversity.

Fanny Jardel 52 Root-LDPC ensembles are multi-edge-type LDPC ensembles with specific properties [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. For simplicity, let us consider an introductory example with rate-1/2 LDPC code of length N , where N bits are transmitted on a block-fading channel with M = 2 fading states (denoted by colors in the next Section). For this rate-1/2 ensemble four classes of bits are defined by construction:

SPATIAL COUPLING OF ROOT-LDPC ENSEMBLES

• On the first channel ( 1 ): N/4 information bits referred to as 1i and N/4 parity bits referred to as 1p.

• On the second channel fading ( 2 ): N/4 information bits referred to as 2i and N/4 parity bits referred to as 2p. In the same way, for the rate-1/2 ensemble, there are two classes of check nodes named 1c and 2c. Check nodes of type 1c are rootchecks for 1i and check nodes 2c are rootchecks for 2i. The notion of a rootcheck is defined as follows.

Definition 3.3. Consider a check node with a root variable node transmitted on a fading channel i . This check node is a rootcheck with respect to its root if its leaf variable nodes undergo fadings j , where j = i. This rate-1/2 Root-LDPC code is full-diversity under iterative message passing when transmitted on a 2-state block-erasure channel. Diversity is encountered in different communication systems according to two principal aspects:

• Diversity from error-control coding point of view. It consists in creating many replicas of the same information.

• Diversity from communication channel point of view. It corresponds to the number of available degrees of freedom while transmitting information. This code is also MDS according to the block-fading Singleton bound and has the highest coding rate that attains a double diversity (see Sec. V in [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF]). Under ML decoding, an upper bound on the diversity order L is given by the block-fading Singleton Bound [START_REF] Knopp | On coding for block fading channels[END_REF] [66],

L ≤ 1 + M (1 -R) , (3.8)
where R is the coding rate and M is the intrinsic channel diversity. For rate R = 1/M , Root-LDPC codes can attain a full-diversity order L = M [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF]. R = 1/M is the maximal achievable coding rate for L = M according to (3.8). The coding rate can exceed 1/M when L < M . As an example for distributed storage applications, rate-3/4 Root-LDPC codes yield L = 2 when M = 4.

In order to guarantee full diversity for information bits (double diversity is the maximal diversity for rate 1/2 with two channel states), information and parity bits are connected to checks 1c and 2c as shown by the compact Tanner graph of the rate-1/2 Root-LDPC ensemble in Figure 3.7. Edges between 1i and 1c are given by a graph matching which is a permutation matrix in matrix representation. If the bits transmitted on one fading are erased, the erased information bits are recovered.

Density evolution of uncoupled Root-LDPC ensembles

Density evolution equations of the information and parity messages on two parallel BECs for the uncoupled Root-LDPC ensembles are summarized here [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. Consider the channel model in Figure 3 Define the degree distribution polynomials as

λ(x) = d b i=2 λ i x i-1 ρ(x) = dc j=2 ρ j x j-1 (3.9)
The definitions of the degree polynomials λ(x), ρ(x), λ(x), and ρ(x) are as in [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. Let us define the six message densities for a Root-LDPC ensemble as follows:

• f 1 is the density of message 1i → 2c.

• q 1 is the density of message 1i → 1c.

• f 2 is the density of message 2i → 1c.

• q 2 is the density of message 2i → 2c.

• g 1 is the density of message 1p → 2c.

• g 2 is the density of message 2p → 1c.

DE equations for the six message densities q m 1 , f m 1 , g m 1 , q m 2 , f m 2 , and g m 2 can be found by drawing the local neighborhood of each type of variable nodes at decoding iteration m + 1 as:

q m+1 1 = 1 λ (1 -(1 -q m 2 ) ρ (1 -f e f m 1 -g e g m 1 )) , (3.10)
f m+1 1 = 1 λ (1 -(1 -q m 2 ) ρ (1 -f e f m 1 -g e g m 1 )) (1 -ρ (1 -f e f m 2 -g e g m 2 )) , (3.11)
g m+1 1 = 1 λ (1 -(1 -q m 2 ) ρ (1 -f e f m 1 -g e g m 1 )) , (3.12
)

q m+1 2 = 2 λ (1 -(1 -q m 1 ) ρ (1 -f e f m 2 -g e g m 2 )) , (3.13)
f m+1 2 = 2 λ (1 -(1 -q m 1 ) ρ (1 -f e f m 2 -g e g m 2 )) (1 -ρ (1 -f e f m 1 -g e g m 1 )) , (3.14)
g m+1 2 = 2 λ (1 -(1 -q m 1 ) ρ (1 -f e f m 2 -g e g m 2 )) , (3.15)
where the multi-edge-type fractions are defined as functions of the average variable-node degree db :

f e = 1 -g e = db -1 2 db -1 . (3.16)
For regular ensembles with variable-node degree d b and check-node degree d c , λ(x) = λ(x), ρ(x) = ρ(x), λ(x) = λ(x)/x, and ρ(x) = ρ(x)/x. Consequently, q 1 (x) = g 1 (x) and q 2 (x) = g 2 (x). Then, we have four density evolution equations, and λ(x) and ρ(x) are monomials:

λ(x) = x d b -1 ρ(x) = x dc-1 (3.17)
Then, DE equations for BEC( 1 ) and BEC( 2) can be written as:

q m+1 1 = 1 1 -(1 -q m 2 ) (1 -f e f m 1 -g e q m 1 ) dc-2 d b -1 , (3.18)
f m+1 1 = 1 1 -(1 -q m 2 ) (1 -f e f m 1 -g e q m 1 ) dc-2 d b -2 1 -(1 -f e f m 2 -g e q m 2 ) dc-1 , (3.19)
q m+1 2 = 2 1 -(1 -q m 1 ) (1 -f e f m 2 -g e q m 2 ) dc-2 d b -1 , (3.20)
f m+1 2 = 2 1 -(1 -q m 1 ) (1 -f e f m 2 -g e q m 2 ) dc-2 d b -2 1 -(1 -f e f m 1 -g e q m 1 ) dc-1 . (3.21)
Recall that for Root-LDPC, only the information bits are connected to rootchecks and have full-diversity. Thus, the threshold bound is determined by the convergence of the densities f 1 and f 2 associated with the messages 1i → 2c and 2i → 1c respectively.

As we show later in Figure 3.15, the gap between the threshold boundary of Root-LDPC and the capacity boundary of the channel is not small enough.

Spatial coupling of Root-LDPC ensembles

In order to improve the coding gain, we propose a spatial coupling structure for Root-LDPC based on the coupling structure in Section 3.2 for random LDPC ensembles.

Construction of the partially-coupled Root-LDPC ensemble: L c copies of (d b , d c ) Root-LDPC ensembles are placed in spatial positions l = 1, 2, ..., L c to form a chain of length L c . Then, extra edges are added to couple the ensembles. In order to simplify the construction, only parity variable nodes are coupled to the check nodes in the next spatial position resulting in a partial-coupling scheme as shown in Figure 3.9. To our knowledge, this is the first time partial coupling is applied to LDPC ensembles for parity bits doping. For termination at the right end, extra check nodes are placed at the (L c + 1)-Th. spatial position.

In addition to the local message densities defined in Section 3.

l l + 1 l + 2 l+3 1 1 1 1 π 2 π 1 f 1 g 1 f 2 g 2 k l+1 1 k l+1 2 q 1 q 2 n 1 n 2 Figure 3
.9: Forward-layered spatial coupling of Root-LDPC. The chain is terminated at the right end by the checks placed at the spatial position L c + 1. Since only the parity bits are coupled to the checks, this is a partial coupling scheme.

• n 1 is the density of message 1p(l) → 2c(l + 1).

• n 2 is the density of message 2p(l) → 1c(l + 1).

• k l+1 1 is the density of message propagating backward 2c(l + 1) → 1p(l).

• k l+1 2 is the density of message propagating backward 1c(l + 1) → 2p(l). • Local messages

q l 1 = 1 1 -1 -q l 2 1 -f e f l 1 -g e g l 1 dc-2 1 -n l-1 1 dcs d b -1 , (3.22)
f l 1 = 1 1 -1 -q l 2 1 -f e f l 1 -g e g l 1 dc-2 1 -n l-1 1 dcs d b -2 1 -1 -f e f l 2 -g e g l 2 dc-1 1 -n l-1 2 dcs , (3.23)
g l 1 = 1 (k l+1 1 ) d bs 1 -1 -q l 2 1 -f e f l 1 -g e g l 1 dc-2 1 -n l-1 1 dcs d b -1 . (3.24)
• Coupling messages (forward)

n l 1 = 1 (k l+1 1 ) d bs -1 1 -1 -q l 2 1 -f e f l 1 -g e g l 1 dc-2 1 -n l-1 1 dcs d b . (3.25)
• Coupling messages (backward)

k l+1 1 = 1 -1 -q l+1 2 1 -f e f l+1 1 -g e g l+1 1 dc-1 1 -n l 1 dcs-1 . ( 3

.26)

Proof. A reader who is familiar with the modern coding theory [START_REF] Richardson | Modern coding theory[END_REF] can derive the DE equations from the local tree neighborhood of the nodes shown in Figure 3.10 -Figure 3.14.

Since information bits are connected to rootchecks, the diversity order of the information bits is 2. To improve the coding gain of the information bits, we create more parity bits of diversity order 2 by using a Root-LDPC(2π) family instead of a Root-LDPC(4π) family (for more information about the Root-LDPC(2π) and Root-LDPC(4π) families refer to [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF]).

Similar to Root-LDPC, the threshold boundary of coupled Root-LDPC is determined by the convergence of the densities associated with the local messages 1i(l) → 2c(l) and 2i(l) → 1c(l). In fact, we have L c layered threshold boundaries corresponding to L c copies of the Root-LDPC in the chain.

k l+1 1 2c l+1 1p l 1i l+1 1p l+1 2i l+1 1p l

SPATIAL COUPLING OF ROOT-LDPC ENSEMBLES

The capacities of the erasure channels BEC( 1 ) and BEC( 2 ) are C 1 = 1 -1 and C 2 = 1-2 respectively. When the two parallel channels are used uniformly, the capacity is the average of C 1 and C

2 C = 1 2 (C 1 + C 2 ) = 1 - 1 2 ( 1 + 2 ). (3.27)
For rate-1/2, the capacity limit is achieved when C = R = 1/2. Then, the capacity bound of the channel is given by the straight line 1 + 2 = 1. Consider a random (3, 6)-LDPC ensemble. When 1 = 2 , we have the standard DE equation for the (3, 6)-LDPC ensemble

x = 1 -(1 -x) 5 2 , (3.28)
and the BP threshold for 1 = 2 = is 0.429. Since the LDPC ensemble is random, a bit is transmitted through BEC( 1 ) or BEC( 2 ) equiprobably. So, the random LDPC is undergoing an average channel BEC(( 1 + 2 )/2). Then, the corresponding DE equation is

x = 1 + 2 2 1 -(1 -x) 5 2 , (3.29)
and the ergodic threshold for the random (3, 6)-LDPC ensemble is given by the line ( 1 +

2 )/2 = 0.429. Similarly, the ergodic threshold for the random (4, 8)-LDPC ensemble is given by the line ( 1 + 2 )/2 = 0.383. In the erasure plane, the ( 1 , 2 ) points under the threshold boundary cause the DE equations to converge and the ( 1 , 2 ) points above the threshold boundary result in the divergence of the DE equations. Thus, outage occurs when the ( 1 , 2 ) points are above the threshold boundary. The threshold boundary of the uncoupled (3, 6) Root-LDPC is shown in Figure 3.15. The threshold boundary of the uncoupled (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] Root-LDPC is close to the ergodic threshold of the random (3, 6)-LDPC except for the cases where 1 = 0 or 2 = 0. As the uncoupled Root-LDPC has full diversity, ( 1 , 2 ) = (1, 0) and ( 1 , 2 ) = (0, 1) are on the threshold boundary of the uncoupled (3, 6) Root-LDPC. However, the gap between the threshold boundary of the uncoupled (3,[START_REF] Benedetto | Unveiling turbo-codes: some results on parallel concatenated coding schemes[END_REF] Root-LDPC and the capacity boundary of the channel is not small enough.

The threshold boundary improvement achieved by the proposed spatial coupling scheme is presented in Figure 3.16 for chain length L c = 60. The chain length should be large enough, i.e. L c ≥ 50, so that the spatial coupling effect can be observed and the rate converges to the targeted rate. For larger values of L c , the threshold boundary does not change. For simplicity, the parity variable nodes and check nodes are coupled with single edges, i.e. d bs = d cs = 1. Although we have L c threshold boundaries for L c copies of the Root-LDPC in the chain, the threshold boundaries are very close to each other. Thus, we plot a single boundary.

Figure 3.16 shows the threshold boundary of coupled (4,8) Root-LDPC. Although only a partial coupling scheme is applied by parity bits doping, the threshold boundary is very close to the capacity boundary of the channel. This significant threshold saturation is due to the coding gain introduced by spatial coupling. the coupled (4, 8) Root-LDPC ensemble has full diversity. Note that, random rate-1/2 LDPC ensembles cannot achieve full diversity [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF], which means that when all the bits transmitted through BEC( 1 ) are erased, it is not possible to recover these erased bits from the bits transmitted through BEC( 2 ) and vice versa. Thus, the ergodic threshold boundary lines for random LDPC ensembles do not pass through the points (1, 0) and (0, 1) in the erasure plane as shown and increasing the degrees of the variable nodes and check nodes deteriorates the threshold boundary of the random LDPC under BP decoding as presented in Figure 3.15 and Figure 3.16.

Spatial Coupling for Distributed Storage and Diversity Applications

In the context of distributed coding, both iterative decoding and locality aspects have motivated the interest in spatially-coupled LDPC codes that can achieve the maximum-a- posteriori decoding threshold under iterative belief propagation. Moreover, Root-LDPC ensembles present some interesting properties. The Root-LDPC construction guarantees that information bits attain maximal diversity under iterative decoding over non-ergodic channels (e.g. block-fading and block-erasure channels). Notice that Root-LDPC codes allow only information bits to attain the targeted diversity while parity bits are usually diversity-deficient. Hence, we propose in this section to apply spatially-coupled Root-LDPC to distributed storage applications.

Channel coding model

The different coding parameters presented in sub-section 3.3.1 are now restated in the context of distributed storage. Assuming a storage domain with a total of machines partitioned into M = 4 clusters. Each cluster has its own erasure probability i corresponding to one state of the 4-state block-erasure channel. Here, block-fading channels are replaced by block-erasure channels. Indeed, a block erasure is a special case of block fading (the two extremal fadings 0 and ∞). Satisfying diversity L in distributed coding means that the code is capable of filling all erasures if L -1 clusters are erased. In our construction, the data stored in one cluster may be totally erased, diversity order L = 2 ensures that all these erasures will be filled. The channel model is depicted in Figure 3.17, where N bits are transmitted on four parallel BECs with erasure probabilities i . Chunks of N/4 bits of the Root-LDPC are transmitted on each BEC( i ), i = 1 . . . 4. Recall that for Root-LDPC codes, only the information bits are connected to rootchecks and have maximal diversity, leading to one cluster failures recovery. However, the coding gain of such code is weak due the lower diversity of parity bits. In order to improve the coding gain and saturate the threshold (outage) boundary, we propose to apply forwardlayered spatially-coupled Root-LDPC ensembles presented in Section 3.3.2 to distributed storage. In the sequel, we shall use the coloring terminology to describe the four BEC channels with parameter i : binary elements transmitted on BEC( i ) will be referred to as variable nodes of color i, i = 1 . . .

Uncoupled rate-3/4 Root-LDPC ensemble

For the channel model described above, we split the first class of bits (green color) into information and parity bits respectively, i.e. 1i and 1p. A similar splitting is made for all four colors leading to a total of eight classes of variable nodes as illustrated in Figure 3.18. Furthermore, four classes of check nodes are drawn on the right of the Tanner graph since the channel has M = 4 colors. Check nodes 1c, 2c, and 3c are rootchecks for class 1i. Variable nodes 1p are connected to the non-root check node class 4c. The number of edges for information and parity bits towards the non-root checks is ∆ i and ∆ p . The Root-LDPC structure is cyclic-symmetric. Similar edge connections are made for the three remaining colors. This ensemble shown in Figure 3.18 has rate 3/4. For each color, there are 3N/16 information bits and N/16 parity bits. There are N/16 check nodes of a given class, all check nodes have degree d c = 3 + 3∆ i + ∆ p . Each information bit has node degree 1 + ∆ i and each parity variable node has degree ∆ p . Then, the average variable-node degree d b satisfies The rootcheck structure guarantees double diversity in presence of block erasures. The proposed double-diversity maximal-rate code for four colors can also fill independent erasures. This capacity of handling both independent and burst erasures (per color) is studied now in the ( 1 , 2 ) plane. For simplicity, given the perfect cyclic-symmetry in the Root-LDPC ensemble, we assume that 2 = 3 = 4 when drawing outage boundaries in the plane. The density evolution fixed-points are given below without any constraint on the four channel parameters. DE fixed-point equations can be found by drawing the local neighborhood of each type of variable nodes.

d b = 3∆ i + ∆ p + 3 4 = d c 4 . (3.30) 1 ∆ i 1c 1i 1p 2c 3c 4c 2i 2p 3i 3p 4i 4p f 1 f 1 f 1 g 1 ∆ p q 1
Let us define the message densities for the uncoupled rate-3/4 Root-LDPC ensemble as follows:

• f 1 is the density of message 1i → 1c, 2c, 3c.

• g 1 is the density of message 1i → 4c.

• q 1 is the density of message 1p → 4c.

Using the cyclic symmetry, messages f i , g i , and q i are defined in a similar fashion for i = 2, 3, 4. Our LDPC ensemble corresponds to the following set of random graphs: edges from (1i,1p) towards 4c are constructed via a uniformly-selected socket permutation among the (∆ i 3N 16 + ∆ p N 16 )! permutations. The same construction is applied three more times for the three remaining colors. Hence, our rate-3/4 Root-LDPC ensemble is made out of four sets of interleavers. DE equations for the uncoupled ensemble are, for i = 1 . . . 4:

f i = i   1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )   ∆ i , (3.31
)

g i = i   1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )   ∆ i -1 • 1 3 4 k = 1 k = i      1 -(1 -f e g k -g e q k ) 3∆ i +∆p j = k j = i (1 -f j )      , (3.32
)

q i = i   1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )   ∆p-1 , (3.33)
where the fractions f e and g e are defined as functions of the degrees between variable nodes and their non-root check nodes:

f e = 1 -g e = 3∆ i 3∆ i + ∆ p . (3.34)
The ( 1 , 2 ) plane, restricted to [0, 1] 2 , is partitioned into two regions, the outage region R and the non-outage region R. The non-outage region is .35) The boundary between R and R will be called the outage boundary and denoted by B o . It can be compared to the capacity boundary found by writing that the capacity of the four BEC channels is equal to the coding rate, i.e. the capacity boundary is given by the line

R = ( 1 , 2 ) ∈ [0, 1] 2 : 0 is the unique fixed-point . ( 3
1 + 3 2 = 1. ( 3

Double diversity Root-LDPC for distributed storage applications

Spatially-coupled Root-LDPC ensembles were introduced in Section 3.3 in the case of two-state non-ergodic channels (M = 2) with a coding rate 1/2. We build spatiallycoupled Root-LDPC for four colors or equivalently four states (M = 4), where each state corresponds to a storage cluster.

The uncoupled ensemble of the previous sub-section is copied L c times, each copy being placed on a spatial position , where = 1 . . . L c . In practice, the chain length L c is taken to be large enough, e.g. L c = 100. For the coupling scheme shown in Figure 3.20, the coupling window size is w = 2. Parity variable nodes at spatial position are coupled with non-root check nodes in spatial position + 1. The chain is terminated at the right end with extra check nodes. For a general w, parity variable nodes at spatial position can be coupled with non-root check nodes in spatial positions + 1, + 2, ..., + (w -1). The chain is terminated by adding check nodes at w -1 spatial positions at the right end. The number of edges per variable node involved in coupling parity bits to the future w -1 check nodes is ∆ c . For spatial coupling with w = 2, the following messages are defined at spatial position :

• f i , g i , and q i are the same messages as in ( 3)-( 5), used to represent evolution in the local ensemble at position , for the four colors i = 1 . . . 4.

• Messages f and g are not involved in spatial coupling, they are produced by information bits. For coupling parity bits, we keep the q notation. Message q f stands for a forward message and q b stands for a backward message. We define q f i as the left-to-right messages sent from variable nodes at position to check nodes at position + 1. Similarly, q bi are backward messages from check nodes towards variable nodes in the previous spatial position, for i = 1 . . . 4.

Then, DE equations for the spatially coupled (w = 2) rate-3/4 Root-LDPC ensemble are

f i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 Π 1 ∆ i , (3.37)
g i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 Π 1 ∆ i -1 • 1 3 4 k = 1 k = i 1 -(1 -f e g k -g e q k ) 3∆ i +∆p Π 3 , (3.38
)

q i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 Π 1 ∆p-1 q +1 bi ∆c , (3.39)
q f i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 Π 1 ∆p q +1 bi ∆c-1 , (3.40
)

q bi = 1 -(1 -f e g i -g e q i ) 3∆ i +∆p Π 2 , (3.41)
Fanny Jardel 68

SPATIAL COUPLING FOR DISTRIBUTED STORAGE AND DIVERSITY APPLICATIONS

where

Π 1 = j =i (1-f j )(1-q -1 f i ) ∆c , Π 2 = j =i (1-f j )(1-q -1 f i ) ∆c-1 , and Π 3 = j =i j =k (1-f j )(1-q -1 f k ) ∆c .
Density evolution fixed-points for w > 2 are given by equations similar to the five equations listed above. For w = 3, for i = 1 . . . 4, q f i is splitted into:

• q f 1 i as the left-to-right messages sent from variable nodes at position to check nodes at position + 1, • q f 2 i as the left-to-right messages sent from variable nodes at position to check nodes at position + 2. Similarly, for i = 1 . . . 4, q b i is splitted into: • q b 1 i are backward messages from check nodes towards variable nodes in the previous spatial position, • q b 2 i are backward messages from check nodes towards variable nodes in the -2 spatial position.

The DE equations for a window size w = 3 are given by

f i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2 ∆ i (3. 42
)
g i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2 ∆ i -1 × 1 3 4 k = 1 k = i 1 -(1 -f e g k -g e q k ) 3∆ i +∆p j = k j = i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2
(3.43)

q i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2 ∆p-1 × (1 -q +1 b 1 i ) ∆c 2 (1 -q +2 b 2 i ) ∆c 2
(3.44)

q f 1 i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2 ∆p × (1 -q +1 b 1 i ) ∆c 2 -1 (1 -q +2 b 2 i ) ∆c 2
(3.45)

Fanny Jardel 69 CHAPTER 3. SPATIAL COUPLING FOR CODES AND DIVERSITY

q f 2 i = i 1 -(1 -f e g i -g e q i ) 3∆ i +∆p-1 j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2 ∆p × (1 -q +1 b 1 i ) ∆c 2 (1 -q +2 b 2 i ) ∆c 2 -1 (3.46)
q b 1 i = 1 -(1 -f e g i -g e q i ) 3∆ i +∆p j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 -1 (1 -q -2 f 2 i ) ∆c 2
(3.47)

q b 2 i = 1 -(1 -f e g i -g e q i ) 3∆ i +∆p j =i (1 -f j )(1 -q -1 f 1 i ) ∆c 2 (1 -q -2 f 2 i ) ∆c 2 -1 (3.48)
The outage boundary for the coupled Root-LDPC is shown in Figure 3.21 for a window size w = 2, 3, and 5. The new outage boundary approaches the capacity line 1 + 3 2 = 1. Nevertheless, we do not observe a boundary saturation as it is expected in spatially coupled LDPC codes. The reasons are mainly due to the partial spatial coupling of parity bits only.

CONCLUSIONS

Conclusions

In this Chapter, a new method called forward layered coupling, for spatial coupling of low-density parity-check ensembles was proposed. The method is inspired from overlapped layered coding and has the shortest possible memory, i.e. w = 2. Edges of local ensembles and those defining the spatial coupling are separately built. Thresholds for regular coupled chains were given in Table 3.1. The new method also allows the construction of non-uniform coupling chains with near-Shannon spatially-varying thresholds under iterative decoding.

The second part of this chapter was dedicated to present novel forward-layered coupling schemes for Root-LDPC. Local protographs are coupled by new edges connected to their parity bits only. As expected from parity bits doping [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF], coupling parity bits is greatly enhancing the coding gain of information bits. The spatially-coupled Root-LDPC ensembles achieve threshold boundaries very close to the capacity boundary (saturation) in the erasure plane. This behavior in the erasure plane will automatically result in a saturation of the Root-LDPC outage boundary on a real block-fading channel with additive noise.

In the last section, spatially-coupled Root-LDPC are applied to storage and diversity applications. From Definition 2.1 and the structure of the double-diversity Root-LDPC codes, it is obvious that information bits have locality d c -1, i.e. the degree of check nodes minus one edge, in the coupling scheme presented in Section 3.4.3. In fact, this is true for any LDPC code when considering independent erasures. In the special case where erasures occur per color (block erasures) the locality of a random LDPC ensemble is O(log n) whereas that of a Root-LDPC is maintained at d c -1 thanks to rootcheck nodes of order 1. Usually, we would like to maintain all information bits at root order 1. This forces the construction to couple parity bits only. We also saw that the outage boundary is not completely saturated towards the capacity line. Root order 1 for all information bits is too constraining for rate 3/4 and 4 colors. A potential solution to saturate the boundary of coupled Root-LDPC (as a perspective for future work) is to introduce a fraction of order 2 information bits. This should allow the enhancement of spatial coupling by engaging both information and parity bits.

In this chapter we dealt with spatially-coupled LDPC ensembles and spatially-coupled Root-LDPC ensembles. These codes achieve a good compromise between obtaining good locality and iterative decoding process. However, LDPC and Root-LDPC are not suitable for distributive storage applications requiring data updating. Indeed, updating the data is equivalent to encoding the data in term of complexity. As a result of the sparsity of LDPC code parity-check matrix, the generator matrix is dense. Consequently, data encoding and updating are heavy processes. In the next chapter a new coding scheme using double-diversity product code is proposed to overcome this problem.

Chapter 4

Edge Coloring in Product Code T he colossal amount of data stored or conveyed by network nodes requires a special design of coding structures to protect information against loss or errors and to facilitate its access. At the end-user level, coding is essential for transmitting information towards the network whether it is located in a single node or distributed over many nodes. At the network level, coding should help nodes to reliably save a big amount of data and to efficiently communicate with each others. Powerful capacityachieving error-correcting codes developed in the last two decades are mainly efficient at large or asymptotic block length, e.g. low-density parity-check codes (LDPC) [START_REF] Gallager | Low-density parity-check codes[END_REF] and their spatially-coupled ensembles [START_REF] Kudekar | Spatially coupled ensembles universally achieve capacity under belief propagation[END_REF], parallel-concatenated convolutional (Turbo) codes [START_REF] Berrou | Near optimum error correcting coding and decoding: Turbo-codes[END_REF][6], and polar codes derived from channel polarization [START_REF] Arıkan | Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels[END_REF]. Data transmission and storage in many nowadays networks may require short-length packets that are not suitable for capacity-achieving codes. The current interest in finite-length channel coding rates [START_REF] Polyanskiy | Channel coding rate in the finite blocklength regime[END_REF] put back the light on code design for short and moderate block length. Many potential candidates are available for this non-asymptotic length context such as binary and non-binary BCH codes, including Reed-Solomon (RS) codes, Reed-Muller (RM) codes, and tensor product codes of all these linear block codes [START_REF] Macwilliams | The theory of error-correcting codes[END_REF][10] [START_REF] Lin | Error control coding[END_REF].

Product codes, introduced by Peter Elias in 1954 [START_REF] Elias | Error-free coding[END_REF], are tensor products of two (or more) simple codes with a structure that is well-suited to iterative decoding via its graphical description. In the early decades after their invention, product codes received a great attention due to their capability of correcting multiple burst errors [START_REF] Wolf | On codes derivable from the tensor product of check matrices[END_REF][109], the availability of erasure-error bounded-distance decoding algorithms [START_REF] Wainberg | Error-erasure decoding of product codes (Corresp.)[END_REF], the ability of correcting many errors beyond the guaranteed correction capacity [1], and their efficient implementation with a variable rate [START_REF] Weng | Variable redundancy product codes[END_REF]. The pioneering work by Tanner [START_REF] Tanner | A recursive approach to low complexity codes[END_REF] brought new tools to coding theory and put codes on graphs, including product codes, and their iterative decoding in the heart of modern coding theory [START_REF] Kschischang | Factor graphs and the sumproduct algorithm[END_REF][52] [START_REF] Richardson | Modern coding theory[END_REF]. The graph approach of coding led to new optimal cycle codes on Ramanujan/Cayley graphs [START_REF] Tillich | Optimal cycle codes constructed from Ramanujan graphs[END_REF] and to Generalizations of LDPC and product codes, known as GLD codes, studied for the binary symmetric channel (BSC) and the Gaussian channel [START_REF] Boutros | Generalized low density (Tanner) codes[END_REF]. The excellent performance of iterative (turbo) decoding of product codes on the Gaussian channel [START_REF] Pyndiah | Near-optimum decoding of product codes: Block turbo codes[END_REF] made them compete with Turbo codes and LDPC codes for short and moderate block length. The convergence rate and stability of product codes iterative decoding were studied based on a geometric framework [START_REF] Sella | Convergence analysis of turbo decoding of product codes[END_REF]. Product codes with mixed convolutional and block components were also found efficient in presence of impulsive noise [START_REF] Freeman | A two-dimensional product code with robust soft-decision decoding[END_REF]. In addition, iterated Reed-Muller product codes were shown to exhibit good decoding thresholds for the binary erasure channel, but at high and low coding rates only [START_REF] Varodayan | Investigation of the Elias product code construction for the binary erasure channel[END_REF].

The class of product codes in which the row and the column code are both Reed-Solomon codes was extensively used since more than two decades in DVD storage media and in mobile cellular networks [START_REF]Reed-Solomon Codes and their Applications[END_REF]. In these systems, the channel is modeled as a symbol-error channel without soft information, i.e. suited to algebraic decoding. Improvements were suggested for these RS-based product codes such as soft information provided by list decoding [START_REF] Sarwate | Soft decision decoding of Reed-Solomon product codes[END_REF] within the iterative process in a Reddy-Robinson framework [START_REF] Reddy | Random Error and Burst Correction by Iterated Codes[END_REF]. Also, RS-based product codes were directly decoded via a Guruswami-Sudan list decoder [START_REF] Guruswami | Improved decoding of Reed-Solomon and algebraicgeometry codes[END_REF] after being generalized to bivariate polynomials [4]. For general tensor products of codes and interleaved, a recent efficient list decoding algorithm was published [START_REF] Gopalan | List decoding tensor products and interleaved codes[END_REF], with an improved list size in the binary case. On channels with soft information, RS-based product codes may be row-column decoded with soft-decision constituent decoders [32][48].

Tolhuizen found the Hamming weight distribution of both binary and non-binary product codes up to a weight less than [START_REF] Tolhuizen | More results on the weight enumerator of product codes[END_REF]. Enumeration of erasure patterns up to a weight less than d 1 d 2 + min(d 1 , d 2 ) was realized by Sendrier for product codes with MDS components [START_REF] Sendrier | Codes correcteurs d'erreurs à haut pouvoir de correction[END_REF]. Rosnes studied stopping sets of binary product codes under iterative ML-component-wise decoding [START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF], where the defined stopping sets and their analysis are based on the generalized Hamming distance [START_REF] Wei | Generalized Hamming weights for linear codes[END_REF] [START_REF] Helleseth | Generalized Hamming weights of linear codes[END_REF].

d 1 d 2 + max(d 1 d 2 /q , d 2 d 1 /q )
In this chapter, we consider non-binary product codes with MDS components and their iterative algebraic decoding on the erasure channel. Both independent and block erasures are considered. The erasure channel is currently a major area of research in coding theory [START_REF] Kudekar | Reed-Muller codes achieve capacity on the binary erasure channel under MAP decoding[END_REF][58] because of strong connections with theoretical computer science [START_REF] Kumar | Reed-Muller codes achieve capacity on erasure channels[END_REF] and its model that easily allows to understand the behavior of codes such as for LDPC codes [START_REF] Di | Finite-length analysis of low-density parity-check codes on the binary erasure channel[END_REF], for general linear block codes [START_REF] Schwartz | On the stopping distance and the stopping redundancy of codes[END_REF], and for turbo codes [START_REF] Rosnes | Turbo decoding on the binary erasure channel: Finitelength analysis and turbo stopping sets[END_REF]. Coding for block erasures was examined by Lapidoth in the context of convolutional codes [START_REF] Lapidoth | Convolutional codes and finite interleavers for the block erasure channel[END_REF]. This was a basis to later construct codes for the block-fading channel with additive white Gaussian noise [START_REF] Guillén I Fàbregas | Coded modulation in the block-fading channel: Coding theorems and code construction[END_REF] [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. The notion of rootcheck introduced in [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF] [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF] for single-parity check nodes was applied to more general check nodes in GLD codes [START_REF] Boutros | Generalized lowdensity codes with BCH constituents for full-diversity near-outage performance[END_REF] and product codes [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] to achieve diversity on non-ergodic block-fading channels. The rootcheck concept is the main tool in this chapter, in a way similar to [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF], to define a compact graph representation and study iterative decoding in presence of block erasures. Edge coloring is one of the most interesting problems in modern graph theory [START_REF] Bollobás | Modern graph theory[END_REF]. In this chapter, edge coloring is a tool, when combined to the rootcheck concept, yields doublediversity product codes. Our work is valid for finite-length MDS-based product codes only. Product codes for asymptotic block length were studied for single-parity codes constituents [START_REF] Rankin | Asymptotic performance of product codes[END_REF] and for the erasure channel with a standard regular structure [START_REF] Schwartz | On the asymptotic performance of iterative decoders for product codes[END_REF] and 4.1. MATHEMATICAL NOTATION AND TERMINOLOGY MDS-based irregular structures [2].

Whether a product code is endowed with an edge coloring or not, the analysis of stopping sets, their characterization and their enumeration is a fundamental task to be able to design codes for erasure channels and determine the decoder performance. Our work in this sense is an improvement to previous works cited above by Tolhuizen, Sendrier, and Rosnes. Besides this objective of stopping sets characterization which is useful for independent channel erasures and erasures occurring in blocks of symbols, recent works on locality [START_REF] Gopalan | On the locality of codeword symbols[END_REF] stimulated us to search for edge colorings with a large population of edges that admit a minimal rootcheck order. Locality is a concept encountered in distributive storage [START_REF] Kubiatowicz | Oceanstore: An architecture for global-scale persistent storage[END_REF] [START_REF] Rashmi | A solution to the network challenges of data recovery in erasure-coded distributed storage systems: A study on the Facebook warehouse cluster[END_REF] where classic coding theory is adapted to the nature of a network with distributed nodes with its own constraints of load in bandwidth and storage [START_REF] Dimakis | A survey on network codes for distributed storage[END_REF] [START_REF] Oggier | Coding techniques for repairability in networked distributed storage systems[END_REF]. Furthermore, product codes with MDS components appear to be suited to distributive storage [START_REF] Esmaili | CORE: Cross-object redundancy for efficient data repair in storage systems[END_REF] owing to their simple and mature techniques of erasure resilience. In our search for good edge colorings, we provide a new algorithm based on the concept of differential evolution [99][71]. We use no crossover in our evolution loop, only a mutation of the population of bad edges is made to search for a better edge coloring. Our MDS-based product codes equipped with a double-diversity edge coloring are suited to distributed storage applications and to wireless networks where diversity is a key parameter.

The chapter is structured as follows. Section 4.1 gives a list of mathematical notations. The graph representation of product codes is given in Section 4.2, including compact and non-compact graphs. Also the rootcheck concept and its consequences are also found in Section 4.2. The analysis of stopping sets is made in Section 4.3. Our edge coloring algorithm for product codes is described in Section 4.4. Finally, in Section 4.5, we study the performance of product codes with MDS components on erasure channels and we give theoretical and numerical results before the conclusions in the last section.

Mathematical notation and Terminology

We start by the notation related to the product code and its row and column components. The impatient reader may skip this entire section and then refer to it later to clarify any notation within the text. Basic notions on product codes and fundamental properties are found in main textbooks [START_REF] Macwilliams | The theory of error-correcting codes[END_REF][10] [START_REF] Lin | Error control coding[END_REF] and the encyclopedia of telecommunications [START_REF] Kschischang | Wiley encyclopedia of telecommunications[END_REF]. The column code C 1 is a linear block code over the finite field F q with parameters [n 1 , k 1 , d 1 ] q which may be summarized by [n 1 , k 1 ] when no confusion is possible. The integer q is the code alphabet size, n 1 is the code length, k 1 is the code dimension as a vector subspace of F n 1 q , and d 1 is the minimum Hamming distance of C 1 . Similarly, the row code C 2 is a linear block code with parameters [n 2 , k 2 , d 2 ] q . Let G 1 and G 2 be two matrices of size k 1 × n 1 and k 2 × n 2 containing in their row a basis for the subspaces C 1 and C 2 respectively. From the two generator matrices G 1 and G 2 a product code C P is constructed as a subspace of F N q with a generator matrix G P = G 1 ⊗ G 2 , where N = n 1 n 2 and ⊗ denotes the Kronecker product [START_REF] Macwilliams | The theory of error-correcting codes[END_REF]. C P has dimension K = k 1 k 2 and minimum Hamming distance d P = d 1 d 2 . C 1 and C 2 are also called component codes, this is a terminology from concatenated codes. In [START_REF] Tanner | A recursive approach to low complexity codes[END_REF] and [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF], vertices associated to component codes are called subcode nodes.

A linear [n, k, d] q code is said to be MDS, i.e. Maximum Distance Separable, if it satisfies d = nk + 1. Binary MDS codes are the trivial repetition codes and the single parity-check codes. In this chapter, we only consider non-trivial non-binary MDS codes where q > n > 2. A linear code over F q of rate R = k/n is said to be MDS diversity-wise or MDS in the block-fading/block-erasure sense if it achieves a diversity order L such that L = 1 + M (1 -R) , where M is the number of degrees of freedom in the channel. The right term 1 + M (1 -R) is known as the block-fading Singleton bound [START_REF] Malkamaki | Evaluating the performance of convolutional codes over block fading channels[END_REF] [START_REF] Knopp | On coding for block fading channels[END_REF]. In this chapter, M shall denote the number of colors, i.e. the palette size of an edge coloring. Assume that code symbols are partitioned into M sub-blocks, a code is said to attain diversity L if it is capable of correct decoding when L -1 sub-blocks are erased by the channel. The reader should refer to [START_REF] Tse | Fundamentals of Wireless Communication[END_REF], chapter 3, for an exact definition of diversity on fading channels with additive white Gaussian noise.

A product code shall be represented by a non-compact graph

G = (V 1 , V 2 , E).
G is a complete bipartite graph where V 1 is the set of n 2 right vertices, V 2 is the set of n 1 left vertices, and E is the set of N edges representing the code symbols. A compact graph G c will also be introduced in the next section with

G c = (V c 1 , V c 2 , E c
). The number of edges (also called super-edges) in the compact graph is |E c | = N c . A super-edge is equivalent to a super-symbol that represents (n 1k 1 )(n 2k 2 ) symbols from F q . The ensemble of edge colorings is denoted Φ(E) and Φ(E c ) for G and G c respectively. An edge coloring will be denoted by φ. Given φ, the rootcheck order of an edge is ρ(e). The greatest ρ(e) among all edges will be referred to as ρ max (φ). The number of edges e satisfying ρ(e) = 1 is η(φ), this is the number of good edges and will be processed by the DECA algorithm in Section 4.4. The DECA parameter ℵ shall represent the number of edges to be mutated, i.e. those edges being chosen in the population of bad edges satisfying ρ(e) > 1.

Under iterative row-column decoding, the rootcheck order ρ is equal to the number of decoding iterations required to solve the edge value (or the symbol associated to that edge). In this chapter, one decoding iteration is equivalent to decoding all rows or decoding all columns. A sequence of n 1 row decoders followed by a sequence of n 2 column decoders is counted as two decoding iterations.

We give now a general definition of a stopping set. A detailed study is found in Section 4.3. The notion of a stopping set is useful for iterative decoding in presence of erasures [START_REF] Di | Finite-length analysis of low-density parity-check codes on the binary erasure channel[END_REF]. Definition 4.1. Let C[n, k] q be a linear code. Assume that the symbols of a codeword are transmitted on an erasure channel. The decoder D is using some deterministic decoding method. Consider a set S of s fixed positions i 1 , i 2 , . . . , i s where 1 ≤ i j ≤ n. The set S is said to be a Stopping Set if D fails in retrieving the transmitted codeword when all symbols on the s positions given by S are erased. This chapter focuses on stopping sets of a product code under iterative algebraic row-column decoding, i.e. referred to as type II stopping sets. The number of stopping 4.2. GRAPH REPRESENTATIONS FOR DIVERSITY sets of size w is τ w . The rectangular support R(S) of a stopping set S can be seen as the smallest rectangle containing S. After excluding rows and columns not involved in S, the rectangular support has size 1 × 2 where w = |S| ≤ 1 2 . The word error performance of C P shall be estimated on erasure channels, P M L ew is the word error probability under Maximum Likelihood decoding and P G ew is the word error probability under iterative row-column decoding. Three erasure channels are considered: 1-The Symbol Erasure Channel, SEC(q, ), where code symbols are independently erased with a probability , 2-The Color Erasure Channel, CEC(q, ), where all symbols associated to the same color are block-erased with a probability . On the CEC(q, ), block-erasure events are independent from one color to another. 3-The unequal probability Symbol Erasure Channel, SEC(q, { i } M i=1 ), where symbol erasures are independent but their erasure probability varies from one color to another.

Graph representations for diversity

Efficient graph representation of codes was established by Tanner for different types of coding structures [START_REF] Tanner | A recursive approach to low complexity codes[END_REF]. Bounds on the code parameters and iterative decoding algorithms were also proposed for codes on graphs [START_REF] Tanner | A recursive approach to low complexity codes[END_REF]. In this chapter, we study the edge coloring of a product code graph, where edges represent code symbols. As shown below, the original graph for a product code is too complex, i.e. it leads to a large ensemble of colorings. Hence, we introduce a compact graph where symbols are grouped together with the same color in order to reduce the size of the coloring ensemble. The compact graph also has another asset: grouping parity symbols together renders check nodes similar to parity-check nodes found in standard low-density parity-check codes [START_REF] Gallager | Low-density parity-check codes[END_REF] [86].

Non-compact graph

Consider a product code C 1 [n 1 , k 1 ] q ⊗ C 2 [n 2 , k 2 ]
q where C 1 is the column code and C 2 is the row code. The product code is defined over the finite field F q and has length N and dimension K given by [START_REF] Macwilliams | The theory of error-correcting codes[END_REF]

N = n 1 n 2 , K = k 1 k 2 . (4.1)
Each code symbol simultaneously belongs to one row and to one column. Product codes studied in this thesis report are regular, in the sense that all columns are codewords of C 1 and all rows are codewords of

C 2 . The graph of C 1 [n 1 , k 1 ] q ⊗ C 2 [n 2 , k 2 ]
q is built as follows. We use the same terminology as in [START_REF] Richardson | Modern coding theory[END_REF]:

• n 1 check nodes are drawn on the left. A left check node represents the coding constraint which states that a row belongs to C 2 . The n 1 left check nodes are referred to as C 2 check nodes, or row check nodes, or equivalently left vertices.

• n 2 check nodes are drawn on the right. A right check node represents the coding constraint which states that a column belongs to C 1 . The n 2 right check nodes are referred to as C 1 check nodes, or column check nodes, or equivalently right vertices.

• An edge is drawn between a left vertex and right vertex. It represents a code symbol located on the row of the left vertex and on the column of the right vertex. The code symbol belongs to F q . In summary, the product code graph (V 1 , V 2 , E) is a complete biregular bipartite graph built from n 1 left vertices, n 2 right vertices, and N = |E| = n 1 n 2 edges representing code symbols. The left degree is n 2 and the right degree is n 1 . Irregular product codes can be found in [2]. Our chapter is restricted to regular product codes. Figure 4.1 shows the bipartite graph of a square regular symmetric product code [4,2] ⊗ [4,2]. The graph structure reveals n 1 , n 2 , and N = n 1 n 2 . The dimensions k 1 and k 2 of the component codes have no effect on the number of vertices and edges in the product code graph. Indeed, a [4,3] ⊗ [4,3] code can also be defined by the graph in Figure 4.1. The role of the dimensions k 1 and k 2 is played within the check constraints inside left and right vertices. Similarly, the size of the finite field defining the code cannot be revealed from the graph structure, i.e. the product code graph does not depend on q.

n 2 check nodes n 1 check nodes C 1 C 2 C 2 C 2 C 2 C 1 C 1 C 1 E V 2 V 1 Figure 4.1: Non-compact bipartite graph G = (V 1 , V 2 , E) of a product code [4, 2] ⊗2 , i.e. n 1 = n 2 = 4, k 1 = k 2 = 2, |V 1 | = |V 2 | =

Definition 4.2. The non-compact graph

G = (V 1 , V 2 , E) for a [n 1 , k 1 ] ⊗ [n 2 , k 2 ] product code is a complete bipartite graph with n 1 = |V 2 | left vertices and n 2 = |V 1 | right vertices.

Compact graph

In [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] where the diversity of binary product codes was considered, vertices of the noncompact graph were grouped together into super-vertices (or supernodes) because the different channel states lead to multiple classes of check nodes as in root-LDPC codes [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. To render a graph-encodable code, supernodes in [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] were made by putting nk nodes together for a [n, k] component code. Also, nk is not necessarily a divisor of n.

Definition 4.3. The compact graph G c = (V c 1 , V c 2 , E c ) for a [n 1 , k 1 ] ⊗ [n 2 , k 2 ] product code is a complete bipartite graph with n 1 n 1 -k 1 = |V c 2 | left vertices and n 2 n 2 -k 2 = |V c 1 | right vertices.
From the above definition, the number of edges in the compact graph G c is found to be

N c = |E c | = n 1 n 1 -k 1 × n 2 n 2 -k 2 . (4.2)
Assuming that (n 1k 1 ) divides n 1 and and (n

2 -k 2 ) divides n 2 , a left check node in G c is equivalent to n 2 -k 2 row constraints and a right check node in G c is equivalent to n 1 -k 1 column constraints. A edge in the compact graph carries (n 1 -k 1 ) × (n 2 -k 2 )
code symbols. To avoid confusion between edges of G and G c , we may refer to those in G c as super-edges or equivalently as super-symbols. If n i is not multiple of n ik i , then the last row or column supernode will contain less than n ik i check nodes. Figure 4.2 depicts the compact graph of the [4, 2] ⊗2 product code. All [n, n/2] ⊗2 product codes have a compact graph identical to that of [4,2] ⊗2 , for all n ≥ 2, n even.

2 supernodes 2 supernodes

V c 2 V c 1 E c

Diversity and codes on graphs

From a coding point of view, diversity is the art of creating many replicas of the same information. From a channel point of view, diversity is the number of degrees of freedom available while transmitting information. In distributive storage, independent failure of individual machines is modeled by independent erasures of code symbols, while the outage of a cluster of machines is modeled as block erasures of code symbols. Assuming a storage domain with a large set of machines partitioned into M clusters, diversity of distributed coding is defined as follows: Definition 4.4. Consider a product code C P defined over F q . Assume that symbols are given M different colors. Erasing one color is equivalent to erasing all symbols having this color. The code is said to achieve a diversity L if it is capable of filling all erasures after erasing L -1 colors. The code is full-diversity when L = M .

The integer L may also be called the diversity order. For Gaussian channels with fading, the diversity order appears as the slope of the error probability, i.e. L = lim γ→∞ -log Pe log γ [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF]. In the above definition, a cluster has been replaced by a color. We will use this terminology throughout the chapter. Notice that coloring symbols is equivalent to edge coloring of the product code graph. The number of edges is N in the non-compact graph and N c in the compact graph. In the sequel, all colorings are supposed to be perfectly balanced, i.e. M divides both N and N c and the number of edges having the same color is N/M and N c /M for the non-compact graph and the compact graph respectively. More formally, our edge coloring is defined as follows: an edge coloring

φ of G = (V 1 , V 2 , E) is a mapping associating one color to every edge in E, φ : E → {1, 2, . . . , M }, (4.3)
such that |φ -1 (i)| = N/M for i = 1 . . . M , where φ -1 (i) is the inverse image of i.

Similarly, φ :

E c → {1, 2, . . . , M } for G c = (V c 1 , V c 2 , E c ) and |φ -1 (i)| = N c /M .
The set of such mappings for G and G c is denoted Φ(E) and Φ(E c ) respectively. Consider a coloring φ in Φ(E c ). It can be embedded into Φ(E) by copying the color of a super-edge to its associated (n 1k 1 ) × (n 2k 2 ) edges in E. Thus, let Φ(E c → E) be the subset of colorings in Φ(E) obtained by embedding all colorings of Φ(E c ) into Φ(E). We have

Φ(E c → E) ⊂ Φ(E) and |Φ(E c → E)| = |Φ(E c )|. (4.4)
The size of the edge coloring ensembles Φ(E) and Φ(E c ) is obviously not the same when N c < N , which occurs for both row and column component codes not equal to single parity-check codes. Indeed, when a palette of size M is used to color edges, the total number of colorings of E is

|Φ(E)| = N ! ((N/M )!) M . (4.5)
This number for the compact graph is

|Φ(E c )| = N c ! ((N c /M )!) M . (4.6) Fanny Jardel
As an example, for the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 code and M = 4, there are 2 • 10 83 edge colorings for the non-compact graph and 2 • 10 19 edge colorings for the compact graph. It is clear that the construction of product codes for diversity is much easier when based on

G c = (V c 1 , V c 2 , E c
) because its edge coloring ensemble is smaller. Furthermore, as described below, vertices in G c act in a way similar to standard LDPC check nodes making the design very simple. Furthermore, we will see in Section 4.3 that edge colorings of the compact graph render larger stopping sets than colorings of the non-compact graph.

The diversity order L attained by a code can never exceed M , the latter being the diversity from a channel point of view. A tighter upper bound of L showing the rate-diversity tradeoff is the block-fading Singleton bound. The Singleton bound for the maximal achievable diversity order is valid for all types of non-ergodic channels, including block-erasure and block-fading channels. The block-fading Singleton bound states that [START_REF] Knopp | On coding for block fading channels[END_REF] [66]

L ≤ 1 + M (1 -R) , (4.7)
where R = K/N is the coding rate of the product code. Codes satisfying the equality in the above Singleton bound are referred to as diversity-wise MDS or block-fading MDS codes. From (4.7), we deduce that R ≤ 1/M if L = M (full-diversity coding). For example, we get R ≤ 1/2 with an edge coloring using L = M = 2 colors and R ≤ 1/4 for L = M = 4 colors. The coding rate can exceed 1/M when L < M in applications where full diversity is not mandatory. An example suited to distributed storage is an edge coloring with a palette of M = 4 colors, a diversity L = 2, and R ≤ 3/4.

Rootcheck nodes and root symbols

In a way similar to root-LDPC codes and product codes built for block-fading channels [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][17], we introduce now the notion of root symbols and rootcheck nodes in product codes to be designed for distributive storage. A linear [n, k] q code with parity-check matrix H can fill nk erasures at positions where the columns of H are independent. These nk symbols correspond to nk separate edges in the non-compact graph and to a unique edge (supersymbol) in the compact graph. Therefore, for simplicity, we start by defining a root supersymbol in the compact graph where supernodes are equivalent to standard LDPC parity-check nodes.

Definition 4.5. Let G c be a compact graph of a product code, let φ be a given edge coloring, and let e ∈ E c be a supersymbol. e is a root supersymbol with respect to φ(e) if it admits a neighbor vertex υ, υ

∈ V c 1 or υ ∈ V c 2 , such that all adjacent edges f in υ satisfy φ(f ) = φ(e). In Definition 4.5, if υ ∈ V c
1 then e is a root supersymbol thanks to the product code column to which it belongs, i.e. e can be solved in one iteration by its column component code when the color φ(e) is erased. Likewise, e is protected against erasures by its row component code if υ ∈ V c 2 in the previous definition. Finally, a root supersymbol may be CHAPTER 4. EDGE COLORING IN PRODUCT CODE GRAPHS doubly protected by both its row and its column if both right and left neighbors υ 1 ∈ V c 1 and υ 2 ∈ V c 2 satisfy the condition of Definition 4.5. Definition 4.6. Let G be a non-compact graph of a product code, let φ be a given edge coloring, and let e ∈ E be a symbol. e is a root symbol with respect to φ(e) if it admits a neighbor vertex υ such that:

φ(f ) = φ(e) for at most n 2 -k 2 -1 adjacent edges f if υ ∈ V 1 , or φ(f ) = φ(e) for at most n 1 -k 1 -1 adjacent edges f if υ ∈ V 2 .
As mentioned in the paragraph before Definition 4.5, Definition 4.6 implies that the n ik i root symbols with the same color should belong to positions of independent columns in the parity-check matrix of the component code C i . This constraint automatically disappears for MDS component codes since any set of n ik i columns of H i has full rank.

The rootcheck order in product codes

Not all symbols of a product code are root symbols. Under iterative row-column decoding on channels with block erasures, some symbols may be solved in two decoding iterations or more. Some set of symbols may never be solved and are referred to as stopping sets [START_REF] Di | Finite-length analysis of low-density parity-check codes on the binary erasure channel[END_REF][93] [START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF]. Our study is restricted to erasing the symbols of one color out of M . Hence, the rest of this chapter is restricted to double diversity, L = 2. Absence of diversity is equivalent to L = 1. We establish now the root order ρ of a symbol. For root symbols satisfying definitions 4.5 and 4.6, the root order is ρ = 1. For symbols that can be solved after two decoding iterations, we set ρ = 2. The formal definition of the root order ρ can be written in the following recursive manner (for ρ ≥ 2). Definition 4.7. Let G c be a compact graph of a product code, let φ ∈ Φ(E c ) be an edge coloring, and let e ∈ E c be a super-symbol. e has root order ρ(e) = min(ρ 1 , ρ 2 ) where:

1-Let υ 1 ∈ V c
1 be the column neighbor vertex of e. ∀f adjacent to e in υ 1 and φ(f

) = φ(e), we have ρ(f ) < ρ 1 . 2-Let υ 2 ∈ V c
2 be the row neighbor vertex of e. ∀f adjacent to e in υ 2 and φ(f ) = φ(e), we have ρ(f ) < ρ 2 .

The previous definition implies that ρ(e) = 1 if there exists no adjacent edge with the same color. Also, for an edge e that does not admit a finite ρ(e), we set ρ(e) = ∞. When color φ(e) is erased, symbols belonging to the so-called stopping sets can never be solved (even after an infinite number of decoding iterations) and hence their root order is infinite. In the next section we review stopping sets as known in the literature and we study new stopping sets for product codes based on MDS components under iterative algebraic decoding. Definition 4.7 can be rephrased to make it suitable for the non-compact graph G. We pursue this section to establish an upper bound of the largest finite root order valid for all edge colorings φ.

Theorem 4.1. Let C P be a product code [n 1 , k 1 ] ⊗ [n 2 , k 2 ] with a compact graph G c = (V c 1 , V c 2 , E c ). ∀φ ∈ Φ(E c ) and ∀e ∈ E c we have: Case 1: f ∈ E c such that φ(f ) = φ(e) and ρ(f ) = ∞, then 1 ≤ ρ(e) ≤ N c 2M = ρ u .
Define the minimum number of good edges,

η min (φ) = min i=1...M |{f ∈ E c : φ(f ) = i, ρ(f ) = 1}|.
Then, in Case 1,

2ρ(e) + η min (φ) -3 ≤ N c M . (4.8) Case 2: ∃f ∈ E c such that φ(f ) = φ(e) and ρ(f ) = ∞, then ρ(e) = ∞ or 1 ≤ ρ(e) ≤ N c M -4,
where

N c = |E c | is given by (4.2).
Proof. Case 1 corresponds to a product code with diversity L = 2, for a given color φ(e), which is capable of solving all symbols when that color is erased. The graph has no infinite root order symbols. ρ is recursively built by starting from ρ = 1 following two paths in the graph until reaching a common edge e that has two neighboring vertices with edges of order ρ(e) -1. There are up to N c /M edges, including e, having color equal to φ(e). The largest ρ(e) is attained in the middle of the longest path of length N c /M , hence 2ρ(e)-1 ≤ N c /M which is translated into the stated result for Case 1. An illustrated instance is given for the reader in Example 4.1. Back to the path of length 2ρ(e) -1 ending with edges of order 1 on both sides, if the population of order 1 edges is η 1 for the color φ(e), then the path can only use a maximum of N c /M -(η 1 -2) edges. We get the inequality 2ρ(e) -1 ≤ N c /M -(η 1 -2). By plugging η min (φ) instead of η 1 , this inequality becomes independent from the particular color. The stated inequality in (4.8) is obtained after grouping ρ(e) and η min (φ) on the left side. Case 2 corresponds to bad edge coloring where the product code does not have double diversity, i.e. stopping sets do exist for the color φ(e). The order of e may be infinite if e is involved in a stopping set with another edge f having the same color. Otherwise, consider the smallest stopping set of size four symbols (the smallest cycle in G c with edges of color φ(e)), then there remains N c /M -4 edges of color φ(e). A path of length N c /M -4 starting with ρ = 1 and ending at ρ = ∞ may exist. The largest finite order in this path before reaching the stopping set is ρ = N c /M -4.

Corollary 4.1. Let C P be a product code [n 1 , k 1 ] ⊗ [n 2 , k 2 ] with a compact graph G c . Let φ ∈ Φ(E c
) be an edge coloring. We define

ρ max (φ) = max e∈E c ρ(e). (4.9)
Fanny Jardel C P attains double diversity under iterative row-column decoding if and only if ρ max (φ) < ∞. In this case, we say that φ is a double-diversity coloring and ∀e ∈ E c , e can be solved after at most ρ max decoding iterations where ρ max (φ) ≤ ρ u .

For colorings in Φ(E), we extend the same definition as in Corollary 4.1 and we say that φ ∈ Φ(E) is double-diversity if all edges have a finite rootcheck order. The parameter ρ max is important in practical applications to bound from above the amount of conveyed information within a network (whether it is a local-area or a wide-area network). In fact, in coding for distributed storage, the locality of a product code per decoding iteration is max(n 1 , n 2 ) in G under algebraic decoding of its row and column components. Here, the locality is the number of symbols to be accessed in order to repair an erased symbol, refer to Definition 2.1. Locality is max(k 1 , k 2 ) for MDS components under ML decoding of the product code components. Finally, for a product code, the information transfer per symbol is bounded from above by

ρ max (φ) × max(n 1 , n 2 ). (4.10)
The exact transfer cost to fill all erasures with iterative decoding can be determined by multiplying each order ρ with the corresponding edge population size. This exact cost may vary in a wide range from one coloring to another. The DECA algorithm presented in Section 4.4 dramatically reduces ρ max by enlarging the edge population with root order 1. The interdependence between ρ and the population of order 1 was revealed in inequality (4.8). This inequality is useful in intermediate cases where ρ max = 1 is not attained, i.e. outside the case where all edges have order 1. The influence of the component decoding method on the performance of a product code via its stopping sets is discussed in Section 4.3.

GRAPH REPRESENTATIONS FOR DIVERSITY

Example 4.1. Consider a [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 product code and a coloring φ with M = 4 colors. The compact graph has |E c | = 6×6 edges. Instead of drawing G c , we draw the 6×6 compact matrix representation of the product code in Fig. 4.3. Supersymbols corresponding to a color φ(e) = 1 are shaded. Fig. 4.3 also shows a path in G c such that a maximal order ρ max = ρ u = 5 is attained for φ(e) = 1. If φ has double diversity then ρ max will not exceed ρ u = 5 for all colors φ(e) ∈ {1, 2, . . . , M }. Note that the parameters of this product code are such that N c /M -4 is also equal to 5 for a φ with a diversity defect.

Example 4.2. Consider a [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] product code and a coloring φ with M = 4 colors. The compact graph has |E c | = 7 × 8 edges. The compact matrix and a path attaining ρ = 10 are illustrated in Fig. 4.4. φ is chosen such that the first color has a cycle involving four supersymbols. Starting from the root supersymbol (ρ = 1) it is possible to create a path in the graph such that ρ = 10 is reached. Note that a double-diversity φ cannot exceed a root order ρ u = 7.

ρ = ∞ ρ = 8 ρ = 7 ρ = ∞ ρ = ∞ ρ = 10 ρ = 9 ρ = 6 ρ = 4 ρ = 5 ρ = 1 ∞ ∞ ∞ ∞ ρ = 2 ρ = ∞ Figure 4
.4: Compact matrix (left) and path in compact graph (right) for a product code [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] showing a maximal finite root order of 10.

The ideal situation is to construct a product code and its edge coloring in order to obtain ρ(e) = 1 for all edges. We investigate now the conditions on the product code rate and its components rates in this ideal situation. The analysis based on ρ u reveals the existence of a trade-off between minimizing the number of decoding iterations and the valid range of both coding rates for the product code components.

Firstly, let us look at the upper bound ρ u from Theorem 4.1. Without loss of generality, assume that n ik i divides n i . Then, we have

R i = 1 - n i -k i n i = 1 - 1 |V c i | . ( 4.11)

CHAPTER 4. EDGE COLORING IN PRODUCT CODE GRAPHS

The total coding rate becomes

R = R 1 R 2 = 1 - 1 |V c 1 | • 1 - 1 |V c 2 | . (4.12)
Using

N c = |V c 1 | • |V c 2 |, we get R 1 R 2 = R 1 + R 2 -1 + 1 N c . (4.13)
Finally, from (4.13) and Theorem 4.1, the upper bound of the root order for doublediversity edge coloring of the compact graph can be expressed as

ρ u = N c 2M = 1 2M × (1 + R 1 R 2 -R 1 -R 2 ) . (4.14)
Fix the product code rate R, force the upper bound to ρ u = 1, and take M = 4 colors. Then the denominator in (4.14) should be less than 1 or equivalently -8R 2 1 +(7+8R)R 1 -8R > 0. This second-degree polynomial in R 1 is non-negative if and only if

R < 9 8 - 1 √ 2 ≈ 0.4178, (4.15)
and

-64R 2 -144R + 49 < 16R 1 -8R -7 < + 64R 2 -144R + 49. (4.16)
As a result, with a palette of four colors, (4.15) tells us that ρ(e) = 1 for all edges is feasible for a product code with a rate less than 0.4178. It is obvious that (4.15) is a very constraining condition because ρ u is an upper bound of ρ max (φ) for all φ ∈ Φ(E c ).

It is worth noting that R 1 and R 2 vary in a smaller range when R approaches 9 8 -1 √ 2 , which corresponds to a product code with balanced components.

In Section 4.4.1, we will show unbalanced product codes where a sufficient condition on the component rates imposes order 1 to all edges. The sufficient condition, not based on ρ u , is given by Lemma 4.5. But before introducing an efficient edge coloring algorithm in Section 4.4, we analyze stopping sets in product codes with MDS components in the next section, we describe the relationship between stopping sets and the product code graph representation, and finally we enumerate obvious and non-obvious stopping sets. Stopping sets enumeration is useful to determine the performance of a product code with and without edge coloring.

Stopping sets for MDS components

The purpose of this section is to prepare the way for determining the performance of iterative decoding of non-binary product codes. The analysis of stopping sets in a product code will yield a tight upper bound of its iterative decoding performance over a channel with independent erasures. The same analysis will be useful to accurately estimate the performance under edge coloring in presence of block and multiple erasure channels.

Decoding erasures

Definition 4.8. An erasure pattern is said to be ML-correctable if the ML decoder is capable of solving all its erased symbols.

For an erasure pattern which is not correctable under ML or iterative decoding, the decoding process may fill none or some of the erasures and then stay stuck on the remaining ones. Before describing the stopping sets of a product code, let us recall some fundamental results regarding the decoding of its row and column component codes. The ML erasure-filling capability of a linear code satisfies the following property. Proposition 4.1. Let C[n, k, d] q be a linear code with q ≥ 2. Assume that C is not MDS and the n symbols of a codeword are transmitted on an erasure channel. Then, there exists an erasure pattern of weight greater than d -1 that is ML-correctable.

Proof. Let H be an (n-k)×n parity-check matrix of C with rank n-k > d-1. For any integer w in the range [d, nk], there exists a set of w linearly independent columns in H. Choose an erasure pattern of weight w with erasures located at the positions of the w independent columns. Then, the ML decoder is capable of solving all these erasures by simple Gaussian reduction of H.

For MDS codes, based on a proof similar to the proof of Proposition 4.1, we state a well-known result in the following corollary.

Corollary 4.2. Let C[n, k, d] q be an MDS code. All erasure patterns of weight greater than d -1 are not ML-correctable.

We conclude from the previous corollary that an algebraic decoder for an MDS code attains the word-error performance of its ML decoder. What about symbol-error performance? Indeed, for general binary and non-binary codes, the ML decoder may outperform an algebraic decoder since it is capable of filling some of the erasures when dealing with a pattern which is not ML-correctable. In the MDS case, the answer comes from the absence of spectral holes for any MDS code beyond its minimum distance. This basic result is proven via standard tools from algebraic coding theory [START_REF] Macwilliams | The theory of error-correcting codes[END_REF][10]: Proposition 4.2. Let C[n, k, d] q be a non-binary MDS code (q > n > 2). For any w satisfying d ≤ w ≤ n and any support X = {i 1 , i 2 , . . . , i w }, where 1 ≤ i j ≤ n, there exists a codeword in C of weight w having X as its own support.

Proof. By assumption we have w > r = nk. Let H be a parity-check matrix of C with rank r = nk. Recall that the MDS property makes full-rank any set of nk columns of H [START_REF] Macwilliams | The theory of error-correcting codes[END_REF]. w is written as w = r + , where = 1 . . . k. The w positions of X are anywhere inside the range [1, n], but for simplicity let us denote h 1 . . . h r the r columns of H in the first r positions. The last columns are denoted ζ 1 . . . ζ . For any j = 1 . . . , we have

ζ j = r i=1 a i,j h i ,

Fanny Jardel

where a i,j ∈ F q \ {0} otherwise it contradicts d = nk + 1. Now, select α 1 . . . α from F q \ {0} such that: α 1 is arbitrary, α 2 is chosen outside the set {-α 1 a i,1 /a i,2 } r i=1 , then α 3 is chosen outside the set {(-α 1 a i,1α 2 a i,2 )/a i,3 } r i=1 , and so on, up to α which is chosen outside the set {-

-1 u=1 α u a i,u /a i, } r i=1 .
Here, the notation a/b in F q \ {0} is equivalent to the standard algebraic notation ab -1 . The equality

j=1 α j ζ j = r i=1 j=1
α j a i,j h i produces a codeword of Hamming weight w. Hence, there exists a codeword of weight w with non-zero symbols in all positions given by X . Now, at the symbol level for an MDS code and an erasure pattern which is not MLcorrectable (w > d -1), we conclude from Proposition 4.2 that the ML decoder cannot solve any of the w erasures because they are covered by a codeword. Consequently, an algebraic decoder for an MDS code also attains the symbol-error performance of the ML decoder. This behavior will have a direct consequence on the iterative decoding of a product code with MDS components: stopping sets are identical when dealing with algebraic and ML-per-component decoders.

A general description of a stopping set was given by Definition 4.1. The exact definition of a stopping set depends on the iterative decoding type. For product codes, four decoding methods are known:

• Type I: ML decoder. This is a non-iterative decoder. It is based on a Gaussian reduction of the parity-check matrix of the product code.

• Type II: Iterative algebraic decoder. At odd decoding iterations, component codes C 1 on each column are decoded via an algebraic decoder (bounded-distance) that fills up to d -1 erasures. Similarly, at even decoding iterations, component codes C 2 on each row are decoded via an algebraic decoder.

• Type III: Iterative ML-per-component decoder. This decoder was considered by Rosnes in [START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF] for binary product codes. At odd decoding iterations, column codes C 1 are decoded via an optimal decoder (ML for C 1 ). At even decoding iterations, row codes C 2 are decoded via a similar optimal decoder (ML for C 2 ).

• Type IV: Iterative belief-propagation decoder based on the Tanner graph of C P , as studied by Schwartz et al. for general linear block codes [START_REF] Schwartz | On the stopping distance and the stopping redundancy of codes[END_REF] and by Di et al. for low-density parity-check codes [START_REF] Di | Finite-length analysis of low-density parity-check codes on the binary erasure channel[END_REF].

The three iterative decoders listed above give rise to three different kinds of stopping sets. As previously indicated, from Corollary 4.2 and Propositions 4.2, we concluded that type-II and type-III stopping sets are identical if component codes are MDS.

Stopping set definition

Let C be a q-ary linear code of length n, i.e. C is a sub-space of dimension k of F n q . The support of C, denoted by X (C), is the set of distinct positions {i 1 , i 2 , . . . , i } = {i j } j=1 , 1 ≤ i j ≤ n, such that, for all j, there exists a codeword c = (c 1 . . . c n ) ∈ C with c i j = 0. This notion of support X is applied to rows and columns in a product code. Now, we define a rectangular support which is useful to represent a stopping set in a bi-dimensional product code. Let S ⊆ {1, . . . , n 1 } × {1, . . . , n 2 } be a set of symbol positions in the product code. The set of row positions associated to S is R 1 (S) = {i 1 , . . . , i 1 } where |R 1 (S)| = 1 and for all i ∈ R 1 (S) there exists (i, ) ∈ S. The set of column positions associated to S is R 2 (S) = {j 1 , . . . , j 2 } where |R 2 (S)| = 2 and for all j ∈ R 2 (S) there exists ( , j) ∈ S. The rectangular support of S is

R(S) = R 1 (S) × R 2 (S), (4.17)
i.e. the smallest 1 × 2 rectangle including all columns and all rows of S.

Definition 4.9. Consider a product code

C P = C 1 ⊗ C 2 . Let S ⊆ {1, . . . , n 1 } × {1, . . . , n 2 } with |R 1 (S)| = 1 and |R 2 (S)| = 2 .
Consider the 1 rows of S given by S (i) r = {j : (i, j) ∈ S} and the 2 columns of S given by S (j) c = {i : (i, j) ∈ S}. The set S is a stopping set of type III for C P if there exist linear subcodes

C (j) c ⊆ C 1 and C (i) r ⊆ C 2 such that X (C (j) c ) = S (j) c and X (C (i) r ) = S (i)
r for all i ∈ R 1 (S) and for all j ∈ R 2 (S). The cardinality |S| is called the size of the stopping set and will also be referred to in the sequel as the weight of S. Recall that type II and type III stopping sets are identical when both C 1 and C 2 are MDS. Stopping sets of type III were studied for binary product codes by Rosnes [START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF]. His analysis is based on the generalized Hamming distance [START_REF] Wei | Generalized Hamming weights for linear codes[END_REF] [START_REF] Helleseth | Generalized Hamming weights of linear codes[END_REF] because sub-codes involved in Definition 4.9 may have a dimension greater than 1. In the non-binary MDS case, according to Proposition 4.2, all these sub-codes have dimension 1, i.e. they are generated by a single non-zero codeword. Consequently, the generalized Hamming distance is not relevant when using MDS components. In such a case, the analysis of type II stopping sets is mainly combinatorial and does not require algebraic tools.

Stopping sets for decoder types II-IV can be characterized by four main properties summarized as follows.

• Obvious or not obvious sets, also known as rank-1 sets. A stopping set S is obvious if S = R(S).

• Primitive or non-primitive stopping sets. A stopping set is primitive if it cannot be partitioned into two or more smaller stopping sets. Notice that all stopping sets, whether they are primitive or not, are involved in the code performance.

• Codeword or non-codeword. A stopping set S is said to be a codeword stopping set if there exists a codeword c in C P such that X (c) = S.

• ML-correctable or non-ML-correctable. A stopping set S cannot be corrected via ML decoding if it includes the support of a non-zero codeword.

In the remaining material of this chapter, we restrict our study to type II stopping sets.

Example 4.3. Consider a [n 1 , n 1 -2, 3] q ⊗ [n 2 , n 2 -2,
3] q product code. A stopping set S of size w = 9 is shown as a weight-9 matrix of size n 1 × n 2 , where 1 corresponds to an erased position:

S =           0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0           . ( 4.18)
We took n 1 = n 2 = 7 for illustration. The rectangular support is shown in a compact representation as a matrix of size

1 × 2 = 3 × 3, R(S) =   1 1 1 1 1 1 1 1 1   . (4.19)
The stopping set in (4.18) is obvious, it has the same size as its rectangular support. It corresponds to a matrix of rank 1. Each row and each column of S has weight 3. Iterative row-column decoding based on component algebraic decoders fails in decoding rows and columns since the number of erasures exceeds the erasure-filling capacity of the MDS components. This stopping set is not ML-correctable because it is a product-code codeword. In the sequel, all stopping sets (type II) shall be represented in this compact manner by a smaller rectangle of size 1 × 2 .

Example 4.4. For the same [n 1 , n 1 -2, 3] q ⊗ [n 2 , n 2 -2, 3] q product code used in the previous example, the following stopping sets of size 12 are not obvious.

S 1 =           0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0           , (4.20)
Fanny Jardel 90

STOPPING SETS FOR MDS COMPONENTS

S 2 =          
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0

          . (4.21)
In compact form, their rectangular support is

R(S 1 ) = R(S 2 ) =     1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1     . (4.22)
These stopping sets have size 12 and a 4 × 4 rectangular support. For w = 12, it is also possible to build an obvious stopping set in a 3 × 4 rectangle or a 4 × 3 rectangle full of 1. S 1 is ML-correctable since it does not cover a product code codeword. S 2 covers a codeword hence it is not ML-correctable.

Stopping sets and subgraphs of product codes

A stopping set as defined by Definition (4.9) corresponds to erased edges in the noncompact graph G introduced in Section 4.2.1. Indeed, consider the size-9 stopping set given by (4.18) or (4.19). The nine symbol positions involve nine edges in G, three row check nodes, and three column check nodes. Each of these six check nodes has three erased symbols making the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF]3] decoder fail. This stopping set is equivalent to a subgraph of 9 edges in G as shown in Figure 4.5. The subgraph in Figure 4.5 has three length-4 cycles and two length-6 cycles. The small cycles of length-4 are associated to an erasure pattern with a 2 × 2 rectangular support which is not a stopping set (d 1 = d 2 = 3). Similarly, length-6 cycles are not stopping sets and are associated to erasure patterns with a 2 × 3 rectangular support. We will see in the next section that the minimum stopping set size is d 1 d 2 = 9, i.e. it is equal to the minimum Hamming distance of the product code.

A subgraph of G c can be embedded into G by splitting each super-edge into (n 1k 1 ) × (n 2 -k1) edges. The converse is not always true. The subgraph with nine edges in Figure 4.5 cannot be compressed into a subgraph of G c . For the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF]3] ⊗2 product code, a supersymbol in G c contains four edges. Hence, a necessary condition for a stopping set in G to become a valid stopping set in G c is to erase edges in groups of 4. Knowing that type II and type III stopping sets are identical when row and column codes C 1 and C 2 are MDS, Definition (4.9) leads to the following corollaries. E) are sent over an erasure channel. A stopping set for the iterative decoder is a subgraph of G such that all column vertices in V 1 have a degree greater than or equal to d 1 and all row vertices in V 2 have a degree greater than or equal to d 2 .

= (V 1 , V 2 ,
C 1 C 2 C 2 C 2 C 2 C 1 C 1 C 1
G c = (V c 1 , V c 2 , E c
) are sent over an erasure channel. A stopping set for the iterative decoder is a subgraph of G c such that all column vertices in V c 1 have a degree greater than or equal to 2 and all row vertices in V 2 have a degree greater than or equal to 2.

The above corollaries suppose a symbol (or a supersymbol) channel with independent erasures. When G is endowed with an edge coloring φ, we get the same constraint on the validity of a subgraph embedding from G c into G. We know from Section 4.2.1 that Φ(E c → E) is a subset of Φ(E), i.e. some edge colorings of G are not edge colorings of G c . Consequently, on a block-erasure channel, if all super-edges of the same color are erased, stopping sets in G c are a subset of those in G. The non-compact graph G has a larger ensemble of stopping sets, with or without edge coloring. As an example, for the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF]3] ⊗2 product code, the smallest stopping set in G c has size 2 × 2 when four super-edges are erased which yields a stopping set of size 16 in G. In G c , each color is used N c /M = 3 times. For a channel erasing all symbols of the same color, the compact graph has no stopping sets (the 2 × 2 rectangular support cannot be filled by a single color). A compact matrix representation of G c attaining double diversity with all symbols of order 1 is given by the trivial matrix

STOPPING SETS FOR MDS COMPONENTS

  R G B B R G G B R   , (4.23)
where the color φ(e) = 1 is replaced by the letter 'R', φ(e) = 2 is replaced by the letter 'G', and φ(e) = 3 is replaced by the letter 'B'. The non-compact graph has 9 × 9 edges, each color is used 27 times. Double diversity is lost in G if one of the 4 × 4, 4 × 5, or 5 × 5 obvious stopping sets is covered by a unique color. Clearly, G c makes the design much easier. This double-diversity product code has a relatively low coding rate. More challenging product code designs are given in Section 4.4 with higher rates up to the one imposed by the block-fading/block-erasure Singleton bound.

Enumeration of stopping sets

For a fixed non-zero integer w, the number of stopping sets of size w, denoted as τ w , falls in two different cases. Firstly, τ w = 0 if w is small with respect to the minimum Hamming distance of the product code. Also, τ w = 0 for special erasure patterns obtained by adding a small neighborhood to a smaller obvious set. Secondly, for both obvious and non-obvious stopping sets, τ w is non-zero and the weight w may correspond to many rectangular supports of different height and width. The code performance over erasure channels is dominated by not-so-large stopping sets. Non-empty stopping sets of the second case satisfy the general property stated in the following lemma.

Lemma 4.1. Given a weight w ≤ (d 1 + 1)(d 2 + 1) and assuming τ w > 0, then ∃S 0 such that ∀S with |S| = w, we have R(S) ≤ R(S 0 ) = ( 0 1 , 0 2 ), where

0 1 ≤ d 1 + 1 + d 1 + 1 d 2 , (4.24)
0 2 ≤ d 2 + 1 + d 2 + 1 d 1 . (4.25)
Proof. Let w be equal to (d 1 + 1)(d 2 + 1). In order to establish an upper bound of the height 1 , we build the highest possible rectangular support for this weight w. Assume the rectangle is 0 1 × 2 , each of its rows should have at least d 2 erasures to make the type II decoder fail. Then d 2 0 1 ≤ (d 1 + 1)(d 2 + 1), which becomes the upper bound given by (4.24). Now, if w is less than (d 1 + 1)(d 2 + 1), the rectangular support of the stopping set can only shrink in size. The upper bound of the width in (4.25) is proven in a similar way.

The above lemma states the existence of a maximal rectangular support for a given stopping set size. The example given below cites stopping sets with a unique-size rectangular support and stopping sets with multiple-size rectangular supports. Before stating and proving Theorem 4.2, we announce two results in Lemma 4.3 and Lemma 4.4 on bipartite graphs enumeration. We saw in the previous section that stopping sets are sub-graphs of G and G c , see Corollary 4.3 and Corollary 4.4. In other words, the enumeration of stopping sets represented as matrices of a given distribution of row weight and column weight is equivalent to enumerating bipartite graphs where left vertices stand for rows and right vertices stand for columns. An edge should be drawn between a left vertex and a right vertex according to some rule, e.g. the rule used in the previous section draws an edge in the bipartite graph for each 1 in the stopping set matrix. Stopping sets enumeration in the next theorem is based on β, the number of zeros or the number of non-erased positions. Hence, we shall use the opposite rule. A stopping set of weight w and having a 1 × 2 rectangular support shall be represented by a bipartite graph with 1 left vertices, 2 right vertices, and a total of β = 1 2w edges. Notice that these bipartite graphs have no length-2 cycles because parallel edges are forbidden.

For finite 1 and 2 , given the left degree distribution and the right degree distribution, there exists no exact formula for counting bipartite graphs. The best recent results are asymptotic in the graph size for sparse and dense matrices [START_REF] Canfield | Asymptotic enumeration of integer matrices with constant row and column sums[END_REF] [START_REF] Greenhill | Asymptotic enumeration of sparse nonnegative integer matrices with specified row and column sums[END_REF] and cannot be applied in our enumeration. The following two lemmas solve two cases encountered in Theorem 4.2 for w = d(d + 2) and w = (d + 1)(d + 1) both inside a (d + 2) × (d + 2) rectangular support. The definition of special partitions is required before introducing the two lemmas. Definition 4.10. Let ≥ 2 be an integer. A special partition of length j of is a partition defined by a tuple ( 1 , 2 , . . . , j ) such that its integer components satisfy:

• 1 ≤ 2 ≤ . . . ≤ j . • j i=1 i = . • i ≥ 2, ∀j. • 1 ≤ j ≤ /2.
A special partition shall be denoted by (( 1 , . . . , j )).

Definition 4.11. The group number of a special partition, denoted by κ = κ( 1 , 2 , . . . , j ), is the number of different integers j , for j = 1 . . . /2. In other words, following set theory, the set including the j integers i 's is { i 1 , i 2 , . . . , iκ }. The group number divides the partition of into κ groups where the m th group includes im repeated g m times, and κ m=1 g m = j.

Lemma 4.3. Consider bipartite graphs defined as follows: left vertices, right vertices, all vertices have degree 2, and no length-2 cycles are allowed. For ≥ 2, the total number x of such bipartite graphs is given by the expression

x = (( 1 ,..., j )) 1 κ( 1 ,..., j ) m=1 g m ! j k=1 k -1 u=0 ( -k-1 i=1 i -u) 2 2 k (4.27)
where (( 1 ,..., j )) is a summation over all special partitions of the integer , κ( 1 , . . . , j ) is the group number of the special partition (( 1 , . . . , j )), and g m is the size of the m th group.

Proof. Firstly, let us find the number of Hamiltonian bipartite graphs having k left vertices, k right vertices, all vertices of degree 2, and no length-2 cycles allowed. There are ( k !) 2 ways to choose the order of all left and right vertices. If the Hamiltonian cycle is represented by a sequence of 2 k integers corresponding to the 2 k vertices of the bipartite graph, then there are 2 k ways to shift the Hamiltonian cycle without changing the graph. Hence, the number of Hamiltonian bipartite graphs of degree 2 is

( k !) 2 2 k . (4.28)
Secondly, given the half-size of the bipartite graph stated in this lemma, all special partitions of are considered. For a fixed special partition (( 1 , 2 , . . . , j )) the bipartite graph is decomposed into j Hamiltonian graphs each of length k , k = 1 . . . j. The number of choices for selecting the vertices of the j Hamiltonian graphs is

j k=1 -k-1 i=1 i k 2 . (4.29)
The above number should be multiplied by the number of Hamiltonian graphs for each selection of vertices to get

j k=1 -k-1 i=1 i k 2 ( k !) 2 2 k (4.30)
But for a given special partition, each group of size g m is creating g m ! identical bipartite graphs. Hence, the final result for a fixed partition becomes

1 κ( 1 ,..., j ) m=1 g m ! j k=1 -k-1 i=1 i k 2 ( k !) 2 2 k (4.31)
Then, x is obtained by summing (4.31) over all special partitions of the integer to yield

x = (( 1 ,..., j )) 1 κ( 1 ,..., j ) m=1 g m ! j k=1 -k-1 i=1 i k 2 ( k !) 2 2 k (4.32)
The simplification of the factors ( k !) 2 yields the expression stated by this lemma.

Lemma 4.4. Consider bipartite graphs defined as follows: left vertices, right vertices, all left vertices have degree 2 except one vertex of degree 1, all right vertices have degree 2 except one vertex of degree 1, and finally no length-2 cycles are allowed. For ≥ 3, the total number y of such bipartite graphs is

y = 2 • (2 -1) • x -1 + ( -1) 2 • x -2 , (4.33)
where x is determined via Lemma 4.3 and x 1 = 0.

Proof. Let the first -1 left vertices and the first -1 right vertices be of degree 2.

There exists two ways to complete this bipartite graph such that the two remaining vertices have degree 1.

• Each of the x -1 sub-graphs has 2( -1) edges. Break one edge into two edges and connect them to the remaining left and right vertices, the number of such graphs is 2( -1)x -1 . Another set of x -1 bipartite graphs is built by directly connecting the last two vertices together without breaking any edge in the upper sub-graph. Now, we find 2( -1)x -1 + x -1 = (2 -1)x -1 bipartite graphs.

• Fix a vertex among the -1 upper left vertices and fix one among the -1 upper right vertices (( -1) 2 choices). Consider a length-2 cycle including these two vertices. One edge of this cycle can be broken into two edges and then attached to the degree-1 vertices at the bottom. The remaining -2 left and right vertices may involve x -2 sub-graphs. Consequently, the number of graphs in this second case is ( -1) 2 x -2 .

STOPPING SETS FOR MDS COMPONENTS

The total number of bipartite graphs enumerated in the above cases is

(2 -1)x -1 + ( -1) 2 x -2 . (4.34)
Finally, the degree-1 left vertex has choices and so has the degree-1 right vertex. The number of graphs in (4.34) should be multiplied by 2 .

We make no claims about a possible generalization of Lemma 4.3 and Lemma 4.4 to finite bipartite graphs with higher vertex degrees. As mentioned before, for general degree distributions, results on enumeration of asymptotic bipartite graphs were published by Brendan McKay and his co-authors [START_REF] Canfield | Asymptotic enumeration of integer matrices with constant row and column sums[END_REF] [START_REF] Greenhill | Asymptotic enumeration of sparse nonnegative integer matrices with specified row and column sums[END_REF]. Table 4.1 shows the number of special partitions for = 2 . . . 32. The number of standard partitions (the partition function) can be found by a recursion resulting from the pentagonal number theorem [START_REF] Conway | The Book of Numbers[END_REF]. To our knowledge, there exists no such recursion for special partitions. The number of bipartite graphs under the assumptions of Lemma 4.3 and Lemma 4.4 is found in Table 4.2 for a graph half-size up to 8. Finally, we are ready to state and prove the first theorem on stopping sets enumeration. Theorem 4.2. Let C P be a product code

[n 1 , k 1 , d 1 ] q ⊗ [n 2 , k 2 , d 2 ]
q built from row and column MDS component codes, where the alphabet size q is greater than max(n 1 , n 2 ). Let τ w be the number of stopping sets of size w. We write τ w = τ a + τ b , where τ a counts obvious stopping sets and τ b counts non-obvious stopping sets. Under (type-II) iterative algebraic decoding and for d 1 = d 2 = d ≥ 2, stopping sets are characterized as follows:

• For w < d 2 , τ a = τ b = 0.

• For w = d 2 ,

τ a = n 1 d n 2 d , τ b = 0. • For w ∈]d 2 , d(d + 1)[, τ a = τ b = 0.
• For w = d(d + 1),

τ a = n 1 d n 2 d + 1 + n 1 d + 1 n 2 d , τ b = (d + 1)! n 1 d + 1 n 2 d + 1 . • For w ∈ ]d(d + 1), d(d + 2)[. Let us write w = d 2 + d + λ, where λ ∈ [1, d -1].
τ a = 0,

τ b = (d + 1 -λ)! d + 1 λ 2 n 1 d + 1 n 2 d + 1
.

• For w = d(d + 2),

τ a = n 1 d n 2 d + 2 + n 1 d + 2 n 2 d , τ b = (d + 1) 2 n 1 d + 1 n 2 d + 1 + 2r 0 +r 1 =d d + 1 r 0 d + 1 -r 0 r 1 (d + 2)! 2 r 2 n 1 d + 1 n 2 d + 2 + n 1 d + 2 n 2 d + 1 + x d+2 n 1 d + 2 n 2 d + 2
, where 2r 0 +r 1 =d is a summation over r 0 and r 1 , both being non-negative and satisfying 2r 0 +r 1 = d, r 2 = d+1-r 0 -r 1 , and x d+2 is determined from Lemma 4.3.

• For w = (d + 1)(d + 1)

τ a = n 1 d + 1 n 2 d + 1 , τ b = 2r 0 +r 1 =d+1 d + 1 r 0 d + 1 -r 0 r 1 (d + 2)! 2 r 0 n 1 d + 1 n 2 d + 2 + n 1 d + 2 n 2 d + 1 + y d+2 n 1 d + 2 n 2 d + 2 ,
where y d+2 is determined from Lemma 4.4.

Proof. For w satisfying d 2 ≤ w ≤ (d + 1) 2 , the admissible size of R(S) varies from d 2 up to (d + 2) 2 as given by Lemma 4.1. All cases stated in the theorem shall use the following sequence of R(S) listed in the order of increasing size Hence, this size of the rectangular support yields no stopping sets, τ w = 0 in this sub-case.

-R(S) has size (d + 1) × (d + 1). The number of zeros is

β = (d + 1) 2 -w = d + 1 -λ, where β ∈ [2, d].
Put the zeros in R(S) not exceeding one per column and not exceeding one per row. The enumeration of these stopping sets is given by selecting the β rows and the β columns, then filling all β × β permutation matrices in the zero positions. Hence, given that d+1 β = d+1 λ , we get for this sub-case

τ w = β! d + 1 λ 2 n 1 d + 1 n 2 d + 1 .
All corresponding stopping sets are not obvious (the rank is greater than 1).

- -R(S) has size d(d + 2). According to Lemma 4.2, we have β = 0. All these stopping sets are obvious. Their number is

n 1 d n 2 d + 2 + n 1 d + 2 n 2 d .

STOPPING SETS FOR MDS COMPONENTS

-R(S) has size (d + 1)(d + 1). We have β = 1. The number of these stopping sets is

(d + 1) 2 n 1 d + 1 n 2 d + 1
.

-R(S) has size (d + 1)(d + 2). The number of zeros is β = d + 2. Each column must have a unique zero and each row cannot have more than two zeros. Let r i be the number of rows containing i zeros, i = 0, 1, 2. Then r 0 + r 1 + r 2 = d + 1 and β = 2r 2 + r 1 , so the constraint is 2r 0 + r 1 = d. Given a stopping set satisfying this constraint, a permutation can be applied on the (d + 2) columns to create another stopping set. But a row with two zeros creates two identical columns, so the number of stopping sets should be divided by 2 r 2 , where r 2 = r 0 + r 1d -1. The number of stopping sets in this sub-case is

2r 0 +r 1 =d d + 1 r 0 d + 1 -r 0 r 1 (d + 2)! 2 r 2 n 1 d + 1 n 2 d + 2 + n 1 d + 2 n 2 d + 1
.

- Then, in this sub-case, the number of stopping sets is given by

x d+2 n 1 d + 2 n 2 d + 2 .
• -R(S) has size (d + 1)(d + 1). We have β = 0, i.e. R(S) = S. The number of these obvious stopping sets is

n 1 d + 1 n 2 d + 1
.

-R(S) has size (d + 1)(d + 2). We have β = d + 1. A column of R(S) should contain at most one zero and a row should contain at most two zeros. Let r i be the number of rows containing i zeros, i = 0, 1, 2. Then r 0 + r 1 + r 2 = d + 1 and β = 2r 2 + r 1 , so the constraint is 2r 0 + r 1 = d + 1. Given a stopping set satisfying this constraint, a permutation can be applied on the (d + 2) columns to create another stopping set. The number of stopping sets in this sub-case is

2r 0 +r 1 =d+1 d + 1 r 0 d + 1 -r 0 r 1 (d + 2)! 2 r 2 n 1 d + 1 n 2 d + 2 + n 1 d + 2 n 2 d + 1
,

where r 2 = r 0 .

-R(S) has size (d + 2)(d + 2). β = 2d + 3 which is less than the upper bound in Lemma 4.2. These stopping sets are equivalent to bipartite graphs considered in Lemma 4.4. Then, in this sub-case, the number of stopping sets is given by

y d+2 n 1 d + 2 n 2 d + 2
.

From the proof of Theorem 4.2, in the case w = d(d + 2) with a (d + 1) × (d + 2) rectangular support, the enumeration of stopping sets is directly converted into enumeration of trivial bipartite graphs defined by: a-left vertices and a left degree 0, 1, or 2, and b-+ 1 right vertices all of degree 1. Similarly, the proof for the case w = d(d + 2) with a (d + 1) × (d + 2) rectangular support is directly related to the enumeration of bipartite graphs with one edge less. Theorem 4.3. Let C P be a product code [n 1 , k 1 , d 1 ] q ⊗ [n 2 , k 2 , d 2 ] q built from row and column MDS components, where the alphabet size q is greater than max(n 1 , n 2 ). Let τ w be the number of stopping sets of Hamming weight w. We write τ w = τ a + τ b , where τ a counts obvious stopping sets and τ b counts non-obvious stopping sets. It is assumed that

2 < d 1 < d 2 < 3d 1 -1 or 2 = d 1 < d 2 < 4d 1 -1.
Under iterative algebraic decoding, stopping sets are characterized as follows.

• For w < d 1 d 2 , τ a = τ b = 0. • For w = d 1 d 2 , τ a = n 1 d 1 n 2 d 2 , τ b = 0. • For w ∈]d 1 d 2 , d 1 (d 2 + 1)[, τ a = τ b = 0.
• For w = d 1 (d 2 + 1),

τ a = n 1 d 1 n 2 d 2 + 1 , τ b = 0.
For larger weights, the enumeration of stopping sets distinguishes three cases: A, B, and C.

Case A:

d 2 < 2d 1 . • For w ∈]d 1 (d 2 + 1), (d 1 + 1)d 2 [. τ a = τ b = 0.
• For w = (d 1 + 1)d 2 .

τ a = n 1 d 1 + 1 n 2 d 2 , τ b = (d 1 + 1)! d 2 + 1 d 2 -d 1 n 1 d 1 + 1 n 2 d 2 + 1 . • For w ∈](d 1 + 1)d 2 , d 1 (d 2 + 2)[, write w = (d 1 + 1)d 2 + λ. τ b = 1 {d 2 <2d 1 -1} × (d 1 + 1 -λ)! d 1 + 1 λ d 2 + 1 d 1 + 1 -λ n 1 d 1 + 1 n 2 d 2 + 1 .
• For w = d 1 (d 2 + 2).

τ a = n 1 d 1 n 2 d 2 + 2 , τ b = (d 2 -d 1 + 1)! d 1 + 1 d 2 -d 1 + 1 d 2 + 1 d 2 -d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =2d 1 -d 2 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 0 +d 2 -d 1 +1 n 1 d 1 + 1 n 2 d 2 + 2 . • For w ∈]d 1 (d 2 + 2), (d 1 + 1)(d 2 + 1)[, write w = d 1 (d 2 + 2) + λ. τ b = (d 2 -d 1 + 1 -λ)! d 1 + 1 2d 1 -d 2 + λ d 2 + 1 d 1 + λ n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =2d 1 -d 2 +λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 λ! n 1 d 1 + 1 n 2 d 2 + 2 ,
where r 2 = r 0 + λd 1 -1.

• For w = (d 1 + 1)(d 2 + 1).

τ a = n 1 d 1 + 1 n 2 d 2 + 1 + 1 {d 2 =2d 1 -1} n 1 d 1 n 2 d 2 + 3 + 1 {d 2 =d 1 +1} n 1 d 1 + 2 n 2 d 2 , τ b = 2r 0 +r 1 =d 1 +1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 0 (d 2 -d 1 + 1)! n 1 d 1 + 1 n 2 d 2 + 2 + 1 {d 2 =d 1 +1} × 2r 0 +r 1 =d 2 +1 d 2 + 1 r 0 d 2 + 1 -r 0 r 1 (d 1 + 2)! 2 r 0 n 1 d 1 + 2 n 2 d 2 + 1 + 1 {d 2 =2d 1 -1} × 3r 0 +2r 1 +r 2 =d 1 +1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 × d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3)! 2 r 2 6 r 3 n 1 d 1 + 1 n 2 d 2 + 3 + 1 {d 2 =d 1 +1} (d 2 + 2)x d 1 +2 + (d 2 + 2)y d 1 +2
2

n 1 d 1 + 2 n 2 d 2 + 2 + 1 {d 1 =2,d 2 =3} × 1860 n 1 d 1 + 2 n 2 d 2 + 3
.

where

r 3 = d 1 +1-r 0 -r 1 -r 2 ,
τ a = n 1 d 1 + 1 n 2 d 2 + n 1 d 1 n 2 d 2 + 2 , τ b = (d 1 + 1)! d 2 + 1 d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 1 + (d 2 + 2)! 2 d 1 +1 n 1 d 1 + 1 n 2 d 2 + 2 . • For w ∈](d 1 + 1)d 2 , d 1 (d 2 + 3)[, write w = (d 1 + 1)d 2 + λ. τ b = (d 1 + 1 -λ)! d 1 + 1 λ d 2 + 1 d 1 + λ n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 λ! n 1 d 1 + 1 n 2 d 2 + 2 ,
where

r 2 = d 1 + 1 -r 0 -r 1 = d 1 + 1 + r 0 -λ.
Fanny Jardel 104

STOPPING SETS FOR MDS COMPONENTS

• For w = d 1 (d 2 + 3).

τ a = n 1 d 1 n 2 d 2 + 3 , τ b = (d 1 + 1)(d 2 + 1) n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =d 1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 d 1 ! n 1 d 1 + 1 n 2 d 2 + 2 + 3r 0 +2r 1 +r 2 =d 1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3)! 2 r 2 6 r 3 n 1 d 1 + 1 n 2 d 2 + 3
,

where r 3 = d 1 + 1 -r 0 -r 1 -r 2 = 2r 0 + r 1 + 1.
• For w = (d 1 + 1)(d 2 + 1).

τ a = n 1 d 1 + 1 n 2 d 2 + 1 , τ b = 2r 0 +r 1 =d 1 +1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 0 (d 1 + 1)! n 1 d 1 + 1 n 2 d 2 + 2 + 3r 0 +2r 1 +r 2 =d 1 +1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 × (d 2 + 3)! 2 r 2 6 2r 0 +r 1 n 1 d 1 + 1 n 2 d 2 + 3 . Case C: 4 < 2d 1 < d 2 < 3d 1 -1 or 4 = 2d 1 < d 2 < 4d 1 -1. • For w ∈]d 1 (d 2 + 1), d 1 (d 2 + 2)[. τ a = τ b = 0. • For w = d 1 (d 2 + 2). τ a = n 1 d 1 n 2 d 2 + 2 . • For w ∈]d 1 (d 2 + 2), (d 1 + 1)d 2 [. τ a = τ b = 0.

Fanny Jardel

• For w = (d 1 + 1)d 2 .

τ a = n 1 d 1 + 1 n 2 d 2 , τ b = (d 1 + 1)! d 2 + 1 d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 1 + (d 2 + 2)! 2 d 1 +1 (d 2 -2d 1 )! n 1 d 1 + 1 n 2 d 2 + 2 + 1 {d 1 =2,d 2 =6} × 1680 n 1 d 1 + 1 n 2 d 2 + 3 . • For w ∈](d 1 + 1)d 2 , d 1 (d 2 + 3)[, write w = (d 1 + 1)d 2 + λ. τ b = 1 {d 1 >2} × (d 1 + 1 -λ)! d 2 + 1 d 1 + 1 -λ d 1 + 1 λ n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 (d 2 -2d 1 + λ)! n 1 d 1 + 1 n 2 d 2 + 2 .
where r 2 = d 1 + 1 + r 0λ.

• For w = d 1 (d 2 + 3).

τ a = n 1 d 1 n 2 d 2 + 3 , τ b = 1 {d 1 =2,d 2 =6} {d 1 >2} × (d 2 -2d 1 + 1)! d 1 + 1 3d 1 -d 2 d 2 + 1 2d 1 n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =3d 1 -d 2 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 d 1 ! n 1 d 1 + 1 n 2 d 2 + 2 + 3r 0 +2r 1 +r 2 =3d 1 -d 2 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3)! 2 r 2 6 r 3 × n 1 d 1 + 1 n 2 d 2 + 3 , where r 2 = d 2 -2d 1 + 1 + r 0 and r 3 = d 1 + 1 -r 0 -r 1 -r 2 .
• For w = d 1 (d 2 + 4).

τ a = 1 {d 1 =2} × n 1 d 1 n 2 d 2 + 4 . • For w ∈]d 1 (d 2 + 3), (d 1 + 1)(d 2 + 1)[, write w = d 1 (d 2 + 3) + λ.
Fanny Jardel 106

STOPPING SETS FOR MDS COMPONENTS

τ b = (d 2 -2d 1 + 1 -λ)! d 1 + 1 3d 1 -d 2 + λ d 2 + 1 2d 1 + λ n 1 d 1 + 1 n 2 d 2 + 1 + 2r 0 +r 1 =3d 1 -d 2 +λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 (d 1 + λ)! n 1 d 1 + 1 n 2 d 2 + 2 + 3r 0 +2r 1 +r 2 =3d 1 -d 2 +λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 × (d 2 + 3)! 2 r 2 6 r 3 λ! n 1 d 1 + 1 n 2 d 2 + 3 + 1 {d 1 =2,d 2 =6} × 22050 n 1 d 1 + 1 n 2 d 2 + 4
,

where

r 2 = d 1 + 1 -r 0 -r 1 and r 3 = d 1 + 1 -r 0 -r 1 -r 2 .
• For w = (d 1 + 1)(d 2 + 1).

τ a = n 1 d 1 + 1 n 2 d 2 + 1 , τ b = (d 1 + 1)! d 2 + 2 d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 2 + 3r 0 +2r 1 +r 2 =d 1 +1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 × (d 2 + 3)! 2 r 2 6 r 3 (d 2 -2d 1 + 1)! n 1 d 1 + 1 n 2 d 2 + 3 + 1 {d 1 =2,d 2 =5} × 11130 n 1 d 1 + 1 n 2 d 2 + 4 + 1 {d 1 =2,d 2 =6} × 111300 n 1 d 1 + 1 n 2 d 2 + 4
,

where

r 3 = d 1 + 1 -r 0 -r 1 -r 2 .
The detailed proof of Theorem 4.3 is found in Appendix A. From a stopping set perspective, both theorems 4.2&4.3 match Tolhuizen's results on weight distribution for a weight less than d 1 d 2 + d 2 [START_REF] Tolhuizen | More results on the weight enumerator of product codes[END_REF]. Our theorems found stopping sets that are only obvious for w in the range [d 1 d 2 , d 1 d 2 + d 2 [. For any weight w, there exists an equivalence in support between codewords and obvious stopping sets (thanks to Proposition 4.3). Trivial lower and upper bounds of the number of obvious weight-w product code codewords is (q -1)τ w ≤ A w ≤ 1 {τw =0} A w .

Fanny Jardel

Edge coloring algorithm under constraints

In section 4.2, we described graph representations of product codes and we introduced the root order ρ(e) of an edge with respect to its color φ(e). Our objective is to find a coloring φ such that the maximum diversity order is reached under block erasures. The notion of root order in Def. (4.7) is for double diversity (L = 2) because it indirectly assumes that all symbols of one color out of M can be erased by the channel. Given the Singleton bound tradeoff stated in (4.7), double diversity is sufficient in distributed storage applications where the required coding rate should be sufficiently high. Def. (4.7) may be generalized to take into account two or more erased colors, e.g. see Figure 11 in [START_REF] Boutros | Low-density paritycheck codes for nonergodic block-fading channels[END_REF] for L = 3 with M = 3 colors where an information symbol is protected by multiple rootcheck nodes. In this chapter, we restrict both Def. (4.7) and the design in this section to a double-diversity product code. This double diversity on a block-erasure channel is achieved if all stopping sets, as defined and counted in the previous section, can be colored in a way such that at least two distinct colors are found within the symbols of a stopping set (valid for both G and G c ). This task is intractable. Imagine an edge coloring φ designed in a way to guarantee that all weight-w stopping sets include at least two colors. This task is already very hard (or almost impossible) for a fixed w. There is no coloring design tool for non-trivial product codes to ensure that all stopping sets of all weights incorporate at least two distinct colors.

Hand-made edge coloring and its limitations

The aim of this section is to give more insight on designing edge coloring, before introducing the differential evolution algorithm.

The compact graph G c makes the design much simpler, as we saw in Section 4.3.3. The number of super-edges with the same color is N c /M . We also know from (4.11)-(4.13) that the size, height, and width of G c are directly related to the component and total coding rates. Lemma 4.5.

Let C P = C 1 ⊗ C 2 be a product code with a column component C 1 [n 1 , k 1 ] q and a row component C 2 [n 2 , k 2 ] q whose coding rates are R 1 = k 1 /n 1 and R 2 = k 2 /
n 2 respectively. Assume that n ik i divides n i , for i = 1, 2, and assume that M divides N c . G c admits an edge coloring φ such that ρ max (φ) = 1 if the coding rates satisfy

min(R 1 , R 2 ) ≤ 1 - 1 M . ( 4
(φ) = 1 is expressed as N c /M ≤ max(n 1 /(n 1 -k 1 ), n 2 /(n 2 -k 2 )
), the max let us select the longest item among a row or a column. Recall also that

|V c i | = n i /(n i -k i ). Using (4.2), the sufficient condition becomes n 1 n 2 ≤ M • max(n 1 (n 2 -k 2 ), n 2 (n 1 -k 1 )
). Divide by n 1 n 2 to get the inequality announced in the Lemma statement.

When the palette has M = 4 colors, the sufficient condition in Lemma 4.5 is written as min(R 1 , R 2 ) ≤ 3/4. In order to achieve the block-fading Singleton bound for M = 4, we should take R 1 = 3/4 and R 2 = 1, i.e. the product code degenerates to a single component code. It is possible to approach R = 3/4 by keeping R 1 = 3/4 and letting R 2 = n 2 -1 n 2 be very close to 1. In this case, the row code C 2 is a single-parity check code over F q . The product code is very unbalanced. An example of such an unbalanced product code is

C P = [12, 9, 4] q ⊗ [14, 13, 2] q .
From the proof of Lemma 4.5, the edge coloring of G c satisfying ρ max = 1 is given by the following 4 × 14 matrix:

    R R R . . . R R G G G . . . G G B B B . . . B B Y Y Y . . . Y Y     , (4.36)
where the colors φ(e) = 1, 2, 3, 4 are replaced by the four letters 'R', 'G', 'B', and 'Y'. The rate of [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Biglieri | Coding for Wireless Channels[END_REF]4] q ⊗ [14, [START_REF] Boutros | Generalized low density (Tanner) codes[END_REF]2] q is comparable to the rate of [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF]3] ⊗2 q , R ≈ 0.69 but it is sill far from reaching three quarters as the product code [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF]3] q ⊗ [16, [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF]3] q . Of course, if the practical constraints allow for it, it is possible to consider an extremely unbalanced code such as [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Biglieri | Coding for Wireless Channels[END_REF]4] q ⊗ [100, 99, 2] q ! Let us build balanced product codes by relaxing the constraint ρ max = 1. We may authorize a ρ max greater than 1 but not too large in order to limit the number of decoding iterations. On the other hand, the double diversity condition on the edge coloring is maintained. Firstly, let us find a hand-made edge coloring for the [12, 10, 3] ⊗2 q product code with M = 4 colors. G c has 6 left supernodes, 6 right supernodes, and a total of 36 edges. Each color is used N c /M = 9 times. The hint is to place a color on the rows of the matrix representation of G c , row by row from the top to the bottom in a way that avoids stopping sets. The smallest stopping set is the 2 × 2 square. Other non-obvious stopping sets may not be visible without a tedious row-column decoding which is equivalent to determining the root order of all edges. We start with the first Fanny Jardel 109

        R R R G B Y R R R R R R         . ( 4.37)
As seen above, we completed the first row with the three other colors. On the second row, we moved the second 'R' to the right to avoid a 2 × 2 stopping set. Next, we can start filling the second color 'G' from the third row, then the third color 'B' from the fifth row. There will be no choice for the 9 positions of 'Y'. We allow some extra permutations to avoid small stopping sets. After filling the 36 positions, we found the following hand-made edge coloring for the [12, 10, 3] ⊗2 q product code:

        R R R G B Y R B Y R Y G B G G G R Y Y G B Y G R R G B B B Y R G B Y Y B         . ( 4.38)
This coloring φ gives 24 super-edges of order 1 (96 edges in the non-compact graph G) and ρ max (φ) = 3. Can we find a better φ? Yes, in Section 4.4.3, the DECA algorithm outputs an edge coloring with a population of 32 super-edges of order 1 (128 edges in the non-compact graph G) and reaching ρ max (φ) = 2 only.

In a similar way, we attempt to build a double-diversity coloring for a well-balanced rate-3/4 product code, e.g. the [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF]3] q ⊗ [16, 14, 3] q product code where R 1 = 6/7, R 2 = 7/8, and R = 3/4. The compact graph G c has 7 left edges and 8 right edges. For M = 4 colors, each color is used N c /M = 56/4 = 14 times. Again, we try to avoid small obvious stopping sets like 2 × 2, 2 × 3, 3 × 3, etc. We start by putting five 'R' on the first row, three 'R' on the second row, two 'R' on the third row, and one 'R' on the remaining rows as follows:

          R R R R R G B Y R R R R R R R R R           . ( 4

.39)

We repeat the same number of color entries 'G' starting on the fourth row. The color 'B' starts with five entries on the seventh row. We allow some extra permutations to Fanny Jardel 110 4.4. EDGE COLORING ALGORITHM UNDER CONSTRAINTS avoid small stopping sets. Colors were exchanged within a row or within a column. The coloring process was tedious. Many permutations had to be applied. Some non-obvious stopping sets appeared, a computer software was used to reveal those sets (only for this task). We reached the following hand-made double-diversity edge coloring for the [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF]3] q ⊗ [16, 14, 3] q product code:

          Y R R Y R G B R R Y B G Y R R B B B B Y Y R G R R G G G G G B Y R G Y Y B Y G G G G R R B Y Y Y R G B B B B B Y           . ( 4.40)
This coloring gives 30 super-edges of order 1 in G c (120 edges in the non-compact graph G) and ρ max (φ) = 5. In Section 4.4.3, for the same rate-3/4 product code, the DECA algorithm outputs an edge coloring with a population of 40 super-edges of order 1 (160 edges in the non-compact graph G) and reaching ρ max (φ) = 3 only.

The algorithm

We propose in this section an algorithm for product codes that searches for an edge coloring with a large number of root-order-1 edges (good edges) and achieving double diversity. The search is made in the ensemble of edge colorings Φ(E c ) of the compact graph G c . A necessary condition on the coding rate R to get double diversity is

R ≤ 1 - 1 M , (4.41)
i.e. those satisfying inequality (4.7), where M is the color palette size. Codes attaining equality in (4.7) are referred to as MDS in the block-fading/block-erasure sense [42][17].

The main loop of our algorithm is a differential evolution loop that mutates a fraction of the population of bad edges. The algorithm will be referred to as the Differential Edge Coloring Algorithm (DECA).

The population of bad edges is defined by the following set

B = {e ∈ E c : ρ(e) > 1}. (4.42)
It should be remembered that B = B(φ) because of Def. (4.7), but φ is dropped here for the sake of simplifying the notations. The number of good edges is given by

η(φ) = |E c \ B| = |{e ∈ E c : ρ(e) = 1}| . (4.43)
Among the |B| bad edges, colors of a fraction of ℵ edges are modified in order to maximize η(φ), ℵ ∈ N. The fraction ℵ/|B| should be large enough to allow for a population evolution but it should stay small enough in order to limit the algorithm complexity.

The DECA algorithm proceeds as follows.

Initialization. The compact graph (V c 1 , V c 2 , E c ), the number of colors M , the differential evolution parameter ℵ, a maximum number of rounds M axIter, and an initial edge coloring φ 0 are made ready as an input to DECA.

Pre-processing. Build all weak compositions of ℵ with M parts, i.e. write ℵ as the some of M non-negative integers,

ℵ = γ 1 + γ 2 + . . . + γ M , (4.44)
the number of weak compositions being

Γ = ℵ -M + 1 M -1 . (4.45)
For each weak composition, prepare the Λ permutations that permute colors among the ℵ edges, the total number of these permutations is

Λ(γ 1 , . . . , γ M ) = (γ 1 + . . . + γ M )! M i=1 γ i ! . ( 4

.46)

This pre-processing step is completed by setting a loop counter to zero.

Differential evolution loop. This looping phase of DECA includes three main steps.

• Edge sets initialization. Set φ = φ 0 and η max = 0. Build B = B(φ) and randomly select a subset B ℵ . There is a unique weak composition (γ 1 , . . . , γ M ) of ℵ associated to B ℵ determined by

γ i = |{e ∈ B ℵ : φ(e) = i}| . (4.47)
• Color permutations. For λ = 1 . . . Λ(γ 1 , . . . , γ M ), replace the image of B ℵ in the mapping φ by a permutation of φ 0 (B ℵ ). The color permutation is denoted by π λ . This step is a modification of the mapping φ 0 at the ℵ bad edges, i.e. φ(B ℵ ) ← π λ (φ 0 (B ℵ )). Record the mapping with the largest number of good edges, i.e. the edge coloring with the best η(φ), in φ 1 and update η max .

• Termination. Increment the counter of evolution loops. Stop and output φ 1 if this counter reaches M axIter, otherwise set φ 0 = φ 1 and go back to the edge sets initialization.

A detailed functional flowchart of DECA is drawn in Figure 4.6. The complexity of DECA is mainly due to the differential evolution loop. The complexity is proportional to Λ(γ 1 , . . . , γ M ) per round. Hence, the number of operations in DECA behaves as When ℵ is not multiple of M , the denominator in the right term should be rewritten as i 0 i=1 ℵ/M × M i=i 0 +1 ℵ/M , where i 0 is chosen such that the sum of all elements involved in both products is equal to ℵ. All Γ compositions of ℵ are not considered by the algorithm. In fact, the total number of permutations for all weak compositions is

Λ ≤ Λ max (ℵ, M ) = ℵ! ((ℵ/M )!) M . ( 4
φ 0 = φ 1 Subroutine (optional) Max Diversity NO iter = 0 M, ℵ, MaxIter (V c 1 , V c 2 , E c ) φ 0 ∈ Φ(E c ) Precompute Γ weak compositions For each composition γ 1 + . . . + γ M = ℵ precompute the Λ color permutations λ < Λ φ(B ℵ ) ← π λ (φ 0 (B ℵ )) η(φ) > η max YES YES NO Select B ℵ ⊂ B η max = η(φ) φ 1 = φ λ ← λ + 1 φ = φ 0 , η max = 0, λ = 1 Build B = {e ∈ E c : ρ(e) = 1}
Γ j=1 (γ 1 (j) + . . . + γ M (j))! M i=1 γ i (j)! = M ℵ . (4.49)
Fortunately, the per-round complexity of DECA given in (4.48) is much smaller that M ℵ , i.e. Λ max = o(M ℵ ). In practical product code design, we will also have

Λ max M ℵ M N c .
The proposed edge coloring algorithm aims at maximizing η(φ) but does not guarantee that ∀e ∈ E c , ρ(e) < ∞. In some cases, the algorithm may terminate all its rounds with some edges having an infinite order, i.e. the coloring is not double-diversity. This occurs when trying to design a product code with a coding rate very close or equal to 1 -1/M , the block-fading/block-erasure Singleton bound rate. To remedy for this weakness, DECA is endowed with an extra subroutine called Max Diversity, as shown in Figure 4.6. Likewise the second step in the differential evolution loop, this subroutine applies color permutations to a subset

B ℵ 1 of edges, |B ℵ 1 | = ℵ 1 , B ℵ 1 ⊂ B ∞ , and B ∞ = {e ∈ E c : ρ(e) = ∞}. (4.50)

Applications

Now, let us apply DECA to design two double-diversity product codes with MDS components. Numerical values are selected to make these codes suitable to distributed storage applications and to diversity systems in wireless networks. The parameter M axIter is 100. DECA with its hundred iterations runs in a small fraction of a second on a standard computer machine.

Example 4.7. The first application of DECA is to color edges in the compact graph of C P 1 = [n, k, d] ⊗2 q , where n = 12, k = 10, d = 3, and the finite-field alphabet size is q > 12. The coding rate of C P 1 is R(C P 1 ) = 25/36 < 1 -1/M = 3/4, i.e. the gap to (4.7) is 1/18. This small gap is enough to render an uncomplicated double-diversity design. The coloring in Φ(E c ) can be easily converted into its counterpart in Φ(E) by replacing each supersymbol with 4 symbols. From (4.5) and (4.6), the total number of edge colorings is |Φ(E)| ≈ 10 83 in the non-compact graph and |Φ(E c )| ≈ 10 19 in the compact graph. The differential evolution parameter ℵ is set to 8. The diversity subroutine is deactivated. We have Λ max [START_REF] Berrou | Near optimum error correcting coding and decoding: Turbo-codes[END_REF]4)

= 2520 |Φ(E c )| |Φ(E)|.
For almost any choice of the initial coloring φ 0 uniformly distributed in Φ(E c ), DECA yields a double-diversity coloring φ 1 . For roughly one choice out of three for φ 0 , the The initial coloring φ 0 is taken to be uniformly distributed in Φ(E c ). For almost three φ 0 choices out of four, DECA yields a double-diversity coloring φ 1 . Roughly one φ 0 choice out of two guarantees η(φ 1 ) ≥ 34.

EDGE COLORING ALGORITHM UNDER CONSTRAINTS

G B R G B Y Y G R B B R Y Y G B Y B G G R R Y R R Y G G R G B Y B Y B R (a)
G R R R R R R R G Y Y B B R B G G G B Y G G G G G G G G G Y Y Y Y B B B B B B B B B B Y Y Y Y Y Y Y R R R R R (a)

EDGE COLORING ALGORITHM UNDER CONSTRAINTS

In the figures of previous examples, the four colors were also indicated by the first letter of the color name, Red, Green, Blue, and Yellow. The rootcheck order ρ(e) for an edge e in E c (which is also the order of the four code symbols associated to that edge) is indicated by an integer in the right part of each figure for the first two examples. In the rootcheck order matrix, 2r means that this supersymbol has order 2 and its rootcheck node is a row. Similarly, 2c designates a supersymbol with order 2 and a column rootcheck. The letter 'b' is written when a supersymbol has both rootchecks, a row and a column rootcheck.

Product codes in Examples 4.7-4.9 do not satisfy the ρ u condition given in (4.15) and the sufficient condition of Lemma 4.5 either. An interesting question arises. Does an edge coloring with ρ max = 1 exist for a 6 × 6 compact graph? We provide a partial answer in the sequel. A similar answer is valid for the 7 × 8 compact graph.

The 6 × 6 compact graph is perfectly balanced. Let us start with the first color 'R'. The unique solution to get ρ(e) = 1 for all edges e with φ(e) = R is to place 'R' entries separately on the first row and the first column. Hence, no row or a column contain the same color twice. The first 9 edges are located as follows:

        R R R R R R R R R         . ( 4.51)
We start over with the second color 'G' using the same rule. Given the lack of space on the second row and the second column, the ninth green edge is placed on the top left corner. We get

        G R R R R R R G G G G R G R G R G G         . ( 4.52)
At this point, 18 super-edges have a rootcheck order ρ = 1. Seven edges only can be colored in blue, three edges on the third row, three edges on the third column, and one edge at the intersection of the second row and the second column. One color 'R' can be moved down to the last row leading to the following coloring:

        G R R R R B R B G G G G R G B B B R G B R G B B G B R         . ( 4.53)
Finally, we reached an edge coloring where all edges of three colors satisfy ρ(e) = 1. Unfortunately, there is no space left for edges of 'Y' to achieve ρ(e) = 1. The situation is even worse, the remaining edges for 'Y' make five primitive stopping sets (three 2 × 2, one 2 × 3, and one 3 × 2). This edge coloring has no diversity.

Random edge coloring

The efficiency of the DECA algorithm was validated in the previous section in terms of number of edges of first order and the maximal order over all edges. Clearly, while evolving from one coloring to another in order to get a large η(φ), DECA also produced a very small maximal order ρ max (φ). Any deterministic construction seems to be destined to fail given the huge size of the ensembles Φ(E) and Φ(E c ).

In this sub-section, another way to show the efficiency of our coloring algorithm is to make random selections from Φ(E) and Φ(E c ) and get an estimate of the probability distributions of η(φ) and ρ max (φ). Indeed, a uniformly distributed permutation in the symmetric group of order N yields a uniformly distributed edge coloring φ in Φ(E). This is also true for Φ(E c ) when the symmetric group has order N c . Thus, in a uniform manner, we selected 2 billion edge colorings through our computer application from Φ(E) and Φ(E c ) respectively. For each coloring, rootcheck orders of all edges were computed, i.e. for the N edges in the non-compact graph and the N c edges in the compact graph. Only double-diversity colorings are counted in this comparison, i.e. colorings with at least one edge of infinite rootcheck order are excluded. As an illustration, the characteristics of double-diversity random coloring for C P 1 are plotted in Figure 4.10 where numerical estimations of all probability distributions are compared to colorings designed via DECA.

CODE PERFORMANCE IN PRESENCE OF ERASURES

Double diversity design is more arduous for the rate-3/4 C P 2 product code than for the rate-25/36 C P 1 product code because of the rate-diversity tradeoff given by the Singleton bound. For C P 1 , the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 code, 8.97% of uniformly sampled colorings have double diversity in Φ(E c ), whereas this fraction is 43.6% in Φ(E). For C P 2 , the [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF]⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] code, only 0.00039% of uniformly sampled colorings have double diversity in Φ(E c ), and we found no double-diversity colorings in Φ(E) despite the 2 billion samples. As expected, compact graphs exhibit better characteristics than non-compact graphs thanks to their simpler structure, i.e. n ik i parity symbols are grouped inside a unique supersymbol: for C P 1 , one double-diversity random coloring has η(φ) = 88, ρ max (φ) = 4 for non-compact graphs, seven double-diversity colorings have η(φ) = 120, and ρ max (φ) = 2 for compact graphs. There exists a double-diversity coloring in Φ(E) with ρ max (φ) = 3 but its η is 85. The estimated probability mass functions for C P 1 are plotted in Figures 4.10 E c ). In all cases, for both η and ρ, double-diversity random colorings are not as efficient as colorings designed via the DECA algorithm. The situation is worse for random colorings if a double-diversity code with maximal rate 1 -1/M is to be designed. The DECA algorithm exhibits excellent values, η = 160 and ρ = 3, for the rate-3/4 [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] product code.

Code performance in presence of erasures

Iterative decoding performance of C P = C 1 ⊗ C 2 is studied in presence of channel erasures, with and without edge coloring. The iterative decoder makes row and column iterations where the component decoder of C i can be an algebraic erasure-filling decoder (limited by d i -1) or a maximum-likelihood decoder of C i . As stated in Section 4.3.1, type II and type III stopping sets are identical because the non-binary codes C 1 and C 2 are MDS. The word error probability of the iterative decoder is denoted by P G ew . The product code can also be decoded via an ML decoder, i.e. maximum likelihood decoding of C P based on a Gaussian reduction of its parity-check matrix. The word error probability under ML decoding of C P is denoted by P M L ew .

Block erasures

Consider the block-erasure channel CEC(q, ). The N symbols of a codeword are partitioned into M blocks, each block contains symbols associated to edges in G with the same color. The CEC(q, ) channel erases a block with a probability . The block is correctly received with a probability 1 -. Erasure events are independent from one block to another. We say that a color is erased if the associated block of N/M symbols is erased. Assume that G is endowed with a double-diversity edge coloring φ (i.e. L(φ) = 2) as defined in Corollary 4.1. Then, on the block-erasure channel CEC(q, ), for a rate satisfying

1 - 2 M < R ≤ 1 - 1 M , ( 4
≤ P M L ew ≤ P G ew ≤ M i=2 M i i (1 -) M -i . (4.55)
Since φ has a double diversity, there exist two colors among the M colors such that the iterative decoder must fail if both colors are erased. This explains the upper bound of P G ew in (4.55). The upper bound is valid for any rate less than the maximal achievable rate for double diversity, i.e. 1 -1 M . Now, since R > 1 -2 M , the ML decoder for C P cannot attain a diversity L = 3 otherwise the block-fading/block-erasure Singleton bound would be violated. Consequently, the ML decoder of C P can only reach L = 2 and so there exists a pair of erased colors that cannot be solved by the ML decoder. This explains the lower bound in (4.55). The reader can easily verify that lim

→0 log P M L ew log = lim →0 log P G ew log = L = 2. (4.56)
The slope of P ew versus the erasure probability in a double-logarithmic scale is equal to 2. Under the stated constraint on R, the upper bound in (4.55) is the exact expression of the outage probability on a block-erasure channel valid for q-ary codes with asymptotic length [START_REF] Guillén I Fàbregas | Coding in the block-erasure channel[END_REF]. For double-diversity edge colorings found by DECA in Examples 4.7 and 4.8, P G ew equals its upper bound in (4.55). These examples achieve the outage probability although a code may perform better than the outage probability at finite length. For these colorings where M = 4, the error probability on CEC(q, ) behaves like P G ew = 6 2 + O( 3 ). One possible interpretation of this behavior is: the optimization of η(φ) (equivalent in some sense to minimizing ρ(φ)) pushed the performance of edge colorings found by the DECA algorithm as far as possible from the lower bound 2 . As can be observed in Figures 4.7 and 4.8, all rows and all columns include the four colors. When any two colors out of four are erased, the iterative decoder will completely fail without correcting a single supersymbol. A double-diversity edge coloring guarantees that all stopping sets are covered by at least two colors but it cannot cover all stopping sets with three colors or more otherwise we get L = 3 which contradicts R > 1 -2 M . Fortunately, these product codes are diversity-wise MDS and the second code in Example 4.8 has the maximal coding rate for double diversity. In the sequel, we will see that these codes also perform well in presence of independent erasures.

Independent erasures

Consider the i.i.d. erasure channel SEC(q, ). The N symbols of a codeword are independently erased by the channel. A symbol is erased with a probability and is correctly received with a probability 1 -. Edge coloring has no effect on the performance of C P on the SEC(q, ) channel. Before studying the performance on the SEC(q, ), following

CODE PERFORMANCE IN PRESENCE OF ERASURES

Proof. Consider an 1 × 2 obvious stopping set. Its rectangular support is R(S) = R 1 (S) × R 2 (S). We have 1 ≥ d 1 and 2 ≥ d 2 . From Proposition 4.2, there exists a column codeword x = (x 1 , x 2 , . . . , x n 1 ) ∈ C 1 of weight 1 with support R 1 (S) × {j 1 }, where j 1 ∈ R 2 (S). Similarly, there exists a row codeword y = (y 1 , y 2 , . . . , y n 2 ) ∈ C 2 of weight 2 with support {i 1 } × R 2 (S), where i 1 ∈ R 1 (S). Now, the Kronecker product of x and y satisfies X (x ⊗ y) = S. Corollary 4.5. Consider a product code C P = C 1 ⊗C 2 with non-binary MDS component codes. Assume the symbols of C P are transmitted over a SEC(q, ) channel. Then, for 1, the error probabilities satisfy P G ew ∼ P M L ew .

Proof. On the SEC(q, ), the word error probabilities are given by [START_REF] Schwartz | On the stopping distance and the stopping redundancy of codes[END_REF],

P M L ew = N i=d 1 d 2 Ψ i (M L) i (1 -) N -i , (4.57)
where Ψ i (M L) is the number of weight-i erasure patterns covering a product code codeword, and

P G ew = N i=d 1 d 2 Ψ i (G) i (1 -) N -i , (4.58)
where Ψ i (G) is the number of weight-i erasure patterns covering a stopping set. Of course, here we refer to stopping sets in the non-compact graph G, i.e. in the n 1 × n 2 product code matrix. Next, since N is fixed (asymptotic length analysis is not considered in this chapter) we write The erasure patterns can be decomposed according to the size of the covered stopping set. The coefficient Ψ i (G) becomes Ψ i (G) = i w=d 1 d 2 Ψ i,w (G), where Ψ i,w (G) is the number of weight-i patterns covering a stopping set of size w. It is clear that Ψ w,w (G) = τ w . For small iw, Ψ i,w (G) can be approximated by A N -A i-w τ w,A , where τ w,A is the number of stopping sets of size w having |R(S)| = A. For w ≤ d 1 d 2 + d 1 + d 2 + 1, the area A is bounded from above by the product 0 1 × 0 2 from Lemma 4.1. Numerical evaluations of Ψ i (G) are tractable for very short codes (N ≤ 25) and become very difficult for codes of moderate size and beyond, e.g. N = 144 and N = 224 for the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 and the [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] codes respectively. For this reason, expressions (4.57) and (4.58) are not practical to predict the SEC(q, ) performance of product codes with significant characteristics. q , no edge coloring. Word and symbol error rate performance for iterative decoding versus its union bound and ML decoding.

P M L ew = Ψ d 1 d 2 (M L) d 1 d 2 + o( d 1 d 2 ) and P G ew = Ψ d 1 d 2 (G) d 1 d 2 + o( d 1 d 2 ). From

For

From Theorem 4.2, the union bound P U ( ) for the [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF]3] ⊗2 q product code is P U ( ) =48400 9 + 6098400 12 + 23522400 13 + 17641800 14 + 1754335440 15 + 9126691200 16 + o( 16).

The performance of this code on the SEC(q, ) channel is shown in Figure 4.11. We used the standard finite field of size q = 256. The union bound for the symbol error probability P G es is derived by weighting the summation term in (4.59) with w/N , i.e.

P G es ≤ N w=d 1 d 2 w N τ w w .
As observed in the plot of Figure 4.11, the union bound is sufficiently tight. Furthermore, the performance of the iterative algebraic row-column decoder is very close to that of ML decoding in the whole range of . For small , the curves are superimposed as predicted by Corollary 4.5. with double-diversity edge coloring. Word error rate performance versus 4 , for iterative decoding on the SEC(q, { i }4 i=1 ) channel with 1 = 2 = 3 .

CONCLUSIONS

Conclusions

Non-binary product codes with MDS components are studied in this chapter in the context of iterative row-column algebraic decoding. Channels with both independent and block erasures are considered. The rootcheck concept and associated double-diversity edge colorings were described after introducing a compact graph representation for product codes. For solving erased symbols, an upper bound of the number of decoding iterations is given as a function of the graph size and the color palette size M . Stopping sets are defined in the context of MDS components and a relationship is established with the graph representation of the product code. A full characterization of these stopping sets is given up to a weight (d 1 + 1)(d 2 + 1). Then, we proposed a differential evolution edge coloring algorithm to design colorings with a large population of minimal rootcheck Fanny Jardel 125 CHAPTER 4. EDGE COLORING IN PRODUCT CODE GRAPHS order symbols. The complexity of this algorithm per iteration is o(M ℵ ), where ℵ is the differential evolution parameter. The performance of MDS-based product codes with and without double-diversity coloring is analyzed. In addition, ML and iterative decoding are proven to coincide at small channel erasure probability.

A complete enumeration of product code codewords is still an open problem in coding theory. Following the enumeration of bipartite graphs in Section 4.3.4 (see also Table 4.1) and following the DECA algorithm that aims at improving η(φ) in Section 4.4.2, two open problems can be stated.

• In number theory. There exists no recursive or closed form expression for the special partition function, i.e. the number of special partitions of an integer. Also, in a way similar to the Hardy-Ramanujan formula, the asymptotic behavior is unknown for the number of special partitions. Special partitions are introduced in Definition 4.10.

• In graph theory and combinatorics. Consider a matrix of size H × W and a coloring palette of size M . For simplicity, assume that H • W is multiple of M . A matrix entry is called edge. A color is assigned to each edge in the matrix. All M colors are equally used. A matrix edge/entry (i, j) of color c is said to be good if it is the unique entry with color c either on row i or on column j. The number of good entries is denoted by η(φ), see also (4.43). Given the matrix height H, width W , and the palette size M , find the maximum achievable number of good entries η(φ) over the set of all edge colorings φ. A simpler problem would be to find an upper bound of η(φ).

Conclusions and perspectives

Conclusions

This Ph.D thesis investigates distributed storage over data centers interacting with cloud computing resources. In distributed storage the erasure model is combined to special coding structures. We extensively used the erasure channel model in our research work. The erasure channel is simple, suited to both finite-length and infinite-length analysis of channel coding. Despite its simplicity, it brings a great comprehension of the code behavior and helps in designing good codes. We used the erasure model in spatial coupling and in coding for diversity.

The first part of this work is devoted to performance study of spatially coupled codes for erasure channel. Spatial coupling of codes on graphs, mainly LDPC codes, is a recent method to attain channel capacity for any memoryless symmetric binary-input channel. Shannon capacity is approached by letting three parameters grow large enough: The graph degrees, the coupling window, and the chain length. In our work, we showed that a small coupling window yields impressive results in terms of iterative decoding thresholds. This new method is called forward layered coupling. The method is inspired from overlapped layered coding and has the shortest possible memory, i.e. w = 2. Edges of local ensembles and those defining the spatial coupling are separately built. The new method also allows the construction of non-uniform coupling chains with near-Shannon spatially-varying thresholds under iterative decoding by gluing non-equal LDPC protographs which leads to a spatially-variable BP threshold. Then we introduced a novel forward-layered coupling schemes for Root-LDPC. Local protographs are coupled by new edges connected to their parity bits only. Spatial coupling of parity bits plays the role of doping for full-diversity codes. The erasure channel performance indicate an enhancement of the code outage boundary with respect to standard uncoupled codes. The spatially-coupled Root-LDPC ensembles achieve threshold boundaries very close to the capacity boundary (saturation) in the erasure plane. This behavior in the erasure plane will automatically result in a saturation of the root-LDPC outage boundary on a real block-fading channel with additive noise.

Spatially-coupled Root-LDPC are applied to storage and diversity applications. From Definition 2.1 and the structure of the double-diversity Root-LDPC codes, it is obvious that information bits have locality d c -1, i.e. the degree of check nodes minus one edge, in the coupling scheme presented in Section 3.4.3 In the special case where erasures occur per color (block erasures) the locality of a random LDPC ensemble is O(log(n)) whereas that of a Root-LDPC is maintained at d c -1 thanks to rootcheck nodes of order 1. Usually, we would like to maintain all information bits at root order 1. This forces the construction to couple parity bits only. We also observed that the outage boundary is not completely saturated towards the capacity line. Root order 1 for all information bits is too constraining for rate 3/4 and 4 colors. A potential solution to saturate the boundary of coupled Root-LDPC (as a perspective for future work) is to introduce a fraction of order 2 information bits. This should allow the enhancement of spatial coupling by engaging both information and parity bits.

In the second part of this Ph.D thesis, non-binary product codes with MDS components are studied in the context of iterative row-column algebraic decoding. Channels with both independent and block erasures are considered. The rootcheck concept and associated double-diversity edge colorings were described after introducing a compact graph representation for product codes. The graph representation of product codes, as known since Tanner's pioneering work, is shown to be strong enough in the MDS case. New results about iterative decoding of product codes are obtained. For solving erased symbols, an upper bound of the number of decoding iterations is given as a function of the graph size and the color palette size M . Stopping sets are defined in the context of MDS components and a relationship is established with the graph representation of the product code. A full characterization of these stopping sets is given up to a weight (d 1 + 1)(d 2 + 1). The newly introduced compact graphs for product codes allow us to propose an edge coloring algorithm for double diversity. We proposed a differential evolution edge coloring algorithm to design colorings with a large population of minimal rootcheck order symbols. The complexity of this algorithm per iteration is o(M ℵ ), where ℵ is the differential evolution parameter. The performance of MDS-based product codes with and without double-diversity coloring is analyzed. In addition, for small channel erasure probability, the iterative decoder probability of error is asymptotic to the ML decoder probability of error. This is a nice property of MDS-based product codes.

Perspectives

As a future work, we propose the following research directions:

• Complete investigations on the relationship between erasure channel and fading channel. The erasure plane representation and the spatial coupling shown in this report are limited to binary codes.

• Starting from the stopping sets enumeration, find tight bounds to the number of product code codewords of a given Hamming weight.

• Interesting open problems were found in Chapter 4:

→ In number theory. There exists no recursive or closed form expression for the special partition function, i.e. the number of special partitions of an integer. Also, in a way similar to the Hardy-Ramanujan formula, the asymptotic behavior is unknown for the number of special partitions. Special partitions are introduced in Definition 4.10. → In graph theory and combinatorics. Consider a matrix of size H × W and a coloring palette of size M . For simplicity, assume that H • W is multiple of M . A matrix entry is called edge. A color is assigned to each edge in the matrix. All M colors are equally used. A matrix edge/entry (i, j) of color c is said to be good if it is the unique entry with color c either on row i or on column j. The number of good entries is denoted by η(φ), see also (4.43). Given the matrix height H, width W , and the palette size M , find the maximum achievable number of good entries η(φ) over the set of all edge colorings φ. A simpler problem would be to find an upper bound of η(φ).

• Security is not considered in this Ph.D. work. In Root-LDPC literature, a tradeoff between security and diversity was established. It would be interesting to redo product codes design for distributed storage taking security into account. Then τ w = 0.

4.A. PROOF OF THEOREM

-All rectangle sizes from rows 4 -8 in the table in Figure 4.14 are larger than the previous case and make a contradiction on β unless τ w = 0.

Starting from this point, d 2 should be compared to 2d 1 in order to sort the values of the stopping set size as given in the table in -R(S) has size (d 1 + 1) × d 2 . Stopping sets are obvious and their number is

n 1 d 1 + 1 n 2 d 2 .
-R(S) has size -R(S) has size d 1 × (d 2 + 2). The number of zeros is β = d 1 (d 2 + 2)w > 0 which contradicts Lemma 4.2. There are no stopping sets for this rectangular size.

-R(S) has size (d 1 + 1) × (d 2 + 1). We have

β = d 1 + 1 -λ ∈ [d 2 -d 1 + 2, d 1 ].
The non-obvious stopping sets are built by selecting β columns and β rows and then embedding any 0-permutation matrix, their number is

(d 1 + 1 -λ)! d 1 + 1 λ d 2 + 1 d 1 + 1 -λ n 1 d 1 + 1 n 2 d 2 + 1 .
-All other R(S) greater than the previous case have τ w = 0 because of a contradiction on β.

• The case w = d 1 (d 2 + 2).

-For R(S) with size d 1 (d 2 + 2), we the following number of obvious stopping sets n 1 d 1 n 2 d 2 + 2 .

-The next size for R(S) to be considered is (d 1 + 1) × (d 2 + 1). The number of zeros is β = d 2d 1 + 1. As usual, these non-obvious stopping sets are constructed by a 0-permutation matrix of size β inside R(S). Their number is

(d 2 -d 1 + 1)! d 1 + 1 d 2 -d 1 + 1 d 2 + 1 d 2 -d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 1 .
-

4.A. PROOF OF THEOREM

-Rectangular supports larger than (d 1 +1)(d 2 +2) do not correspond to stopping sets for the given range of w, i.e. τ w = 0.

• The last case w = (d 1 + 1)(d 2 + 1) ≤ d 1 (d 2 + 3).

-The number of obvious stopping sets for the smallest R(S) is

n 1 d 1 + 1 n 2 d 2 + 1
. -Obvious stopping sets do exist and their number is

If d 2 = 2d
n 1 d 1 + 1 n 2 d 2 + n 1 d 1 n 2 d 2 + 2 .
-For rectangles larger than (d Larger rectangles R(S) lead to a contradiction on β, so they do not create stopping sets for this given weight w.

• The case w = d 1 (d 2 + 3). Obvious stopping sets are given by

n 1 d 1 n 2 d 2 + 3 .
-Take R(S) with size (d 1 + 1)(d 2 + 1). Then β = 1 (recall that d 2 = 2d 1 in this sub-section). The number of non-obvious stopping sets with a unique zero in their rectangular support is

(d 1 + 1)(d 2 + 1) n 1 d 1 + 1 n 2 d 2 + 1 .
-Take R(S) with size (d 1 + 1)(d 2 + 2). Then β = d 1 + 2. The number of stopping sets is given by (4.A.2) after setting λ = d 1 .

-Take R(S) with size (d 1 + 1)(d 2 + 3). Then β = d 2 + 3. In R(S), all columns have a unique zero. Define r 3 = d 1 + 1r 0r 1r 2 = 2r 0 + r 1 + 1, then the number of non-obvious stopping sets in this sub-case becomes 3r 0 +2r 1 +r 2 =d 1

d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3)! 2 r 2 6 r 3 n 1 d 1 + 1 n 2 d 2 + 3
All remaining rectangle sizes (smaller or larger) have no stopping sets.

Fanny Jardel

• For d 2 = 2d 1 the range ]d 1 (d 2 + 3), (d 1 + 1)(d 2 + 1)[ is empty. We complete this sub-section with the last case w = (d 1 + 1)(d 2 + 1).

-The number of obvious stopping sets for the smallest R(S) is

n 1 d 1 + 1 n 2 d 2 + 1 .
The size (d 1 + 2) × d 2 rectangle has no stopping sets.

-The next R(S) is (d 1 + 1)(d 2 + 2). The corresponding number of zeros is β = d 1 + 1. The number of non-obvious stopping sets is (expression identical to the case d 2 ≤ 2d 1 -1):

2r 0 +r 1 =d 1 +1 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 0 (d 1 + 1)! n 1 d 1 + 1 n 2 d 2 + 2 .
-Consider R(S) with size (d 1 + 2)(d 2 + 1). We have β = d 2 + 1. For d 2 = 2d 1 this β contradicts the upper bound in Lemma 4.2. Then τ w = 0.

-Consider R(S) with size (d 1 + 1)(d 2 + 3). We have β = 2(d 1 + 1) = d 2 + 2.

In R(S), all columns must have at most one zero but rows can afford up to three zeros. The number of non-obvious stopping sets is found to be (method as in previous cases) 3r 0 +2r 1 +r 2 =d 1 +1 • The case w = d 1 (d 2 + 2).

d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -
-Obvious stopping sets do exist and their number is

n 1 d 1 n 2 d 2 + 2 .
-For rectangles larger than d 1 (d 2 + 2) we found no other stopping sets, by contradiction on β.

• The case d 1 (d 2 + 2) < w < (d 1 + 1)d 2 .

Write w = d 1 (d 2 +2)+λ, where λ is in the range [1, d 2 -2d 1 -1]. For all rectangular supports, from β we deduce that τ w = 0.

• The case w = (d 1 + 1)d 2 .

Obvious stopping sets are given by

n 1 d 1 + 1 n 2 d 2 .
-Take R(S) with size (d 1 + 1)(d 2 + 1). Then β = d 1 + 1. The number of non-obvious stopping sets for this sub-case is

(d 1 + 1)! d 2 + 1 d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 1 .
-Take R(S) with size (d 1 + 1)(d 2 + 2). Then β = 2d 1 + 2. All rows have two zeros. Also, d 2 -2d 1 columns have no zeros, while the remaining columns include a unique zero. The number of non-obvious stopping sets in this subcase is

(d 2 + 2)! 2 d 1 +1 (d 2 -2d 1 )! n 1 d 1 + 1 n 2 d 2 + 2 .
-Take R(S) with size (d 1 + 1)(d 2 + 3). From Lemma 4.2 we find that no stopping sets exist, except for d 1 = 2 and d 2 = 6. In this case, β = 3d 1 +3 = 9. Each row in the rectangle have three zeros. The number of stopping sets is τ w = 9! 6 3 = 1680 for d 1 = 2 and d 2 = 6.

-Take R(S) with size (d 1 + 2)(d 2 + 1). Then β = d 2 + d 1 + 2. The reader can easily check that the bound in Lemma 4.2 is not satisfied. We deduce that τ w = 0 for this rectangle size and this weight w. All remaining rectangle sizes have no stopping sets.

• -Take R(S) with size (d 1 + 1)(d 2 + 2). We have β = 2d 1 + 2λ inside the interval [d 2d 1 + 3, 2d 1 + 1]. As made before, we find 2r 0 + r 1 = λ and r 2 = d 1 + 1 + r 0λ. The columns in R(S) have at most one zero and rows have at most two zeros. The number of these non-obvious stopping sets is

2r 0 +r 1 =λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2)! 2 r 2 (d 2 -2d 1 + λ)! n 1 d 1 + 1 n 2 d 2 + 2 .
-Consider R(S) with size (d 1 + 2)(d 2 + 1). Here β = d 2 + d 1 + 2λ contradicts Lemma 4.2 because d 2 > 2d 1 . We have τ w = 0. All remaining rectangles (smaller or larger) have no stopping sets.

• The case w = d 1 (d 2 + 3).

-The number of obvious stopping sets in a d 1 × (d 2 + 3) rectangular support is

n 1 d 1 n 2 d 2 + 3 .
- -Obvious stopping sets are given by

n 1 d 1 + 1 n 2 d 2 + 1 .
-The next R(S) from the table is (d 1 + 1) × (d 2 + 2). We have β = d 1 + 1. The number of stopping sets is

(d 1 + 1)! d 2 + 2 d 1 + 1 n 1 d 1 + 1 n 2 d 2 + 2 .
-Now consider the (d 1 + 1) × (d 2 + 3) rectangle. We have β = 2d 1 + 2. The number of stopping sets is 3r 0 +2r 1 +r 2 =d 1 +1 The materials published in this Ph.D thesis may not be translated or copied in whole or in part without the written permission of the author. Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or heareafter developed is forbidden.

d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3)! 2 r

1 . 1 | = |V c 2 | 2 1. 1 .

 11221 Système de stockage distribué d'un fichier réparti sur n = 4 noeuds et reconstruit à partir de k = 2 noeuds. . . . . . . . . . . . . . . . . . . . . . xxii 2. Matrice de contrôle de parité, d'un code multicouches à sens direct de longueur L c , construite à partir d'ensembles LDPC réguliers (3, 6) couplés via une matrice creuse binaire (1, 2). . . . . . . . . . . . . . . . . . . . . . xxx 3. Graphe de Tanner du couplage spatial multicouches à sens direct d'un ensemble LDPC (3, 6). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi 4. Performances d'un ensemble (3, 6; 1, 2; L c ) avec un couplage multicouches à sens direct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii 5. Seuils BEC pour une chaîne de couplage non uniforme multicouches à sens direct avec ℵ = 5 sous-chaînes chacune de longueur L c 1 = L c /5. . . . xxxiv 6. Seuils BEC pour une chaîne de couplage non uniforme multicouches à sens direct avec ℵ = L c ensembles locaux variant à chaque position spatiale. Les paramètres sont L c = 200, d b = 3, d c = 12 et 4, Rendement = 0.75 à 0.25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxv 7.Canaux parallèles BECs où N/4 bits sont transmis sur chaque canal BEC( i ), i = 1 . . . 4. N est la longueur du code. . . . . . . . . . . . . . . xxxvi 8. Représentation du graphe de Tanner d'un ensemble Root-LDPC de rendement 3/4 pour un canal avec quatre couleurs/évanouissements. . . . . . xxxvii 9. Frontière de coupure d'un code Root-LDPC de rendement 3/4 avec une double diversité. Les paramètres sont ∆ i = 2 et ∆ p = 3. . . . . . . . . . xxxviii 10. Structure de couplage spatial pour un ensemble Root-LDPC pour une fenêtre de couplage de taille w = 2. Seulement les bits de parité sont couplés au noeud contrainte en position spatiale suivante. . . . . . . . . . xxxix 11. Performances d'un ensemble couplé Root-LDPC de rendement 3/4 avec des fenêtres de couplage de taille w = 2, 3, 5. Les paramètres du graphe sont ∆ c = w -1, ∆ i = 2 et ∆ p = 3, 5, 10. . . . . . . . . . . . . . . . . . . xl 12. Graphe non compact bipartiteG = (V 1 , V 2 , E) d'un code produit [4, 2] ⊗2 , i.e. n 1 = n 2 = 4, k 1 = k 2 = 2, |V 1 | = |V 2 | = 4 et |E| = N = n 1 n 2 =16 arêtes représentant 16 symboles dans F q . . . . . . . . . . . . . . . . . . . . xlii xi LIST OF FIGURES 13. Graphe compact bipartite G c = (V c 1 , V c 2 , E c ) avec deux supernoeuds de chaque côté pour les codes produits de la forme [n, n/2] ⊗2 , par exemple |V c = 2 et |E c | = N c = 4 super-symboles. Chaque super-symbole (i.e. super-arête) contient n 2 /4 symboles. . . . . . . . . . . . . . . . . . . xliii 14. Organigramme de l'algorithme DECA pour concevoir un code produit à double diversité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlviii 15. Matrice compacte de coloration (figure a) et les ordres racines associés (figure b) pour le code produit C P 1 = [12, 10] ⊗2 trouvés par DECA, η(φ) = 32 et ρ max = 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l 16. Distribution de η(φ) (figure a) et ρ max (φ) (figure b) pour des colorations d'arêtes aléatoires à double diversité uniformément distribuées dans Φ(E) et Φ(E c ). Code produit [12, 10] ⊗2 . . . . . . . . . . . . . . . . . . . . . . . l 17. Code produit [12, 10] ⊗2 q , sans coloration d'arêtes. Performances des probabilités d'erreur par mot et par symbole pour un décodage itératif versus sa borne de l'union et le décodage ML. . . . . . . . . . . . . . . . . . . . liii 18. Code produit [12, 10] ⊗2 q avec une coloration d'arêtes à double diversité. Probabilité d'erreur par mot versus 4 , pour un décodage itératif sur le canal SEC(q, { i } 4 i=1 ) avec 1 = 2 = 3 . . . . . . . . . . . . . . . . . . . . liv 19. Distributed storage system with a file distributed on n = 4 nodes and collected from k = 2 nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . Binary erasure channel with parameter : BEC( ). . . . . . . . . . . . . . 8 1.2. Structure of a systematic [N, K, d p ] q product codeword. . . . . . . . . . . 17 1.3. Representation of a Single Parity Check SPC(3, 2) 2 , and constraints on variable nodes. Variable nodes on the left are represented by circles and check nodes on the right are represented by squares. . . . . . . . . . . . . 20 1.4. Protograph of a (3, 6) LDPC code (left) and an equivalent compact Tanner graph (right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.5. Tanner graph representation of a (d b = 3, d c = 6) LDPC code. LDPC code has length N , dimension K and coding rate R = 1/2. The 3N edges are randomly chosen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6. Example of bipartite graph of Fountain code. . . . . . . . . . . . . . . . . 26 1.7. Example of Fountain code decoding with k = 3 and n = 4. . . . . . . . . . 27 1.8. Tanner graph of uniform spatially-coupled (3, 6, L, w) ensemble chain. . . 28 1.9. Channel splitting into two channels. . . . . . . . . . . . . . . . . . . . . . 30 2.1. Storage-Bandwidth tradeoff [25]. . . . . . . . . . . . . . . . . . . . . . . . 39 3.1. Parity-check matrix of overlapped L c -layered coding built from (3, 6)regular LDPC ensembles coupled via (1, 2) sparse binary matrices. . . . . 46 3.2. Tanner graph for (3, 6)-regular forward-layered spatial coupling. . . . . . . 46 3.3. Performance of the forward coupled (3, 6; 1, 2; L c ) ensemble. . . . . . . . . 49 3.4. Protographs with (d bs,i , d cs,i ) spatial coupling. . . . . . . . . . . . . . . . . 50 xii LIST OF FIGURES 3.5. BEC thresholds for a non-uniform chain of forward spatial coupling with ℵ = 5 sub-chains each of length L c 1 = L c /5. . . . . . . . . . . . . . . . . . 52 3.6. BEC thresholds for a non-uniform chain of forward spatial coupling with ℵ = L c local ensembles varying with the spatial position. Parameters are L c = 200, d b = 3, d c = 12 to 4, Rate = 0.75 to 0.25. . . . . . . . . . . . . . 53 3.7. Compact Tanner graph representation for a rate-1/2 Root-LDPC ensemble. If the bits transmitted on one fading are erased, the erased information bits are recovered. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.8. Parallel binary erasure channels where half of the bits are transmitted through BEC( 1 ) and the the other half of the bits are transmitted through BEC( 2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.9. Forward-layered spatial coupling of Root-LDPC. The chain is terminated at the right end by the checks placed at the spatial position L c + 1. Since only the parity bits are coupled to the checks, this is a partial coupling scheme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.10. Local tree neighborhood of check node 2c. This tree is used to determine the evolution of the backward coupling message k l+1 1 . . . . . . . . . . . . . 58 3.11. Local tree neighborhood of variable node 1p. This tree is used to determine the evolution of the forward coupling message n l 1 . . . . . . . . . . . . 59 3.12. Local tree neighborhood of variable node 1i. This tree is used to determine the evolution of the local message q l 1 . . . . . . . . . . . . . . . . . . . . . . 59 3.13. Local tree neighborhood of variable node 1i. This tree is used to determine the evolution of the local message f l 1 . . . . . . . . . . . . . . . . . . . . . . 60 3.14. Local tree neighborhood of variable node 1p. This tree is used to determine the evolution of the local message g l 1 . . . . . . . . . . . . . . . . . . . 60 3.15. BEC threshold boundaries for random (3, 6)-LDPC and uncoupled (3, 6) Root-LDPC ensembles in the erasure plane. . . . . . . . . . . . . . . . . . 62 3.16. Saturation of the threshold boundary after coupling parity bits. Threshold boundaries for random (4, 8)-LDPC and coupled (4, 8) Root-LDPC ensembles are shown in the erasure plane. . . . . . . . . . . . . . . . . . . 63 3.17. Parallel binary erasure channels where N/4 bits are transmitted on each channel BEC( i ), i = 1 . . . 4. N is the total code length. . . . . . . . . . . 64 3.18. Compact Tanner graph representation for a rate-3/4 Root-LDPC ensemble for a channel with four colors. . . . . . . . . . . . . . . . . . . . . . . . 65 3.19. Outage boundary for rate-3/4 double-diversity Root-LDPC. Graph parameters are ∆ i = 2 and ∆ p = 3. . . . . . . . . . . . . . . . . . . . . . . 67 3.20. Spatial coupling structure for the Root-LDPC ensemble with a coupling window size w = 2. Only parity bits are coupled to check nodes in the next spatial position. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.21. Boundary performance for rate-3/4 double-diversity Root-LDPC with spatial coupling of window size w = 2, 3, 5. The graph parameters are ∆ c = w -1, ∆ i = 2, and ∆ p = 3, 5, 10. . . . . . . . . . . . . . . . . . . . . 70 xiii LIST OF FIGURES 4.1. Non-compact bipartite graph G = (V 1 , V 2 , E) of a product code [4, 2] ⊗2 , i.e. n 1 = n 2 = 4, k 1 = k 2 = 2, |V 1 | = |V 2 | = 4, and |E| = N = n 1 n 2 = 16 edges representing 16 symbols in F q . . . . . . . . . . . . . . . . . . . . . . 4.2. Compact bipartite graph G c = (V c 1 , V c 2 , E c ) with two supernodes on each side for the product code [n, n/2] ⊗2 , |V c 1 | = |V c 2 | = 2 and |E c | = N c = 4 supersymbols. Each super-symbol (i.e. super-edge) contains n 2 /4 symbols (i.e. edges). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Compact matrix (left) and path in compact graph (right) for a product code [12, 10] ⊗2 showing a maximal root order of 5. . . . . . . . . . . . . . 4.4. Compact matrix (left) and path in compact graph (right) for a product code [14, 12] ⊗ [16, 14] showing a maximal finite root order of 10. . . . . . 4.5. A sub-graph of G representing the size-9 obvious stopping set. The graph G has |E| = 144 edges, |V 2 | = 12 left (row) check nodes, and |V 1 | = 12 left (column) check nodes. Only the stopping set edges are drawn. . . . . 4.6. Flowchart of the edge coloring algorithm (DECA) for designing doublediversity product codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7. Compact coloring matrix (figure a) and the corresponding rootcheck-order matrix (figure b) for the [12, 10] ⊗2 product code C P 1 found by DECA, η(φ) = 32 and ρ max = 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8. Compact coloring matrix (figure a) and the corresponding rootcheck-order matrix (figure b) for the [14, 12] ⊗ [16, 14] product code C P 2 found by DECA, η(φ) = 40 and ρ max = 3. . . . . . . . . . . . . . . . . . . . . . . . 4.9. Compact coloring matrix for the [10, 8] ⊗ [10, 9] product code found by DECA, η(φ) = 40 and ρ max = 2. . . . . . . . . . . . . . . . . . . . . . . . 4.10. Distribution of η(φ) (figure a) and ρ max (φ) (figure b) for double-diversity random edge colorings uniformly distributed in Φ(E) and Φ(E c ). Product code [12, 10] ⊗2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11. Product code [12, 10] ⊗2

4 . 1 .

 41 4 i=1 ) channel with 1 = 2 = 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.14. Size of the rectangular support R(S) given in the three left columns. The twelve different sizes are listed in increasing order within each column. The right column of this table indicates when sizes on the same row are equal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv List of Tables 1. Seuils BEC du couplage spatial multicouches à sens direct versus les seuils du couplage spatial comme proposé dans la littérature pour w = 2, d bs = 1 et d cs = 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxii 3.1. BEC thresholds of uniform spatial coupling versus forward-layered coupling, w = 2, d bs = 1, and d cs = 2. . . . . . . . . . . . . . . . . . . . . . . Sequence of the number of special partitions of the integer , for = 2 . . . 32. Special partitions are described in Definition 4.10. The sequence for standard partitions can be found in [97]. . . . . . . . . . . . . . . . . . 4.2. Number of bipartite graphs not including length-2 cycles from Lemma 4.3 and Lemma 4.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Finite-length performance of the

Figure 1 :

 1 Figure 1: Système de stockage distribué d'un fichier réparti sur n = 4 noeuds et reconstruit à partir de k = 2 noeuds.

Figure 2 : 3 .

 23 Figure 2: Matrice de contrôle de parité, d'un code multicouches à sens direct de longueur L c , construite à partir d'ensembles LDPC réguliers (3, 6) couplés via une matrice creuse binaire (1, 2).

Figure 3 :

 3 Figure 3: Graphe de Tanner du couplage spatial multicouches à sens direct d'un ensemble LDPC (3, 6).

= 1 et d cs = 2 .

 2 Les performances d'un ensemble couplé (d b , d c , L c , w = 2) comme proposé dans la littérature (4ème colonne) sont comparées à celles d'un ensemble couplé multicouches à sens direct (d b -1, d c -2; 1, 2; L c ) (5ème colonne). Pour les deux ensembles couplés, une xxxi R ÉSUM É D ÉTAILL É DE LA TH ÈSE terminaison à droite de la chaîne est faite par p Lc+1 = 0. Pour toutes les longueurs de chaînes L c suffisamment grandes, les résultats sur le seuil sont identiques, typiquement L c = 60 ou L c = 100. La

Figure 4 : 2 )

 42 Figure 4: Performances d'un ensemble (3, 6; 1, 2; L c ) avec un couplage multicouches à sens direct.

Figure 5 :

 5 Figure 5: Seuils BEC pour une chaîne de couplage non uniforme multicouches à sens direct avec ℵ = 5 sous-chaînes chacune de longueur L c 1 = L c /5.

Figure 6 :

 6 Figure 6: Seuils BEC pour une chaîne de couplage non uniforme multicouches à sens direct avec ℵ = L c ensembles locaux variant à chaque position spatiale. Les paramètres sont L c = 200, d b = 3, d c = 12 et 4, Rendement = 0.75 à 0.25.

Figure 7 :

 7 Figure 7: Canaux parallèles BECs où N/4 bits sont transmis sur chaque canal BEC( i ), i = 1 . . . 4. N est la longueur du code.

Figure 8 :

 8 Figure 8: Représentation du graphe de Tanner d'un ensemble Root-LDPC de rendement 3/4 pour un canal avec quatre couleurs/évanouissements.

Figure 9 :

 9 Figure 9: Frontière de coupure d'un code Root-LDPC de rendement 3/4 avec une double diversité. Les paramètres sont ∆ i = 2 et ∆ p = 3.

Figure 10 :

 10 Figure 10: Structure de couplage spatial pour un ensemble Root-LDPC pour une fenêtre de couplage de taille w = 2. Seulement les bits de parité sont couplés au noeud contrainte en position spatiale suivante.

Figure 11 :

 11 Figure 11: Performances d'un ensemble couplé Root-LDPC de rendement 3/4 avec des fenêtres de couplage de taille w = 2, 3, 5. Les paramètres du graphe sont ∆ c = w -1, ∆ i = 2 et ∆ p = 3, 5, 10.

  le code colonne et C 2 est le code ligne. Voici la représentation matricielle d'un code produit:

  xliii R ÉSUM É D ÉTAILL É DE LA TH ÈSE Definition Soit G c le graphe compact d'un code produit, φ ∈ Φ(E c ) une coloration d'arêtes donnée, et e ∈ E c un super-symbole. e a un ordre racine ρ(e) = min(ρ 1 , ρ 2 ) où: 1-Soit υ 1 ∈ V c 1 le sommet voisin colonne de e. ∀f adjacent à e dans υ 1 et φ(f ) = φ(e), nous avons ρ(f ) < ρ 1 . 2-Soit υ 2 ∈ V c 2 le sommet voisin ligne de e. ∀f adjacent à e dans υ 2 et φ(f ) = φ(e), nous avons ρ(f ) < ρ 2 .

Figure 14 :

 14 Figure 14: Organigramme de l'algorithme DECA pour concevoir un code produit à double diversité.

Figure 15 :

 15 Figure 15: Matrice compacte de coloration (figure a) et les ordres racines associés (figure b) pour le code produit C P 1 = [12, 10] ⊗2 trouvés par DECA, η(φ) = 32 et ρ max = 2.

Figure 17 :

 17 Figure 17: Code produit [12, 10] ⊗2 q , sans coloration d'arêtes. Performances des probabilités d'erreur par mot et par symbole pour un décodage itératif versus sa borne de l'union et le décodage ML.

Figure 19 :

 19 Figure 19: Distributed storage system with a file distributed on n = 4 nodes and collected from k = 2 nodes.

Figure 1 . 1 :

 11 Figure 1.1: Binary erasure channel with parameter : BEC( ).

Definition 1 . 4 .Definition 1 . 5 .

 1415 The Hamming distance d(x, y) between x and y is defined as the number of positions at which they differ. The minimum Hamming distance d is given by d = min x =y d(x, y), where x, y ∈ C.

Definition 1 . 8 .

 18 Any code whose minimum Hamming distance d satisfies:

  3 .

2 Figure 1 . 3 :

 213 Figure 1.3: Representation of a Single Parity Check SPC(3, 2) 2 , and constraints on variable nodes. Variable nodes on the left are represented by circles and check nodes on the right are represented by squares.

3 d c = 6 N 2 Figure 1 . 4 :

 36214 Figure 1.4: Protograph of a (3, 6) LDPC code (left) and an equivalent compact Tanner graph (right).

  Figure 1.5: Tanner graph representation of a (d b = 3, d c = 6) LDPC code. LDPC code has length N , dimension K and coding rate R = 1/2. The 3N edges are randomly chosen.

. 6 .Figure 1 . 6 :

 616 Figure 1.6: Example of bipartite graph of Fountain code.

Figure 1 .

 1 Figure 1.6 illustrates an example of Fountain codes, each output node is created by XORing the input nodes connected to it. Input nodes connected to one output node are called neighbors of this node.

1. 7 .

 7 SPATIALLY COUPLED CODES 3. Encode the output symbol by XORing the d j data symbols.

Figure 1 .

 1 7 illustrates a simple example of Fountain code decoding with k = 3 and n = 6.

Figure 1 . 7 :

 17 Figure 1.7: Example of Fountain code decoding with k = 3 and n = 4.

. 8 .

 8 Construction of the coupled (d b , d c , L c , w) ensemble: • The variable nodes are at positions [-L c , L c ], L c ∈ N. At each position there are N variable nodes, N ∈ N, N → +∞. • Check nodes are located at all integer positions from [-∞, +∞]. There are d b dc N check nodes at each position.

Figure 1 . 8 :

 18 Figure 1.8: Tanner graph of uniform spatially-coupled (3, 6, L, w) ensemble chain.

Figure 2 . 1 :

 21 Figure 2.1: Storage-Bandwidth tradeoff [25].

7 .

 7 Consider a (d b , d c )-regular binary LDPC ensemble with M b variable nodes of degree d b and d b dc M b check nodes of degree d c . Edges connecting variable nodes and check nodes are given by a random matching between the d b × M b sockets of variable nodes and the d b × M b sockets of check nodes, see section 3.4 in [86]. It is assumed that M b is infinitely large. This ensemble is referred to as the uncoupled ensemble. The design rate is 1 -d b dc and d b dc = h S is the Shannon threshold [56]. Building a coupled (d b , d c , L c , w) ensemble works as follows. Define L c spatial positions on a horizontal line. On each spatial position i, i = 1 . . . L c , place M b variable nodes and d b dc M b check nodes. Extra check nodes can be added at positions i < 1 and i > L c for the purpose of left and right termination of the coupled chain. The d b edges of a variable node at position i are assumed to be uniformly and independently connected to check nodes in the range [i, i + w -1]. The d c edges of a check node at position i are assumed to be uniformly and independently connected to variable nodes in the range [iw + 1, i].

Figure 3 . 1 :

 31 Figure 3.1: Parity-check matrix of overlapped L c -layered coding built from (3, 6)-regular LDPC ensembles coupled via (1, 2) sparse binary matrices.

Figure 3 . 2 :

 32 Figure 3.2: Tanner graph for (3, 6)-regular forward-layered spatial coupling.

3 ) 1 . 3 . 1 .

 3131 for i = 1 . . . L c . For w = 2, right termination is incorporated by defining p Lc+1 = 0. DE fixed-point equations for a spatially coupled (d b , d c ; d bs , d cs ; L c ) ensemble require more messages because of the multiple edge types. Let p i denote the message from variable node to check node in position i and q i the ongoing message to check node in position i + Proposition Let d b , d c , d bs , and d cs be positive integers satisfying d bs dcs = d b dc . DE equations for a forward-layered spatially coupled (d b , d c ; d bs , d cs ; L) ensemble are

Fig- ure 3 . 3 .

 33 BEC thresholds are plotted versus the spatial position i/L c , for i = 1 . . . L c , for the (3, 6; 1, 2; L c ) ensemble. The coupled ensemble with termination largely overpasses the thresholds of the uncoupled (3, 6) and (4, 8) LDPC. In fact, it saturates at 0.49741 very close to the (4, 8)-LDPC MAP threshold, see the (4, 8) row in Table

Figure 3 . 3 :

 33 Figure 3.3: Performance of the forward coupled (3, 6; 1, 2; L c ) ensemble.

  In this section, LDPC ensembles with different parameters d b and d c are coupled. The local (d b , d c ) ensemble is kept regular (i.e. d b and d c are integer), but the (d bs , d cs ) spatial coupling is not necessarily regular. The objective is to create a stair of thresholds for unequal error protection. Following the same arguments and notations as previously, let us build a non-uniform chain by gluing non-identical LDPC ensembles. Definition 3.1. Consider two coupled ensembles (d b , d c ; d bs , d cs ; L c 1 ) and (d b , d c ; d bs , d cs ; L c 2 ) corresponding to two chains of length L c 1 and L c 2 respectively. The new ensemble defined by gluing the two chains is written as (d b , d c ; d bs , d cs ; L c 1 ) ⊕ (d b , d c ; d bs , d cs ; L c 2 )

From ( 3 . 5 )

 35 (j), d c (j); d bs (j), d cs (j); L c 1 ). (3.4)• λ s (x) = Ψ( d bs + 1d bs , d bs ), • ρ s (x) = Ψ( d cs + 1d cs , d cs ).(3.5) In multiple-edge-type LDPC structures, such as [16][17], both node and edge perspectives are required in DE equations. From an edge perspective, left and right degree distributions associated to (3.5) are λ s (x) = Ψ( d bs d bs ( d bs + 1d bs ), d bs -1), ρ s (x) = Ψ( dcs dcs ( d cs + 1d cs ), d csor (3.6), the reader can easily check that given distributions have average degrees d bs and d cs . The non-uniform chain of length L c = ℵL c 1 comprises ℵ pairs (d bs (j), d cs (j)), for j = 1 . . . ℵ.

Figure 3 . 4 :

 34 Figure 3.4: Protographs with (d bs,i , d cs,i ) spatial coupling.

  and d cs = d cs,i ∈ R + with the following layered coding constraintd bs,i d cs,i = d b,i+1d c,i+1 , i.e. the degree ratio for a spatial coupling at position i is imposed by the protograph at position i + 1.

•

  λ(x) = Ψ( d b + 1d b , d b ). The spatially-variant chain becomes Lc i=1 (d b,i , d c,i ; d bs,i , d cs,i ; 1).

Fanny Jardel 51 CHAPTER 3 .Figure 3 . 5 :

 51335 Figure 3.5: BEC thresholds for a non-uniform chain of forward spatial coupling with ℵ = 5 sub-chains each of length L c 1 = L c /5.

Figure 3 . 6 :

 36 Figure 3.6: BEC thresholds for a non-uniform chain of forward spatial coupling with ℵ = L c local ensembles varying with the spatial position. Parameters are L c = 200, d b = 3, d c = 12 to 4, Rate = 0.75 to 0.25.

Figure 3 . 7 :

 37 Figure 3.7: Compact Tanner graph representation for a rate-1/2 Root-LDPC ensemble. If the bits transmitted on one fading are erased, the erased information bits are recovered.

Figure 3 . 8 :

 38 Figure 3.8: Parallel binary erasure channels where half of the bits are transmitted through BEC( 1 ) and the the other half of the bits are transmitted through BEC( 2 ).

3 . 1 ,

 31 we have four more coupling messages. Let us define the coupling message densities as follows:

Proposition 3 . 4 .

 34 Let (d b , d c ) denote the degrees of variable nodes and check nodes of the uncoupled regular LDPC ensemble and (d bs , d cs ) denote the degrees of the extra edges for coupling the parity variable nodes and the checks. Then, DE equations for forwardlayered spatially coupled Root-LDPC ensemble are given by (3.22) -(3.26) for variable node types 1i and 1p. DE equations for variable node types 2i and 2p can be derived by changing the node types and indices accordingly.

Figure 3 . 10 :

 310 Figure 3.10: Local tree neighborhood of check node 2c. This tree is used to determine the evolution of the backward coupling message k l+1 1 .

Figure 3 Figure 3 . 15 :

 3315 Figure 3.15: BEC threshold boundaries for random (3, 6)-LDPC and uncoupled (3, 6) Root-LDPC ensembles in the erasure plane.

Figure 3 . 16 :

 316 Figure 3.16: Saturation of the threshold boundary after coupling parity bits. Threshold boundaries for random (4, 8)-LDPC and coupled (4, 8) Root-LDPC ensembles are shown in the erasure plane.

Figure 3 . 17 :

 317 Figure 3.17: Parallel binary erasure channels where N/4 bits are transmitted on each channel BEC( i ), i = 1 . . . 4. N is the total code length.

Figure 3 . 18 :

 318 Figure 3.18: Compact Tanner graph representation for a rate-3/4 Root-LDPC ensemble for a channel with four colors.

. 36 )Figure 3 . 19 :

 36319 Figure 3.19: Outage boundary for rate-3/4 double-diversity Root-LDPC. Graph parameters are ∆ i = 2 and ∆ p = 3.

CHAPTER 3 .

 3 SPATIAL COUPLING FOR CODES AND DIVERSITY 4c

Figure 3 . 20 :

 320 Figure 3.20: Spatial coupling structure for the Root-LDPC ensemble with a coupling window size w = 2. Only parity bits are coupled to check nodes in the next spatial position.

Figure 3 . 21 :

 321 Figure 3.21: Boundary performance for rate-3/4 double-diversity Root-LDPC with spatial coupling of window size w = 2, 3, 5. The graph parameters are ∆ c = w -1, ∆ i = 2, and ∆ p = 3, 5, 10.

  Figure 4.1: Non-compact bipartite graph G = (V 1 , V 2 , E) of a product code [4, 2] ⊗2 , i.e. n 1 = n 2 = 4, k 1 = k 2 = 2, |V 1 | = |V 2 | = 4, and |E| = N = n 1 n 2 = 16 edges representing 16 symbols in F q .

Figure 4 . 2 :

 42 Figure 4.2: Compact bipartite graph G c = (V c 1 , V c 2 , E c ) with two supernodes on each side for the product code [n, n/2] ⊗2 , |V c 1 | = |V c 2 | = 2 and |E c | = N c = 4 supersymbols. Each super-symbol (i.e. super-edge) contains n 2 /4 symbols (i.e. edges).

Figure 4 . 3 :

 43 Figure 4.3: Compact matrix (left) and path in compact graph (right) for a product code [12, 10] ⊗2 showing a maximal root order of 5.

Corollary 4 . 3 .

 43 Let C P = C 1 ⊗ C 2 be a product code with MDS components C 1 and C 2 having minimum Hamming distance d 1 and d 2 respectively. Assume that symbols (edges) of G

Figure 4 . 5 :

 45 Figure 4.5: A sub-graph of G representing the size-9 obvious stopping set. The graph G has |E| = 144 edges, |V 2 | = 12 left (row) check nodes, and |V 1 | = 12 left (column) check nodes. Only the stopping set edges are drawn.

Example 4 . 5 .

 45 Consider the [9, 6, 4] ⊗2 q product code where d 1 = d 2 = 4 and q > 9. Assume that our palette has M = 3 colors. The non-compact graph admits an ensemble of |Φ(E)| = 4490186382903298862950669893074864640 edge colorings! The compact graph has |Φ(E c )| = 1680 only.

Example 4 . 6 .

 46 Consider a C 1 ⊗ C 2 product code where C 1 and C 2 are both MDS with minimum Hamming distance 3. The stopping set given by (4.19) cannot have a large rectangular support. In general, all stopping sets of size d 1 d 2 have a rectangular support of fixed dimensions d 1 × d 2 . Now, let w = 12. As indicated in Example 4.4, stopping sets of size 12 may be included in rectangular supports of dimensions 3 × 4, 4 × 3, and 4 × 4. For w = 12, it is impossible to build a 4 × 5 rectangular support (reductio ad absurdum) making 0 1 = 4 and 0 2 = 4. A similar proof by contradiction yields 0 1 = 5 and 0 2 = 5 for w = 15. The next lemma gives an obvious upper bound of the size of R(S) by stating a simple limit on the number of zeros (non-erased positions) inside R(S).

Lemma 4 . 2 .

 42 Let R(S) be the 1 × 2 rectangular support of a stopping set S of size w. Let β = 1 2w be the number of zero positions, or equivalently β is the size of the set R(S) \ S. Thenβ ≤ min(( 1d 1 ) 2 , 1 ( 2d 2 )).(4.26)

4 .

 4 In the sequel, the open interval between two real numbers a and b will be denoted ]a, b[, ]a, b[ = {x ∈ R : a < x < b}.

-•

  R(S) has size d(d + 2). Each column must have at least d erasures. Then S can only be obvious with weight d(d + 2) which contradicts w = d(d + 1). Hence, this size of rectangular support yields no stopping sets, τ w = 0 in this sub-case. -R(S) has size (d + 1)(d + 1). Let β be the number of zeros in R(S), β = (d + 1) 2w = d + 1. All these stopping sets are found by considering the (d + 1)! permutations where a unique 0 is placed per row and per column. Then, the binomial coefficient must be multiplied by (d + 1)! which yields the τ b announced in the theorem for w = d(d + 1). -R(S) has size (d + 1)(d + 2). The number of zeros is β = (d + 1)(d + 2)w = 2d + 2. Then β > d + 2 = ( 1d) 2 which contradicts Lemma 4.2. We get τ w = 0 in this sub-case. The same arguments are valid for larger rectangles. The case d(d + 1) < w < d(d + 2). Let us write w = d 2 +d+λ, where λ ∈ [1, d-1]. We consider below three sub-cases corresponding to admissible sizes of R(S). -The smallest R(S) is d × (d + 2) or (d + 2) × d. Take the rectangle of size d × (d + 2). Each column must have at least d erasures. Then S can only be obvious with weight d(d + 2) which is outside the range for w in this case.

•

  R(S) has size (d + 1)(d + 2). The number of zeros is β = (d + 1)(d + 2)w = 2d + 2λ ∈ [d + 3, 2d + 1]. Then β > d + 2 = ( 1d) 2 which contradicts Lemma 4.2. In a similar way, it can be proven that τ w = 0 in the sub-case R(S) with size (d + 2) 2 . The case w = d(d + 2). The admissible rectangular support can have four sizes: d(d + 2), (d + 1)(d + 1), (d + 1)(d + 2), and (d + 2)(d + 2).

  The case w = (d + 1)(d + 1). The admissible rectangular support can have three possible sizes (d + 1)(d + 1), (d + 1)(d + 2), and (d + 2)(d + 2).

and x d 1 •

 1 +2 and y d 1 +2 are determined from Lemma 4.3 and Lemma 4.4 respectively. Case B: d 2 = 2d 1 . For w ∈]d 1 (d 2 + 1), (d 1 + 1)d 2 [. τ a = τ b = 0. • For w = (d 1 + 1)d 2 = d 1 (d 2 + 2).

  For non-obvious stopping sets and non-obvious codewords, establishing a clear relationship is still an open problem. This is directly related to solving the weight enumeration beyond d 1 d 2 + max(d 1 , d 2 ). In the special case d 1 = d 2 = d, Sendrier gave upper bounds of the number of erasure patterns for a weight up to d 2 + 2d -1[START_REF] Sendrier | Codes correcteurs d'erreurs à haut pouvoir de correction[END_REF].

.35) 4 . 4 .

 44 EDGE COLORING ALGORITHM UNDER CONSTRAINTS Proof. Consider the |V c 1 | × |V c 2 | matrix representation of G c .A sufficient condition to get ρ max (φ) = 1 is to assign the N c /M edges having the same color to a single row or a single column. The sufficient condition for ρ max

CHAPTER 4 .

 4 EDGE COLORING IN PRODUCT CODE GRAPHScolor 'R' and use the following number of letters per row:

Figure 4 . 6 :

 46 Figure 4.6: Flowchart of the edge coloring algorithm (DECA) for designing doublediversity product codes.

Figure 4 . 7 :

 47 Figure 4.7: Compact coloring matrix (figure a) and the corresponding rootcheck-order matrix (figure b) for the [12, 10] ⊗2 product code C P 1 found by DECA, η(φ) = 32 and ρ max = 2.

Example 4 . 8 .

 48 Figure 4.7(a) shows the matrix representation of a special φ 1 found by DECA. It has η(φ 1 ) = 32 which corresponds to η = 128 in (V 1 , V 2 , E). The corresponding rootcheck order matrix is shown in Figure 4.7(b). The highest attained order for this coloring is ρ max (φ) = 2. The maximal order for all colorings in Φ(E c ) from Theorem 4.1 is ρ u = 5. This coloring satisfies equality in (4.8) since 2ρ max (φ) + η min (φ) = 12. The second more challenging application of DECA is the design of a double-diversity product code attaining the block-fading/block-erasure Singleton bound. Let us consider C P 2 = [n 1 , k 1 , d 1 ] q ⊗ [n 2 , k 2 , d 2 ] q , where n 1 = 14, k 1 = 12, n 2 = 16, k 2 = 14, d 1 = d 2 = 3, and the finite-field alphabet size is q > 16. The coding rate is R(C P 2 ) = 1 -1/M = 3/4. From (4.5) and (4.6), the total number of edge colorings is |Φ(E)| ≈ 10 131 in the non-compact graph and |Φ(E c )| ≈ 10 31 in the compact graph. The differential evolution parameter ℵ is set to 7. The diversity subroutine is activated with ℵ 1 = 8. We have Λ max (7, 4) + Λ max (8, 4) = 3150 |Φ(E c )| |Φ(E)|.

Figure 4 .

 4 8(a) shows the matrix representation of a special φ 1 found by DECA. It has η(φ 1 ) = 40 which corresponds to η = 160 in (V 1 , V 2 , E). The rootcheck order matrix is shown in Figure4.8(b). The highest attained order for this coloring is ρ max (φ) = 3. The maximal order for all colorings in Φ(E c ) from Theorem 4.1 is ρ u = 7. This coloring satisfies 2ρ max (φ) + η min (φ) = 16 while the right term in (4.8) is 17.

R

Figure 4 . 8 :Figure 4 . 9 :

 4849 Figure 4.8: Compact coloring matrix (figure a) and the corresponding rootcheck-order matrix (figure b) for the [14, 12] ⊗ [16, 14] product code C P 2 found by DECA, η(φ) = 40 and ρ max = 3.

Figure 4 . 10 :

 410 Figure 4.10: Distribution of η(φ) (figure a) and ρ max (φ) (figure b) for double-diversity random edge colorings uniformly distributed in Φ(E) and Φ(E c ). Product code [12, 10] ⊗2 .

  (a) and 4.10(b). For C P 2 , one double-diversity random coloring reached η(φ) = 128 and ρ max (φ) = 4 out of the 2 billion samples from Φ(

  Examples 4.3 & 4.4 and Theorems 4.2 & 4.3, we state an obvious result about obvious stopping sets in the following proposition.

Proposition 4 . 3 .

 43 Let C P = C 1 ⊗C 2 be a product code with non-binary MDS components. All obvious stopping sets are supports of product code codewords.

  Proposition 4.3, we get the equality Ψ d 1 d 2 (G) = Ψ d 1 d 2 (M L) and so we obtain lim →0 P G ew /P M L ew = 1.

Figure 4 . 11 :

 411 Figure 4.11: Product code [12, 10] ⊗2q , no edge coloring. Word and symbol error rate performance for iterative decoding versus its union bound and ML decoding.

Figure 4 . 13 :

 413 Figure 4.13: Product code [12, 10] ⊗2 q

(d 1 (d 1 + 2 )(d 2 + 1 )(d 1 + 2 )d 2 (d 1 + 1 )(d 2 + 2 )(d 1 + 1 )(d 2 + 1 )(d 1 + 1 )d 2 d 1 (d 2 + 2 ) d 1 (d 2 + 1 ) d 1 d 2 (d 1 + 1 )(d 2 + 3 ) d 1 (d 2 + 3 )d 2 = 2d 1 d 2 = 2d 1 - 1 d 2 = 2d 1 + 2 d 2 = 2d 1 + 1 Figure 4 . 14 :•is n 1 d 1 n 2 d 2 + 1 .--

 1121122112111111211211313212122214141 Figure 4.14: Size of the rectangular support R(S) given in the three left columns. The twelve different sizes are listed in increasing order within each column. The right column of this table indicates when sizes on the same row are equal.

Figure 4 . 14 . 4 .A. 1 1 ••

 414411 Minimum distances satisfying d 2 < 2d The case d 1 (d 2 + 1) < w < (d 1 + 1)d 2 . The smallest R(S) has size (d 1 + 1) × d 2 and the largest has size (d 1 + 2) × (d 2 + 3). All these stopping sets contradict Lemma 4.2 if β is computed from the size of R(S) and w. Then τ w = 0. The case w = (d 1 + 1)d 2 .

d 1 ×(d 1 + 1 -

 111 (d 2 + 2). Lemma 4.2 gives β = 0 but β = d 1 (d 2 + 2) -(d 1 + 1)d 2 = 2d 1d 2 ≥ 1. Then τ w = 0 in this sub-case. -R(S) has size (d 1 + 1) × (d 2 + 1). We have β = d 1 + 1 and d 2d 1 columnshave no 0. The β zeros should be in a (d 1 + 1) × (d 1 + 1) permutation matrix in the remaining β columns. These stopping sets are not obvious and their number is All other R(S) greater than the previous case have τ w = 0 because of a contradiction on β.• The case (d 1 + 1)d 2 < w < d 1 (d 2 + 2). Let us write w = (d 1 + 1)d 2 + λ, where λ belongs to [1, 2d 1d 2 -1]. If d 2 = 2d 1 -1this range for λ is empty and we obtain τ w = 0. Then, we consider d 2 < 2d 1 -1.

Both d 1 × 2 d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2 •- 2 -

 121111222 (d 2 + 3) and (d 1 + 2) × d 2 lead to a contradiction on β. Now we consider the rectangle of size (d 1 + 1) × (d 2 + 2). The number of zeros is β = d 2 + 2. All columns must have a single 0. Regarding the rows, let r 0 , r 1 , and r 2 be the number of rows with 0, 1, and 2 zeros respectively. We haver 0 + r 1 + r 2 = d 1 + 1 and β = 2r 2 + r 1 .Combining the two previous equalities yields 2r 0 + r 1 = 2d 1d 2 . Many similar cases where encountered in the proof of Theorem 4.2. The number of these non-obvious stopping sets becomes 2r 0 +r 1 =2d 1 -d The case d 1 (d 2 + 2) < w < (d 1 + 1)(d 2 + 1). Let us write w = d 1 (d 2 + 2) + λ, where λ belongs to the interval [1, d 2d 1 ]. The smallest rectangle has size (d 1 + 1)(d 2 + 1). The number of zeros is β = d 2d 1 + 1λ ∈ [1, d 2d 1 ]. The number of these non-obvious stopping sets is found by counting all β × β permutation matrices in all positions, (d 2d 1 + 1λ)! d 1 + 1 2d 1d 2 + λ d The next R(S) has size (d 1 + 1)(d 2 + 2) according to the table in

Figure 4 . 14 ,+r 1 =2d 1 -d 2 +λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2

 4141111122 since both sizes d 1 (d 2 + 3) and (d 1 + 2)d 2 lead to a contradiction on β. The number of zeros for this rectangular support isβ = d 2 +2-λ ∈ [d 1 +2, d 2 +1].The (d 2 + 2) columns satisfy: λ columns have no zero and β columns have a unique zero. As usual, we solve β = 2r 2 + r 1 andr 0 + r 1 + r 2 = d 1 + 1 to get 2r 0 + r 1 = 2d 1d 2 + λ and r 2 = r 0 + λd 1 -1.The number of non-obvious stopping sets in this case is 2r 0

4.A. 2 1 •

 21 Minimum distances satisfying d 2 = 2d The case d 1 (d 2 + 1) < w < (d 1 + 1)d 2 = d 1 (d 2 + 2). Write w = d 1 (d 2 + 1) + λ, where λ is in the range [1, d 1 -1]. For all sizes of R(S) in the table in

Figure 4 .

 4 [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF], we find β = 1 2w and we notice that it contradicts Lemma 4.2. Thus, there are no stopping sets for w in the range ]d 1 (d 2 + 1), (d 1 + 1)d 2 [.• The case w = (d 1 + 1)d 2 = d 1 (d 2 + 2).

-

  The case (d 1 + 1)d 2 < w < d 1 (d 2 + 3). τ w = 0 for d 1 = 2. We pursue this case for d 1 > 2. Write w = (d 1 +1)d 2 +λ where λ belongs to the non-empty interval [1, 3d 1 -d 2 -1]. The next rectangular support with a non-zero number of stopping sets is (d 1 + 1)(d 2 + 1). The number of zeros is β = d 1 + 1λ varying in the range [d 2 -2d 1 + 2, d 1 ]. Non-obvious stopping sets are enumerated by selecting the location and permuting the β zeros inside R(S). Their number is (d 1 + 1λ)! d 2 + 1 d 1 + 1 -

d 1 n 2 d 2 1 d 1 +1 n 2 d 2 1 d 1 +2 n 2 d 2 (d 2 -2d 1 + 1 --APPENDICES 2r 0 +r 1 =3d 1 -d 2 +λ d 1 + 1 r 0 d 1 + 1 -r 0 r 1 (d 2 + 2 where r 2 = d 1 + 1 -r 0 -r 1 .- 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3 where r 3 = d 1 + 1 -r 0 -r 1 -r 2 .-•

 2211211222111111122211111111122331112 +4 obvious stopping sets of size d 1 × (d 2 + 4), n +4 obvious stopping sets of size (d 1 + 1) × (d 2 + 4), and n +4 obvious stopping sets of size (d 1 + 2) × (d 2 + 4). Given that this theorem enumerates stopping sets for w ≤ (d 1 + 1)(d 2 + 1), one should only count obvious d 1 × (d 2 + 4) sets.• The case d 1 (d 2 + 3) < w < (d 1 + 1)(d 2 + 1). Write w = d 1 (d 2 +3)+λ where λ ∈ [1, d 2 -2d 1 ]. The results for the three rectangles listed below are valid for d 1 ≥ 2.-Consider R(S) of size (d 1 + 1)(d 2 + 1). We have β = d 2 -2d 1 + 1λ varying in the range [1, d 2 -2d 1 ]. The number of non-obvious stopping sets is Now consider R(S) of size (d 1 + 1)(d 2 + 2). We have β = d 2d 1 + 2λ ∈ [d 1 + 2, d 2d 1 + 1].As done before, the expression of the number of nonobvious stopping sets involves r 0 and r 1 as follows.Fanny Jardel 141 We consider the next (d 1 +1)(d 2 +3) rectangular support. Now β = d 2 +3-λ ∈ [2d 1 + 3, d 2 + 2]. The number of non-obvious stopping sets is 3r 0 +2r 1 +r 2 =3d 1 -d 2 +λ d The remaining larger rectangular supports give no stopping sets, except for (d 1 + 1)(d 2 + 4) for d 1 = 2 and d 2 = 6 where τ w = 22050. These 22050 rectangles of size 3 × 10, where β = 10 and w = 20, have one zero in each column but a row may have up to four zeros. The last case w = (d 1 + 1)(d 2 + 1).

2 6 r 3 (d 2 -2d 1 +where r 3 = d 1 + 1 -c

 321311 r 0r 1r 2 , the above expression being valid for d 1 ≥ 2.FannyJardel 142 4.A. PROOF OF THEOREM -No stopping sets are found for the remaining three rectangular supports for d 1 > 2. On the other hand, for d 1 = 2, stopping sets are found only with a rectangle (d 1 + 1)(d 2 + 4). In this case, we have β = 3(d 1 + 1). The number of non-obvious stopping sets is τ w = 11130 for (d 1 , d 2 ) = (2, 5) and τ w = 111300 for (d 1 , d 2 ) = (2Copyright by Fanny Jardel, 2015. All rights reserved.

  La propagation de croyance des seuils est réalisée sur un canal BEC pour différents ensembles LDPC de rendement 1/2. Ces seuils sont listés Table1pour d bs

où f i+1 est un message d'un noeud contrainte en position i + 1 à un noeud variable position i se propageant vers le passé.

Table 1 :

 1 Table 1 montre que le couplage multicouches à sens direct permet d'obtenir de meilleurs résultats que le couplage proposé dans la littérature. Seuils BEC du couplage spatial multicouches à sens direct versus les seuils du couplage spatial comme proposé dans la littérature pour w = 2, d bs = 1 et d cs = 2.

	Ensemble h BP uncoupled	h M AP uncoupled	h BP unif orm	h BP f orward
	(3,6)	0.42944	0.48815	0.48808 0.48815
	(4,8)	0.38345	0.49774	0.49442 0.49741
	(5,10)	0.34155	0.49948	0.48268 0.49811
	(6,12)	0.30746	0.49988	0.46031 0.49667

  Le seuil en escalier sature sur le seuil de Shannon en escalier défini par les cinq seuils de Shannon des ensembles locaux. Les performances du couplage spatialement variant sont tracées Figure 6 pour le canal à effacement binaire et L c = 200.

									, (1, 2), (1.2, 2) et
	0.3 0.4 0.5 0.6 0.7 0.8 (1.5, 2). 0.2 BEC Threshold (epsilon max)		dcs=
	0	0.1	0.2	0.3	0.4	0.5	0.6	0.7	0.8	0.9	1
					Layer Level (normalized)

  Nous avons ensuite appliqué cette technique aux ensembles Root-LDPC afin de satisfaire aux exigences et contraintes du stockage distribué.

	R ÉSUM É D ÉTAILL É DE LA TH ÈSE
					Uncoupled root-LDPC Ensemble
		0.30				Capacity Boundary
						Ergodic Line
	Erasure Probability epsilon2=epsilon3=epsilon4	0.10 0.15 0.20 0.25				Coupled Ensemble w=1 Coupled Ensemble w=2 Coupled Ensemble w=4
		0.05
		0.00
		0	0.2	0.4	0.6	0.8	1
				Erasure Probability epsilon1
				xxxix

  Dans ce chapitre, nous avons étudié les ensembles LDPC spatialement couplés et les ensembles Root-LDPC spatialement couplés. Ces codes permettent d'atteindre un bon compromis entre une bonne localité et un décodage itératif. Cependant, les codes LDPC et Root-LDPC ne sont pas adaptés pour les applications de stockage distribué nécessitant une mise à jour des données. En effet, en termes de complexité la mise à jour des données est équivalente à refaire un codage total des données. Or, le processus xl R ÉSUM É D ÉTAILL É DE LA TH ÈSE de codage est lourd car la matrice de parité des codes LDPC étant creuse leur matrice génératrice est dense. Dans le chapitre suivant, un nouveau schéma de codage utilisant les codes produits à double diversité est proposé afin de remédier à ce problème.Dans ce chapitre, nous étudierons les codes produits. Un code produit bi-dimensionel est le produit de Kronecker de deux codes élémentaires linéaires en blocs C 1 et C 2 :

	1 O(log n) d Chapitre 3: Coloration d'arêtes sur le graphe d'un code d c -1 Effacements par blocs produit

c -1 Les codes Root-LDPC, grâce à la structure de rootchecks, sont plus adaptés au stockage distribué dans le cas d'effacements par blocs (couleurs). En effet, la localité est beaucoup plus faible pour les codes Root-LDPC, dans le cas d'effacements par blocs, que pour les codes LDPC aléatoires.

  4 super-symboles. Chaque super-symbole (i.e. super-arête) contient n 2 /4 symboles. Prenons l'exemple du code produit [12, 10] ⊗2 avec M = 4 couleurs, il y a 2 • 10 83 possibilités de colorations sur le graphe non compact et 2 • 10 19 sur le graphe compact. Il est donc clair que la construction de codes produits pour la diversité est beaucoup plus facile quand elle est basée sur le graphe compact

  C P atteint une double diversité sous un décodage itératif ligne-colonne si et seulement si ρ max (φ) < ∞. Dans ce cas, nous disons que φ est une coloration à double diversité et tout symbole e ∈ E c peut être résolu après au plus ρ max itérations de décodage avec ρ max (φ) ≤ ρ u .

	R ÉSUM É D ÉTAILL É DE LA TH ÈSE
	effacés.
	La définition exacte d'un ensemble d'arrêt dépend du décodage itératif. Pour les codes
	produits, quatre méthodes de décodage sont connues:
	• Type I: Décodeur ML. Il s'agit d'un décodeur non itératif. Il est basé sur une réduction de Gauss de la matrice de contrôle de parité du code produit.
	• Type II: Décodeur algébrique itératif. Lors des itérations de décodage impaires, les codes élémentaires C 1 de chaque colonne sont décodés par un décodeur algébrique
	qui remplit jusqu'à d-1 effacements. De même, lors des itérations paires, les codes
	élémentaires C 2 sur chaque ligne sont décodés par un décodeur algébrique.
	• Type III: Décodeur itératif ML-par-code-élémentaire. Ce décodeur a été étudié par Rosnes dans [88] pour les codes produits binaires. Lors des itérations de décodage
	impaires, les codes colonnes C 1 sont décodés par un décodeur optimal (ML pour
	C 1 ). Lors des itérations de décodage paires, les codes lignes C 2 sont décodés par
	un décodeur optimal similaire (ML pour C 2 ).
	• Type IV: Décodeur itératif à propagation de croyance basé sur le graphe de Tanner de C P , comme étudié par Schwartz et al. pour les codes linéaires en blocs [93] et
	Di et al. pour les codes LDPC [27].
	Les trois décodeurs itératifs énumérés ci-dessus donnent lieu à trois types différents
	d'ensemble d'arrêt. Il est prouvé dans cette thèse par le Corollaire 4.2 et la Prosposi-
	tion 4.2, que les ensembles d'arrêt de type II et de type III sont identiques si les codes
	élémentaires sont MDS.
	Nous pouvons maintenant définir la localité d'un code produit. On rappelle que la
	localité est le nombre de symboles à contacter afin de réparer un symbole effacé. En
	vertu du décodage algébrique ligne-colonne des codes élémentaires, la localité d'un code
	produit par itération de décodage est max(n 1 , n 2 ). Si l'on considère un décodage ML des
	codes élémentaires MDS, la localité devient max(k 1 , k 2 ). Finalement pour un code de
	produit avec décodage algébrique ligne-colonne, le transfert d'information par symbole
	est borné par
	ρ max (φ) × max(n 1 , n 2 ).	(10)
	Nous allons maintenant introduire une définition simple et générale d'un ensemble d'arrêt
	pour un code linéaire.
	Definition Soit C[n, k] q un code linéaire. Supposons que les symboles du mot de code
	soient transmis sur un canal à effacement et que le décodeur D utilise une méthode de décodage déterministe. Considérons un ensemble S de s positions fixées i 1 , i 2 , . . . , i s où 1 ≤ i j ≤ n. L'ensemble S est dit être un ensemble d'arrêt si D ne peut pas retrouver le mot de code transmis lorsque tous les symboles sur les s positions données par S sont
	xliv

  .e. le support rectangulaire est le plus petit rectangle 1 × 2 contenant toutes les lignes et colonnes de S. Définition Considérons un code produit C P = C 1 ⊗ C 2 . Soit S ⊆ {1, . . . , n 1 } × {1, . . . , n 2 } avec |R 1 (S)| = 1 and |R 2 (S)| = 2 . Considérons les 1 lignes de S données par S

	Une définition formelle d'un ensemble d'arrêt est donné ci-dessous
	(i) r = {j : (i, j) ∈ S} et les 2 colonnes de S données par S c (j) L'ensemble S est un ensemble d'arrêt de type III pour C P si il existe des sous codes = {i : (i, j) ∈ S}. linéaires C

  et (8) nous déduisons que le nombre total de colorations d'arêtes est |Φ(E)| ≈ 10 83 sur le graphe non compact et |Φ(E c )| ≈ 10 19 sur le graph compact.

	R ÉSUM É D ÉTAILL É DE LA TH ÈSE
			Le paramètre	à
	évolution différentielle ℵ est fixé à 8. La sous-routine à diversité est désactivée. Nous avons
	Λ max (8, 4) = 2520	|Φ(E c )|	|Φ(E)|.
	Pour presque tous les choix de colorations initiales φ 0 uniformément distribués dans Φ(E c ), DECA atteint une coloration φ 1 à double diversité. Pour à peu près un choix
	parmi trois de φ 0 , l'algorithme retourne une coloration φ 1 telle que η(φ 1 ) ≥ 28. La Fig-ure 15(a) montre la représentation matricielle d'une coloration φ 1 trouvée par DECA.
	Elle possède 32 super-symboles d'ordre 1 ce qui correspond à η = 128 symboles d'ordre
	1 dans (V 1 , V 2 , E). Les ordres racines associés sont affichés sur la Figure 15(b). L'ordre
	le plus haut atteint pour cette coloration est ρ max (φ) = 2. Cela signifie que chaque
	super-symbole est décodé en au plus deux itérations de décodage.
	L'efficacité de l'algorithme DECA a été validée dans l'exemple précédent en termes de
	nombre d'arêtes d'ordre 1 et de l'ordre racine maximal atteint parmi toutes les arêtes.
	De toute évidence, tout en évoluant d'une coloration à une autre afin d'obtenir le plus
	grand η(φ) possible, DECA a également produit un très petit ordre maximal ρ max (φ).
	Il est aussi important de noter que toutes les constructions déterministes semblent être
	vouées à l'échec étant donné la taille considérable des ensembles Φ(E) et Φ(E c ).
		xlix

  code produit à codes élémentaires non MDS. Tous les ensembles d'arrêt évidents (obvious) sont le support d'un mot de code du code produit.

				R ÉSUM É D ÉTAILL É DE LA TH ÈSE
				Product Code [12,10,3] 2 on a Symbol Erasure Channel, field is F 256
		10 0
		10 -1
	Probability of Error after Decoding	10 -5 10 -4 10 -3 10 -2	Corollaire Considérons un code produit C P = C 1 ⊗ C 2 avec des codes élémentaires MDS non binaires. Supposons que les symboles de C P soient transmis à travers un canal SEC(q, ), alors pour 1, la probabilité d'erreur satisfait P G ew ∼ P M L ew . Les motifs d'effacement peuvent être décomposés suivant la taille de l'ensemble d'arrêt couvert. Le coefficient Ψ i (G) devient Ψ i (G) = i w=d 1 d 2 Ψ i,w (G), où Ψ i,w (G) est le nom-bre de motifs de poids i couvrant un ensemble d'arrêt de taille w. Il est clair que Ψ w,w (G) = τ w . Pour un petit i -w, Ψ i,w (G) peut être approximé par A N -A i-w τ w,A , où τ w,A est le nombre d'ensemble d'arrêt de taille w ayant |R(S)| = A. Une évaluation Pew, Iterative alg. decoding Pes, Iterative alg. decoding Pew, ML decoding numérique de Ψ i (G) est envisageable pour des codes très courts (N ≤ 25), cela devient très difficile pour des codes de taille modérée et au-delà, e.g. N = 144 et N = 224 pour Pes, ML decoding
		10 -6	les codes [12, 10] ⊗2 et [14, 12] ⊗ [16, 14] respectivement. Union bound on Pew (iterative) Union bound on Pes (iterative)
			Pour P G ew , grâce aux Théorèmes 4.2 et 4.3 (voir les détails de l'énumération dans la
		thèse), une borne de l'union peut facilement être établie. En effet, nous avons 0.05 10 -7 0.10 0.15 0.20 0.25 0.30 0.35
				P G ew = P rob(∃S covered) ≤ Channel Erasure Probability
			conduisant	à	N
				P G ew ≤ P U ( ) =	w=d 1 d 2	τ w	w .	(19)
			D'après le Théorème 4.2, la borne de l'union P U ( ) pour le code produit [12, 10, 3] ⊗2 q est
				P U ( ) =48400 9 + 6098400 12 + 23522400 13 + 17641800 14
				+ 1754335440 15 + 9126691200 16 + o( 16 ).
			Les performances de ce code sur le canal SEC(q, ) sont illustrées Figure 17. Nous con-
			sidérons le corps fini standard de taille q = 256. La borne de l'union pour la probabilité
			d'erreur par symbole P G es est obtenue en pondérant le terme de sommation dans (19) avec w/N , i.e. P G es ≤ N w=d 1 d 2 w w . Comme on peut l'observer sur la Figure 17, N τ w la borne de l'union est suffisamment précise. De plus, les performances du décodeur
			algébrique itératif ligne-colonne sont très proches des performances du décodeur ML.
			Pour de faibles , les courbes se superposent comme prédit par le corollaire précédent.
			Effacements à probabilité inégale
			Dans les systèmes de communication et de stockage, des effacements à probabilité inégale
			peuvent se produire. Afin d'observer l'effet d'une coloration à double diversité sur la
				lii

w P rob(∃S : |S| = w, S covered),

  . L'expression de P U ( 1 , . . . , M ) est déterminée par l'énumération des ensembles d'arrêt voir les Théorèmes 4.2 et 4.3. Le cas particulier où 1 = 2 = 3 est considéré et les performances sont tracées en fonction de 4 . Pour 1 fixé, la double diversité améliore considérablement les performances en fonction de 4 .

	R ÉSUM É D ÉTAILL É DE LA TH ÈSE
	avec la représentation graphique du code produit. Une caractérisation complète des
	ensembles d'arrêt est donnée jusqu'à un poids (d 1 + 1)(d 2 + 1). Nous avons ensuite
	proposé un algorithme à évolution différentielle pour concevoir une coloration d'arêtes
	avec un grand nombre de symboles ayant un ordre racine minimal. La complexité de
	cet algorithme par itération est o(M ℵ ), où ℵ est le paramètre à évolution différentielle. Les performances d'un code produit à codes élémentaires MDS avec et sans coloration
	d'arêtes à double diversité ont été analysées. De plus, il a été prouvé que pour de petites
	probabilités d'effacement sur le canal, les décodeurs itératif et ML coïncident.
	Dans ce chapitre, les codes produits non binaires avec des codes élémentaires MDS
	ont été étudiés dans le cas d'un décodage algébrique itératif ligne-colonne. Les canaux
	avec des effacements indépendants et par blocs ont été considérés. Les ensembles d'arrêt
	sont définis dans le contexte des codes élémentaires MDS et une relation a été établie
	liv

  les bits d'information ont une localité d c -1. Dans le cas particulier des effacements par blocs/couleurs, la localité d'un ensemble LDPC aléatoire est O(log(n)) alors que celle d'un code Root-LDPC est maintenue à d c -1. Dans la deuxième partie de cette thèse, les codes produits non binaires avec des codes élémentaires MDS sont étudiés dans le contexte d'un décodage itératif algébrique ligne-colonne. Des canaux avec des effacements indépendants et en blocs sont considérés. Les concepts de rootcheck et de colorations d'arêtes à double diversité sont décrits après l'introduction d'une représentation graphique compacte des codes produits. De nouveaux résultats sur le décodage itératif des codes produits sont obtenus. Pour retrouver les symboles effacés, une borne supérieure du nombre d'itérations de décodage est donnée en fonction de la taille du graphe et la taille M de la palette de couleurs. Les ensembles d'arrêt sont définis dans le contexte de codes élémentaires MDS et une relation est établie avec la représentation graphique du code produit. Une caractérisation complète des ensembles d'arrêt est donnée jusqu'à un poids (d 1 +1)(d 2 +1). La représentation graphique compacte nouvellement introduite des codes produits nous a permis de proposer un algorithme de coloration d'arêtes à évolution différentielle. Cet algorithme permet de

	R ÉSUM É D ÉTAILL É DE LA TH ÈSE
	est évident que
	Les ensembles Root-LDPC spatialement couplés sont appliqués aux systèmes de stock-
	age distribué et de diversité. De la structure à double diversité des codes Root-LDPC, il
	lv

•

  Iterative belief-propagation decoder based on the Tanner graph of C P , as studied by Schwartz et al. for general linear block codes [93] and by Di et al. for low-density parity-check codes [27].

1.5. LOW-DENSITY PARITY-CHECK CODES

Table 3 .

 3 .1 shows that forward-layered LDPC coupling outperforms the standard uniform spatial coupling.

	Ensemble h BP uncoupled	h M AP uncoupled	h BP unif orm	h BP f orward
	(3,6)	0.42944	0.48815	0.48808 0.48815
	(4,8)	0.38345	0.49774	0.49442 0.49741
	(5,10)	0.34155	0.49948	0.48268 0.49811
	(6,12)	0.30746	0.49988	0.46031 0.49667

1: BEC thresholds of uniform spatial coupling versus forward-layered coupling, w = 2, d bs = 1, and d cs = 2.

  .8, where N bits are transmitted on two parallel BECs with the 3.3. SPATIAL COUPLING OF ROOT-LDPC ENSEMBLES erasure probabilities 1 and 2 . N/2 bits are transmitted on BEC( 1 ) and N/2 bits are transmitted on BEC( 2 ).

	N bits
	N/2 bits	N/2 bits
	BEC(ǫ 1 )	BEC(ǫ 2 )

Table 4 . 1 :

 41 1, 1, 2, 2, 4,4,[START_REF] Berrou | Near Shannon limit error-correcting coding and decoding: turbo codes[END_REF][START_REF] Berrou | Near optimum error correcting coding and decoding: Turbo-codes[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Chakareski | Layered coding vs multiple descriptions for video streaming over multiple paths[END_REF][START_REF] Greenhill | Asymptotic enumeration of sparse nonnegative integer matrices with specified row and column sums[END_REF][START_REF] Felström | Time-varying periodic convolutional codes with low-density parity-check matrix[END_REF][START_REF] Guillén I Fàbregas | Coding in the block-erasure channel[END_REF][START_REF] Kudekar | Threshold saturation via spatial coupling: why convolutional LDPC ensembles perform so well over the BEC[END_REF][START_REF] Malkamaki | Evaluating the performance of convolutional codes over block fading channels[END_REF][START_REF] Rosnes | Stopping set analysis of iterative row-column decoding of product codes[END_REF][START_REF] Tolhuizen | More results on the weight enumerator of product codes[END_REF] 137, 165, 210, 253, 320, 383, 478, 574, 708, 847, 1039, 1238, 1507 Sequence of the number of special partitions of the integer , for = 2 . . . 32. Special partitions are described in Definition 4.10. The sequence for standard partitions can be found in[START_REF] Sloane | The On-Line Encyclopedia of Integer Sequences[END_REF].

	2 3	4	5	6	7	8
	x 1 6	90	2040	67950	3110940	187530840
	y 0 45 816 22650 888840 46882710 3199593600

Table 4 .

 4 2: Number of bipartite graphs not including length-2 cycles from Lemma 4.3 and Lemma 4.

  The case w < d 2 . Consider a stopping set of size w < d 2 . Its rectangular support R(S) has size 1 2 ≥ w. All columns should have a weight greater than or equal to d, we find that w ≥ d 2 . Similarly, all rows must have a weight greater than or equal to d, then w ≥ d 1 . By combining the two inequalities, we find w 2 ≥ d 2 1 2 ≥ d 2 w, so we get w ≥ d 2 which is a contradiction unless these stopping sets do not exist, i.e. τ w = 0 for w < d 2 under type II iterative decoding.• The case w = d 2 .We use similar inequalities as in the previous case. We have w = d 2 ≥ d 2 because column decoding must fail. We obtain 2 ≤ d. In a symmetric way, w = d 2 ≥ d 1 because row decoding must fail. We obtain 1 ≤ d. But R(S) cannot be smaller than S, i.e. we get 1 = d and 2 = d. We just proved that all stopping set of size d 2 are obvious. Their number is given by choosing d rows out of n 1 and d columns out of n 2 .• The case d 2 < w < d(d + 1).Given that 1 2 ≥ w > d 2 , we get 1 ≥ d and 2 ≥ d since the support R(S) is larger than a d×d rectangle, the latter being the smallest stopping set as proven in the previous case. Take 1 = d, then 2 ≥ d+1 because w > d 2 . The weight of each column must be at least d giving us w ≥ d 2 ≥ d(d + 1), which is a contradiction unless τ w = 0. For 1 > d, the same arguments hold.

	1 2 : d 2 , d(d + 1), d(d + 2), (d + 1) 2 , (d + 1)(d + 2), and (d + 2) 2 . For these rectangular supports, the stopping set
	weight also has six cases to be considered, where w takes the following values (or ranges)
	in increasing order: w = d 2 , w ∈]d 2 , d(d + 1)[, w = d(d + 1), w ∈]d(d + 1), d(d + 2)[, w = d(d + 2), and w = (d + 1) 2 .
	• • The case w = d(d + 1).
	-The smallest R(S) is d × (d + 1) or (d + 1) × d. According to Lemma 4.2, we have β = 0. All these stopping sets are obvious. Their number is
	n 1 d	n 2 d + 1	+	n 1 d + 1

  R(S) has size (d + 2)(d + 2). We have β = 2d + 4 reaching the upper bound in Lemma 4.2. R(S) must have two zeros in each column and two zeros in each row. A first group of these stopping sets can be enumerated by building R(S) with two zero length-(d + 2) diagonals (to be folded if not the main diagonal) and then applying all row and column permutations. This generates all Hamiltonian bipartite graphs with d + 2 left vertices and d + 2

	right vertices, their number is
	((d + 2)!) 2 2(d + 2)	,
	as known from Lemma 4.3. In fact, the full exact enumeration of stopping sets
	in this case is already made by Lemma 4.3 and its proof, just take = d + 2.

-

  1 -1 then (d 1 + 1)(d 2 + 1) = d 1 (d 2 + 3) and corresponds to the following obvious stopping sets Similarly, if d 2 = d 1 + 1 then (d 1 + 1)(d 2 + 1) = (d 1 + 2)d 2 and corresponds to the obvious stopping sets with number Notice that d 1 × (d 2 + 3) and (d 1 + 2) × d 2 have no non-obvious stopping sets (from Lemma 4.2). -The next R(S) is (d 1 + 1)(d 2 + 2). The corresponding number of zeros is β = d 1 + 1. Similar cases were encountered before. The number of these non-obvious stopping sets is 2r 0 +r 1 =d 1 +1 Consider R(S) with size (d 1 + 2)(d 2 + 1). We have β = d 2 + 1. If d 2 > d 1 + 1, then we find τ w = 0 by contradicting arguments on β. But if d 2 = d 1 + 1, the number of non-obvious stopping sets becomes2r 0 +r 1 =d 2 +1 +1)(d 2 +3). We have β = 2(d 1 +1). If d 2 < 2d 1 -1 there are no stopping sets. When d 2 = 2d 1 -1, we get β = 2(d 1 + 1) = d 2 + 3.The number of non-obvious stopping sets is found to be (method as in previous cases)3r 0 +2r 1 +r 2 =d 1 +1wherer 3 = d 1 + 1r 0r 1r 2 .Consider the next R(S) with size (d 1 + 2)(d 2 + 2) as given in the table in Figure 4.14. We have β = d 1 + d 2 + 3. No stopping sets are found (by contradiction on β) except for d 2 = d 1 + 1. In this case, we get β = 2(d 1 + 2). The rectangle has two zeros in each row. This problem is solved in a similar method as in the proofs of Lemma 4.3 and Lemma 4.4. Indeed, we have to enumerate bipartite graphs with d 1 + 2 left vertices all of degree 2. These graphs have d 1 + 3 right vertices. Two cases should be distinguished: a-The extra vertex on the right has no edges, b-The extra vertex at the right has one edge. The number of these stopping sets is (d 2 + 2)x d 1 +2 + (d 2 + 2)y d 1 +2 2 where x d 1 +2 and y d 1 +2 are determined from Lemma 4.3 and Lemma 4.4. -The largest rectangular support for w = (d 1 + 1)(d 2 + 1) is (d 1 + 2)(d 2 + 3). The number of zeros is β = d 2 + 2d 1 + 5. From Lemma 4.2 we get that β must be less than or equal to both 2(d 2 + 3) and 3(d 1 + 2). The first condition is satisfied if d 2 = d 1 + 1 and d 1 = 2, also the second condition is satisfied if d 2 = 2d 1 -1 and d 1 = 2. Consequently, for this w and this size of R(S), non-obvious stopping sets exist only for d 1 = 2, d 2 = 3, and β = 12 in a rectangle of size 4 × 6. Their number is

	n 1 d 1 n 1 d 1 + 2 d 2 + 3 n 2 n 2 d 2 d 1 + 1 -r 0 r 1 (d 2 + 2)! . . 2 r 0 (d 2 -d 1 + 1)! d 2 + 1 d 1 + 1 r 0 r 0 d 2 + 1 -r 0 r 1 (d 1 + 2)! 2 r 0 n 1 d 1 + 1 n 1 d 1 + 2 d 2 + 1 n 2 d 2 + 2 n 2 . d 1 + 1 r 0 d 1 + 1 -r 0 r 1 d 1 + 1 -r 0 -r 1 r 2 (d 2 + 3)! 2 r 2 6 r 3 n 1 d 1 + 1 n 2 d 2 + 3 , d 1 + 2 n 2 d 2 + 2 , Fanny Jardel -n 1 1860 n 1 d 1 + 2 n 2 d 2 + 3 .	.

-Consider R(S) with size (d 1

•

  1 + 1) × d 2 and d 1 × (d 2 + 2), all sizes yield no stopping sets (by contradiction on β) except for (d 1 + 1) × (d 2 + 1) and (d 1 +1)×(d 2 +2) where the number of non-obvious stopping sets is respectively The case (d 1 + 1)d 2 = d 1 (d 2 + 2) < w < d 1 (d 2 + 3). Write w = (d 1 + 1)d 2 + λ, where λ is in the range [1, d 1 -1]. -The smallest rectangular support with a non-zero number of stopping sets is (d 1 + 1) × (d 2 + 1). We have β = d 1 + 1λ belonging to the range [2, d 1 ]. For R(S) with size (d 1 + 1) × (d 2 + 2), we have β = d 2 + 2λ varying in the range [d 1 + 3, d 2 + 1]. The rectangle have λ columns without zeros. Given r 2 = d 1 + 1r 0r 1 = d 1 + 1 + r 0λ, the number of non-obvious stopping sets is 2r 0 +r 1 =λ

	and	(d 2 + 2)! 2 d 1 +1	n 1 d 1 + 1	n 2 d 2 + 2	.
	The number of corresponding non-obvious stopping sets is
	(d 1 + 1 -λ)!	d 1 + 1 λ		d 2 + 1 d 1 + λ	n 1 d 1 + 1	n 2 d 2 + 1	.
	d 1 + 1 r 0		d 1 + 1 -r 0 r 1	(d 2 + 2)! 2 r 2 λ!	n 1 d 1 + 1	n 2 d 2 + 2	.
			(d 1 + 1)!	d 2 + 1 d 1 + 1	n 1 d 1 + 1	n 2 d 2 + 1	,

-

-

  Consider the next supports R(S) with size (d 1 +2)(d 2 +2) and (d 1 +2)(d 2 +3) as given in the table in Figure4.14. The β for both sizes contradicts the upper bound in Lemma 4.2. We deduce that τ w = 0 in these cases.4.A.3 Minimum distances satisfyingd 2 > 2d 1 For 2 < d 1 < d 2 < 3d 1 -1, the width of R(S) cannot exceed d 2 + 3.In the special case d 1 = 2, as stated earlier, a width up to d 2 + 4 should be considered. Then, for d 1 = 2, the rectangular supports are ordered in increasing size according to Table4.4. The first and second rows list the stopping set weight w in increasing order.• The case d 1 (d 2 + 1) < w < d 1 (d 2 + 2) < (d 1 + 1)d 2 . Write w = d 1 (d 2 + 1) + λ, where λ is in the range [1, d 1 -1]. For all sizes of R(S) in the table in Figure4.14, we find β = 1 2w and we notice that it contradicts Lemma 4.2. There are no stopping sets for w in the range ]d 1 (d 2 + 1),d 1 (d 2 + 2)[. 1 d 2 < d 1 (d 2 + 1) < d 1 (d 2 + 2) < (d 1 + 1)d 2 < d 1 (d 2 + 3) < d 1 (d 2 + 4) ≤ (d 1 + 1)(d 2 + 1) < (d 1 + 2)d 2 ≤ (d 1 + 1)(d 2 + 2) < (d 1 + 1)(d 2 + 3) ≤ (d 1 +2)(d 2 + 1) < (d 1 + 1)(d 2 + 4) < (d 1 + 2)(d 2 + 2) < (d 1 + 2)(d 2 + 3) < (d 1 + 2)(d 2 + 4)

		4.A. PROOF OF THEOREM
				r 1
				r 2
	(d 2 + 3)! 2 r 2 6 2r 0 +r 1	n 1 d 1 + 1	n 2 d 2 + 3	.
	Fanny Jardel		138

d

Table 4 .

 4 4: Table of rectangular sizes for the special case where the first component code has d 1 = 2.

-

  Consider R(S) with size (d 1 + 1)(d 2 + 1). Hereβ = d 2 -2d 1 + 1 is restricted to the interval ]1, d 1 [ given the constraints 2d 1 < d 2 < 3d 1 -1 for d 1 > 2. For d 1 = 2, d 2 = 6is the only valid value, with β = 3. The number of non-obvious stopping sets is (ford 1 ≥ 2) Consider R(S) with size (d 1 + 1)(d 2 + 2). The number of zeros is β = d 2d 1 + 2 ∈]d 1 + 2, 2d 1 + 1[.The number of non-obvious stopping sets is given by where r 2 = d 2 -2d 1 + 1 + r 0 . For d 2 = 2, the above expression is valid for d 2 = 6 only.-Consider R(S) with size (d 1 + 1)(d 2 + 3). Here β = d 2 + 3. All columns in the rectangle have one zero. Rows can have up to three zeros. The number of non-obvious stopping sets is3r 0 +2r 1 +r 2 =3d 1 -d 2wherer 3 = d 1 + 1r 0r 1r 2 .The above expression is also valid for (d 1 , d 2 ) = (2, 6). -The rectangular support R(S) of size (d 1 + 2)(d 2 + 1) gives no stopping sets. The remaining rectangular supports from Figure 4.14 and Table 4.4 yield no stopping sets for w = d 1 (d 2 + 3). Recall that a maximal rectangle width of d 2 + 3 should be considered for d 1 > 2 and it goes up to d 2 +4 for d 1 = 2 as shown in Table 4.4. New obvious stopping sets are found, they appear for d 1 = 2 only with a rectangular width equal to d 2 + 4. Their rectangular support corresponds to the sizes in boldface in Table 4.4 for w > d 1 (d 2 + 3): n 1

						4.A. PROOF OF THEOREM
	2r 0 +r 1 =3d 1 -d 2	d 1 + 1 r 0	d 1 + 1 -r 0 r 1	(d 2 + 2)! 2 r 2 d 1 !		n 1 d 1 + 1	n 2 d 2 + 2	,
				d 1 + 1 r 0	d 1 + 1 -r 0 r 1
		d 1 + 1 -r 0 -r 1 r 2	(d 2 + 3)! 2 r 2 6 r 3	n 1 d 1 + 1	n 2 d 2 + 3	,
		β!	d 1 + 1 3d 1 -d 2	d 2 + 1 2d 1	n 1 d 1 + 1	n 2 d 2 + 1	.
				Fanny Jardel		140

=

=

. La frontière de coupure de la capacité est trouvée en écrivant que la capacité des quatre canaux BECs est égale au rendement du code, i.e. la frontière de coupure de la capacité est donnée par:1 + 3 2 = 1.(5)

i are equal is found on the so-called ergodic line ( 1 = 2 ).In the following, we propose a partial spatial coupling scheme for improving the boundary performance of the Root-LDPC ensemble.

Fanny Jardel

. For a fixed 1 , double diversity dramatically improves the performance with respect to 4 .

Acknowledgments

A

CHAPTER 3. SPATIAL COUPLING FOR CODES AND DIVERSITY

In this case, d b (j) and d c (j) are integers but not necessarily d bs (j) and d cs (j), i.e. the spatial coupling is irregular. Long and complex degree distributions are unnecessary. We will define and use the simplest irregular distributions. Definition 3.2. Ψ(α, d) is a parametric polynomial that includes two monomials as follows Ψ(α, d) = αx d + (1α)x d+1 .

Let d bs (j) and d cs (j) be two positive real numbers. The real d bs (j) is the average degree of variable nodes at the left of a spatial coupling connecting two protographs of type (d b (j), d c (j)) inside sub-chain j. Similarly, d cs (j) is the average degree of check nodes at the right of a spatial coupling. Instead of showing a sub-chain section, Figure 3.4 displays a general section in the total chain between spatial positions i and i + 1. If position i belongs to sub-chain j then, for example, d b,i = d b (j) and d bs,i = d bs (j). From a node perspective, the left and right degree distributions of the spatial coupling are taken to be

SPATIAL COUPLING OF ROOT-LDPC ENSEMBLES

Figure 3.11: Local tree neighborhood of variable node 1p. This tree is used to determine the evolution of the forward coupling message n l 1 .

.12: Local tree neighborhood of variable node 1i. This tree is used to determine the evolution of the local message q l 1 .

Fanny Jardel 59 CHAPTER 3. SPATIAL COUPLING FOR CODES AND DIVERSITY

.13: Local tree neighborhood of variable node 1i. This tree is used to determine the evolution of the local message f l 1 .

Figure 3.14: Local tree neighborhood of variable node 1p. This tree is used to determine the evolution of the local message g l 1 .

Results

We present the outage boundaries of rate-1/2 random LDPC ensembles, uncoupled Root-LDPC ensembles, and coupled Root-LDPC ensembles in the erasure plane for two parallel erasure channels BEC( 1 ) and BEC( 2 ) shown in Figure 3.8. [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF]3]x [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF]3] [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] q ⊗ [START_REF] Boutros | Diversity and coding gain evolution in graph codes[END_REF][START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF] q , no edge coloring. Word and symbol error rate performance for iterative decoding versus its union bound and ML decoding.

The union bound P U ( ) for the [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF]3] q ⊗ [16, 14, 3] q product code is P U ( ) =203840 9 + 44946720 12 + 174894720 13 + 131171040 14 + 17839261440 15 + 126887941180 16 + o( 16).

The performance of this code on the SEC(q, ) channel is shown in Figure 4.12. Similar to the previous code, the union bound is tight enough and iterative decoding performs very close to ML decoding. Finally, let us interpret these results from a finite-length information theoretical point of view [START_REF] Polyanskiy | Channel coding rate in the finite blocklength regime[END_REF]. The SEC(q, ) of Shannon capacity log 2 (q)(1-

) behaves exactly like a BEC( ) of capacity (1 -) but erasures in the SEC occur at the symbol level instead of the binary digit level. Finite-regime BEC bounds from [START_REF] Polyanskiy | Channel coding rate in the finite blocklength regime[END_REF] are directly applicable to our product codes over the SEC(q, ). The BEC channel dispersion is V = (1 -) and its maximal achievable rate is given by [START_REF] Polyanskiy | Channel coding rate in the finite blocklength regime[END_REF], Theorem 53,

where n is the code length, Q(x) is the Gaussian tail function, is the channel erasure 0.189 [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] q ⊗ [16, 14] q 0.750 : P ew = 1.0 • 10 -2 0.150 Regular-(3, 12) LDPC 0.750 : P ew = 2.9 • 10 -2 0.135 Table 4.3: Finite-length performance of the [START_REF] Boutros | Full-diversity product codes for block erasure and block fading channels[END_REF][START_REF] Bose | On a class of error correcting binary group codes[END_REF] q ⊗ [16, 14] q product code. The value of in the third column is given for P ew = 10 -2 at all rows.

Unequal probability erasures

In communication and storage systems, erasure events of unequal probabilities may occur. In order to observe the effect of a double-diversity coloring on the performance in multiple erasure channels, we define the SEC(q, { i } M i=1 ). On this channel, symbol erasure events are independent but the probability of erasing a symbol is i if it is associated to an edge in G with color φ(e) = i. The union bound is easily modified to get

where

The coefficient τ (w 1 , . . . , w M ) is the number of stopping sets of size w = M i=1 w i , where i symbol edges have color i, i = 1 . . . M . Clearly, the coefficients τ (w 1 , . . . , w M ) depend on the edge coloring φ. For double-diversity colorings and M ≥ 2, these coefficients satisfy the following property: For any stopping set S such that |S| = w, τ (w 1 , . . . , w M ) does exist for M i=1 w i = w and w i > 0 only, i.e. no weak compositions of w are authorized by φ. Hence, the product code should perform well if one of the i is close to 1 and the remaining i are small enough. The extreme case is true thanks to double diversity yielding P U (0 M -1 , 1 1 ) = 0, where (0 M -1 , 1 1 ) represents all vectors with all positions at 0 except for one position set to 1. Figure 4.13 shows the performance of [START_REF] Bose | On a class of error correcting binary group codes[END_REF][START_REF] Blahut | Algebraic codes for data transmission[END_REF] ⊗2 q on the SEC(q, { i } M i=1 ) channel with M = 4 colors. The edge coloring is the double-diversity coloring produced by the DECA algorithm and drawn in The proof shall consider d 2 > 2d 1 in its sub-section C. There exists no integer d 2 in the range ]2d 1 , 3d 1 -1[ for d 1 = 2. Only for sub-section C and d 1 = 2, we consider a rectangular support with a width up to d 2 + 4 which enlarges the range of d 2 to 2d 1 < d 2 < 4d 1 -1 and permits to keep the case d 1 = 2 valid in sub-section C.

The proof is similar to w < d 2 in Theorem 4.2. Here, we just deduce that w ≥ d 1 2 and w ≥ d 1 2 leading to the contradiction w ≥ d 1 d 2 . Therefore τ w = 0 for w < d 1 d 2 under type II iterative decoding.

We use similar inequalities as in the previous case which resembles the proof in Theorem 4.2 for w = d 2 . We get that R(S) = S. All stopping set of size d 1 d 2 are obvious. Their number is given by choosing d 1 rows out of n 1 and d 2 columns out of n 2 .

• The case

The weight

Publications

Journal Papers

Calcul et Stockage Distribués pour les Réseaux de Communication

RÉSUMÉ : Ce travail est dédié à la conception, l'analyse et l'évaluation des performances de nouveaux schémas de codage appropriés aux systèmes de stockage distribué. La première partie de ce travail est consacrée à l'étude des performances des codes spatialement couplés pour les canaux à effacements. Une nouvelle méthode de couplage spatial des ensembles classiques de contrôle de parité à faible densité (LDPC) est proposée. La méthode est inspirée du codage en couches. Les arêtes des ensembles locaux et celles définissant le couplage spatial sont construites séparément. Nous proposons également de saturer le seuil d'un ensemble Root-LDPC par couplage spatial de ses bits de parité dans le but de faire face aux évanouissements quasi-statiques. Le couplage spatial est dans un deuxième temps appliqué à un ensemble Root-LDPC, ayant une double diversité, conçu pour un canal à effacements par blocs à 4 états. Dans la deuxième partie de ce travail, nous considérons les codes produits non-binaires avec des composantes MDS et leur décodage algébrique itératif ligne-colonne sur un canal à effacements. Les effacements indépendants et par blocs sont considérés. Une représentation graphique compacte du code est introduite avec laquelle nous définissions la notion de coloriage à double diversité. Les ensembles d'arrêt sont définis et une caractérisation complète est donnée. La performance des codes produits à composantes MDS, avec et sans coloration, à double diversité est analysée en présence d'effacements indépendants et par blocs. Les résultats numériques montrent aussi une excellente performance en présence d'effacements à probabilité inégale due au coloriage ayant une double diversité.

Mots-Clés : Stockage distribué, codes LDPC, codes Root-LDPC, codes produits, couplage spatial, coloration d'arêtes, ensemble d'arrêt, diversité, décodage itératif, canal à effacements.

Distributed Coding and Computing for Networks

ABSTRACT : This work is dedicated to the design, analysis, and the performance evaluation of new coding schemes suitable for distributed storage systems. The first part is devoted to spatially coupled codes for erasure channels. A new method of spatial coupling for low-density parity-check ensembles is proposed. The method is inspired from overlapped layered coding. Edges of local ensembles and those defining the spatial coupling are separately built. We also propose to saturate the whole Root-LDPC boundary via spatial coupling of its parity bits to cope with quasi-static fading. Then, spatial coupling is applied on a Root-LDPC ensemble with double diversity designed for a channel with 4 block-erasure states. In the second part of this work, we consider non-binary product codes with MDS components and their iterative row-column algebraic decoding on the erasure channel. Both independent and block erasures are considered. A compact graph representation is introduced on which we define double-diversity edge colorings via the rootcheck concept. Stopping sets are defined and a full characterization is given in the context of MDS components. A differential evolution edge coloring algorithm that produces colorings with a large population of minimal rootcheck order symbols is presented. The performance of MDS-based product codes with and without double-diversity coloring is analyzed in presence of both block and independent erasures. Furthermore, numerical results show excellent performance in presence of unequal erasure probability due to double-diversity colorings.

Keywords : Distributive storage, LDPC codes, Root-LDPC codes, product codes, spatial coupling, edge coloring, diversity, stopping set, iterative decoding, erasure channel.