Théorie de l’information
Chap : Codes de Convolution
Rhouma Rhouma
École Supérieure d’Économie Électronique
Avril 2015
1 / 37
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
2 / 37
Propriétés
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
3 / 37
Propriétés
Les codes de convolution sont des codes binaires qui constituent
une alternative aux codes de blocs par leur simplicité de
génération grâce à quelques registres à décalage.
Introduits par Elias (1955)
Ils permettent de générer en ligne le code sans passer par une
bondérisation préalable comme c’est le cas avec les codes BCH
ou RS.
g(i) = 0 =⇒ connexion absente et g(i) = 1 =⇒ connexion
présente
C(j) =
PK−1
i=0 g(i) · m(j − i)
l’opération de convolution est aussi décrite polynomialement :
C(x) = g(x) · m(x)
4 / 37
Propriétés
Propriétés
K est appelé la longueur de contrainte du code : elle renseigne sur
le nombre de fois qu’un bit participe à l’élaboration des bits de
parités
K est égale au nombre de bascules +1
les coefficients gi forment un polynôme générateur g(x).
On peut générer simultanément des bits parités de deux
générateurs différents g1(x) et g2(x) ou plus
les sorties vont être entrelacés
le rapport de code r est égal à 1/n avec n est le nombre de
sorties entrelacés
5 / 37
Propriétés
Exemple
soit un code avec r=1/2 de longueur de contrainte K=3 et
g1 = [g1(0) g1(1) g1(2)] = [0 0 1] et
g1 = [g2(0) g2(1) g2(2)] = [1 1 1]
les codes de chaque sortie est :
C1(j) =
K−1
X
i=0
g1(i) · m(j − i)
et
C2(j) =
K−1
X
i=0
g2(i) · m(j − i)
6 / 37
Fonctionnement temporel
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
7 / 37
Fonctionnement temporel
Fonctionnement temporel
8 / 37
Fonctionnement temporel
Avec le message m = [m(0) m(1) m(2) . . . m(L − 1)] = [1 0 0 1 1]
le mot de code final est donc : C = [01 01 11 01 00 10 11]
9 / 37
Méthode polynomiale
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
10 / 37
Méthode polynomiale
Méthode polynomiale
Chaque mot binaire est définit avec un polynôme.
Avec le même exemple : g1(x) = x2
et g2(x) = 1 + x + x2 et m(x) = 1 + x3 + x4
on a C1(x) = m(x) · g1(x) = x2 + x5 + x6
et C2(x) = m(x) · g2(x) = 1 + x + x2 + x3 + x6
avec la notation binaire C1 = [0 0 1 0 0 1 1]
et C2 = [1 1 1 1 0 0 1]
d’où C = [01 01 11 01 00 10 11]
11 / 37
Représentation Graphique
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
12 / 37
Représentation Graphique
état suivant - état présent
13 / 37
Représentation Graphique
Graphes d’états
à la base de la table précédente, on peut dessiner les graphes
d’états avec comme convention :
mj = 0 =⇒ déplacement vers le haut
et mj = 1 =⇒ déplacement vers le bas
14 / 37
Représentation Graphique
Arbre du code
l’arbre du code représente la succession des états possibles. Les
Conventions usuelles :
L’évolution temporelle est représentée de la gauche vers la droite
chaque nouveau bit entré provoque un déplacement vers le haut s’il
s’agit d’un "0" et vers le bas s’il s’agit d’un "1"
sur chaque branche est porté le résultat de l’encodage (la sortie)
conformément à la table de convolution
Pour le msg m = [m0 m1 m2 . . . mL−1] = [10011] nous vérifions
bien l’obtention du mot de code :
C = [01 01 11 01 00 10 11]
15 / 37
Représentation Graphique
16 / 37
Treillis du code
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
17 / 37
Treillis du code
Treillis de code
Par convention la représentation du treillis du code utilise les
normes suivantes :
Le passage d’un état à un autre par la prise en compte d’un bit "0"
est représenté en trait continu.
Le passage d’un état à un autre par la prise en compte d’un bit "1"
est représenté en trait pointillé.
Sur le trait, est indiquée la sortie générée c’est à dire la portion du
mot de code correspondante.
Dans le Treillis, on définit :
Cellule élémentaire
Phase initiale
Phase finale
18 / 37
Treillis du code
Cellule élémentaire
En utilisant soit l’arbre du code soit les éléments de base
constitutifs on peut dessiner une cellule élémentaire du treillis
reliant l’instant t à l’instant t+1.
Cette cellule comporte 2K−1 entrées et sorties.
19 / 37
Treillis du code
Phase initiale
Pendant M = K-1 instants, une partie de l’état des bascules est
constitué des "0" d’initialisation.
Pendant tous ces instants, toutes les combinaisons ne sont pas
possibles et tous les états ne sont pas accessibles.
Le treillis comporte donc à l’origine M (ici M=2) cellules
correspondant à cette phase initiale.
20 / 37
Treillis du code
Phase Finale
A la fin du codage nous sommes amenés à introduire des "0" de
queue.
De ce fait, seules les transitions en trait plein deviennent possibles
et le treillis se résume à M (ici M=2) cellules ne comportant que
ces transitions.
21 / 37
Treillis du code
Avec ce treillis nous vérifions que le message
m = [m0 m1 m2 . . . mL−1] = [1 0 0 1 1] génère le mot de code :
22 / 37
Diagramme d’état
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
23 / 37
Diagramme d’état
Diagramme d’état
un sommet représente un état interne
un arc orienté représente une transition. En trait plein pour celles induites par un "0" et en
trait pointillé pour celles induites par un "1"
la sortie ou portion de code généré est porté sur l’arc correspondant.
Avec ce graphe nous vérifions que le message m = [m0 m1 m2 . . . mL−1] = [1 0 0 1 1]
donne le mot de code : C = [01 01 11 01 00 10 11] sans oublier les bits de queue.
24 / 37
Décodage par Maximum de Vraisemblance
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
25 / 37
Décodage par Maximum de Vraisemblance
Maximum de Vraisemblance
m : vecteur message et b
m : estimation du vecteur message
C : Mot de code émis et b
C : mot de code estimé
R : Mot de code reçu et e : erreur de transmission
Effet de la transmission+codage : m → C → R = C + e
role du décodeur : R → b
C → b
m
décodage : connaissant R, l’estimation b
C est optimale si la probabilité
d’effectuer une erreur de décodage est minimale.
Le maximum de vraisemblance choisit l’estimation b
C qui maximise
prob(R/C). Soit b
C = {prob(R/C)}max
avec prob(R/C) est la probabilité conditionnelle d’avoir reçu R sachant
qu’on a envoyé C
26 / 37
Décodage par Maximum de Vraisemblance
Maximum de Vraisemblance
La fonction log est une fonction monotone,
donc b
C = {log[prob(R/C)]}max
Si le canal binaire symétrique est sans mémoire, tous les bits de
message sont statistiquement indépendants et
prob(R/C) =
QN
i=1 prob(Ri /Ci ) donc
log[prob(R/C)] =
PN
i=1 log[prob(Ri /Ci )]
Pour le canal binaire symétrique, la prob d’erreur est p. Donc

prob(Ri /Ci ) = 1 − p Si Ri 6= Ci
prob(Ri /Ci ) = p if Ri = Ci
Si R et C sont différents de d bits (nb d’erreur =dans un mot de code de
n − bits) alors la distance de hamming entre C et R est égale à d.
donc
log[prob(R/C)] = d·log(p)+(N−d)·log(1−p) = d·log( p
1−p )+N·log(1−p)
27 / 37
Décodage par Maximum de Vraisemblance
Maximum de Vraisemblance
la probabilité d’erreur vérifie généralement p  1/2, donc
d · log( p
1−p )  0 et puisque N · log(1 − p) est constante,
log[prob(R/C)] est maximale, si d est minimale.
b
C est donc aussi choisit de manière à minimiser la distance de
Hamming entre b
C et R
Pour cela, C est bien sûr inconnu mais nous avons à notre
connaissance le treillis du code et, à la réception de R, nous
chercherons à minimiser la distance de Hamming entre le code
reçu et tous les codes possibles. Le plus proche de R
constituera l’estimation la plus vraisemblable.
Autrement dit : le décodeur compare le code reçu avec toute les
possibilités de C et choisit celle qui est la plus proche de R.
28 / 37
Algorithme de Viterbi
Plan
1 Propriétés
2 Fonctionnement temporel
3 Méthode polynomiale
4 Représentation Graphique
5 Treillis du code
6 Diagramme d’état
7 Décodage par Maximum de Vraisemblance
8 Algorithme de Viterbi
29 / 37
Algorithme de Viterbi
Algorithme de Viterbi
En utilisant le treillis nous réalisons les opérations suivantes :
1 nous examinons chaque portion de code reçue puis nous
calculons la distance entre cette portion de code et la sortie du
treillis pour toutes les possibilités.
2 Cette distance ajoutée à celle associée au nœud d’origine (état
présent) est portée sur le nœud ainsi atteint (état suivant). Un
nœud comportera deux indications puisqu’il y a deux façons de
l’atteindre.
3 Pour l’étape suivante, nous ne conservons pour un nœud que la
distance minimale ce qui revient à ne conserver qu’un certain
nombre de trajets probables : les survivants.
4 Nous recommençons l’opération 1 jusqu’à épuisement du code
reçu.
5 Le code le plus probable sera celui qui à la suite de ces
opérations correspondra à la distance totale la plus faible et le
message est reconstitué en interprétant la suite des pleins et
pointillés associés au trajet le plus probable
30 / 37
Algorithme de Viterbi
Algorithme de Viterbi
Soit le mot de code reçu suivant Y = [01 01 01 01 00 10 11]
et recherchons la meilleure estimation grâce au treillis et aussi au
fait que nous savons qu’il existe une phase initiale et une phase
finale toutes les deux de longueur M = K-1. Ici M = 2.
31 / 37
Algorithme de Viterbi
Algorithme de Viterbi
Phase initiale : elle dure deux coups. L’état initial est
nécessairement l’état interne 0 soit a dans notre exemple.
32 / 37
Algorithme de Viterbi
Phase centrale : premiere cellule élémentaire
33 / 37
Algorithme de Viterbi
Phase centrale : deuxième cellule élémentaire
34 / 37
Algorithme de Viterbi
Phase centrale : troisième cellule élémentaire
35 / 37
Algorithme de Viterbi
Phase finale : on sait que les M derniers blocs correspondent à la
phase finale pendant laquelle seuls les 0 (trait plein) sont
introduits.
Premier 0 de queue :
36 / 37
Algorithme de Viterbi
Phase finale : deuxième 0 de queue.
Le dernier trajet survivant est le plus vraisemblable et correspond
au message [ 1 0 0 1 1 ] . L’erreur de transmission a ainsi été
corrigée.
37 / 37

Inf_theory_lect4.pdf

  • 1.
    Théorie de l’information Chap: Codes de Convolution Rhouma Rhouma École Supérieure d’Économie Électronique Avril 2015 1 / 37
  • 2.
    Plan 1 Propriétés 2 Fonctionnementtemporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 2 / 37
  • 3.
    Propriétés Plan 1 Propriétés 2 Fonctionnementtemporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 3 / 37
  • 4.
    Propriétés Les codes deconvolution sont des codes binaires qui constituent une alternative aux codes de blocs par leur simplicité de génération grâce à quelques registres à décalage. Introduits par Elias (1955) Ils permettent de générer en ligne le code sans passer par une bondérisation préalable comme c’est le cas avec les codes BCH ou RS. g(i) = 0 =⇒ connexion absente et g(i) = 1 =⇒ connexion présente C(j) = PK−1 i=0 g(i) · m(j − i) l’opération de convolution est aussi décrite polynomialement : C(x) = g(x) · m(x) 4 / 37
  • 5.
    Propriétés Propriétés K est appeléla longueur de contrainte du code : elle renseigne sur le nombre de fois qu’un bit participe à l’élaboration des bits de parités K est égale au nombre de bascules +1 les coefficients gi forment un polynôme générateur g(x). On peut générer simultanément des bits parités de deux générateurs différents g1(x) et g2(x) ou plus les sorties vont être entrelacés le rapport de code r est égal à 1/n avec n est le nombre de sorties entrelacés 5 / 37
  • 6.
    Propriétés Exemple soit un codeavec r=1/2 de longueur de contrainte K=3 et g1 = [g1(0) g1(1) g1(2)] = [0 0 1] et g1 = [g2(0) g2(1) g2(2)] = [1 1 1] les codes de chaque sortie est : C1(j) = K−1 X i=0 g1(i) · m(j − i) et C2(j) = K−1 X i=0 g2(i) · m(j − i) 6 / 37
  • 7.
    Fonctionnement temporel Plan 1 Propriétés 2Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 7 / 37
  • 8.
  • 9.
    Fonctionnement temporel Avec lemessage m = [m(0) m(1) m(2) . . . m(L − 1)] = [1 0 0 1 1] le mot de code final est donc : C = [01 01 11 01 00 10 11] 9 / 37
  • 10.
    Méthode polynomiale Plan 1 Propriétés 2Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 10 / 37
  • 11.
    Méthode polynomiale Méthode polynomiale Chaquemot binaire est définit avec un polynôme. Avec le même exemple : g1(x) = x2 et g2(x) = 1 + x + x2 et m(x) = 1 + x3 + x4 on a C1(x) = m(x) · g1(x) = x2 + x5 + x6 et C2(x) = m(x) · g2(x) = 1 + x + x2 + x3 + x6 avec la notation binaire C1 = [0 0 1 0 0 1 1] et C2 = [1 1 1 1 0 0 1] d’où C = [01 01 11 01 00 10 11] 11 / 37
  • 12.
    Représentation Graphique Plan 1 Propriétés 2Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 12 / 37
  • 13.
  • 14.
    Représentation Graphique Graphes d’états àla base de la table précédente, on peut dessiner les graphes d’états avec comme convention : mj = 0 =⇒ déplacement vers le haut et mj = 1 =⇒ déplacement vers le bas 14 / 37
  • 15.
    Représentation Graphique Arbre ducode l’arbre du code représente la succession des états possibles. Les Conventions usuelles : L’évolution temporelle est représentée de la gauche vers la droite chaque nouveau bit entré provoque un déplacement vers le haut s’il s’agit d’un "0" et vers le bas s’il s’agit d’un "1" sur chaque branche est porté le résultat de l’encodage (la sortie) conformément à la table de convolution Pour le msg m = [m0 m1 m2 . . . mL−1] = [10011] nous vérifions bien l’obtention du mot de code : C = [01 01 11 01 00 10 11] 15 / 37
  • 16.
  • 17.
    Treillis du code Plan 1Propriétés 2 Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 17 / 37
  • 18.
    Treillis du code Treillisde code Par convention la représentation du treillis du code utilise les normes suivantes : Le passage d’un état à un autre par la prise en compte d’un bit "0" est représenté en trait continu. Le passage d’un état à un autre par la prise en compte d’un bit "1" est représenté en trait pointillé. Sur le trait, est indiquée la sortie générée c’est à dire la portion du mot de code correspondante. Dans le Treillis, on définit : Cellule élémentaire Phase initiale Phase finale 18 / 37
  • 19.
    Treillis du code Celluleélémentaire En utilisant soit l’arbre du code soit les éléments de base constitutifs on peut dessiner une cellule élémentaire du treillis reliant l’instant t à l’instant t+1. Cette cellule comporte 2K−1 entrées et sorties. 19 / 37
  • 20.
    Treillis du code Phaseinitiale Pendant M = K-1 instants, une partie de l’état des bascules est constitué des "0" d’initialisation. Pendant tous ces instants, toutes les combinaisons ne sont pas possibles et tous les états ne sont pas accessibles. Le treillis comporte donc à l’origine M (ici M=2) cellules correspondant à cette phase initiale. 20 / 37
  • 21.
    Treillis du code PhaseFinale A la fin du codage nous sommes amenés à introduire des "0" de queue. De ce fait, seules les transitions en trait plein deviennent possibles et le treillis se résume à M (ici M=2) cellules ne comportant que ces transitions. 21 / 37
  • 22.
    Treillis du code Avecce treillis nous vérifions que le message m = [m0 m1 m2 . . . mL−1] = [1 0 0 1 1] génère le mot de code : 22 / 37
  • 23.
    Diagramme d’état Plan 1 Propriétés 2Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 23 / 37
  • 24.
    Diagramme d’état Diagramme d’état unsommet représente un état interne un arc orienté représente une transition. En trait plein pour celles induites par un "0" et en trait pointillé pour celles induites par un "1" la sortie ou portion de code généré est porté sur l’arc correspondant. Avec ce graphe nous vérifions que le message m = [m0 m1 m2 . . . mL−1] = [1 0 0 1 1] donne le mot de code : C = [01 01 11 01 00 10 11] sans oublier les bits de queue. 24 / 37
  • 25.
    Décodage par Maximumde Vraisemblance Plan 1 Propriétés 2 Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 25 / 37
  • 26.
    Décodage par Maximumde Vraisemblance Maximum de Vraisemblance m : vecteur message et b m : estimation du vecteur message C : Mot de code émis et b C : mot de code estimé R : Mot de code reçu et e : erreur de transmission Effet de la transmission+codage : m → C → R = C + e role du décodeur : R → b C → b m décodage : connaissant R, l’estimation b C est optimale si la probabilité d’effectuer une erreur de décodage est minimale. Le maximum de vraisemblance choisit l’estimation b C qui maximise prob(R/C). Soit b C = {prob(R/C)}max avec prob(R/C) est la probabilité conditionnelle d’avoir reçu R sachant qu’on a envoyé C 26 / 37
  • 27.
    Décodage par Maximumde Vraisemblance Maximum de Vraisemblance La fonction log est une fonction monotone, donc b C = {log[prob(R/C)]}max Si le canal binaire symétrique est sans mémoire, tous les bits de message sont statistiquement indépendants et prob(R/C) = QN i=1 prob(Ri /Ci ) donc log[prob(R/C)] = PN i=1 log[prob(Ri /Ci )] Pour le canal binaire symétrique, la prob d’erreur est p. Donc prob(Ri /Ci ) = 1 − p Si Ri 6= Ci prob(Ri /Ci ) = p if Ri = Ci Si R et C sont différents de d bits (nb d’erreur =dans un mot de code de n − bits) alors la distance de hamming entre C et R est égale à d. donc log[prob(R/C)] = d·log(p)+(N−d)·log(1−p) = d·log( p 1−p )+N·log(1−p) 27 / 37
  • 28.
    Décodage par Maximumde Vraisemblance Maximum de Vraisemblance la probabilité d’erreur vérifie généralement p 1/2, donc d · log( p 1−p ) 0 et puisque N · log(1 − p) est constante, log[prob(R/C)] est maximale, si d est minimale. b C est donc aussi choisit de manière à minimiser la distance de Hamming entre b C et R Pour cela, C est bien sûr inconnu mais nous avons à notre connaissance le treillis du code et, à la réception de R, nous chercherons à minimiser la distance de Hamming entre le code reçu et tous les codes possibles. Le plus proche de R constituera l’estimation la plus vraisemblable. Autrement dit : le décodeur compare le code reçu avec toute les possibilités de C et choisit celle qui est la plus proche de R. 28 / 37
  • 29.
    Algorithme de Viterbi Plan 1Propriétés 2 Fonctionnement temporel 3 Méthode polynomiale 4 Représentation Graphique 5 Treillis du code 6 Diagramme d’état 7 Décodage par Maximum de Vraisemblance 8 Algorithme de Viterbi 29 / 37
  • 30.
    Algorithme de Viterbi Algorithmede Viterbi En utilisant le treillis nous réalisons les opérations suivantes : 1 nous examinons chaque portion de code reçue puis nous calculons la distance entre cette portion de code et la sortie du treillis pour toutes les possibilités. 2 Cette distance ajoutée à celle associée au nœud d’origine (état présent) est portée sur le nœud ainsi atteint (état suivant). Un nœud comportera deux indications puisqu’il y a deux façons de l’atteindre. 3 Pour l’étape suivante, nous ne conservons pour un nœud que la distance minimale ce qui revient à ne conserver qu’un certain nombre de trajets probables : les survivants. 4 Nous recommençons l’opération 1 jusqu’à épuisement du code reçu. 5 Le code le plus probable sera celui qui à la suite de ces opérations correspondra à la distance totale la plus faible et le message est reconstitué en interprétant la suite des pleins et pointillés associés au trajet le plus probable 30 / 37
  • 31.
    Algorithme de Viterbi Algorithmede Viterbi Soit le mot de code reçu suivant Y = [01 01 01 01 00 10 11] et recherchons la meilleure estimation grâce au treillis et aussi au fait que nous savons qu’il existe une phase initiale et une phase finale toutes les deux de longueur M = K-1. Ici M = 2. 31 / 37
  • 32.
    Algorithme de Viterbi Algorithmede Viterbi Phase initiale : elle dure deux coups. L’état initial est nécessairement l’état interne 0 soit a dans notre exemple. 32 / 37
  • 33.
    Algorithme de Viterbi Phasecentrale : premiere cellule élémentaire 33 / 37
  • 34.
    Algorithme de Viterbi Phasecentrale : deuxième cellule élémentaire 34 / 37
  • 35.
    Algorithme de Viterbi Phasecentrale : troisième cellule élémentaire 35 / 37
  • 36.
    Algorithme de Viterbi Phasefinale : on sait que les M derniers blocs correspondent à la phase finale pendant laquelle seuls les 0 (trait plein) sont introduits. Premier 0 de queue : 36 / 37
  • 37.
    Algorithme de Viterbi Phasefinale : deuxième 0 de queue. Le dernier trajet survivant est le plus vraisemblable et correspond au message [ 1 0 0 1 1 ] . L’erreur de transmission a ainsi été corrigée. 37 / 37