En théorie du codage , le décodage à distance minimale généralisée (GMD) fournit un algorithme efficace pour décoder les codes concaténés , basé sur l'utilisation d'un décodeur ...
Un algorithme de décodage naïf pour les codes concaténés ne peut être optimal car il ne tient pas compte des informations fournies par le décodage par maximum de vraisemblance (MLD). Autrement dit, dans cet algorithme naïf, les mots de code internes reçus sont traités de la même manière, indépendamment de la différence entre leurs distances de Hamming . Intuitivement, le décodeur externe devrait accorder plus de confiance aux symboles dont les codages internes sont proches du mot reçu. En 1966, David Forney a conçu un algorithme plus performant, appelé décodage par distance minimale généralisée (GMD), qui exploite mieux ces informations. Cette méthode consiste à mesurer la confiance de chaque mot de code reçu et à supprimer les symboles dont la confiance est inférieure à une valeur cible. L'algorithme de décodage GMD fut l'un des premiers exemples de décodeurs à décision souple . Nous présenterons trois versions de cet algorithme : les deux premières sont des algorithmes randomisés et la dernière est un algorithme déterministe .
Distance minimale : Soitêtre un code . La distance minimale du codeest défini commeoù
Concaténation de code : Étant donnéConsidérons deux codes que nous appelons code externe et code interne.
et leurs distances sontetUn code concaténé peut être obtenu paroùEnfin, nous prendronsêtre un code RS , qui possède un décodeur d'erreurs et d'effacements, et, ce qui implique à son tour que le MLD sur le code interne sera polynomial entemps.
Décodage par maximum de vraisemblance (MLD) : le MLD est une méthode de décodage pour les codes correcteurs d’erreurs, qui produit le mot de code le plus proche du mot reçu selon la distance de Hamming. La fonction MLD est notée :est défini comme suit. Pour chaque.
Considérez le mot reçuqui a été corrompu par un canal bruité . Voici la description de l'algorithme pour le cas général. Dans cet algorithme, nous pouvons décoder y en déclarant simplement une suppression à chaque position erronée et en exécutant l'algorithme de décodage des erreurs et des suppressions.sur le vecteur résultant.
Décodeur aléatoire donné :.
Pour chaque, calculer.
Ensemble.
Pour chaque, répéter : Avec probabilité, ensemble sinon définir.
Erreurs d'exécution et algorithme d'effacement poursur.
Théorème 1. Soit y un mot reçu tel qu'il existe un mot de code.tel queL'algorithme GMD déterministe produit ensuite les résultats suivants :.
Lemme 1. Supposons que l'hypothèse du théorème 1 soit vérifiée. Et siaerreurs eteffacements (comparativement à) après l'étape 1 , puis
Remarque. SiL'algorithme de l'étape 2 produira alors le résultat suivant :Le lemme ci-dessus indique qu'en moyenne, c'est effectivement le cas. Notons que cela ne suffit pas à démontrer le théorème 1 , mais peut s'avérer crucial pour le développement de futures variantes de l'algorithme.
Démonstration du lemme 1. Pour toutdéfinirCela implique que
Nous affirmons avoir terminé si nous pouvons démontrer que pour chaque :
Clairement, par définition
De plus, grâce à la linéarité de l'espérance, nous obtenons
Pour prouver (2), nous considérons deux cas :-ème bloc est correctement décodé ( Cas 1 ), Le -ème bloc est mal décodé ( Cas 2 ) :
Cas 1 :
Notez que sialors, etimpliqueet.
De plus, par définition, nous avons
Cas 2 :
Dans ce cas,et
DepuisCela fait suite à une autre analyse de cas lorsqueou non.
Enfin, cela implique
Dans les sections suivantes, nous montrerons enfin que la version déterministe de l'algorithme ci-dessus permet un décodage unique dejusqu'à la moitié de sa distance nominale.
Algorithme aléatoire modifié
Notez que, dans la version précédente de l'algorithme GMD à l'étape « 3 », nous n'avons pas réellement besoin d'utiliser une aléatorité « fraîche » pour chaqueNous proposons maintenant une autre version aléatoire de l'algorithme GMD qui utilise la même aléatoire pour chaque itération .Cette idée suit l'algorithme ci-dessous.
Décodeur_aléatoire_modifié donné :, prendreau hasard. Puis, pour chaque:
Ensemble.
Calculer.
Si, ensemble sinon définir.
Erreurs d'exécution et algorithme d'effacement poursur.
Pour la démonstration du lemme 1 , nous utilisons uniquement le caractère aléatoire pour montrer que
Dans cette version de l'algorithme GMD, nous notons que
La seconde égalité ci-dessus découle du choix deLa démonstration du lemme 1 peut également servir à montrer que …pour la version 2 de GMD. Dans la section suivante, nous verrons comment obtenir une version déterministe de l'algorithme GMD en choisissantd'un ensemble de taille polynomiale par opposition à l'ensemble infini actuel.
Algorithme déterministe
LaisserPuisque pour chaque, nous avons
oùpour certainsNotez que pour chaque, l'étape 1 de la deuxième version de l'algorithme randomisé produit le même résultatIl nous faut donc prendre en compte toutes les valeurs possibles deCeci donne l'algorithme déterministe ci-dessous.
Décodeur déterministe donné :, pour chaque, répétez ce qui suit.
Calculerpour.
Ensemblepour chaque.
Si, ensemble sinon définir.
Exécuter l'algorithme de détection des erreurs et des effacements poursur. Laisserêtre le mot de code danscorrespondant à la sortie de l'algorithme, le cas échéant.
Parmi tous lesAfficher dans 4, afficher celui le plus proche de
Chaque boucle de 1 à 4 peut être exécutée en temps polynomial ; l'algorithme ci-dessus peut également être calculé en temps polynomial. Plus précisément, chaque appel à un décodeur d'erreurs et d'effacements deLes erreurs prennentEn effet, le temps d'exécution de l'algorithme ci-dessus est de :oùest le temps d'exécution du décodeur d'erreurs et d'effacements externes.