This commit is contained in:
2026-05-27 17:37:40 +02:00
parent 17431d662f
commit 818acf844a
3 changed files with 13353 additions and 9102 deletions

233
main.typ
View File

@ -114,28 +114,21 @@
]
#myslide("Définition : Codes Linéaires en Bloc")[
#definition(titre: [Code $display((n,k) in NN^2)$])[
$cal(C)$ sous-espace vectoriel de dimension $k$ de $FF_2^n$
]
#[
#set text(size: 1.1em)
- $k$ : longueur du message original
- $n$ : longueur du mot de code
- $m = n - k$ : nombre de bits de parités
]
#definition(titre: "Encodage")[
$Phi : FF_2^k & -> FF_2^n in cal(L)(FF_2^k, FF_2^n)$
]
#v(-1.3em)
#uncover(2)[
#align(center + horizon)[
#plongement_schema()
#place(dy: 2.5cm)[
#definition(titre: [Code $display((n,k) in NN^2)$])[
$cal(C)$ sous-espace vectoriel de dimension $k$ de $FF_2^n$
]
]
#[
#set text(size: 1.1em)
- $k$ : longueur du message original
- $n$ : longueur du mot de code
- $m = n - k$ : nombre de bits de parités
]
#definition(titre: "Encodage")[
$Phi : FF_2^k & -> FF_2^n in cal(L)(FF_2^k, FF_2^n)$
]]
]
#myslide("Définition : Matrice Génératrice")[
@ -166,10 +159,10 @@
#set text(size: 1.2em)
// - Pour $u in FF_2^k, space display(u dot.o G = mat(u, u dot.o P; augment: #1, delim: "[",))$
- Pour $u in FF_2^k, space #dessiner_matrice($u dot.o G =$, (
(texte: $u$, largeur: 1.1, fond: gray.lighten(75%)),
(texte: $u dot.o P$, largeur: 3.0, fond: gray.lighten(75%)),
))$
// - Pour $u in FF_2^k, space #dessiner_matrice($u dot.o G =$, (
// (texte: $u$, largeur: 1.1, fond: gray.lighten(75%)),
// (texte: $u dot.o P$, largeur: 3.0, fond: gray.lighten(75%)),
// ))$
- $P in cal(M)_(k ,n-k)(FF_2)$ matrice de parité\
]
@ -192,9 +185,12 @@
]
#[
#set text(size: 1.2em)
- $cal(C) = ker(H) = {v in FF_2^n | H dot.o v^top = 0}$
// - $cal(C) = ker(H) = {v in FF_2^n | H dot.o v^top = 0}$
- $display(G dot.o H^top = 0)$
- $cal(C) = ker(H)$ -- $H c^top = 0$ $=>$ $c$ mot de code valide
// - $display(G dot.o H^top = 0)$
]
#definition(titre: "Syndrome")[
@ -205,8 +201,8 @@
]
#[
#set text(size: 1.2em)
- Si $s = 0, space r$ est un mot de code valide
- Sinon $s$ donne la signature de l'erreur $e$
- $s = 0 => r space$ mot de code valide
- $s != 0$ donne la signature de l'erreur $e$
]
// Possible décodage par syndrome
]
@ -331,26 +327,30 @@
// ]
#myslide("Le Mur de la Complexité")[
#set text(size: 19pt)
#definition(titre: [Décodage par Maximum de Vraisemblance (MDL)], accent: black)[
Chercher le mot de code $bold(c) in cal(C)$ le plus probable sachant $bold(r)$ reçu :
$ hat(bold(c)) = arg min_(bold(c) in cal(C)) d_H (bold(r), bold(c)) $
#place(dy: 2.5cm)[
#set text(size: 19pt)
#definition(titre: [Décodage par Maximum de Vraisemblance], accent: black)[
Chercher le mot de code $bold(c) in cal(C)$ le plus probable sachant $bold(r)$ reçu :
$ hat(bold(c)) = arg min_(bold(c) in cal(C)) d_H (bold(r), bold(c)) $
]
- Équivalent à chercher l'erreur $bold(e)$ de poids minimal tel que $bold(H) bold(e)^top = bold(s)$.
#v(0.5em)
#definition(titre: "Le Problème du décodage par Syndrome")[
NP-Difficile et pour $H$ quelconque : $cal(O)(2^k)$
]
// - Pour $k=100$ bits, $2^100 approx 10^30$ opérations nécessaires.
]
- Équivalent à chercher l'erreur $bold(e)$ de poids minimal tel que $bold(H) bold(e)^top = bold(s)$.
#v(0.5em)
#definition(titre: "Le Problème du décodage par Syndrome")[
NP-Difficile et pour $H$ quelconque : $cal(O)(2^k)$
]
- Pour $k=100$ bits, $2^100 approx 10^30$ opérations nécessaires.
]
#myslide("Définition des Codes LDPC")[
#definition(titre: [Codes LDPC Réguliers])[
Code linéaire en bloc avec une matrice de contrôle $bold(H)$ *clairsemée*.
#text(size: 22.97pt)[
Code linéaire en bloc avec une matrice de contrôle $bold(H)$ *clairsemée*.
]
]
- Poids de Colonne *$w_c$*
@ -365,13 +365,19 @@
]
#definition(titre: "Rendement")[
$ display(R = (n - op("rg")(H)) / n >= 1 - m / n) $
// $ display(R = (n - op("rg")(H)) / n >= 1 - m / n) $
$ display(R = 1 - m / n) $
]
]
#myslide([Matrice de contrôle])[
// #definition(titre: [Code LDPC $(6, 3)$])[
// $m w_r = n w_c$ donc $H in cal(M)_(15, 30)(FF_2)$ et $display(R = 1 - m / n = 1/2)$
// ]
#definition(titre: [Code LDPC $(6, 3)$])[
$m w_r = n w_c$ donc $H in cal(M)_(15, 30)(FF_2)$ et $display(R = 1 - m / n = 1/2)$
#v(8pt)
$H in cal(M)_(15, 30)(FF_2)$ et $display(R = 1/2)$
#v(5pt)
]
#v(2cm)
@ -410,11 +416,11 @@
#v(0.5cm)
#set text(size: 1.1em)
- Chaque ligne $j$ de $H$ définit une équation de parité $f_j$.
- Pour $r$, on vérifie le syndrome : $H r^top = 0$.
#set text(size: 1.2em)
// - Chaque ligne $j$ de $H$ définit une équation de parité $f_j$.
- $L_j$ définit une équation de parité $f_j$
- Pour $r$, on vérifie le syndrome : $H r^top = 0$
#v(0.2cm)
#definition(titre: [Équations de Parité], accent: orange)[
@ -465,7 +471,7 @@
// ]
#myslide("L'Entrelacement des Contraintes")[
#set text(size: 17pt)
#set text(size: 20pt)
#align(center)[
#move(dx: -1.2cm)[
@ -492,7 +498,7 @@
#v(0.5cm)
- *$r_24$* : Surveillé simultanément par #text(fill: orange)[$f_0$], #text(fill: green.darken(20%))[$f_7$] et #text(fill: blue)[$f_14$].
- Si $forall j in {#text(fill: orange)[$0$], #text(fill: green.darken(20%))[$7$], #text(fill: blue)[$24$]}, space f_j = 1$, alors le bit est comme suspect.
- Si $forall #tricolor-j in {#text(fill: orange)[$0$], #text(fill: green.darken(20%))[$7$], #text(fill: blue)[$24$]}, space f_(#scale(80%)[#tricolor-j]) = 1$, alors le bit est comme suspect.
]
@ -794,7 +800,7 @@
]
#myslide("La Topologie de H : Le Girth")[
#set text(size: 18pt)
#set text(size: 20pt)
#definition(titre: "Définition : Le Girth (La Maille)", accent: blue)[
Longueur du plus court cycle dans le graphe de Tanner
@ -836,6 +842,7 @@
]
#myslide("Méthode de génération de H")[
#place(center + horizon, dy: 8.1cm)[#graphe_tanner_fond(0.9cm, 1.75)]
#place(center + horizon, dy: 7cm)[
#block(width: 100%)[
#text(size: 1.5em, weight: "bold", fill: black)[
@ -843,7 +850,7 @@
Mackay-Neal \
Progressive Edge-growth
Progressive Edge-Growth
]
]
]
@ -868,7 +875,8 @@
#v(2em)
#set text(size: 1em)
- Forme Systématique : Par élimination de Gauss sur $bold(H)$, on obtient
// - Forme Systématique : Par élimination de Gauss sur $bold(H)$, on obtient
- Forme Systématique
#v(1em)
#align(center)[
@ -1340,11 +1348,11 @@
#place(center + horizon, dy: 7.7cm)[
#block(width: 100%)[
#text(size: 1.5em, weight: "bold", fill: black)[
QC-LDPC \
FPGA \
Test réel
QC-LDPC \
Test réels
]
]
]
@ -1361,7 +1369,103 @@
]
]
#myslide("Théorie deriere la définition des codes linaires")[
#myslide("Définition : Codes Linéaires en Bloc")[
#definition(titre: [Code $display((n,k) in NN^2)$])[
$cal(C)$ sous-espace vectoriel de dimension $k$ de $FF_2^n$
]
#[
#set text(size: 1.1em)
- $k$ : longueur du message original
- $n$ : longueur du mot de code
- $m = n - k$ : nombre de bits de parités
]
#definition(titre: "Encodage")[
$Phi : FF_2^k & -> FF_2^n in cal(L)(FF_2^k, FF_2^n)$
]
#v(-1.3em)
#align(center + horizon)[
#plongement_schema()
]
]
#myslide("Définition : Matrice Génératrice")[
#definition(titre: "Matrice Génératrice")[
$G in cal(M)_(k,n)(FF_2)$ dont les lignes sont une base de $cal(C)$
]
#definition(titre: "Encodage")[
Pour un message $u in FF_2^k$ le mot de code $c in cal(C)$ est :
$
c = Phi(u) = u dot.o G
$
]
#definition(titre: "Forme systématique")[
// TODO : changer [I_k | P] en un graphique jolie avec I et P dans un carré coloré
$
#dessiner_matrice($G =$, ((texte: $I_k$, largeur: 2.2, fond: gray.lighten(75%)), (texte: $P$, largeur: 2.2, fond: gray.lighten(75%))))
// G = mat(
// I_k, P;
// augment: #1,
// delim: "[",
// )
$
]
#[
#set text(size: 1.2em)
// - Pour $u in FF_2^k, space display(u dot.o G = mat(u, u dot.o P; augment: #1, delim: "[",))$
- Pour $u in FF_2^k, space #dessiner_matrice($u dot.o G =$, (
(texte: $u$, largeur: 1.1, fond: gray.lighten(75%)),
(texte: $u dot.o P$, largeur: 3.0, fond: gray.lighten(75%)),
))$
- $P in cal(M)_(k ,n-k)(FF_2)$ matrice de parité\
]
]
#myslide("Définition : Matrice de Contrôle")[
#definition(titre: "Matrice de Contrôle")[
// $H = mat(
// P^top, I_(n-k);
// augment: #1,
// delim: "[",
// )
$
#dessiner_matrice($H =$, (
(texte: $P^top$, largeur: 2.2, fond: gray.lighten(75%)),
(texte: $I_(n-k)$, largeur: 2.2, fond: gray.lighten(75%)),
))
$
]
#[
#set text(size: 1.2em)
- $cal(C) = ker(H) = {v in FF_2^n | H dot.o v^top = 0}$
- $display(G dot.o H^top = 0)$
]
#definition(titre: "Syndrome")[
Pour un vecteur reçu $r = c + e, space s in FF_2^(n - k)$
$
s = H r^top = H c^top + H e^top = 0 + H e^top
$
]
#[
#set text(size: 1.2em)
- Si $s = 0, space r$ est un mot de code valide
- Sinon $s$ donne la signature de l'erreur $e$
]
// Possible décodage par syndrome
]
#myslide("Théorie derrière la définition des codes linaires")[
Poser les notations algebriques etc...
]
@ -1532,7 +1636,16 @@
]
#myslide("PEG")[
#myslide("Gallager")[
]
#myslide("Mackay-Neal")[
]
#myslide("Progressive Edge-growth")[
]