avancée+

This commit is contained in:
2026-05-06 20:51:55 +02:00
parent a857dfcffa
commit a2d056072f
4 changed files with 6570 additions and 3216 deletions

181
main.typ
View File

@ -35,19 +35,20 @@
#v(1fr)
]
#myslide("Plan")[
#design_plan((
[Introduction],
[Codes linéaires],
[LDPC],
[Codage],
[Décodage],
[Analyse],
))
]
#myslide("Plan")[
#grid(
columns: (auto, 1fr),
align: horizon,
place(center + horizon, dx: 11.8cm, dy: 0.7cm)[#decor_matrice_etoilee()],
design_plan((
[Introduction], [Codes linéaires], [LDPC],
[Codage], [Décodage], [Analyse],
))
)
]
#myslide("Introduction : Transmission Numérique")[
#align(center + horizon)[
#myslide("Introduction : Communication Numérique")[
#place(center + horizon, dy: 8cm)[
#canal_shannon_intro()
]
]
@ -132,7 +133,7 @@
]
]
#myslide("Définition: Matrice Génératrice")[
#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)$
]
@ -162,7 +163,7 @@
]
]
#myslide("Défniition: Matrice de Contrôle")[
#myslide("Définition : Matrice de Contrôle")[
#definition(titre: "Matrice de Contrôle")[
$
H = mat(
@ -199,7 +200,6 @@
#let col-u = blue
#let col-p = orange
#underline(offset: 3pt)[Exemple d'un code $(5,2)$]
@ -248,8 +248,7 @@
#let colu = blue
#let colp = orange
#v(0.5em)
#place(dx: 0cm, dy: 2.0cm)[
#set text(size: 1.1em)
Enfin
@ -283,11 +282,11 @@
$
]
]
]
// A REMPLACER AVEC DE VRAI DONNE SUR DE VRAI CODE LDPC ET HAMMING PAR EXEMPLE
#myslide("Approcher la Limite de Shannon")[
#limite_shannon_graphique()
]
// #myslide("Redondance et limite théorique")[
@ -299,16 +298,136 @@
// $=>$ gros bloc (moyenne du bruit aléatoire)
// ]
#myslide("Décodage par Maximum de Vraisemblance")[
Trouver le message envoyer le + probable sachant le message recu : NP-COMPLET (Max)
Decodage par syndrome d'une code lin'aire général est NP-Complet
Complexité $O(2^k)$
#myslide("Le Mur de la Complexité")[
#set text(size: 19pt)
#definition(titre: [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)) $
]
- É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("LDPC")[
Matrice $H$ clairsemée(low density) donc complexité mointre, pas de produit de matrice mais algorithme itératif efficace quasi linéaire
Graphique d'un H très grand clairesemée avec plein de 0, généré en rust par exemple les 1 sont des points noir et le reste du blanc
Défniition avec (w_r,w_c)
#myslide("Définition des Codes LDPC")[
#definition(titre: [Formalisation des Codes LDPC Réguliers])[
Code linéaire en bloc avec une matrice de contrôle $bold(H)$ est *clairsemée*.
]
- *Poids de Colonne $w_c$*
- *Poids de Ligne $w_r$*
#v(0.5em)
#definition(titre: "Conditions de Faible Densité", accent: black)[
#set align(center)
$w_c << n - k $ #h(2cm) $w_r << n$
]
#definition(titre : "Rendement")[
$ display(R = (n - op("rg")(H)) / n >= 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)$
]
#v(2cm)
#place(center + horizon, dx: 0cm, dy: 7.3cm)[
#scale(140%)[#hldpc()]
]
]
#myslide("De la Matrice aux Équations de Parité")[
#set text(size: 17pt)
#let v_space = 2.83cm
#align(center)[
#scale(115%)[
#grid(
columns: (auto, auto),
gutter: -15pt,
align: horizon,
[#hldpc_dual(row1: 0, row2: none)],
[
// #set math.mat(gap: 24.5pt)
#move(dy: 13.8pt)[
$ underbrace(
mat(r_0; r_1;#v(v_space);dots.v; r_29; delim: "["),
#text()[Mot reçu] r space in space FF_2^30
) $
]
]
)
]
]
#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$.
#v(0.2cm)
#definition(titre: [Équations de Parité], accent: orange)[
#set text(size: 1em)
#text(fill: orange)[$ f_0 : r_7 plus.o r_10 plus.o r_15 plus.o r_22 plus.o r_24 plus.o r_29 = 0 $]
]
#v(0.3cm)
#text(size: 1.1em)[- Si $f_j = 1$, un nombre impair de bits a été inversé par le canal.]
]
#myslide("L'Entrelacement des Contraintes")[
#set text(size: 17pt)
#align(center)[
#move(dx: -1.2cm)[
#scale(115%)[#hldpc_dual(row1: 0, row2: 14)]
]
]
#v(1cm)
#set text(size: 1.1em)
- Chaque bit $r_i$ participe à $w_c = 3$ équations distinctes
#v(1cm)
// --- Étage 2 : Système et Décision ---
#set align(center + horizon)
#scale(115%)[
#block(fill: gray.lighten(95%), inset: 10pt, stroke: 0.5pt + gray, radius: 4pt)[
$ cases(
#text(fill: orange)[$r_7 plus.o r_10 plus.o r_15 plus.o r_22 plus.o bold(r_24) plus.o r_29 &= 0$],
#h(4.5cm) #text(size : 20pt)[$bold(dots.v)$],
#text(fill: blue)[$r_1 plus.o r_3 plus.o r_12 plus.o bold(r_24) plus.o r_25 plus.o r_28 &= 0$]
) $
]
]
#v(1cm)
#set align(left)
#set text(size: 1.1em)
- *$r_24$* : Surveillé par #text(fill: orange)[$f_0$] et #text(fill: blue)[$f_14$].
- Si #text(fill: orange)[$f_0 = 1$] et #text(fill: blue)[$f_14 = 1$], $r_24$ est suspect
]
#myslide("Graphe de Tanner")[
@ -361,3 +480,13 @@
#myslide("Théorie deriere la définition des codes linaires")[
Poser les notations algebriques etc...
]
#myslide("Decodage par maximum de vraisemblance")[
Expliquer, quelle distance ? etc
]
#myslide("Code LDPC non régulier")[
]