Dans chacun des codes suivants, quelle est la distance minimale du code ? Quelle est la meilleure situation que nous pourrions espérer en matière de détection et de correction d’erreurs ?
Calculez le noyau de chacune des matrices suivantes. De quel type de codes en blocs \((n,k)\) sont les noyaux ? Pouvez-vous trouver une matrice (pas nécessairement une matrice génératrice standard) qui génère chaque code ? Vos matrices génératrices sont-elles uniques ?
Supposons qu’un message binaire de \(1000\) bits est transmis. Supposons que la probabilité d’une erreur simple est \(p\) et que les erreurs se produisant dans différents bits sont indépendantes les unes des autres. Si \(p = 0.01\text{,}\) quelle est la probabilité que plus d’une erreur se produise ? Quelle est la probabilité qu’exactement deux erreurs se produisent ? Répétez ce problème pour \(p = 0.0001\text{.}\)
Quelles matrices sont des matrices de contrôle de parité canoniques ? Pour les matrices qui sont des matrices de contrôle de parité canoniques, quelles sont les matrices génératrices standard correspondantes ? Quelles sont les capacités de détection et de correction d’erreurs du code généré par chacune de ces matrices ?
Soit \(C\) le code de groupe dans \({\mathbb Z}_2^3\) défini par les mots de code \((000)\) et \((111)\text{.}\) Calculez les classes latérales de \(C\) dans \({\mathbb Z}_2^3\text{.}\) Pourquoi n’a-t-il pas été nécessaire de préciser s’il s’agissait de classes latérales gauches ou droites ? Donnez l’erreur de transmission simple, le cas échéant, à laquelle correspond chaque classe latérale.
Pour chacune des matrices suivantes, trouvez les classes latérales du code \(C\) correspondant. Donnez une table de décodage pour chaque code si possible.
(a) \(C\text{,}\)\((10000) + C\text{,}\)\((01000) + C\text{,}\)\((00100) + C\text{,}\)\((00010) + C\text{,}\)\((11000) + C\text{,}\)\((01100) + C\text{,}\)\((01010) + C\text{.}\) Une table de décodage n’existe pas pour \(C\) car il s’agit seulement d’un code de détection d’erreur simple.
En d’autres termes, une métrique est simplement une généralisation de la notion de distance. Démontrez que la distance de Hamming est une métrique sur \({\mathbb Z}_2^n\text{.}\) Le décodage d’un message se réduit en fait à décider quel est le mot de code le plus proche en termes de distance.
Soit \(C\) un code linéaire. Montrez que soit les \(i\)-èmes coordonnées des mots de code de \(C\) sont toutes nulles, soit exactement la moitié d’entre elles sont nulles.
Soit \({\mathbf x} \in C\) de poids impair et définissons une application de l’ensemble des mots de code de poids impair vers l’ensemble des mots de code de poids pair par \({\mathbf y} \mapsto {\mathbf x} + {\mathbf y}\text{.}\) Montrez que cette application est une bijection.
Si nous devons utiliser un code linéaire correcteur d’erreurs pour transmettre les 128 caractères ASCII, quelle taille de matrice doit être utilisée ? Quelle taille de matrice doit être utilisée pour transmettre le jeu de caractères ASCII étendu de 256 caractères ? Et si nous n’exigeons que la détection d’erreurs dans les deux cas ?
Trouvez la matrice de contrôle de parité canonique qui donne le code à bit de parité paire avec trois positions d’information. Quelle est la matrice pour sept positions d’information ? Quelles sont les matrices génératrices standard correspondantes ?
Combien de positions de contrôle sont nécessaires pour un code correcteur d’erreur simple avec 20 positions d’information ? Avec 32 positions d’information ?
Soit \({\mathbf e}_i\) le \(n\)-uplet binaire avec un \(1\) en \(i\)-ème coordonnée et des \(0\) ailleurs, et supposons que \(H \in {\mathbb M}_{m \times n}({\mathbb Z}_2)\text{.}\) Montrez que \(H{\mathbf e}_i\) est la \(i\)-ème colonne de la matrice \(H\text{.}\)
Trouvez les matrices génératrices standard et de contrôle de parité de \(C\) et \(C^\perp\text{.}\) Que se passe-t-il en général ? Prouvez votre conjecture.
Soit \(H\) une matrice \(m \times n\) sur \({\mathbb Z}_2\text{,}\) où la \(i\)-ème colonne est le nombre \(i\) écrit en binaire avec \(m\) bits. Le noyau d’une telle matrice est appelé un code de Hamming.
La colonne correspondant au syndrome indique également le bit qui était erroné ; c’est-à-dire que la \(i\)-ème colonne de la matrice est \(i\) écrit comme nombre binaire, et le syndrome nous indique immédiatement quel bit est erroné. Si le mot reçu est \((101011)\text{,}\) calculez le syndrome. Dans quel bit l’erreur s’est-elle produite dans ce cas, et quel mot de code a été transmis à l’origine ?
Donnez une matrice binaire \(H\) pour le code de Hamming avec six positions d’information et quatre positions de contrôle. Quelles sont les positions de contrôle et quelles sont les positions d’information ? Encodez les messages \((101101)\) et \((001001)\text{.}\) Décodez les mots reçus \((0010000101)\) et \((0000101100)\text{.}\) Quels sont les syndromes possibles pour ce code ?
Quel est le nombre de bits de contrôle et le nombre de bits d’information dans un code de Hamming en blocs \((m,n)\) ? Donnez une borne supérieure et une borne inférieure sur le nombre de bits d’information en fonction du nombre de bits de contrôle. Les codes de Hamming ayant le nombre maximal possible de bits d’information avec \(k\) bits de contrôle sont appelés parfaits. Chaque syndrome possible sauf \({\mathbf 0}\) apparaît comme colonne. Si le nombre de bits d’information est inférieur au maximum, alors le code est dit raccourci. Dans ce cas, donnez un exemple montrant que certains syndromes peuvent représenter des erreurs multiples.