166 lines
6.2 KiB
TeX
166 lines
6.2 KiB
TeX
% !TeX encoding = UTF-8
|
|
\documentclass[10pt,a4paper]{article}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[margin=0.5in]{geometry}
|
|
\usepackage[french]{babel}
|
|
\usepackage{tabularx}
|
|
\usepackage{theorem}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\let\theoremstyle\relax
|
|
\usepackage{amsthm}
|
|
\usepackage{calrsfs}
|
|
\usepackage{setspace}
|
|
\usepackage{stmaryrd}
|
|
|
|
\usepackage{bashful}
|
|
|
|
|
|
\theorembodyfont{\upshape}
|
|
|
|
% Assure que les nouvelles parties commencent toujours sur une nouvelle page.
|
|
\let\oldpart\part
|
|
\renewcommand\part{\clearpage\oldpart}
|
|
|
|
% Un peu plus d'interligne, c'est plus lisible
|
|
\onehalfspacing
|
|
|
|
% Fait une jolie barre horizontale
|
|
\newcommand{\hsep}{\centerline{\rule{0.8\linewidth}{.05pt}}}
|
|
|
|
% Racourcis
|
|
\newcommand{\FD}{\mathbb{F}_2\hspace{-.2em}}
|
|
|
|
\newtheoremstyle{break}
|
|
{\topsep}{\topsep}%
|
|
{}{}%
|
|
{\bfseries}{}%
|
|
{\newline}{}%
|
|
\theoremstyle{break}
|
|
\newtheorem{definition}{Définition}[section]
|
|
\newtheorem{theoreme}{Théorème}[section]
|
|
\theoremstyle{remark}
|
|
\newtheorem*{remarque}{Remarque}
|
|
|
|
% Compter les mots
|
|
|
|
\author{Samy AVRILLON, Victor BELLOT, Dylan THEVENET}
|
|
\title{Études des codes cycliques}
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
|
|
\hsep
|
|
|
|
\tableofcontents
|
|
|
|
\pagebreak
|
|
|
|
\part{Contexte mathématique}
|
|
|
|
\section{Codes}
|
|
|
|
\begin{definition}[Code, Codage]
|
|
On définit un code de paramètres $(n,k)$ comme une partie de $\FD^n$ associée à $\FD^k$. Un codage est une application de $\FD^k$ vers $\FD^n$ injective.
|
|
|
|
Un codage est dit systématique lorsque les $k$ premiers bits de l'image d'un élément sont égaux à cet élément.
|
|
\end{definition}
|
|
\begin{definition}[Distance de Hamming, Poids d'un mot]
|
|
La distance de Hamming entre deux mots $v$ et $w$ de $\FD^n$ est le nombre de coordonnées différentes des deux mots.
|
|
$$d(v,w) = \operatorname{card}(i\in \llbracket1,n\rrbracket,v_i \neq w_i)$$
|
|
|
|
Le poids d'un mot est son nombre de coordonnées non nulles, égal à sa distance au vecteur nul.
|
|
\end{definition}
|
|
|
|
\begin{definition}[Capacités d'un code]\label{thMinDist}
|
|
Étant donné un code $C$, on appelle capacité de détection $e_d$ et capacité de correction $e_c$ le plus grand nombre de bits erronés que l'on puisse détecter, respectivement corriger dans le code.
|
|
La distance minimale d'un code est la plus grande distance entre deux mots du code.
|
|
|
|
$$d_C = \min_{x,y\in C\times C}\left(d(x,y)\right)$$
|
|
\end{definition}
|
|
|
|
\begin{theoreme}
|
|
On peut alors exprimer $e_d$ et $e_c$ en fonction de $d_C$ :
|
|
|
|
$$ e_c = d_C - 1 \qquad e_d = \left\lfloor\frac{d_C - 1}{2}\right\rfloor$$
|
|
\end{theoreme}
|
|
|
|
\begin{definition}[Code Parfait]
|
|
Un code parfait est un code tel que pour tout mot $w$ de $\FD^n$, il existe un \underline{unique} mot de $C$ étant à une distance minimale de $w$. Autrement dit, il n'y a jamais d'ambigüité sur la façon de décoder un mot erroné.
|
|
\end{definition}
|
|
|
|
\begin{remarque}
|
|
Il n'existe que trois types de codes parfaits:
|
|
\begin{itemize}
|
|
\item Les codes de Hamming
|
|
\item Les codes de répétition pure
|
|
\item Le code de Golay binaire de longueur 23
|
|
\end{itemize}
|
|
\end{remarque}
|
|
|
|
\section{Codes linéaires}
|
|
|
|
On dit qu'un code est linéaire lorsqu'il a une structure naturelle de sous-espace vectoriel de $\FD^n$. Les codages linéaires associés sont des applications linéaires.
|
|
|
|
\begin{definition}[Matrice génératrice]
|
|
On appelle \textbf{matrice génératrice} d'un codage linéaire $\phi$ la matrice de $\mathcal{M}_{n,k}(\FD)$ associée à $\phi$.
|
|
\end{definition}
|
|
|
|
\begin{definition}[Matrice de contrôle]
|
|
On appelle \textbf{matrice de contrôle} n'importe quelle matrice de $\mathcal{M}_{n-k,k}(\FD)$ ayant $C$ pour noyau.
|
|
|
|
Tout code a au moins une matrice de contrôle.
|
|
\end{definition}
|
|
|
|
\begin{theoreme}[Calcul de distances]
|
|
La structure d'espace vectoriel ainsi que la définition \ref{thMinDist} nous permettent de dire que la distance minimale d'un code linéaire est le plus petit poids non nul de ses vecteurs.
|
|
|
|
On peux aussi utiliser la borne de Singleton qui assure:
|
|
|
|
$$d_C \leqslant n+1-k$$
|
|
|
|
\end{theoreme}
|
|
|
|
Voici ici quelques concepts qui seront utiles au décodage.
|
|
|
|
|
|
\begin{definition}[Erreur et syndrome]
|
|
Si l'on souhaite envoyer un mot $X \in \FD^k$ qui est donc codé en $Y\in C$. Le mot réceptionné est $Z \in \FD^n$.
|
|
|
|
On appelle alors \textbf{mot erreur} le mot $E = Z - Y$.
|
|
On appelle \text{syndrome} le mot $S = H \cdot Z$.
|
|
|
|
On remarque que $E$ et $Z$ on le même syndrome. On peut plus généralement définir une relation d'équivalence «avoir le même syndrome». Les classes d'équivalence de cette relation sont appelées \textbf{classes latérales}
|
|
\end{definition}
|
|
|
|
\section{Codes cycliques}
|
|
|
|
\begin{definition}[Code cyclique]
|
|
Un code linéaire est dit cyclique si il est stable par décalage binaire cyclique. C'est à dire que si $w_1w_2w_2\ldots w_n$ est dans $C$ alors $w_2w_3w_4\ldots w_{n-1}w_nw_1$ appartient aussi à $C$.
|
|
|
|
On peut aussi définir le \textbf{code cyclique engendrée} par un mot $w$, qui est le plus petit espace vectoriel stable par décalage cyclique qui contienne $w$.
|
|
\end{definition}
|
|
|
|
\begin{definition}
|
|
On définit le mot binaire associé au polynôme $P=\displaystyle\sum_{i=0}^{n-1}{a_i\cdotp X^i}$ comme étant le mot $a_0a_1\cdots a_{n-1}$. Le polynôme réciproquement associé à un mot binaire par ce procédé est appelé \textbf{représentation polynomiale} du mot.
|
|
\end{definition}
|
|
|
|
\begin{definition}[Polynôme générateur]
|
|
Un polynôme $P$ de $\FD\,[X]$ de degré $n-k$ est dit \textbf{générateur du code cyclique $C$ de paramètre $(k,n)$} lorsque $P | X^n + 1$ et que $(\sigma^i(w))_{i\in \llbracket 0,k-1\rrbracket}$ est une base de $C$ avec $\sigma$ l'opérateur de décalage binaire cyclique est $w$ le mot associé à $P$
|
|
\end{definition}
|
|
\begin{theoreme}[Théorème fondamental des codes cycliques]
|
|
Tout code cyclique admet un et un seul polynôme générateur.
|
|
\end{theoreme}
|
|
|
|
\begin{remarque}
|
|
Un codage naturel pour un code cyclique apparaît avec le polynôme générateur. Le codage appliqué à un mot $w$ est le mot associé au produit du polynôme générateur et du polynôme associé à $w$.
|
|
\end{remarque}
|
|
|
|
\part{Algorithmes}
|
|
\section{Des structures de données}
|
|
\section{Liste des fonctions}
|
|
|
|
|
|
\end{document}
|