-
Hamming
Je suis entrain d'implémenter un code correcteur en utilisant Hamming.
Je "protège" 4 bits.
J'utilise 4 bits de contrôle : un code de hamming de 3bits et un bit de parité de ce code.
Celà fonctionne pour 0 et 1 erreur mais pour 2,3 et 4 erreurs, aucun message n'est rejeté.
Ma question est la suivante : est ce que hamming permet réelement de detecter plus d'une erreur ? si quelqu'un à des idées...
-
bien le bonjour,
oui, Hamming permet de détecter plus d'une erreur. Par contre, selon la position des bits de Hamming qui ne correspondent pas, on ne peut pas toujours les corriger.
Si tous les bits sont faux, tu pourras détecter qu'il y a plein d'erreurs, sans pour autant pouvoir les corriger, donc ça doit entrainer un réacheminement des données.
-
ok, donc ça veut dire que je l'ai mal implémenté. quelqu'un connait une doc, ou aurrait le temps de le faire en pseudo code ? (j'en demande beaucoup là :lol: )
en effet, je détecte l'erreur quand il y a plus d'une erreur. cependant je corrige au mauvais endroit et je considère que le message est correct...
j'ai appliquer cette méthode : www.info.univ-angers.fr/~pn/poly/node13.html
ou est l'erreur ?!?
-
Tu as regardé la différence entre ce que tu fais toi à la main et ce que le code fait réellement ?
-
oui. le code fonctionne exactement comme à la main. C'est pour ça que je me demande si j'ai choisi la bonne implémentation, comme je ne suis pas excellent en math je me vois mal reinventer la roue.
a l'emission :
j'ai 4 bits à protéger.
je calcul le code :
P0 = a^c^d
P1 = a^b^d
P2 = a^b^c
a la reception
je calcul le code' :
P'0 = P0^a^b^d
P'1 = P1^a^b^d
P'2 = P2^a^b^c
Si (P'0 == P'1 == P'2 == 0) {
pas d'erreur.
} sinon {
je corrige l'erreur à la position P'
je recalcul P'
Si (P'0 == P'1 == P'2 == 0) {
il y a plus d'une erreur !
} sinon {
on a corrigé // je me retrouve ici quand il ya plus d'une erreur
}
si
}
-
Bon, le code fonctionne comme ce que tu fais à la main, donc l'erreur se trouve aussi dans ce que tu fais à la main, c'est ça ?
-
ok. bon en fait quand je recalculait P', je me basait sur P modifié au lieu du P avant correction d'erreur.
ça marche déjà mieux. cependant j'ai les résultats suivants :
1 erreur : 0 % de messages corrompus
2 erreurs : 48 % de messages corrompus
3 erreurs : 24 % de messages corrompus
4 erreurs : 100 % de messages corrompus
quelqu'un à de l'experience à ce niveau là ?
-
Oui, c'est normal, avec 3 erreurs, il indique parfois qu'il n'y a pas d'erreur alors qu'il y en a une, avec 2, il peut remarquer parfois juste remarquer l'erreur sans la corriger, ou ne pas la détecter.
-
ok merci beaucoup. une petite question subsidiaire : hamming peut il introduire des erreurs (dans l'hypothèse où le code n'est pas corrompu) en voulant corriger ?
-
Non, si le code n'est pas corrompu et que les codes d'erreur non plus, il n'y aura aucune correction.