Fin (normalement) du Compte rendu avec la jolie bibliographie
This commit is contained in:
parent
671c213b23
commit
0e86409114
2
Code.ml
2
Code.ml
@ -152,7 +152,7 @@ let genererClasses code =
|
||||
let babr = List.fold_left compacteur babr0 svts in
|
||||
if babr<>BFeuille
|
||||
then iter babr svts
|
||||
else babr0 (*On a dépassé la capacité de correction*)
|
||||
else babr0 (* On a depasse la capacite de correction *)
|
||||
in
|
||||
let babr = iter (put BFeuille 0 0) [0] in
|
||||
let erreur = function z -> get babr z
|
||||
|
||||
4
CompteRendu/.gitignore
vendored
4
CompteRendu/.gitignore
vendored
@ -7,3 +7,7 @@
|
||||
*.thm
|
||||
svg-inkscape/
|
||||
print_output_path.svg
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*.run.xml
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[margin=0.5in]{geometry}
|
||||
\usepackage{csquotes}
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{theorem}
|
||||
@ -19,6 +20,8 @@
|
||||
|
||||
\usepackage{pdfpages}
|
||||
|
||||
\bibliographystyle{plain}
|
||||
|
||||
|
||||
|
||||
\theorembodyfont{\upshape}
|
||||
@ -75,7 +78,6 @@
|
||||
\author{\lequel{Dylan THEVENET}{Samy AVRILLON}{Victor BELLOT}}
|
||||
\title{Étude des codes correcteur d'erreurs}
|
||||
\begin{document}
|
||||
|
||||
\lequel{
|
||||
\includepdf[pages=-,linktodoc=false]{PageDeGarde-THEVENET.pdf}
|
||||
}{
|
||||
@ -121,9 +123,9 @@
|
||||
|
||||
\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.
|
||||
La distance minimale d'un code est la plus petite distance entre deux mots distincts du code.
|
||||
|
||||
$$d_C = \min_{x,y\in C\times C}\left(d(x,y)\right)$$
|
||||
$$d_C = \min_{x,y\in C\times C,x\neq y}\left(d(x,y)\right)$$
|
||||
\end{definition}
|
||||
|
||||
\begin{theoreme}\label{thCapacité}
|
||||
@ -160,7 +162,7 @@
|
||||
\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.
|
||||
La structure d'espace vectoriel ainsi que la définition~\ref{thMinDist} 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:
|
||||
|
||||
@ -196,7 +198,7 @@
|
||||
\begin{theoreme}[Théorème fondamental des codes cycliques]
|
||||
Pour tout code cyclique $C$ de paramètres $(n,k)$, il existe un unique polynôme $g$ tel que le mot associé à $g$ engendre $C$ et que $g|X^n-1$. Ce polynôme est alors appelé \textbf{polynôme générateur du code cyclique $C$}.
|
||||
|
||||
On démontre que ce $g$ est alors de degré $n-k$ 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é à $y$
|
||||
On démontre que ce $g$ est alors de degré $n-k$ 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 et $w$ le mot associé à $g$
|
||||
\end{theoreme}
|
||||
|
||||
\begin{remarque}
|
||||
@ -265,7 +267,7 @@
|
||||
\part{Réalisation informatique}
|
||||
\section{Des structures de données}
|
||||
|
||||
La première étape était de créer des structures de données adéquates, c'est à dire permettant d'effectuer les calculs nécessaire à l'utilisation des codes cycliques à moindre coût (temporel).
|
||||
La première étape était de créer des structures de données adéquates, c'est à dire permettant d'effectuer les calculs nécessaire à l'utilisation des codes linéaires à moindre coût (temporel). Pour cela, on considère en temps constant les opérations suivantes: (\verb|lor,land,lxor,lsl,lsr,=,<,>| et les opérations internes aux structures de contrôle, comme \verb|if, for, match|...)
|
||||
|
||||
\subsection{Matrices et vecteurs}
|
||||
Puisque nous avons affaire à des vecteurs de $\FD^n$ on peut les stocker sous forme d'entier «informatique». Nous sommes alors limités par la taille des mots du processeur, typiquement 32 bits ou 64 bits. Mais il est toujours possible de créer des entiers binaires virtuellement plus «grand». Un autre problème est qu'on ne peut pas récupérer la dimension d'un vecteur, et nous devons donc transmettre la donnée à coté.
|
||||
@ -273,7 +275,7 @@
|
||||
Les matrices sont elles, des listes de vecteurs et sont donc naturellement stockées comme listes d'entiers binaires. On utilisera la structure de liste chainée native d'OCaml.
|
||||
|
||||
|
||||
Nous avons ensuite codé les fonctions suivantes: (Les complexités sont données pour des matrices de $\mathcal{M}_{n,k}(\FD)$, les opérations bit à bit se faisant à temps constant, ce qui est vrai pour les entiers natifs).
|
||||
J'ai ensuite codé les fonctions suivantes: (Les complexités sont données pour des matrices de $\mathcal{M}_{n,k}(\FD)$, les opérations bit à bit se faisant à temps constant, ce qui est vrai pour les entiers natifs).
|
||||
|
||||
\begin{itemize}
|
||||
\fsign{produit}{matrice \into vecteur \into vecteur}{k} Renvoie simplement le vecteur produit $Y = M \cdot X$
|
||||
@ -311,7 +313,7 @@
|
||||
\section{Liste des fonctions}
|
||||
|
||||
|
||||
Nous avons ensuite écrit des fonctions permettant de manipuler les codes linéaires:
|
||||
J'ai ensuite écrit des fonctions permettant de manipuler les codes linéaires:
|
||||
\begin{itemize}
|
||||
\fsign{encoder}{code\_lineaire \into vecteur \into vecteur}{k}
|
||||
Encode le vecteur de $\FD^k$ suivant le code linéaire spécifié, il s'agit alors d'un simple produit avec la matrice génératrice.
|
||||
@ -353,6 +355,24 @@
|
||||
\label{print_matriceExemple}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\begin{figure}
|
||||
\lstinputlisting[basicstyle=\scriptsize,language=Caml,frame=single]{../Math.mli}
|
||||
\end{figure}
|
||||
\begin{figure}
|
||||
\lstinputlisting[basicstyle=\scriptsize,language=Caml,frame=single]{../Code.mli}
|
||||
\end{figure}
|
||||
\begin{figure}
|
||||
\lstinputlisting[basicstyle=\scriptsize,linerange={48-59,105-128,133-134},language=Caml,frame=single]{../Math.ml}
|
||||
\end{figure}
|
||||
\begin{figure}
|
||||
\lstinputlisting[basicstyle=\scriptsize,linerange={140-166},language=Caml,frame=single]{../Code.ml}
|
||||
\end{figure}
|
||||
\nocite{*}
|
||||
\fi
|
||||
|
||||
\pagebreak
|
||||
\bibliography{biblio}
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
33
CompteRendu/biblio.bib
Normal file
33
CompteRendu/biblio.bib
Normal file
@ -0,0 +1,33 @@
|
||||
@book{PAintro,
|
||||
author = {Pierre Abbrugiatti},
|
||||
title = {Introduction aux codes correcteurs d’erreurs},
|
||||
date = {23 janvier 2006},
|
||||
year = 2006,
|
||||
}
|
||||
@book{AB001,
|
||||
author = {Alexis Bonnecaze},
|
||||
title = {Introduction à l’algèbre pour les Codes cycliques},
|
||||
date = {2006-2007},
|
||||
year = {2006-2007}
|
||||
}
|
||||
@online{Wiki,
|
||||
author = {Les contributeurs},
|
||||
title = {Codes correcteurs},
|
||||
date = {2008-2019},
|
||||
url = {https://fr.wikipedia.org/wiki/Codes_correcteurs},
|
||||
}
|
||||
@online{3b1bH,
|
||||
author = {Grand Sanderson},
|
||||
title = {Hamming codes and error detection},
|
||||
date = {4 septembre 2020},
|
||||
url = {http://youtube.com/watch?v=X8jsijhllIa},
|
||||
year = {2020}
|
||||
}
|
||||
@misc{m89lm1ea,
|
||||
author = {E.N.S. de LYON},
|
||||
title = {Première composition de mathématique },
|
||||
date = {1989},
|
||||
year = 1989,
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user