Fonctionnement de l’algorithme de Viterbi J. Le Roux [email protected] http://www.essi.fr/~leroux Émission des donnees dans un codeur convolutionnel avec un registre a decalage et des ou exclusifs s 1 (t) xor e(t) e(t-1) e(t- 2) xor s2 (t) Représentation de l ’émetteur sous la forme d ’un automate e s s2 1 0 0 0 Les états sont les valeurs de et-1, et-2 e s1 s2 1 1 1 10 00 e s s2 1 0 1 1 01 e s s2 1 1 0 0 e s s2 1 0 1 0 e s s2 1 0 0 1 e s s2 1 1 0 1 11 e s 1s2 1 1 0 e vaut 0 treillis de l’algorithme de décodage de Viterbi e vaut 1 s 1s2 0 0 00 00 00 10 10 00 00 10 10 01 01 11 11 11 10 11 10 01 01 01 00 01 11 11 01 11 10 temps Correction des codes convolutionnels Erreurs de transmission Message à coder Codeur de l’émetteur Message reconstitué Message reçu Codeur du récepteur Algorithme de génération de message Comparaison Critère : réduction de l ’écart entre le message reçu et le message reconstitué ‘‘idées sous jacentes’’ le récepteur génère un message e(t) de sorte que la sortie que l’automate produit avec cette entrée soit la plus proche possible de la séquence bruitée qu’il a reçue Message reçu Message reconstitué Codeur du récepteur Algorithme de génération de message Comparaison processus itératif : à l’instant t génération des e(t) possibles et élimination des séquences les plus pénalisées e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00, , , , , , , , , 00 10 01 11 Éléments du treillis que va parcourir la représentation du message en cours de décodage e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 t=0, hypothèse : e=0 États : 00 01 10 01 11 10 01 10 00 00 00 s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00, , , , , , , , , 00 10 0 calcul des sorties S1 et S2 pour cet état et e =0 calcul de la distance avec les données reçues 01 11 Choix d’une première hypothèse et comparaison aux données reçues e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 t=0, hypothèse e=1 États : 00 10 01 10 11 01 10 01 00 00 00 s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00, , , , , , , , , 0 00 2 10 01 calcul des sorties S1 et S2 pour cet état et e =1 calcul de la distance avec les données reçues 11 Choix d’une deuxième hypothèse et comparaison aux données reçues e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 incrémentation du temps : t=1 États : 00 01 10 01 11 10 01 10 00 00 00 s 1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10, , , , , , , , 00 0 1 2 1 10 nouveaux calcul de distance entre la chaîne reçue et la chaîne générée 01 11 Itération du processus pour les deuxièmes données e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 calculs similaires pour États : 00 01 10 01 11 10 01 10 00 00 00 l’autre état atteint à t=0 s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10, , , , , , , , 00 0 1 2 1 10 2 01 4 11 nouveaux calcul de distance entre la chaîne reçue et la chaîne générée Itération du processus pour les deuxièmes données e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 incrémentation du temps t=2 États : 00 01 10 01 11 10 01 10 00 00 00 s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10,00, , , , , , , 00 0 1 1 2 1 3 10 2 2 01 4 11 2 Itération du processus pour les troisièmes données e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 calculs similaire pour tous les États : 00 01 10 01 11 10 01 10 00 00 00 états atteints s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10,00, , , , , , , 00 0 1 1 4 2 1 3 10 2 2 2 01 5 4 11 2 5 Itération du processus pour les troisièmes données e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 États : 00 01 10 01 11 10 01 10 00 00 00 s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10,00, , , , , , , 00 0 1 1 4 2 1 3 10 2 En régime stationnaire il y a deux entrées par nœud du treillis : on choisit de retenir celle qui correspond à la distance la plus faible au message reçu 2 2 01 5 4 11 2 5 pour chaque nœud, on n’accepte qu’une seule entrée e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 choix similaire pour États : 00 01 10 01 11 10 01 10 00 00 00 tous les nœuds s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10,00, , , , , , , 00 0 1 1 4 2 1 3 10 2 2 2 01 5 4 11 2 5 Choix similaires pour tous les nœuds du treillis e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01, , , , , , 00 0 1 1 2 1 10 2 4 3 3 2 2 3 2 4 5 2 2 2 2 01 4 11 5 4 Itération en temps du processus : calcul des distances pour les différentes hypothèses à partir de chacun des états ; puis sélection des chemins entrants les moins coûteux pour les nouveaux états e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01, , , , , 00 0 1 1 2 1 10 2 3 4 3 3 3 2 3 2 3 3 2 4 4 5 2 2 2 2 2 2 01 4 11 5 4 4 Itération du processus : calcul des distances pour les différentes hypothèses à partir de chacun des états ; puis sélection des chemins entrants les moins coûteux pour les nouveaux états e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00, , , , 00 0 1 1 2 1 10 2 3 3 4 3 3 4 3 2 3 5 2 3 3 2 2 4 4 4 5 2 2 3 2 2 2 4 2 01 4 11 5 4 4 3 Itération du processus : calcul des distances pour les différentes hypothèses à partir de chacun des états ; puis sélection des chemins entrants les moins coûteux pour les nouveaux états e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10, , , 00 0 1 1 2 1 10 2 3 4 4 4 3 3 3 4 3 2 3 5 4 2 3 3 2 4 2 4 4 4 2 5 2 2 3 5 2 2 2 3 4 2 01 4 11 5 4 4 4 3 Itération du processus : calcul des distances pour les différentes hypothèses à partir de chacun des états ; puis sélection des chemins entrants les moins coûteux pour les nouveaux états e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11, , 00 0 1 1 2 1 10 2 3 4 4 6 4 3 3 3 4 2 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 2 2 3 5 4 2 2 2 3 4 5 2 01 4 11 5 4 4 4 3 4 Itération du processus : calcul des distances pour les différentes hypothèses à partir de chacun des états ; puis sélection des chemins entrants les moins coûteux pour les nouveaux états e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00, 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 01 4 11 5 4 4 4 3 4 Les deux dernières entrées sont telles que l’état final est bien défini (ici l ’état 00) e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 01 4 11 5 4 4 4 3 4 Les deux dernières entrées sont telles que l’état final est bien défini (ici l ’état 00) 2 7 e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 7 2 01 4 11 5 4 4 4 3 4 Traits continus : chemins autorisés; traits pointillés : chemins interdits e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 3 2 3 5 4 4 3 2 4 4 2 3 4 2 01 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 4 11 5 4 4 4 3 4 Parcours du graphe en remontant à partir de la fin 2 7 e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 7 2 01 4 11 5 4 4 4 3 4 il y a une seule entrée par nœud, il n’y a qu’un seul chemin e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 01 4 11 5 4 4 4 3 4 2 7 e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 01 4 11 5 4 4 4 3 4 2 7 e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 Choix de la séquence d ’entrée États : 00 01 10 01 11 10 01 10 00 00 00 de l ’automate du récepteur s1s2 Émis :11,10,00,01,01,00,10,11,00,00 (algorithme de Viterbi) Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 01 4 11 5 4 4 4 3 4 2 7 e : 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 États : 00 01 10 01 11 10 01 10 00 00 00 s1s2 Émis :11,10,00,01,01,00,10,11,00,00 Reçus :00,10,00,01,01,00,10,11,00,00 00 0 1 1 2 1 10 2 3 4 message retrouvé 1011010000 4 6 2 4 3 3 3 4 2 4 3 2 3 5 4 4 2 3 3 2 4 4 2 4 4 4 2 5 5 5 2 2 3 5 4 5 2 2 2 3 4 5 2 7 2 01 4 11 5 4 4 4 3 4 Malgré l ’erreur sur les deux premières données, le chemin retrouvé correspond bien au message émis (s’il n’y a pas trop d’erreurs)