ENS Informatique Fondamentale (Maths Info) MP 2011Sujet
Pas encore noté
Téléchargements
- Corrigé : pas encore disponible
- Rapport du jury : non disponible
Ces sujets peuvent vous intéresser
Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
ÉCOLES NORMALES SUPÉRIEURES
COMPOSITION D'INFORMATIQUE-MATHÉMATIQUES - (ULC)
Les calculatrices sont interdites.
La qualité de la rédaction sera prise en compte dans la note finale.
Autour des codes correcteurs
Nous allons traiter dans ce sujet quelques points relatifs aux codes correcteurs d'erreur. Ce domaine s'occupe de la transmission fiable d'informations via un canal possiblement bruité. Cette théorie trouve de nombreuses applications pratiques comme la transmission d'information par satellite ou les disques compacts par exemple.
Nous allons dans un premier temps examiner certains points fondamentaux de cette théorie.
Dans une deuxième partie, nous allons considérer une famille particulière de codes. Ils sont normalement définis sur des objets que l'on appelle corps finis mais pour des raisons de compatibilité avec le programme de l'épreuve, nous allons les définir sur
ℝ ou
ℂ . Cela ne nous empêchera pas de mettre en évidence un certain nombre de leurs propriétés classiques. Nous allons notamment étudier un algorithme de décodage de ces codes.
La troisième partie sera consacrée au développement d'algorithmes qui nous permettront d'accélérer la procédure de décodage introduite dans la deuxième partie.
Pour finir, nous reviendrons dans le cadre plus réaliste de codes définis sur un ensemble fini et nous mettrons en place les propriétés qui nous permettront d'établir des bornes sur le nombre de mots que peut contenir un code, et d'avoir ainsi une idée un peu plus précise de l'efficacité de ce code.
Préambule
Dans la suite, si
x est un nombre réel,
⌊x⌋ désignera la partie entière de
x , i.e. le plus grand entier relatif inférieur ou égal à
x . Si
E désigne un ensemble fini, on notera
card(E) son nombre d'éléments. Soit
m et
n deux entiers relatifs, on définit
Une somme et un produit indexés sur un ensemble vide vaudront, comme d'habitude, respectivement 0 et 1 .
Partie 1 : Codes correcteurs
Soit
A un ensemble non vide,
n un entier naturel non nul. On désignera par
A^n l'ensemble
{x = (x_1, x_2, …, x_n), x_i ∈ A} . Les éléments de
A^n seront appelés mots.
Si
x = (x_1, x_2, …, x_n) et
y = (y_1, y_2, …, y_n) désignent deux mots de
A^n , on note
Question 1.1. Démontrer que
δ_(H, n) définit une distance sur
A^n .
Dans la suite,
δ_(H, n) sera notée plus simplement
δ_H .
Un code sur
A de longueur
n est un sous-ensemble
C de
A^n . Dans tout le problème, un code comportera toujours au moins deux éléments distincts. L'ensemble
A sera appelé alphabet, l'entier
n sera appelé la longueur du code
C et les éléments de
C seront appelés les mots du code.
Soit
e un entier naturel. On dit qu'un code
C de longueur
n sur un alphabet
A vérifie la condition de décodage d'ordre
e si pour tout
y ∈ A^n , il existe au plus un mot
x ∈ C tel que
δ_H(x, y) ⩽ e .
La distance minimale d'un code
C est l'entier
Question 1.2. Justifier que
d_C est bien définie.
Question 1.3. Soit
C un code et
e un entier naturel. Montrer que si
d_C ⩾ 2e + 1 alors
C vérifie la condition de décodage d'ordre
e .
La capacité de correction d'un code
C est l'entier
e = ⌊(d_C − 1)/2⌋ , où
d_C désigne la distance minimale de
C .
Dans la pratique, un mot
x d'un code
C de longueur
n est envoyé via un canal de communication et l'on note
y le mot de
A^n reçu. Le but est, lorsque c'est possible, de retrouver
x à partir de
y : tout moyen permettant d'effectuer une telle opération est appelé décodage.
On suppose
A fini pour toute la suite de la Partie 1.
Question 1.4. Soit
x ∈ A^n, r ∈ ℕ , on désigne par
B(x, r) la boule fermée de centre
x et de rayon
r pour la distance
δ_H , i.e.
B(x, r) = {y ∈ A^n; δ_H(x, y) ⩽ r} .
(a). Pour touti ∈ ℕ , on désigne par
S(x, i) la sphère centrée en
x et de rayon
i , i.e.
S(x, i) = {y ∈ A^n; δ_H(x, y) = i} . Démontrer que
(a). Pour tout
(b). En déduire que
Question 1.5. Soit
C un code de longueur
n sur un alphabet
A . Démontrer qu'il existe un plus petit rayon
r tel que l'ensemble des boules de rayon
r centrées en chaque mot du code forme un recouvrement de
A^n . On note
ρ(C) ce rayon.
Question 1.6.
(a). Soit
C un code de longueur
n sur un alphabet
A , de capacité de correction
e . Démontrer que
(b). Soit
C un code de longueur
n sur un alphabet
A . Montrer de même que
Intermède : notations et définitions
Dans les deux prochaines parties,
K désignera le corps des nombres réels
ℝ ou le corps des nombres complexes
ℂ, K[X] désignera l'anneau des polynômes à coefficients dans
K et
K(X)
le corps des fractions rationnelles à coefficients dansK . Ces deux ensembles sont aussi des
K espaces vectoriels. Un élément
P d'un de ces deux ensembles pourra aussi être noté
P(X) . Un polynôme à coefficients dans
K est dit unitaire si son coefficient dominant, i.e. le coefficient de son terme de plus haut degré, vaut 1 . On convient que deg
0 = − ∞ .
le corps des fractions rationnelles à coefficients dans
Soit
A, B et
C ∈ K[X] . On dit que
A divise
B s'il existe
D ∈ K[X] tel que
B = AD . On notera
A ≡ BmodC si
C divise
A − B .
Il vous sera demandé d'estimer l'efficacité de certaines procédures de calculs. On le fera comme suit. Soit
K désignant
ℝ ou
ℂ , on supposera que le coût d'une opération arithmétique (addition, soustraction, multiplication, division) sur
K est unitaire. On devra donc estimer, ou au moins majorer, le nombre d'opérations arithmétiques sur
K qui seront effectuées au cours de l'exécution des algorithmes.
Soit
(f(n)) et
(g(n)) deux suites réelles définies à partir d'un certain rang
n_0 . On écrit que
s'il existe
K > 0 et
N ⩾ n_0 tels que pour tout
n ∈ ℕ, n ⩾ N , on a
|f(n)| ⩽ K|g(n)| .
On généralise cette notation à des fonctions de deux arguments : soitm_0 et
n_0 deux entiers fixés, si
f et
g sont deux fonctions à valeurs réelles définies en tout couple
(m, n) ∈ ℕ^2, m ⩾ m_0 ,
n ⩾ n_0 . On écrit que
On généralise cette notation à des fonctions de deux arguments : soit
s'il existe
K > 0, N ⩾ max(m_0, n_0) tels que pour tout
n et
m ∈ ℕ, min(n, m) ⩾ N , on a
|f(m, n)| ⩽ K|g(m, n)| .
À titre d'exemple, on va effectuer une majoration du coût du produit de deux polynômes. On va au préalable admettre les résultats suivants : soit
A = ∑_(0 ⩽ i ⩽ n)a_i X^i et
B = ∑_(0 ⩽ j ⩽ m)b_j X^j ∈ K[X] avec
a_n b_m ≠ 0, λ ∈ K ,
- la multiplication de
A par un monômeX^k, k ∈ ℕ , n'a pas de coût arithmétique (le polynôme obtenu est∑_(0 ⩽ i ⩽ n)a_i X^(i + k)) ; - la multiplication de
A parλ coûte au plusdegA + 1 multiplications dansK (le polynôme obtenu est∑_(0 ⩽ i ⩽ n)(λa_i)X^i) ; - l'addition de
A etB coûte au plusmin(degA, degB) + 1 additions dansK (supposonsn ⩾ m , on aA + B = ∑_(0 ⩽ k ⩽ n)c_k X^k avecc_k = a_k + b_k pourk ⩽ m etc_k = a_k sinon).
Soit deux polynômes,A etB ∈ K[X] . On peut calculer le produit, notéC , deA etB de la manière élémentaire suivante :
Algorithme 1
Entrée : $n$ et $m \in \mathbb{N}, A=\sum_{0 \leqslant i \leqslant n} a_{i} X^{i}$ et $B=\sum_{0 \leqslant j \leqslant m} b_{j} X^{j} \in \mathbf{K}[X]$.
Sortie : Un polynôme $C \in \mathbf{K}[X]$ égal au produit de $A$ et $B$.
1. $C_{0} \longleftarrow \sum_{0 \leqslant j \leqslant m} a_{0} b_{j} X^{j}$
2. Pour $i=1, \ldots, n$, faire
$S_{i} \longleftarrow\left(a_{i} X^{i}\right) B$
$C_{i} \longleftarrow C_{i-1}+S_{i}$
4. Renvoyer $C=C_{n}$
Le symbole
⟵ dans un algorithme signifie «prend la valeur de». L'expression <<renvoyer XXX» dans un algorithme signifie «sortir de l'algorithme et retourner XXX».
L'étape 1 coûte au plus
m + 1 produits (les
a_0 b_j pour
j = 0, …, m ) dans
K .
Soiti ∈ {1, …, n} , on constate que
S_i = ∑_(i ⩽ j ⩽ i + m)a_i b_(j − i)X^j et on montre par récurrence que
degC_(i − 1) ⩽ m + i − 1 . On écrit donc
C_(i − 1) = ∑_(0 ⩽ j ⩽ m + i − 1)c_(i − 1, j)X^j . Le polynôme
C_i = C_(i − 1) + S_i est donc de la forme
∑_(0 ⩽ j ⩽ m + i)c_(i, j)X^j avec
Soit
Donc, pour
j = 0, …, i − 1 , il n'y a pas de coût arithmétique. Pour
j = i, …, m + i − 1 , on calcule au plus un produit et une addition dans
K et pour
j = m + i , on effectue au plus une multiplication. L'étape 3 a donc un coût total d'au plus
m + 1 multiplications et
m additions dans
K .
L'étape 2 consistant à répéter
n fois l'étape 3 , son exécution nécessite au plus
n(m + 1) multiplications et
nm additions dans
K .
Il y a donc un coût total d'au plus
m + 1 + n(m + 1) + nm = (m + 1)(n + 1) + nm opérations arithmétiques dans
K . Comme
(m + 1)(n + 1) + nm ⩽ (2m)(2n) + nm = 5mn dès que
min(n, m) ⩾ 1 , on en déduit que le nombre total d'opérations arithmétiques sur
K est en
O(mn) .
Partie 2 : Décodage d'une famille de codes
Dans cette partie, l'alphabet sera le corps
K .
Pourn ∈ ℕ, n ⩾ 1 , l'ensemble
A^n est donc
K^n , l'espace vectoriel sur
K muni des opérations standard + et
⋅ définies par :
Pour
- pour
x = (x_1, …, x_n) ety = (y_1, …, y_n) dansA^n , on ax + y = (x_1 + y_1, …, x_n + y_n) ; - pour
x = (x_1, …, x_n) dansA^n etλ ∈ K , on aλ ⋅ x = (λx_1, …, λx_n) .
Si
x ∈ A^n , on notera
w_H(x) = δ_H(x, 0) .
Soitk ∈ ℕ, k ⩾ 1 , un code linéaire de longueur
n sur
K et de dimension
k (on dira un code
[n, k]) est un sous-espace vectoriel de
K^n de dimension
k .
Soit
Question 2.1. Soit un code linéaire
C, w_H est-elle une norme sur le
K -espace vectoriel
C ? Justifier votre réponse.
Question 2.2. Démontrer que la distance minimale d'un code linéaire
C est égale au minimum de
w_H(x) , où
x décrit
C∖{0} .
Question 2.3. Borne de Singleton. Démontrer que tout code
[n, k] de distance minimale
d vérifie l'inégalité
k + d ⩽ n + 1 . On pourra faire intervenir le sous-ensemble des points de
K^n dont les
n − d + 1 premières composantes sont nulles.
Soit
n un entier naturel non nul. Soit
α_1, …, α_n ∈ K , deux à deux distincts. La fonction d'évaluation associée à
α = (α_1, …, α_n) est
Soit
k ∈ ℕ, 1 ⩽ k ⩽ n , soit
Soit
RS_(α, k) défini par
Question 2.4. Démontrer que
RS_(α, k) est un code
[n, k] .
Question 2.5.
(a). Démontrer que, pour tout
f ∈ L_k∖{0} , le vecteur
ev_α(f) a au plus
k − 1 composantes nulles.
(b). Déterminer la distance minimale deRS_(α, k) . Que remarque-t-on ?
(b). Déterminer la distance minimale de
Nous allons maintenant étudier un procédé de décodage des codes
RS_(α, k) . On se donne un entier
e tel que
0 < e < (n − k + 1)/2 .
Algorithme 2
Entrée : Le mot reçu $y=\left(y_{1}, \ldots, y_{n}\right) \in \mathbf{K}^{n}$
Sortie : Un polynôme $f \in \mathbf{K}[X]$ tel que $\operatorname{deg} f<k$ et $\delta_{H}\left(\mathrm{ev}_{\alpha}(f), y\right) \leqslant e$ ou «échec»
1. Calculer $E, F \in \mathbf{K}[X]$ tels que
a. $F\left(\alpha_{i}\right)-y_{i} E\left(\alpha_{i}\right)=0$ pour tout $i \in\{1, \ldots, n\}$
b. $\operatorname{deg} F<e+k$
c. $\operatorname{deg} E=e$ et $E$ est unitaire
Si de tels polynômes n'existent pas, renvoyer <<échec>>
2. Si $E$ ne divise pas $F$, renvoyer «échec». Sinon, calculer $f=F / E$.
3. Si $\delta_{H}\left(\mathrm{ev}_{\alpha}(f), y\right)>e$, renvoyer <<échec>>. Sinon, renvoyer $f$.
Question 2.6. Soit
f ∈ K[X] tel que
degf < k et
δ_H(ev_α(f), y) ⩽ e , exhiber un couple
(E, F) ∈ K[X]^2 vérifiant les conditions 1a, 1b et 1c de l'Algorithme 2, et tel que
f = F/E .
Question 2.7. Soit (
E_1, F_1 ) et (
E_2, F_2 ) deux paires de polynômes satisfaisant les conditions 1a, 1b et 1c de l'Algorithme 2. Démontrer que
Question 2.8. On suppose que l'on sait effectuer l'étape 1 de l'Algorithme 2. Démontrer que s'il existe
f ∈ K[X] tel que
degf < k et
δ_H(ev_α(f), y) ⩽ e , l'Algorithme 2 le calcule et renvoie «échec» sinon.
Soit
n ∈ ℕ . On dira qu'un système d'équations linéaires à coefficients dans
K est de taille au plus
n si son nombre d'inconnues et son nombre d'équations sont tous deux inférieurs ou égaux à
n . On admet que la résolution d'un système d'équations linéaires à coefficients dans
K de taille au plus
n peut s'effectuer en un coût
O(n^3) d'opérations arithmétiques sur
K .
Question 2.9. Démontrer que le calcul effectif de polynômes
E et
F vérifiant les conditions 1a, 1b et 1c de l'Algorithme 2 peut se ramener à la résolution d'un système d'équations linéaires à coefficients dans
K , que l'on explicitera, de taille au plus
n .
Si
P est un polynôme, on notera
cd(P) son coefficient dominant.
Algorithme 3
Entrée : $A=\sum_{0 \leqslant i \leqslant n} a_{i} X^{i}$ et $B=\sum_{0 \leqslant i \leqslant m} b_{i} X^{i} \in \mathbf{K}[X]$ avec $b_{m} \neq 0$
Sortie : Le couple $(Q, R) \in \mathbf{K}[X]$ tel que $A=B Q+R$ et $\operatorname{deg} R<m$
1. Si $n<m$, renvoyer $Q=0$ et $R=A$
2. $R \longleftarrow A, u \longleftarrow b_{m}^{-1}$
3. pour $i=n-m, n-m-1, \ldots, 0$, faire
si $\operatorname{deg} R=m+i$ alors $q_{i} \longleftarrow \operatorname{cd}(R) u, R \longleftarrow R-q_{i} X^{i} B$
sinon $q_{i} \longleftarrow 0$
5. Renvoyer $Q=\sum_{0 \leqslant i \leqslant n-m} q_{i} X^{i}$ et $R$
Question 2.10. Division euclidienne. Soit
n, m ∈ ℕ, A et
B ∈ K[X] avec
degA = n et
degB = m .
(a). Démontrer qu'un couple(Q, R) ∈ K[X]^2 tel que
A = BQ + R et
degR < m est unique.
(b). Démontrer que l'Algorithme 3 retourne bien la sortie annoncée.
(c). Démontrer que, sin ⩾ m , cet algorithme nécessite au plus
(2m + 1)(n − m + 1) + 1 opérations arithmétiques dans
K .
(a). Démontrer qu'un couple
(b). Démontrer que l'Algorithme 3 retourne bien la sortie annoncée.
(c). Démontrer que, si
Les polynômes
Q et
R renvoyés par l'Algorithme 3 seront appelés respectivement quotient et reste de la division euclidienne de
A par
B .
Question 2.11. Démontrer que l'Algorithme 2 peut s'exécuter en un nombre
O(n^3) d'opérations arithmétiques sur
K .
Partie 3 : Décodage via l'interpolation et l'algorithme d'Euclide étendu
On rappelle que, pour tous
A et
B ∈ K[X] , non tous deux nuls, un polynôme
D ∈ K[X] est un pgcd (plus grand commun diviseur) de
A et
B s'il satisfait aux deux conditions :
-
D diviseA etB ; - si
E ∈ K[X] diviseA etB , alorsE diviseD .
Un pgcd de deux polynômes est donc défini à une constante multiplicative de
K près. On notera
pgcd(A, B) le pgcd unitaire de
A et
B .
Algorithme 4 Algorithme d'Euclide étendu.
Entrée : $A=\sum_{0 \leqslant i \leqslant n} a_{i} X^{i}$ et $B=\sum_{0 \leqslant i \leqslant m} b_{i} X^{i} \in \mathbf{K}[X]$ tels que $A B \neq 0$
Sortie : Un entier $\ell \in \mathbb{N}$, quatre suites finies $\left(Q_{i}\right)_{1 \leqslant i \leqslant \ell},\left(R_{i}\right)_{0 \leqslant i \leqslant \ell+1},\left(S_{i}\right)_{0 \leqslant i \leqslant \ell+1},\left(T_{i}\right)_{0 \leqslant i \leqslant \ell+1}$
d'éléments de $\mathbf{K}[X]$
1. $R_{0} \longleftarrow A, S_{0} \longleftarrow 1, T_{0} \longleftarrow 0$,
$R_{1} \longleftarrow B, S_{1} \longleftarrow 0, T_{1} \longleftarrow 1$
2. $i \longleftarrow 1$,
tant que $R_{i} \neq 0$, faire
3. $\quad\left(Q_{i}, R_{i+1}\right) \longleftarrow$ Algorithme 3 appliqué à $\left(R_{i-1}, R_{i}\right)$
$S_{i+1} \longleftarrow S_{i-1}-Q_{i} S_{i}$
$T_{i+1} \longleftarrow T_{i-1}-Q_{i} T_{i}$
$i \longleftarrow i+1$
4. Renvoyer $\ell=i-1$ et les suites $\left(Q_{i}\right)_{1 \leqslant i \leqslant \ell},\left(R_{i}\right)_{0 \leqslant i \leqslant \ell+1},\left(S_{i}\right)_{0 \leqslant i \leqslant \ell+1},\left(T_{i}\right)_{0 \leqslant i \leqslant \ell+1} \in \mathbf{K}[X]$
L'algorithme d'Euclide étendu fournit notamment un pgcd des deux polynômes en entrée et les coefficients de Bézout correspondants, à savoir respectivement les polynômes
R_ℓ, S_ℓ et
T_ℓ , comme on va le voir.
On notera
M_(2, 1)(K(X)) le
K -espace vectoriel des matrices à deux lignes et une colonne à coefficients dans
K(X) et
M_(2, 2)(K(X)) le
K -espace vectoriel et l'anneau des matrices à deux lignes et deux colonnes à coefficients dans
K(X) .
On reprend les notations de l'Algorithme 4 et l'on introduit les matrices :
et
Question 3.1. En reprenant les notations de l'Algorithme 4 , démontrer que, pour tout
0 ⩽ i ⩽ ℓ , on a
(a).U_i(A/B) = ((R_i)/(R_(i + 1))) ,
(b).U_i = (S_i, T_i; S_(i + 1), T_(i + 1)) et
S_i A + T_i B = R_i (l'égalité est vraie aussi pour
i = ℓ + 1 ),
(c).S_i T_(i + 1) − S_(i + 1)T_i = (− 1)^i ,
(d).pgcd(A, B) = pgcd(R_i, R_(i + 1)) = R_ℓ/cd(R_ℓ) , où
cd(R_ℓ) désigne le coefficient dominant de
R_ℓ .
(a).
(b).
(c).
(d).
Question 3.2. En reprenant les notations de l'Algorithme 4 et en supposant
degA ⩾ degB , démontrer que
Question 3.3. Soit
n, m ∈ ℕ, A et
B ∈ K[X] avec
degA = n et
degB = m . Démontrer que l'exécution de l'Algorithme 4 nécessite au plus
O(nm) opérations arithmétiques dans
K .
Question 3.4. Soit
M ∈ K[X] de degré
n > 0, P ∈ K[X] tel que
degP < n . Soit
k ∈ {0, …, n} , déterminer un couple
(R, T) ∈ K[X]^2 tel que
On admet dans la suite du problème que l'évaluation d'un polynôme de
K[X] de degré au plus
t peut se faire en
O(t) opérations arithmétiques sur
K .
Algorithme 5
Entrée : $n$ un entier naturel non nul, $u_{0}, u_{1}, \ldots, u_{n-1}$ distincts deux à deux, $v_{0}, v_{1}, \ldots, v_{n-1} \in \mathbf{K}$
Sortie : L'unique $P \in \mathbf{K}[X]$ tel que $\operatorname{deg} P \leqslant n-1$ et $P\left(u_{i}\right)=v_{i}$ pour $i=0, \ldots, n-1$
1. $A \longleftarrow 1, P \longleftarrow 0$
2. Pour $i=0, \ldots, n-1$, faire $A \longleftarrow\left(X-u_{i}\right) A$
3. Pour $i=0, \ldots, n-1$, faire
4. $\quad A_{i} \longleftarrow$ quotient de la division euclidienne de $A$ par $X-u_{i}$
$\alpha_{i} \longleftarrow A_{i}\left(u_{i}\right)$
$P \longleftarrow P+v_{i} A_{i} / \alpha_{i}$
5. Renvoyer $P$
Question 3.5. Soit
n un entier naturel non nul,
u_0, u_1, …, u_(n − 1), v_0, v_1, …, v_(n − 1) ∈ K . On suppose les
u_i deux à deux distincts.
(a). Démontrer qu'un polynômeP ∈ K[X] tel que
degP ⩽ n − 1 et
P(u_i) = v_i pour
i = 0, …, n − 1 , est unique.
(b). Démontrer que l'Algorithme 5 calcule bien la sortie annoncée.
(c). Démontrer que le nombre d'opérations arithmétiques effectuées dansK pour calculer le polynôme
P , sortie de l'Algorithme 5, est en
O(n^2) .
(a). Démontrer qu'un polynôme
(b). Démontrer que l'Algorithme 5 calcule bien la sortie annoncée.
(c). Démontrer que le nombre d'opérations arithmétiques effectuées dans
Question 3.6. Soit
n un entier naturel non nul, soit
k ∈ {0, …, n} . Soit
u_0, …, u_(n − 1) ∈ K distincts deux à deux,
v_0, …, v_(n − 1) ∈ K . On veut déterminer un couple
(R, T) ∈ K[X]^2 tel que
(a). Démontrer que résoudre (2) revient à résoudre (1) pour un couple (
M, P ) que l'on explicitera.
(b). En déduire une solution de (2).
(b). En déduire une solution de (2).
Question 3.7. Démontrer que l'Algorithme 2 peut s'exécuter en un nombre
O(n^2) d'opérations arithmétiques sur
K .
Partie 4 : Borne de la programmation linéaire
On travaille dans toute cette partie avec des codes définis sur un alphabet
A de cardinal
q ∈ ℕ, q ⩾ 2 . On se donne aussi un entier naturel non nul
n .
On définit la taille d'un code comme le nombre de mots de ce code (précisons que le terme <taille> employé dans cette partie n'a pas de rapport avec celui employé dans la Partie 2). Soit
C un code de longueur
n et de taille
M , on écrira que
C est un (
n, M )-code. Si de plus,
C est de distance minimale
d , on écrira que
C est un
(n, M, d) -code.
On notera
A_q(n, d) la plus grande taille possible d'un code sur
A de longueur
n et de distance minimale
d , i.e.
Le but de cette partie est d'établir une borne sur
A_q(n, d) appelée borne de la programmation linéaire. Nous déduirons de cette borne une autre borne classique en théorie des codes.
Nous allons nous servir d'une certaine famille de polynômes (dans cette partie, on confondra polynôme et fonction polynomiale). Avant de la définir, nous allons généraliser la notion de coefficient binomial comme suit : si
y et
m sont deux nombres réels quelconques, on pose
On vérifie aisément que cette définition prolonge bien celle rappelée dans le préambule.
Pour tout entier naturelk , le polynôme
K_k(x) , où
x est une variable de
ℝ , est donné par
Pour tout entier naturel
On rappelle que pour tous
u, v ∈ ℝ , avec
|u| < 1 , on a
(1 + u)^v = ∑_(i = 0)^(+ ∞)(v/i)u^i .
Question 4.1. Établir les propriétés suivantes.
(a). Soitz ∈ ℝ, |z| < 1/(q − 1) , on a
(a). Soit
(b). On a, pour tout
k ∈ ℕ ,
(c). Pour tout
k ∈ ℕ, K_k(x) est un polynôme de degré
k , avec un coefficient dominant égal à
(− q)^k/k! et un terme constant
K_k(0) = (n/k)(q − 1)^k .
(d). Pour tousk, ℓ ∈ ℕ , on a
(d). Pour tous
où
δ_(kℓ) est le symbole de Kronecker défini par
δ_(kℓ) = 1 si
k = ℓ et 0 sinon. Indication : on pourra multiplier les deux membres de l'égalité par
y^k z^ℓ , avec
y, z ∈ ] − 1, 1[ , et sommer sur tous les
k, ℓ ⩾ 0 , en expliquant pourquoi cette opération est licite.
(e). On a, pour tousk, i ∈ ℕ ,
(e). On a, pour tous
(f). On a, pour tous
k, ℓ ∈ ℕ ,
(g). On a, pour tout
m ∈ ℕ ,
Indication : utiliser (b).
(h). Soitr ∈ ℕ , tout polynôme
f(x) de degré
r peut s'exprimer sous la forme
f(x) = ∑_(k = 0)^r f_k K_k(x) où
f_k = q^(− n)∑_(i = 0)^n f(i)K_i(k) .
(h). Soit
Soit
C un
(n, M) -code sur
A . On définit pour tout
i ∈ ℕ, 0 ⩽ i ⩽ n ,
La suite finie
(A_i(C))_(i = 0)^n est appelée la distribution des distances de
C .
Remarque. La distribution des distances de
C ne dépend pas de l'alphabet mais seulement du cardinal de l'alphabet. Nous supposerons donc à présent que l'alphabet
A est l'anneau
ℤ/qℤ .
Comme dans la Partie 2, on note
w_H(x) = δ_H(x, 0) pour tout
x ∈ (ℤ/qℤ)^n .
Question 4.2. Soit
ζ une racine primitive
q -ième de l'unité dans
ℂ , i.e.
ζ^q = 1 mais
ζ^j ≠ 1 pour tout
j ∈ ℕ, 1 ⩽ j ⩽ q − 1 . On suppose que
u ∈ (ℤ/qℤ)^n est un mot tel que
w_H(u) = i . Démontrer que
où, si
u = (u_1, …, u_n) et
v = (v_1, …, v_n) , on a
u ⋅ v = ∑_(j = 1)^n u_j v_j (on confond
u_j et
v_j avec leurs représentants dans
{0, …, q − 1} : c'est bien défini puisque
ζ^q = 1 ).
Question 4.3. Soit
C un code de longueur
n sur l'alphabet
ℤ/qℤ . Démontrer que
pour tout
k ∈ ℕ, 0 ⩽ k ⩽ n .
Question 4.4. Borne de la programmation linéaire (première version). Pour tous entiers
n et
d tels que
1 ⩽ d ⩽ n , démontrer que
Question 4.5. Borne de la programmation linéaire (seconde version). Pour tous entiers
n et
d tels que
1 ⩽ d ⩽ n , soit
f(x) = 1 + ∑_(k = 1)^n f_k K_k(x) un polynôme tel que
f_k ⩾ 0 pour tout
1 ⩽ k ⩽ n et
f(i) ⩽ 0 pour
d ⩽ i ⩽ n . Démontrer que
A_q(n, d) ⩽ f(0) .
Question 4.6. Borne de Singleton. Déduire de la question précédente que pour tous entiers
n et
d tels que
1 ⩽ d ⩽ n , on a
A_q(n, d) ⩽ q^(n − d + 1) .
Remarque. Il s'agit bien de la même borne que dans la Partie 2 : dans la pratique, les codes
RS_(α, k) sont considérés sur des corps de cardinal
q , où
q est une puissance d'un nombre premier
p .
Pas de description pour le moment
