Cours G Flashcards
Qu’est-ce qu’un code correcteur ?
Un ensemble de vecteurs (mots) et un couples de fonction (Enc, Dec) qui gèrent la transmission des mots sur un canal de communication bruité
Qu’est ce qu’un bruit additif ?
Un bruit qui transforme un vecteur c en vecteur c’ où il existe e tel que c’ = c + e
Rapport entre la taille d’un vecteur c et la taille de Enc(c)
Soit c un vecteur de dimension k, c’est-à-dire que c ∈ ({F}2)k, alors Enc(c) ({F}2)n, il est donc de taille n avec n ≥ k
À quoi sert un code correcteur ?
- À récupérer de l’information mal transmise
- À concevoir des systèmes de stockage de données distribués
- À concevoir des algorithmes tolérants aux erreurs
Cas des codes correcteurs dans le cadre des transmissions
On veut pouvoir assurer l’intégrité de l’information pour les communications importants, ou alors pouvoir corriger un message bruité lors de sa transmission sous forme de signal
Cas des codes correcteurs dans le cadre du stockage de données
On veut savoir combien de fois on a besoin de stocker une information pour être sûrs de pouvoir la retrouver en cas d’aléa
Cas des codes correcteurs dans le cadre des algorithmes tolérants aux fautes
On veut pouvoir par exemple faire du calcul distribué et retrouver le résultat même si une partie des machine a transmis le mauvais résultat
Qu’est-ce qu’un BSC ?
un “Bynary Symmetric Channel” est un canal de transmission sans mémoire dans lequel le bruit agit indépendamment sur chaque bit : la probabilité que le i-ème bit de x soit différent du i-ème bit de y, où x est le message envoyé et y le message reçu, est la même que leur (i+1)-ème bits soient différents
Qu’est-ce qu’une matrice de transition binaire ?
Une matrice Mx,y = Pr(y | x), c’est-à-dire qui calcule la probabilité que y soit reçu sachant que x est envoyé :
0 –(1 - p)–> 0
1 –(1 - p)–> 1
et sur les diagonales de 0 vers 1 et de 1 vers 0, p
Que signifie la symétrie de la matrice de transition binaire ?
La symétrie de la matrice de transition binaire représente la symétrie de l’erreur : il y a la même probabilité qu’un 0 devienne un 1 et qu’un 1 devienne un 0
Matrice de transition dans le cas q-aire
M(x, y) =
- 1-p si x = y
- p/(q-1) si x != y
Étapes d’une communication
- Message m
- Encodage Enc(m) = c avec Enc : {0, 1}k → {0, 1}n injective (n ≥ k)
- Transmission y = Channel(c) où y = c + e avec e l’erreur additive ∈ {0, 1}n (et y ∈ {0, 1}n)
- Décodage Dec(y) = Dec(c) = m (dans le cas idéal)
Théorème de Shannon (énoncé en formules)
- Soit 0 ≤ p ≤ 1/2, ϵ ≤ 1/2 - p et n»_space; 0, alors
- ∃ δ > 0 tel qu’il existe
- Enc : {0, 1}k → {0, 1}n
- Dec : {0, 1}n → {0, 1}n
- avec k ≤ ⌊(1 - H(p) + ϵ) × n⌋ tel que ∀ m ∈ {0, 1}k, Pr(Dec(Enc(m) + e) != m) ≤ 2-δn
- Pour k > ⌈(1 - H(p) + ϵ) × n ⌉, pour n’importe quel (Enc, Dec)+ ϵ) × n, ∃ m ∈ {0, 1}k tel que Pr(Dec(Enc(m) + e) != m) ≥ 1/2
- ∃ δ > 0 tel qu’il existe
Théorème de Shannon (énoncé en langage naturel)
Soit 1 - H(p) la capacité du canal, alors si un code (ou son rendement) ne dépasse pas cette capacité, il est possible de trouver une fonction de code qui corrige autant d’erreur qu’on veut, c’est-à-dire que la probabilité de mal décoder tend vers 0
Qu’est-ce que le rendement du code c ?
n / k avec n la taille de c et k la taille de m tel que Enc(m) = c, il mesure la redondance du message m (de taille k) dans c (de taille n) et indique la capacité de correction
Qu’est-ce que la capacité d’un canal ?
Soit p la probabilité liée à un canal, alors la capacité de ce canal est 1 - H(p)
Qu’est-ce que la linéarité de fonction ?
Le fait que ces fonctions puissent être vues comme des matrices
Exemples de fonctions linéaires
Enc et Dec sont des fonctions linéaires : Enc(m) = vm × MEnc = vc
Qu’est-ce que la matrice génératrice du code ?
MEnc telle que Enc(m) = vm × MEnc = vc
Qu’est-ce que la matrice de parité du code ?
La matrice orthogonale à la matrice génératrice du code, de dimensions (n × n - k)
Définition de la distance de Hamming
La distance de Hamming est le nombre de bits qui sépare deux vecteurs : dH(x, y) = |{i | xi != yi}|
Caractérisation de la distance de hamming (schéma de preuve)
La distance de Hamming est bien une distance puisqu’elle respecte les trois critères d’une distance :
- dH(x, y) ≥ 0 avec égalité si et seulement si x = y
- dH(x, y) = dH(y, x)
- dH(x, z) ≤ dH(x, y) + dH(y, z) (inégalité triangulaire), car xi != zi ⇔ xi != yi XOR zi != yi
Qu’est-ce que le poids d’un vecteur ?
Poids(x) = |{i | xi != 0}|
Lien entre le poids et la distance de Hamming
dH(x, y) = Poids(x - y)
Distance de Hamming d’un code
dH(C) = minC1 != C2 ∈ CdH(C1, C2)
Qu’est-ce qu’un code linéaire ?
Le code C est linéaire si Enc(m1) + Enc(m2) = Enc(m1 + m2)
Distance de hamming pour un code linéaire (énoncé)
Si C est linéaire dH(C) est le mot de plus petit poids != (0, 0, …, 0)
Distance de hamming pour un code linéaire (schéma de preuve)
On veut montrer que pour C linéaire, minD = minc1 != c2 ∈ CdH(c1, c2) = minc ∈ C w(c) = minW :
- Si dH(c1, c2) = L, il existe c3 = c1 + c2 tel que w(c3) = L, donc minD ≥ minW
- Si w(c) = L, il existe c1 = (0, 0, …, 0) et c2 = c tels que dH(c1, c2) = L, donc minW ≥ minD
Qu’est-ce que le code de parité ?
C⊕ : Enc(m) = (m, ⊕) donc n = k + 1 → très bon rendement, mais trop bon car on ne peut corriger quasiment aucune erreur
Quelle est la distance de Hamming du code de parité ?
dH(C⊕) = 2 car le plus petit mot non nul de C⊕ est (1, 1)