Codes linéaires

_images/codes.png

Définition d’un code linéaire

codeLineaireGen(p, G)

définition d’un code linéaire sur \(\mathbb{F}_p\) (p est un nombre premier) de matrice génératrice \(G\).

Paramètres
  • p – un nombre premier

  • G – une matrice

Exemple :

simula : G = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

G =

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : C = codeLineaireGen(2, G)

C = Codes lineaire défini sur F_2 de matrice génératrice

G =
[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]
codeLineaireCont(p, H)

définition d’un code linéaire sur \(\mathbb{F}_p\) (p est un nombre premier) de matrice de parité (contrôle) \(H\).

Paramètres
  • p – un nombre premier

  • H – une matrice

Exemple :

simula : H = matrice([ [1,2,0,3,1,1], [3,3,0,1,0,1] ])

H =

[1 2 0 3 1 1 ]
[3 3 0 1 0 1 ]

simula : C = codeLineaireCont(3, H)

C = Codes lineaire défini sur F_3 de matrice de parité

H =

[1 2 0 3 1 1 ]
[3 3 0 1 0 1 ]

Opérations sur les codes linéaires

matriceGeneratrice(C)

la matrice génératrice du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : H = matrice([ [1,2,0,3,1,1], [3,3,0,1,0,1] ])

H =

[1 2 0 3 1 1 ]
[3 3 0 1 0 1 ]

simula : C = codeLineaireCont(3, H)

C = Codes lineaire défini sur F_3 de matrice de parité

H =

[1 2 0 3 1 1 ]
[3 3 0 1 0 1 ]

simula : G = matriceGeneratrice(C)

G =
[[1 0 0 0 2 0]
 [0 1 0 0 1 0]
 [0 0 1 0 0 0]
 [0 0 0 1 1 2]]
matriceControle(C)

la matrice de contrôle (ou de parité) du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : G = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

G =

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : C = codeLineaireGen(2, G)

C = Codes lineaire défini sur F_2 de matrice génératrice

G =
[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : H = matriceControle(C)

H = [[1 1 1 0 1 0]
     [1 1 1 1 0 1]]
longueurCode(C)

la longueur du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])
simula : C = codeLineaireGen(2, G)
simula : longueurCode(C)

6
dimensionCode(C)

la dimension du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])
simula : C = codeLineaireGen(2, G)
simula : dimensionCode(C)

4
nombreDeMotsdecode(C)

le nombre de mots-de-code du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])
simula : C = codeLineaireGen(2, G)
simula : nombreDeMotsdecode(C)

16
distanceMinimale(C)

la distance minimale du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])
simula : C = codeLineaireGen(2, G)
simula : distanceMinimale(C)

2
capaciteCorrection(C)

la capacité de correction du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])
simula : C = codeLineaireGen(2, G)
simula : capaciteCorrection(C)

0
tousLesMotsdecode(C)

tous les mots-de-code du code \(C\).

Paramètres

C – un code linéaire

Exemple :

simula : G = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])
simula : C = codeLineaireGen(2, G)
simula : tousLesMotsdecode(C)

(0, 0, 0, 0, 0, 0)
(0, 1, 1, 1, 0, 1)
(1, 0, 1, 1, 0, 1)
(1, 1, 0, 0, 0, 0)
(0, 1, 0, 0, 1, 1)
(0, 0, 1, 1, 1, 0)
(1, 1, 1, 1, 1, 0)
(1, 0, 0, 0, 1, 1)
(1, 1, 1, 0, 1, 1)
(1, 0, 0, 1, 1, 0)
(0, 1, 0, 1, 1, 0)
(0, 0, 1, 0, 1, 1)
(1, 0, 1, 0, 0, 0)
(1, 1, 0, 1, 0, 1)
(0, 0, 0, 1, 0, 1)
(0, 1, 1, 0, 0, 0)

Les codes de Hamming binaire

codeHammingBinnaire(r)

définition d’un code de Hamming binaire de longueur \(n = 2^r-1\) et de dimension \(k = n-r\).

Paramètres

r – un entier naturel

Exemple :

simula : C = codeHammingBinnaire(3)

C = Code de Hamming binnaire de paramètres (n,k) = (7,4)

simula : matriceControle(C)

[[0 0 0 1 1 1 1]
 [0 1 1 0 0 1 1]
 [1 0 1 0 1 0 1]]

simula : matriceGeneratrice(C)

[[1 0 0 0 0 1 1]
 [0 1 0 0 1 0 1]
 [0 0 1 0 1 1 0]
 [0 0 0 1 1 1 1]]
matControleHamming(r)

la matrice de contrôle d’un code de Hamming binaire de longueur \(n = 2^r-1\) et de dimension \(k = n-r\).

Paramètres

r – un entier naturel

Exemple :

simula : H = matControleHamming(3)

H = [[0 0 0 1 1 1 1]
    [0 1 1 0 0 1 1]
    [1 0 1 0 1 0 1]]
decodageHamming(m, C)

le décodage d’un code de Hamming binaire de longueur \(n = 2^r-1\) et de dimension \(k = n-r\).

Paramètres
  • m=(m1,m2,..,mk) – un vecteur

  • C – un code de hamming binaire

Exemple :

simula : C = codeHammingBinnaire(3)

C = Code de Hamming binnaire de paramètres (n,k) = (7,4)

simula : matriceGeneratrice(C)

[[1 0 0 0 0 1 1]
 [0 1 0 0 1 0 1]
 [0 0 1 0 1 1 0]
 [0 0 0 1 1 1 1]]

simula : decodageHamming((1,1,0,0,0,1,1) , C)

(1, 0, 0, 0, 0, 1, 1)
encodage(m, C)

l’encodage du message \(m=(m_1,m_2,...,m_k)\) pour le code \(C\) i.e \(mG\)\(G\) est la matrice génératrice du code \(C\).

Paramètres
  • m=(m1,m2,..,mk) – un vecteur

  • C – un code linéaire

Exemple :

simula : G = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

G =

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : C = codeLineaireGen(2, G)

C = Codes lineaire défini sur F_2 de matrice génératrice

G =
[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : encodage((1,0,1,1) , C)

[0 0 1 0 1 1 ]
syndrome(c, C)

le syndrome du mot \(c=(c_1,c_2,...,c_n)\) pour le code \(C\).

Paramètres
  • c=(c1,c2,..,ck) – un vecteur

  • C – un code linéaire

Exemple :

simula : G = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

G =

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : C = codeLineaireGen(2, G)

C = Codes lineaire défini sur F_2 de matrice génératrice

G =
[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : syndrome((1,1,1,0,1,1) , C)

[0 ]
[0 ]

simula : syndrome((1,1,1,1,1,1) , C)

[0 ]
[1 ]
estMotdecode(c, C)

renvoie “Oui” si \(c=(c_1,c_2,...,c_n)\) si c est un mot de code du code \(C\) et “Non” dans le cas contraire.

Paramètres
  • c=(c1,c2,..,ck) – un vecteur

  • C – un code linéaire

Exemple :

simula : G = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

G =

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : C = codeLineaireGen(2, G)

C = Codes lineaire défini sur F_2 de matrice génératrice

G =
[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : estMotdecode((1,1,1,0,1,1) , C)

Oui

simula : estMotdecode((1,1,1,1,1,1) , C)

Non
echelonnerMatriceFp(p, A)

la forme échelonnée réduite de la matrice \(A\) dans le corps fini \(\mathbb{F}_p\).

Paramètres
  • p – un nombre premier

  • A – Une matrice

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : echelonnerMatriceFp(2, A)

[[1 0 0 0 1 1]
 [0 1 0 0 1 1]
 [0 0 1 0 1 1]
 [0 0 0 1 0 1]]
systematise(p, A)

la matrice systématisée de \(A\) dans le corps fini \(\mathbb{F}_p\).

Paramètres
  • p – un nombre premier

  • A – Une matrice

Exemple :

simula : A = matrice([ [1,1,1,0,1,1], [0,1,0,0,1,1], [1,0,1,1,0,1], [0,1,1,1,0,1] ])

[1 1 1 0 1 1 ]
[0 1 0 0 1 1 ]
[1 0 1 1 0 1 ]
[0 1 1 1 0 1 ]

simula : systematise(2, A)

 [[1 0 0 0 1 1]
  [0 1 0 0 1 1]
  [0 0 1 0 1 1]
  [0 0 0 1 0 1]]

Note

Les fonctions systematise() et echelonnerMatriceFp() sont équivalentes.

normaliseInverse(p, H)

la systématisation de la matrice \(H\) dans le sens inverse dans le corps fini \(\mathbb{F}_p\).

Paramètres
  • p – un nombre premier

  • A – Une matrice

Exemple :

simula : H = matrice([ [1,1,1,0,1,1,0], [0,1,0,0,1,1,1], [1,0,1,1,0,1,0] ])

[1 1 1 0 1 1 0 ]
[0 1 0 0 1 1 1 ]
[1 0 1 1 0 1 0 ]

simula : normaliseInverse(2, H)

[[0 1 0 1 1 0 0]
 [1 0 1 1 0 1 0]
 [1 0 1 0 0 0 1]]